First forward simulation with the toy Gaussian Model#
Configuration and set-up#
Here we generate pyCIF outputs for a forward run using the Toy Gaussian Model. To do so, follow the steps. Please note here some instructions about how pyCIF deals with paths.
Set up a Yaml configuration:
copy the content of the reference Yaml file available here to a directory of your choice
- the yaml is plug-and-play ready, you only have to modify the following variables in the file:
rootdir
: path where the CIF sources areoutdir
: where the outputs will be generated
pyCIF automatically replaces them anywhere they are used in the yaml; please find details here
Run pyCIF based on your Yaml file:
python -m pycif path-to-your-yaml
Outputs#
Explore the results in workdir
; if you used the default content of the yaml, you should find files in
${outdir}/fwd_long_noMCF/
that is structured as follows:
${outdir}/fwd_long_noMCF/
├── config_fwd_long_noMCF.yml: a copy of the yml used for the run
├── pycif.logtest: the log file
├── VERSION: a log file giving the version (git commit ID) used for the run
├── controlvect/: directory storing data useful for the control vector
└── correlations/
└── horcor_hpixels_12x18_cs-999_cl500.bin:
binary file storing the horizontal correlation matrix used in this case
├── datavect/: all input data
├── concs/: directory with concentrations
(empty as observation file is randomly generated here)
└── CH4/
├── fluxes/
└── CH4/
└── dummy_flx.txt: fluxes as generated from the formula in the yml
└── meteo/
└── dummy_meteo_%Y%m%d.txt: meteo files randomly generated
├── model/
├── H_matrix.pickle: saved H matrix after computation
└── Pasquill-Gifford.txt:
reference correspondance file between
Pasquill-Gifford classes and Gaussian parameters
├── obsoperator/
└── fwd_0000/: runs are identified by the mode (fwd, tl or adj) and an ID number
├── controlvect.pickle: a binary file with the control vector values used for this run
├── controlvect/: the same with netCDF user-friendly format
├── %Y-%m-%d_%H:%S: sub-directories for every individual model runs (one per day)
└── Pasquill-Gifford.txt:
link to the original Pasquill-Gifford.txt file
in the model directory
├── obsvect/:
directory with a structure following available observation
components and species; Therein, for each component/species
a monitor.nc with simulated concentrations
└── chain/: empty in that case; can be used by models that need to chain sub-simulations
└── obsvect/: the final observation vector with perturbed simulations
The example produces five days of simulations using a Gaussian model with arbitrary meteorological conditions, fluxes distributed following the formula \((cos(lat / 500) + sin(lon / 1000)) . ((lat / 1000)^2 + (lon / 1000)^2)\), 5 stations randomly distributed over the domain.
Going further#
You can play with these parameters to see the different possible outputs:
nstations
in the paragraphdatavect/components/concs/parameters/CH4
: you can reduce or increase the number of virtual sites
flx_formula
in the paragraphdatavect/components/fluxes/parameters/CH4
: you can change the formula used to generate fluxes; accepted arguments to be changed are:
variables:
zlon
orzlat
period: a typical horizontal length scale
operations:
product
orsum
orsquare
Many other examples using the Toy Gaussian model and various configurations (inversions, forwards, test of the adjoints, etc.) are available here