Code Monkey home page Code Monkey logo

ensdam's Introduction

EnsDAM : Ensemble Data Assimilation Modules

EnsDAM is a collection of FORTRAN modules that can be useful to ensemble data assimilation systems.

EnsDAM is distributed under the terms of the CeCILL free software license agreement. See LICENSE.txt for more information.

EnsDAM code is written in Fortran. Interfaces to python and julia are in development.

Installation of EnsDAM

You need a FORTRAN-90 compiler and the NetCDF library (with f90 support) installed.

Using Make on UNIX like systems

To compile the library and the examples :

  • create a 'make.(MY_MACHINE)' file corresponding to your compiler in the 'macro' directory. This is the Makefile configurable part, which specifies your compiler options and where to find the NetCDF library.
cd build
ln -sf ../macro/make.(MY_MACHINE) Makefile.macro
  • compile (library and examples) with:
cd build
make
make examples
  • if everything goes well, the EnsDAM library 'libensdam.a' has been created in the 'lib' directory, the module files (.mod) have been created in the 'include' directory' and the example exexutables (.x) have been created in the 'examples' directory.

To check the installation :

  • run the examples in the 'example' directory:
cd examples
./random_field_on_the_sphere.x
./low_pass_filter_on_the_sphere.x
./observation_regression_on_the_sphere.x

Using CMake on all platforms (still incomplete)

CMake must be run to configure the native build system - e.g. 'make' on UNIX-like systems or Visual Studio on Windows. CMake picks up a target system based on the architecture it is executed on. Default can be overridden via the command line.

Various graphical front-ends do exist for CMake - here the command line tools is used.

Confuguration
  • configure the build process
cmake --B build.cmake -S .
  • -B specify the build folder
  • -S specify the source code folder

CMake takes a number of command line options - here some of the more frequent ones are mentioned:

  • specify Fortran compiler - e.g. -DCMAKE_Fortran_COMPILER=gfortran (or ifort)
  • specify install directory - e.g. -DCMAKE_INSTALL_PREFIX=~/local

If no errors has occured the software is ready for building.

Compile and optionally install the Fortran component:
  • building the Fortran component - and optional installation (might require elevated priviliges)
cmake --build build.cmake --target fortran <install> <--parallel <N> --config=<Release,Debug> >

Further options to the build process via - cmake --build

Testing the pure Fortran implementation (only scores_idealized_example.x so far)
cmake --build build.cmake --target examples

The executables are in build.cmake/examples/ - e.g. scores_idealized_example.x

Compile and install the python interfacew to 'ensdam'
  • building the Python component - installation using pip (wheel) is done automatically
cmake --build build.cmake --target python <--parallel <N> --config=<Release,Debug> >

List of available EnsDAM modules

See documentation (in the doc directory) for more details.

EnsAnam : ensemble anamorphosis transformation
  module ensdam_anaqua : computation of ensemble quantiles
  module ensdam_anatra : application of the anamorphosis transformation
  module ensdam_anaobs : transformation of observations
  module ensdam_anautil : utilities for anamorphosis transformation
EnsAugm : ensemble augmentation
  module ensdam_ensaugm : sample augmented ensemble
  module ensdam_schurprod : compute Schur products
EnsScores : ensemble scores
  module ensdam_score_crps : compute CRPS score
  module ensdam_score_rcrv : compute RCRV score
  module ensdam_score_optimality : compute optimality score
  module ensdam_score_entropy : compute entropy score
EnsStat : ensemble statistics
  module ensdam_meanstd : compute/update ensemble mean and standard deviation
  module ensdam_covariance : compute/update ensemble covariance/correlation
EnsUpdate : ensemble observational update
  module ensdam_mcmc_update : MCMC ensemble observational update
InterpTools : interpolation tools
  module ensdam_interp : locate/interpolate in 1D/2D grids (cartesian or spherical coordinates)
ObsError : observation error
  module ensdam_obserror : compute/sample observation error probability distribution
StochTools : stochastic tools
  module ensdam_storng : sample from uniform/normal/gamma/beta distributions
  module ensdam_stotge : sample from truncated exponential/normal distributions
  module ensdam_stoutil : compute pdf/cdf/logpdf/invcdf of normal/gamma/beta distributions
  module ensdam_stoanam : transform normal number into gamma/beta/normal_product number
  module ensdam_storfg : generate 2D random field with specified power spectrum (on the sphere)
TranSpHO : scale separation (by projection on the spherical harmonics)
  module ensdam_spharea : compute spherical areas
  module ensdam_sphylm : project on spherical harmonics / transform back on the sphere

ensdam's People

Contributors

brankart avatar bolding avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.