First forward simulation with the toy Gaussian Model

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.

  1. 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 are

      • outdir: where the outputs will be generated

      pyCIF automatically replaces them anywhere they are used in the yaml; please find details here

  2. 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 paragraph datavect/components/concs/parameters/CH4: you can reduce or increase the number of virtual sites

  • flx_formula in the paragraph datavect/components/fluxes/parameters/CH4: you can change the formula used to generate fluxes; accepted arguments to be changed are:

    • variables: zlon or zlat

    • period: a typical horizontal length scale

    • operations: product or sum or square

Many other examples using the Toy Gaussian model and various configurations (inversions, forwards, test of the adjoints, etc.) are available here