EMPIRE DA
v1.9.1
Data assimilation codes using EMPIRE communication
|
Contributors
For a list of methods implemented in EMPIRE, please click here: methods
For standalone downloads of the code, please visit https://bitbucket.org/pbrowne/empire-data-assimilation/downloads#tag-downloads, click on "Tags" and download the version of your choosing.
For the most up-to-date versions of the code, they are hosted on www.bitbucket.org and can be obtained with the following commands:
To upgrade to the latest versions of the codes, use the following command:
The Makefile must be edited for the specific compiler setup. In the main directory you will find the file Makefile.in
.
Edit the variables as follows:
FC
The fortran compilerThis has been tested with gfortran 4.8.2, crayftn 8.2.6 and ifort 14.0.1.106
FCOPTS
The options for the fortran compilerLIB_LIST
The libraries to be called. Note this must include BLAS and LAPACKMODFLAG
The flag to specify where module files should be placed by the fortran complier. Examples aregfortran:
-Jifort:
-modulecrayftn:
-em -Jpgfortran:
-moduleTo compile the source code, simply then type the command
If successful, the following executables are created in the bin/ folder:
To remove the object and executable files if compilation fails for some reason, run the following:
Documentation of the code is automatically generated using Doxygen, dot and pdflatex.
All of these packages must be installed for the following to work.
This will make an html webpage for the code, the mainpage for which is located in doc/html/index.html.
A latex version of the documentation will be built to the file doc/latex/refman.pdf.
To simply make the html version of the documentation (if pdflatex is not available) then use the command
This is where the science and all the effort should happen!!
First, the communication version that one wishes to use should be selected. This is done by setting the parameter comm_version in comm_version.f90 . This will define how the state vector is passed between empire and the model and how it is distributed over MPI processes. See Communication Methods for more details.
The file model_specific.f90 should be editted for the specific model which you wish to use. This contains a number of subroutines which need to be adapted for the model and the observation network. We list these subsequently.
Not all of these subroutines will be required for each filtering method you wish to use, so it may be advantageous to only implement the necessary ones.
You can test your user supplied routines by running the test codes found in the folder bin/.
These are by no means full-proof ways of ensuring that you have implemented things correctly, but should at least check what you have done for logical consistency.
For example, they will test if \( R^{-1} Ry = y\), and if \( Q^{\frac{1}{2}}Q^{\frac{1}{2}}x = Qx\) for various different vectors \(x, y\).
Full instructions on how to put the EMPIRE MPI commands into a new model can be found at www.met.reading.ac.uk/~darc/empire.
For example, to run N_MDL copies of the model with N_DA copies of empire, then the following are possible:
The empire executable is controlled by the namelist data file empire.nml. As such, this file should be put in the directory where empire is executed.
In the directory examples
there is currently one example of how to use EMPIRE, specifically with the Lorenz 1996 model. In the directory you will find an example model_specific.f90 file setup for that model, along with a file instructions.txt
which will lead you step by step through how to run a twin experiment.
While the code is not too large, you may email me the issue or request here.
However there is a webpage set up for this:
https://bitbucket.org/pbrowne/empire-data-assimilation/issues