Code Changes
The code is subject to frequent change. To use new features and possible corrections,
regularly update your code by invoking
./Update
in your ~/INVERSION/RUN/ directory.
(The ./Update script is replacing the files in your ~/INVERSION/RUN/src/ directory
by those from ~m212046/INVERSION/RUN/src/version/
with version denoting the most recent stable code version.
In case you did changes to your copy of the code in ~/INVERSION/RUN/src/,
there is no risk of loosing them, because ./Update is backing up all your existing files.)
Most changes are just adding optional features, and should not affect existing applications, but:
- In some cases (marked magenta),
the changes may require small edits in your
application-dependent files such as "Run_inv*" or "parameters.*.*.F".
- In rare cases (marked red),
the changes may lead to numerically different results.
(Note that small numerical differences are also possible from, e.g.,
code optimizations or new compiler versions. These are not necessarily marked red here.)
14.020 (in progress)
- Corrected compiling error when using
setenv kinds r8
- Slightly reorganised loading of field variables:
- 'f_load' does not take a 'prefix' argument any more;
instead, a call to the new subroutine 'f_link' with this 'prefix' argument
is needed beforehand.
This split of functionality was done to increase transparency,
as the linking can only be done once, while the loading may be done repeatedly.
- The 'f_type' now additionally includes a 'nametag' (default: '')
to be appended to the file name after the variable name.
This was done to allow loading gridded files written by a previous run
from a temporally filtered quantity. This had not been possible until now because in that case
the filter name was appended after the variable name.
- New option dataversion='-P-'
allowing to use the product of observed and modelled value
(for special applications where 'observed' value actually is a ratio)
- Designation of filters and timemasks:
Consistently, all filter designations now start with a capital letter or minus sign,
while all timemask designations now start with a lower-case letter or number.
In particular, this affects month or season timemasks as 'jan' etc., 'jja' etc.,
'jan-jul' etc.,
which until now started with a capital letter.
- n-sigma selection:
Bug correction in the calculation of the standard deviation of the mismatch.
This leads to slight changes in the data selection.
Luckily, the changes are small because the bug occurred in a term proportional to the mean mismatch
which is generally small compared to the standard deviation.
- File "iteration.in" is now written in the code on start-up
(rather than by the compilation script already).
This allows a clear transfer of the parameter values between consecutive programm stages where these values can be modified:
- Hard-coded defaults in subroutine INIT for all iteration and post-processing parameters,
- User-defined subroutine parameters (can overwrite parameter values if needed),
- File "iteration.in" (can be edited during iteration)
- Post-processing script "*_integrate.script" (can be edited and re-submitted)
- In order to remove a potential pitfall due to parameter competition, the
parameters spec1Scale, spec2Scale, spec3Scale, and spec4Scale
have been removed in favor of the exclusive and unique use of specScale.
They need to be replaced as follows:
- spec1Scale(nproc) --> specScale(nproc,1,1)
- spec2Scale(nproc) --> specScale(nproc,2,1)
- spec3Scale(nproc) --> specScale(nproc,3,1)
- spec4Scale(nproc) --> specScale(nproc,4,1)
Background: The more general parameter specScale was introduced to allow the implementation of flux layers.
The parameters spec1Scale etc. were kept so far to avoid the need to change set-up files,
but this created the pitfall that specScale(nproc,1,1) was
--potentially unnoticed-- overwritten by spec1Scale(nproc) etc.
- Name of executable changed from "iterative_tm3" to "mainprog"
(in order to allow tab extension in UNIX commands involving "iteration.in")
14.019
- Grid conversion routines:
New option 'dimorder' to specify dimension order different from 'XYT'
(currently implemented alternative: 'TYX').
- TM3:
- Switch to TM3 version 3.8.07 having parameter files for additional grids.
- Adjusted end year/month according to updated NCEP and new ERA5 driver meteo.
- New ingestion routine for
- MODIS fpar,
- GIMMS fpar,
- ocean CO2 fluxes from RECCAP-2.
- New region set '5Bands2550e'.
- Various added comments in the code
14.018
- Measures to reduce disk usage:
- If the prior of a component is to be read in from a file with the same variable name from a previous run
(be it a prior or a posterior),
the system can now hard-link the original file (rather than reading it and then writing an identical copy).
To use that, simply set 'priorFile' to the prefix of the original file.
The system will check whether a file with this prefix and the variable name of the component exists.
If not, 'priorFile' is interpreted in the same way as before.
- For non-activated components (those that stay at their prior values),
the gridded a-posteriori file is not saved any more.
On reading, the a-priori file is used instead.
(Aggregated and filtered files, which take much less disk space, are still written as before.)
- For postprocessing of the prior, 'pp_out_totals' is off by default.
- Radon:
The radioactive decay of radon is now also available again in STILT
(implemented by Fabian M.).
- Time masks for "right-hand sides" (RHS):
- RHS can now be defined for more than one time pattern.
This can be useful
- to obtain a time series of a-priori and a-posteriori uncertainties,
- to obtain cross-correlations between the fluxes at different times.
To switch this on, specify an explicit range of years in timemask_rhs.
Examples:
- '[]Filt2.0g_midyear+2010-2020':
Smooth 3-monthly averaged fluxes at mid-year (as in the default)
for all individual years within 2010-2020 (inclusive)
- 'yearly+2010-2020':
Yearly averaged fluxes for all individual years within 2010-2020 (inclusive)
- 'monthly+2011-2011':
Monthly averaged fluxes for all individual months of 2011
Notes:
- Be parsimonious about this feature, because the total number of RHS
is the number of time patterns times the number of regions.
Consider to only use a single region
(e.g., setting regionset_rhs to
'@stilt04', 'TransCom3:11', or similar)
when using multiple times.
- If no explicit time range is given in timemask_rhs
(ie., no '+' sign included),
or if a single explicit time is specified
(as in 'yearly+2010.5'),
only one single time pattern is used as before.
- Removed parameter time_rhs,
because its functionality is available by adding an explicit time in timemask_rhs.
- Spatial correlation:
Additional option exts_gauss for Gaussian kernel (by Saqr).
- Memory usage:
In case of fine time steps (e.g., hourly),
the variables sin_ftime and cos_ftime
turned out to pose a problem because their memory consumption
has been quadratic in the number of time steps.
However, in most cases the very high frequencies are not used anyway,
such that memory can be saved by limiting the number of frequencies.
- Inside "tsfilter.f90", the
variables tsfp%sin_ftime and tsfp%cos_ftime
are only allocated for the frequencies actually present in the filter.
- If global variables sin_ftime or cos_ftime
cannot be allocated, the program only issues a warning message,
and stops only later as soon as any of them is actually used.
Consequently, if any of these variables is used at further occasions in the future,
the check of being allocated needs to be added.
In a future version, the global variables sin_ftime or cos_ftime
are planned to be removed entirely and replaced by those from "tsfilter.f90".
14.017
- Adding a license attribute to all NetCDF output files.
- Default measurement and model uncertainties
(set-up parameters 'meassigma', 'modsigma'):
- If the default values for 'meassigma' and 'modsigma'
have not been defined for the current species in "include.f90",
an error on compile-time is triggered
(previously, the default values of CO2 were used as fall-back).
- For CH4, the default values 3.0 ppb and 10.0 ppb, respectively,
are used again (from previous "parameters.ch4.Std03.conc.F").
Since 13.043, the fall-back CO2 values had unintentionally been used.
Note that 'meassigma' and 'modsigma'
can be overwritten in subroutine 'parameters'.
- External flux units:
Set-up parameters 'unitm' and 'ppm2unitm' have become variables,
such that they can be changed from their defaults by the user in subroutine 'parameters'.
14.016
- TM3 meteorology from NCEP updated to June 2023
14.015
- Forward runs of atmospheric transport:
If 'tm_FluxFilter' or 'tm_MaskoutReg' are set,
then the transport model is switched to difference mode.
In particular, no initial condition is added to the modelled mole fractions in this case.
(Note that this mechanism is experimental, as it might be unsuitable for certain applications,
thus it might possibly change again in future versions.)
- Internal:
Further parameters are transferred from the inversion code to the transport model
via shared variables in module 'tmodel_interface',
rather than via namelist 'inputz' through an external file.
This will be further pursued in future versions,
to replace the external file entirely.
14.014
- Updated some "INPUT/" fields
and the corresponding ingestion subroutines in "ingest.f90".
- NetCDF output: Back to "NetCDF4" type output
because sometimes fields are too large for "64bit_offset" (introduced in 14.009)
- Filter: Additional filter option "DY" creating daily averages
(analoguous to "MO")
- Gridded NetCDF flux output routine optimized for speed.
14.013
- The "missing field" check (introduced in 14.008) has been removed again
because this error is triggered spuriously in situations where everything is actually correct,
e.g., whenever supplying a field
from grid conversion made by grid_convert with do_extend=.true.
- Checking Courant numbers in TM3:
Background:
Whenever TM3 is used with pre-processed meteorological driving fields from a new data source,
or with driving fields on a new resolution,
it needs to be checked whether the maximum Courant numbers occurring in the advection scheme
stay sufficiently small.
If the maximum Courant numbers are too large, then
the parameters of TM3's time step subdivision mechanism
('lat2u', 'lat3u', 'lat4u', 'lev2u', and 'lev2v')
in the corresponding "tm3gridconstants.RESOLUTION_METEO.f" file
have to be suitably adjusted.
Instruction:
To check the Courant numbers of a given meteorology,
best use an existing configuration for doing a forward run.
In the "Run_inv*" file of this configuration,
switch on the output of maximum Courant numbers by
including the new modifier 'tm3COURANT' into the start parameter 'Define'.
Perform a forward run.
The maximum Courant numbers are then found in the log file of the postprocessing run.
Search for max_alpha (maximum Courant numbers of the u advection),
max_beta (v advection), or max_gamma (w advection).
- Subroutines 'f_perarea2percell' and 'f_percell2perarea':
Unit conversion can optionally be done regarding the total grid cell area
also for coastal grid cells (new optional argument 'total_area').
- Parameters for convergence diagnostics:
- These parameters can now be pre-set in the "parameters.*.*.F" file
(previously only at runtime in "iteration.in").
- For transparency, the names of all these parameters have been prepended by 'it_'.
- New parameters 'it_diter_diag1' etc. allow to perform the convergence diagnostics
only every so many iterations, to save computation time.
This is relevant for runs w/o a transport model (only "extra constraints")
where the convergence diagnostics can be by far more expensive than the actual calculation.
- The parameters 'it_mu_string1' have been removed.
The "mu*" part in the output file names is now created automatically.
- New ingestion routine 'ingest_TRENDYv11' to read in and grid-convert
TRENDY v11 model simulations (routine likely to develop in the future).
- Removed some logistical restrictions, now allowing to perform more than 999 iterations.
Notes:
- To perform more than 2000 iterations, the parameter 'maxmaxiter'
in "state.f90" needs to be increased.
- Depending on the size of the inversion, more memory may need to be requested.
- Mole fraction output ("*.ts" files) now start with comment lines ("#")
to identify with inversion they originate from.
14.012
- Region sets: For region sets read in from ASCII "reg_*.d" files
(as well as for the specific built-in region set "Aggreg6Eu01"),
segmentation faults were arising since version 14.010.
This bug has been corrected.
14.011
- The "missing field" check introduced in 14.008:
Fraction of missed field is now calculated as the maximum fraction over all time steps,
rather than as the fraction of the time-averaged field.
This makes the check more sensitive.
- The modifier keywords listed in parameter 'Define' (for conditional compilation)
are now also available in the code of the atmospheric transport model.
This is also true for the 'SPEC_*' keywords created automatically.
Any modifier keywords exclusively used in the transport model should start with 'tm'
because this suppresses the warning message that the keyword is not used in the set-up parameter file.
14.010
- Whenever a region set is used, a file "reg_*.nc" is written (if not already present).
The file format is the same as that of integrated fluxes,
except that no actual flux field is contained (ie., only header information including the region masks).
These files can be used
- to check the region masks
- to transfer region sets across grids as described in the next bullet.
- A new option to define region sets has been added:
If a file "reg_*.nc" exists in your "~/INVERSION/REGIONS3/",
it's variables 'smask_land' and 'smask_ocean' are read in to define the region masks.
If the file is on a different grid than the present one, the region masks are grid converted.
If the variables 'regtype' and 'regname' are present,
they are used to define region types and names;
otherwise, the region types are inferred from the masks (according to whether land or ocean is zero),
and standard region names are provided.
Applications:
- Making an existing region set available also for any coarser grid:
The expected file format is identical to the "reg_*.nc" files written
according to the previous bullet.
You thus can copy such files from a high-resolution run into your "~/INVERSION/REGIONS3/".
Usage notes:
- The new option (existence of a "reg_*.nc" file) is checked after
all the other options available so far.
Thus, if you used a grid-specific ASCII "reg_*.d" or binary "map_*.b"
file on the high resolution so far,
the regions stay identical to before for that particular grid.
- Note that all region sets hard-wired in the inversion code (such as TransCom-3 regions,
various latitude bands, etc.) are available on any grid anyway.
- Defining new region sets: "reg_*.nc" files can be created explicitly
from external information by any suitable software.
Usage notes:
- The advantange of defining region sets via "reg_*.nc" files is that
they are then automatically available on any grid.
- Regarding the format, use existing "reg_*.nc" files as an example or template.
However, not all the variables present in the "reg_*.nc" files generated by the inverison code
are actually needed here, but only those mentioned above
('smask_land' and 'smask_ocean',
possibly 'regtype' and 'regname'), plus the relevant dimensions
and coordinate variables ('lon', 'lat', 'reg').
- The region masks 'smask_land' and 'smask_ocean' need to be between 0 and 1 inclusive,
fractions are allowed.
- To avoid loss along the coast lines, region masks should be "extended" across the coast,
i.e., land masks should also cover some of the adjacent ocean, and vice versa.
Specifically, the masks should not contain the land/ocean fractions at coastal pixels,
because that would result in double-counting when applying the mask to flux fields.
- Use the highest spatial resolution possible, to ensure comparable results on all grids.
If you create the "reg_*.nc" file from a given external input file,
just use its original spatial resolution.
- The "missing field" check introduced in 14.008 is now only done for fields
with extensive physical units (ie., essentially only for fluxes).
14.009
- NetCDF output:
All NetCDF files are written as type nf_64bit_offset
(previously nf_NetCDF4)
for faster reading.
14.008
- External unit of CH4 fluxes:
Following the unit as commonly used in the CH4 community, the external unit has been
changed from 'TgC' to 'TgCH4'.
This only affects the "*_flux_*.nc" files from the postprocessing,
while the calculation itself (in the internal units 'Tmol' of all species)
remains the same.
- Spatial correlations:
- New option
regionfile(:) = 'GridPixelAll'
defining space elements for all pixels, not only at pixels of the same region type
(as done by 'GridPixel').
This leads to a more homogeneous relative sigma pattern also in areas of a complicated
land-ocean geometry, on the expense of involving many more adjustable degrees of freedom.
(Note that the existing options regionfile(:) = 'HxHdegr' etc.
define space elements for all pixels anyway.)
- New parameter exts_min allowing to set a minimum value for the spatial elements,
below which they are set to zero.
- Fluxmodel diagnostics in postprocessing:
- 'pp_out_pattern_sigma': Output files have now the prefix "RELSIGMA_"
(rather than "SIGMA_") to better reflect their content.
- 'pp_out_correl': Now the output is normalized by the 'shape',
i.e., it is actually the correlation coefficient.
Correspondingly, the output files have now the prefix "CORREL_".
- On starting an inversion, the existence checks for directories (like 'TSdir')
have been moved to where the output directory has already been created.
They now also work if 'outputdir' has been set to non-standard paths.
- New runtime check whether the memory-saving packing of field variables is missing
any part of the field.
- Slight re-structuring and renaming of TM3 chemistry,
as a preparation to include alternative options.
14.007
- New option: Averaging over groups of data points (still experimental):
The data points of selected atmospheric records can be split into averaging groups.
For each of these groups, the cost function then only uses a weighted average
over the data points within the group.
There are 2 ways to activate the data averaging:
- Manual activation:
Insert blank lines into the input data file ("*.ts").
Then, the respective groups of data points between blank lines
(as well as those before the 1st blank line and after the last blank line)
will be averaged in the cost function.
- Algorithmic activation:
Specific averaging schemes can be switched on through new parameters.
These schemes can be seen as automatic ways to insert "blank lines".
In the "*.ts" files written by the system into
"input.*/" or "*output1.*/" directories, these automatically generated
blank lines are then indeed present, and can be used for checking
and for possible transfer of the averaging groups to subsequent inversion runs.
avg_hx_nday
| [days]
| Activate averaging of hourly data records ('h', 'd', 'n'):
Temporal averaging over the given number of days.
"Blank lines" are inserted at midnight local time for 'h' and 'd' records,
and at local noon for 'n' records.
|
avg_xa_nday
| [days]
| Activate averaging of aircraft data ('a'):
Analoguously to avg_hx_nday, setting
avg_xa_nday = 1 will average the profiles of the same local day.
The behaviour can be modified by the following suboptions:
|
avg_xa_hsplit1
| [m]
| Additional "blank lines" are inserted between data points up to the given height
and those above (both during ascend and decend).
|
avg_xa_hsplit2
| [m]
| Further vertical break as avg_a_hsplit1.
|
avg_xa_airmass_wght
|
| If set to .true., then the individual points within the aircraft profile
are weighted according to the relative air masses in the bands around the points
(counting from midpoint to midpoint, except for the first and last points
where the height bands end at the height of the point itself, leading to
reduced weight of these 2 points).
Air mass is calculated from height using the exponential scale height formula.
|
If averaging is activated algorithmically for any given record,
then any blank lines in the input file of this record (manual activation) are ignored.
This is meant to prevent unpredictable grouping if the input data records
originate from a previous run that already used averaging.
Tipp: The averaging groups can easily be visualized by Gnuplot, because
Gnuplot breaks line plots at blank lines in the data file.
Within each averaging group, the data points will be averaged in a weighted fashion.
Currently, the weights are 1/sigma (with sigma according to column 12 of the data file).
Note that this weighting is still under consideration and might change in future versions.
Also note that the algorithmic averaging schemes described above do not (yet) involve
any specific weighting
(there are plans to introduce airmass-dependent weighting in the vertical averaging of aircraft data,
but this has not yet been implemented.)
The weight of a given averaging group in the cost function is identical
to the total weight that these points would also have as individual points.
This means: If all data points in the group would happen to have identical values
even before averaging, then the averaging would not change anything.
On output: If averaging has been activated for any station,
then the system not only writes the normal "*output1.*/" directories,
but also additional directories with ".avg" appended to their names.
The "*.ts" files in these additional directories contain the time series
with the averaging being applied, ie., the time series as going into the cost function.
- Footprint multiplication:
Speed-up of calculation (except for inital loading of the footprints).
The speed gain depends on the size of calculation; for smaller cases,
substantial gains have been found.
- Subroutine 'write_totflux_tgeo':
The accuracy check was inaccurate itself (too long sum in single precision);
now the accuracy check confirms that the grid conversion accurately conserves mass
(no change of results).
- Function f_sum: Changed summation to avoid numerical errors in single precision
and for speed.
- Wall-clock time check:
If using STILT transport (or footprints, in general),
resubmission due to the wall-clock time check is suppressed for the first iteration of any job.
This takes into consideration that the first iteration takes much longer than the subsequent iterations
because the footprints need to be loaded into memory.
No manual precautions concerning the wall-clock time check in long STILT runs should be needed any more.
- Path names:
Some users reported that they have to edit their "run_inv.user"file,
or even to unlink/re-link directories, when switching between projects.
To avoid such a need, the way of setting path names has slightly been re-organized.
Rather than being defined in "run_inv.user",
path names are now defined by default in "src/Run_inv.default"
and can then optionally be re-defined in the "Run_inv*" file of the respective project if needed.
Thus,
- if you never changed any path names in your "run_inv.user" file,
nothing needs to be done;
- if you did change any path names in your "run_inv.user" file,
these changes need to be moved to your "Run_inv*" files.
The syntax is, e.g.,
setenv outputdir ${invdir}/OUTPUT
for csh and tcsh shell, or
export outputdir=${invdir}/OUTPUT
for bash.
By using separate "Run_inv*" files for each project
(or by using if-statements within a unified "Run_inv*" script if more convenient),
you can include the definitions of the appropriate path names there,
such that the suitable definitions are automatically applied
without the need to edit any other file.
The "run_inv.user" file is obsolete now and can be removed.
14.006
- Footprint multiplication:
If a data point has a time stamp with non-zero minutes (typical for flask records),
then the time of the footprint is found by rounding to the nearest hour now:
min = 0 ... 30: rounding down
min = 31 ... 59: rounding up
(previously, always rounding up for min=1...59, not clear why).
Rounding down for min==30 has been chosen to ensure that hourly insitu records
are treated identically no matter whether min==0 or min==30
(both assumed to denote average over the hour of the clock).
Note that the current use of footprints referring to the beginning of the averaging hour
(rather than to the full averaging interval)
is not entirely correct anyway, to be changed in the future.
- Footprint multiplication:
Added the option to specify more than one directory to read footprints from:
If the new shell variable DATAFP1 is set to a path name,
footprints will be searched in the subdirectories of this path before
searching in the subdirectories of the existing shell variable DATAFP.
This can be useful
if one created own additional footprints for some specific data locations
not (yet) present in the main directory while footprints from the main directory are needed as well.
- Atmospheric data:
New parameters 'yrdi' and 'yrde'
to exclude the atmospheric data from specific years
- Parameter files:
The old structure (parameter file starting with FORTRAN parameter
statements outside any subroutine) cannot be used any more,
in order to allow that the parameter file can start with a module.
If you still used old-style parameter files
and need assistence in translating them to the current structure,
please let Christian know.
- The "Install" script for new users of the inversion system
has been updated.
14.005
- TM3 meteorology updated to June 2022
- Updated "INPUT/" fields and corresponding ingestion subroutines
in "ingest.f90".
- Regions (e.g., the integration regions of postprocessing)
can now be restricted to the domain of any non-global grids,
by appending the character '@' and a grid name to the name of the region set.
For example, '5OceanBands1545ePAIA66@stilt04' denotes the set of regions
'5OceanBands1545ePAIA66' restricted to the domain of the 'stilt04' grid.
All regions outside the domain are just zero.
- Automatic job re-submission:
By activating the new parameter 'min_diter_per_job = 2' in "iteration.in",
the wall-clock time check can be suppressed at every 1st iteration of any new job in the queue.
Background:
When atmospheric transport is calculated from precomputed footprints (e.g., from STILT),
the 1st iteration of any new job takes much longer time because it needs to read the footprints
into memory. All subsequent iterations are much faster because they re-use the footprints from memory.
If the 1st iteration already takes so much time that it would not be possible to run
another iteration of the same length, the wall-clock time check decides to re-submit the job,
as it cannot yet know the (much shorter) time needed for the subsequent iterations.
As the re-submitted job then starts by reading in footprints again,
the faster memory-based iterations will never actually be done.
The new parameter offers a way to manually prevent this situation.
- Flux layers: Bug correction (allocation of 'specScale').
14.004
- The generation of ensembles of random realizations of the a-priori probability distribution
has been restored. It can be activated by setting the postprocessing parameter 'pp_naprireal'
to the desired number of ensemble members.
Then, the postprocessing script will write out NetCDF files for each ensemble member
just in the same way as it would normally do for the inversion result
(ie., any regional integration, temporal filtering, component-wise output etc.).
If needed, the ensemble size can be increased by setting 'pp_naprireal'
to a higher number and re-running.
- More comments on the set-up parameters in code file "~/INVERSION/RUN/src/include.f90".
14.003
- Filters:
New treatment option 'Z' of long-term mean,
and slight redefinition of 'z' (now applied after filtering).
- Footprint multiplication code:
Further optimization (all footprints now only being read once, then kept in memory
- in case of memory problems, thus set 'CONSTRAINT' to '1024G')
- Flux layers:
First test applications have been successful
- Slight changes in several log messages
- Routinely check against NaN's and Inf's in each iteration
(before and after transport model call)
in order to prevent continuation of the iteration loop
despite lethal numerical problems
14.002
- Footprint multiplication code:
Added check to detect corrupted values occasionally occurring
in the variables 'ftp_*_indptr'
of some NetCDF footprint files.
Footprints with such corrupted values are skipped.
- Preparatory changes to implement the option of transferring more than 1 flux field
to the transport model ("flux layers", to be finished in upcoming versions).
14.001
- Translation of compiler options etc. to new DKRZ machine "Levante"
- Default value for the set-up parameter 'regionfile' has been changed from 'Grid03' to 'GridPixel'
Background: While 'Grid03' picks every pixel for the TM3 grids fg etc.,
it creates a 1x1 degree pattern of degrees of freedom for all other grids (including all STILT grids).
In contrast, 'GridPixel' uses all the pixels at the native resolution of the grid.
- Monthly mean mole fraction output (e.g., "*.co2.mm.ts"):
Only valid data points (those with positive entries in the sigma column) are considered
(up to now, all data points were considered).
The calculation of the monthly means has been integrated into the inversion code
(so far, it was done in the separate program "monthly_data.f").
- Subroutines for processing field type 'f_type':
All subroutines modifying an initialized field variable trigger an error condition
if the field variable has already been saved.
This precludes that the field variable in memory could be different from
the file on disk.
In order to still allow to manipulate fields starting from a field read in from a file,
the new subroutine 'f_load_from' has been added.
- Output of NetCDF flux files (variable '*flux_subt'):
Removed a preliminary mechanism that assigned all pixels containing land to the land regions.
This had been introduced to ensure complete integration of land fossil fuel emission,
but it can lead to spurious attribution of coastal ocean flux to land in OT='S' components.
Now, the fluxes are always integrated over land vs. ocean regions according to their
region type as specified by priorRT.
Notice: In order to have the correct region type being applied to fossil fuel emissions over land or ocean,
respectively, these need to be implemented in two separate components (e.g., 'fosLnd' and 'fosOcn').
13.049
- Reading / loading NetCDF files: Now able to handle input files with time steps
different from internal time steps.
Input fields with finer time steps will be aggregated;
fields with coarser time steps will be subsampled.
- Check against misspelled or undefined set-up modifiers in 'Define'
- Revised some error messages to be more instructive
13.048
- Internal implementation change:
The transfer of the flux field and the adjoint flux field between
the inversion algorithm and the atmospheric transport model
is now done in memory, not via an external binary file any more.
The fields are contained in the variables 'tm_flux' and 'tm_ad_flux', respectively,
defined in module 'tmodel_interface' in "tmodel_interface.f90".
Background of the change:
- In some applications (e.g., regional inversions with hourly time step),
the file size limitation on the tranfer file posed severe restrictions on the period length.
- Writing and reading the files was a (small) waste of wall-clock time
(the transfer via file was a remnant of an earlier implementation where
the transport model was called by the inversion code as a separate UNIX process).
- By luck, the change also solved the long-standing problem that
inversions using the STILT footprint multiplication
had too high diagnostic values of the symmetry index and the conjugacy index.
Note that the results are not bit-identical to 13.047.
13.047
- 2-step scheme:
Preparing the possibility to nest into a STILT run:
If 'tm_cutoutname' is set, the footprint subdirectory is switched
from "fgrid/"
to "fgrid.CUTOUT_tm_cutoutname/"
- Postprocessing (writing sub-sampled fields):
The algorithm introduced in 13.046 has been improved for quantities
in spatially extensive units (e.g., fluxes in [Tmol/cell]):
Along the coasts, sub-sampling from a coarser to a finer resolution
does not lead to spurious ocean fluxes over land (or land fluxes over ocean, respectively) any more.
Further, the algorithm now also works for conversion from a regional grid to a global grid
(it had been giving too small values in 13.046).
- New domain: 'stilt07' (Rhein valley)
- New region set: 'Aggreg6Eu02' (similar to 'Aggreg6Eu2018' used in PTRS 2018 drought paper)
- Renamed environment variables (to be consistent with parameter names):
cutoutname -- tm_cutoutname
- NetCDF output files, variable 'tmask' (temporal integration masks):
Bug correction: Dimensions were declared in wrong order.
- Several small internal re-organizations and corrections.
- Eliminated various unused subroutines in STILT code.
13.046
- Postprocessing:
New option to write fields regridded (sub-sampled) to any available grid definition.
To use it, set pp_regionset to the name of the desired output grid (e.g., pp_regionset = '1x1').
- New subroutines to check remaining execution time and to re-submit job into queue available to be used also in user-defined code.
- Fields 'pland', 'vegfrac', 'po400', and 'po1km'
now written to NetCDF output files (for info only).
- New region set: 'RECCAP2ocean'
- Creating of symbolic links replaced by creation of hard links plus a file giving the path of the original file
(to avoid memory-intensive system call).
- Some internal reorganizations of the code (e.g., new modules 'fgeo2ogeo', 'io_aux', 'queue') related to
the above changes.
13.045
- Most post-processing parameters can now be pre-set already as part of the set-up
(in the subroutine parameters),
and also be changed again during the inversion (in the file "iteration.in").
The values set in either of these two locations are then passed on by including them into the
configuration files "*integrate.script" for the post-processing.
In order to make this more transparent, all post-processing parameters
that can be passed on in this way
have been renamed to start with a pp_ prefix.
For this, it was necessary to rename the set-up parameters
integrate_mu_default -- pp_mu
integrate_regionset_default -- pp_regionset
integrate_timemask_default -- pp_timemask
and the variables (thereby partly unified with the set-up parameters above)
integrate_regionset -- pp_regionset
integrate_intFilter -- pp_timemask
integrate_intFilter4g -- pp_timemask4g
13.044
- Cleaned up the various kinds of real variables, to re-allow type switching.
- In case you are using any of the variables
im,
jm,
pland,
orogr,
vegfrac,
po400,
po1km,
area,
r_area,
p1area,
r_p1area,
zpix, or
npix
in user-defined code, they have now to be prepended by fgeo%
(e.g., fgeo%im).
This renaming has been done in preparation of more general re-gridding options to be implemented.
- Hyperbolic spatial correlation (exts_hyp) is now using 2D distance as well
(thus identical to exts_hyp2).
- STILT corrections:
- Definition file for domain stilt12 added
- Detection of aircraft sites corrected (2nd letter rather than 1st letter)
- A preliminary code line changing the region type (parameter priorRT)
of components starting with "fos"
to the value of 3 (all-surface component)
has been removed again. This preliminary code line had been inserted after the introduction
of the memory-saving storage of field variables (13.036), in order to ensure that
fossil fuel emission fields (which normally contain fluxes over both land and ocean)
are still completely stored. One the other hand, however, components with priorRT==3
(all-surface components)
cannot be correctly treated in regional integrals in the post-processing, because
the information about the contributions of land versus ocean in mixed land/ocean pixels
is lost, and needs to be approximated by the land/ocean fractions. In case of fossil fuel emissions,
unfortunately, the land/ocean fractions are a bad approximation to the true land/ocean contributions.
Therefore, the automatic setting priorRT=3 for components starting with "fos"
had only been preliminary, and was removed again now.
This requires one of two possible changes
in your "parameters.*.*.F" set-up file:
- Either set the region type of "fos" components explicitly (priorRT(...)=3);
- or use 2 fossil fuel components for separate land and ocean emissions
(then with priorRT(...)=1 and priorRT(...)=2, respectively).
Both options will restore the behaviour of the previous code version in terms of the actual result.
However, while more complicated, only the 2nd option ensures that regional integrals in the post-processing
can correctly assign fossil fuel emission to land or ocean regions.
(The next item has been done to implement this into the standard CarboSocpe CO2 set-up.)
- The subroutine to ingest GCP fossil fuel emissions (ingest_fos_GCP)
has been changed to separately grid-convert emissions over land and and over ocean.
Due to that, the interface of the subroutine had to be changed as well.
As an example, the call in the standard CO2 set-up is now (compare previous item)
iproc=get_iproc('fosLnd'); if( iproc>0 .and. priorFile(iproc)=='#' ) then
jproc=get_iproc('fosOcn'); if( jproc>0 .and. priorFile(jproc)=='#' ) then
call ingest_fos_GCP( varLnd=prior(iproc), varOcn=prior(jproc), species='co2' )
end if
end if
- Grid conversion:
On computing the grid cell boundaries for the 1st and kast grid cell of each dimension,
now assume an equidistant input grid (rather than a global input grid).
This should not change anything for global equidistant input grids (which is the most common case),
but allows to ingest regional input grids now.
- TM3 prepro:
Adjusted end year for NCEP meteo to 2021.
Notice:
On 2021-07-22, the entire set of NCEP-based TM3 prepro input files since 1949
for fg and cg resolutions
has been re-created from freshly downloaded original NCEP files.
Due to this, results involving TM3/NCEP are
not necessarily bit-identical to results calculated before that date.
13.043
- Execution time per iteration is now written out into "WallClockTime.d".
It can be plotted by the gnuplot script "WallClockTime.gnu"
(to be used in your "~/INVERSION/OUTPUT/" directory).
- The set-up parameters
io_perarea,
io_pertime,
exvar_perarea, and
exvar_pertime
have been removed.
Instead, these attributes are now determined automatically from
io_unit and
exvar_unit,
respectively.
Note:
Units are classified as intensive (perarea=.true., pertime=.true.)
unless explicitly known to be extensive.
Therefore, if you use an extensive unit, check
'f_setunit' in "fields.f90" whether this unit is known to the system.
- More options to define open-ocean regions:
For region sets ending in "oo400", the ocean regions are weighted by the fraction of
ocean deeper than 400m, where pixels with less than 0.5 ocean deeper than 400m are
discarded completely.
Analoguously, "oo1km" denotes region sets over ocean deeper than 1000m.
- To implement the new open-ocean regions,
new variables 'po400' and 'po1km' are available, giving the
fraction of ocean deeper than 400m and 1000m, respectively
(here, fractions smaller than 0.5 are still given non-zero).
Due to this, the version of the "pland*.v" files has increased to version 02.
There is no action required though:
A new "pland*.v" file will be written automatically for each grid when used first
(this somewhat increases start-up time for this first run).
- The declaration of the set-up parameters has been reorganized:
By default, all set-up parameters are now declared as normal variables in the core code
(file "global.f90"),
and given meaningful default values in "include.f90".
These values can be overwritten in the subroutine 'parameters'
provided by the user in the application-specific parameter file.
Background: This new arrangement unifies the treatment of all set-up parameters,
part of which have been declared in this way already.
By this new way, further set-up parameters can be easily introduced to the system
without the need to change the users' application-specific parameter files.
Further, defining the parameter values in executable code allows more complex
ways to set the values.
Previously, part of the set-up parameters (the oldest ones in the version history)
were declared in the application-specific parameter file, possibly as FORTRAN parameters.
Such old parameter files can still be used; in order to avoid compilation errors
from multiple variable declarations,
the line
#define OLD_PARAMETER_DEFINITIONS
has to be added at the beginning of the parameter file.
Nevertheless, the transition to
the new way of parameter declaration is strongly recommended.
The old way will be removed in some future version.
- The default land fraction has been changed to EARTH2014,
because the land fractions calculated from ETOPO1, as done previously,
mis-classify some land areas below sea level as ocean.
In case you would like
to restore the previous land fraction (and only then!),
corresponding values of
'pland_min', 'plandfile', and 'plandinput'
need to be set in subroutine 'parameters'.
For example, if you never changed the land fraction before,
a minimal subroutine
SUBROUTINE parameters
use global
implicit none
pland_min = 0.0001 ! default until 13.042
plandfile = 'plandf' ! default until 13.042
plandinput = 'ETOPO1' ! default until 13.042
END SUBROUTINE parameters
would be needed in your parameter file.
13.042
- STILT:
- Station names can now have more than 3 characters
- Correction to allow less stations than threads (by Tonatiuh)
- Correction to allow multi-species runs (ntrace=nspec)
- TM3:
Updated end year/month for 'era5' meteo
- Run_inv.defaults: More comments
- Renamed some script parameters (shorter and more consistent names):
- yrfi_valid --> yrvi
- yrfe_valid --> yrve
- bftype --> fgrid
- maxiter_tot --> niter
- maxiter_main --> niter_main
- New grid 'stilt09'
- Internal: Renamed "run_single_inv" to "run_inv_single"
for easier tab filename completion
13.041
- Additional optional parameters for subroutine f_maskout.
- Omp schedule(dynamic) in allocate_MLD for optimization (suggestion by Erik).
- Optimization of previously very slow loop in init_hessian.
- Removing omp again in write_convergence_flux_mu,
as solve_hessian_g is already parallel.
- Automatic number of threads in ad_fluxmodel for optimization.
- Parameters io_scale and io_2perarea removed,
parameter io_unitc renamed to io_unit for consistency.
- Switch to f_type in some "ingest.f90" routines
(remaining routines to follow in future versions).
- All code files for STILT are now in main code directory, partially renamed to start with
"stilt*".
- Replacing some system calls by FORTRAN-only statements,
to avoid potential memory problems.
13.040
- Further clean-up of integrate,
to complete the switch to memory-efficient f_type field variables.
- In this context, slight change in the meaning of the parameter OT (output type):
Only the first letter is considered now, applied to the a-posteriori fields as a whole
(not separately for prior and adjustment any more).
This shouldn't affect any of the currently used set-ups though.
- Land/ocean fractions:
The land fractions calculated from ETOPO1 (if setting plandfile='')
can be somewhat too low in some smaller areas below sea level,
mostly along the coast, such as parts of the Netherlands.
The error is very small for global grids (such as 2 degrees resolution)
but can be significant in certain pixels of high-resolution regional grids
(e.g., at 0.25 degrees resolution).
By setting plandinput='Earth2014',
land/ocean fractions can now optionally be calculated from
the "Earth2014" project by Hirt and Rexer (2015).
Note that the Earth2014-based land/ocean fractions need further testing
(after that, they will likely become the default;
ETOPO1-based land/ocean fractions will then still be available through
setting plandinput='ETOPO1'.
Of course, this change of the default will be noted in this change log at the respective version).
13.039
- New options for temporal coherence patterns:
- exts_hyp2
(unisotropic hyperbolic decay using real distance in 2D);
- exts_exp2
(unisotropic exponential decay using real distance in 2D).
- Diagnostical calculation of a-priori correlation patterns
(former "correl.script")
now available within integrate
(switch on by 'out_correl', see comments in "*_integrate.script" for usage).
- Diagnostical calculation of a-priori sigmas of integrated/filtered fluxes
(former "sigmas.script")
now available within integrate
(switch on by 'out_sigmas', see comments in "*_integrate.script" for usage).
13.038
- Further optimization by changing the arguments of fluxmodel and ad_fluxmodel
to the more memory-efficient f_type,
and by parallelizing several do loops in "nr.frprmn.f90".
13.037
- Further reduction in memory use
by memory-efficient storage of the extt and exts fields.
- Due to the new variable formats of extt and exts,
the required size of these fields is determined automatically.
Thus, the parameters mnzt and nz are obsolete and can be removed
from any "parameters.*.*.F" files.
- The temporal patterns extt and
the spatial patterns exts of the flux model
are now stored in NetCDF format (file "fluxmodel.nc").
Thus, they can be directly be inspected by graphics software.
13.036
- Most explicit field variables like
real(rm) :: flux(im,jm,ntimef)
are now declared with the new type
type(f_type) :: flux
in the core code,
in order to save memory and computing time.
In particular, the previous field apriflux(im,jm,ntimef,nproc)
has been replaced by prior(nproc), and
shape(im,jm,ntimef,nadjust) by shape(nproc).
If you set them explicitly in user-supplied code
(e.g., in subroutine setpriors_special), then
any occurrence of
apriflux(:,:,:,iproc) = flux(:,:,:)
needs to be replaced by
use fields
call f_setfield( prior(iproc), flux(:,:,:) )
and analoguously for shape.
Besides the increase in memory efficiency, the type f_type
allows to write user-supplied code more easily,
due to a set of subroutines for manipulation and I/O of fields.
These subroutines are provided in "fields.f90",
see some usage explanation there.
- New option for the normalization of the spatial base functions (exts):
norms_01x6 and norms_01x9 (using the same algorithm as norms_01x3,
but 6 or 9 iterations rather than 3.
13.035
- Switched back to Gnu compiler for STILT model,
due to problems in footprint multiplication.
- Memory request in the job queue now set by CONSTRAINT
(rather than the previous mempercpu).
See "src/Run_inv.defaults" for the possible values and their meanings.
13.034
13.033
- Updated intel compiler version 19.0.5
- Use of intel compiler also for STILT model
13.032
- "tmodel_interface.f90": The internal file format for storing the atmospheric data
(and for transferring them between the inversion code and the transport model)
has been changed back to unformatted (for speed).
13.031
- End date for transport model run set to 2020-06 (according to updated TM3 prepro files)
13.030
- Prior fields are now saved in NetCDF format ("PRI_name_grid.nc")
rather than binary files ("PRI_name.timestep_grid.b").
This allows to inspect them directly with graphics software,
without the need to convert binaries to NetCDF as required so far.
Such a change has become necessary due to the wide range of grids available since 13.027.
Internally, subroutines from the new fields module are being used.
In a later version, this fields module will be used to store fields
in a more memory-efficient way, by omitting ocean pixels from land fields
and land pixels from ocean fields.
This however means that small numerical changes may occur
if any of the omitted pixels happened to be non-zero in the prior fields used.
- Additional memory reduction has been implemented already now
by deallocating the prior fields right after their creation,
and re-loading them only when they are actually used.
- Due to the change to NetCDF format for priors,
files to be read in according to 'priorFile' or 'shapeFile'
(as well as in user-supplied code via the reading routine 'read_prior')
can be in NetCDF format.
For now, the time step in the files needs to be the same as in the set-up reading them.
Note that binary files can still be read in as before;
thus existing parameter files do not have to be changed.
- Postprocessing: The setting timemask = ''
is no longer understood as 'asis'. Use explicitly timemask = 'asis' instead.
- The collection of external field data sets has been updated, including
- SYNMAP vegetation fractions
- ETOPO1 Earth surface elevation
- GridFEDv2020.1 fossil fuel CO2 emission and O2 consumption estimates [Matt Jones et al. (2020)]
- GIStemp monthly air temperature anomalies
- BEST monthly air temperature
- 6-monthly Standardized Precipitation Evapotranspiration Index [Vicente-Serrano et al. (2010)]
- LOCEAN05t oceanic Mixed-Layer Depth(MLD) [Boyer Montegut et al., JGR (2004)]
- NOAA_ERSST_v5 Sea Surface Temperature (SST)
- HadISST.2.2.0.0 ice-free fraction
These fields can be accessed within any inversion run through the routines of module ingest,
which read the fields and convert them to the current grid (as set by 'bftype').
Notice: In many cases, the runtime of these grid conversion routines is short,
such that it can be done on start-up of every run.
In some cases (high resolution of the file and/or the internal grid)
the runtime is inconveniently long;
in those cases, a separate run just for grid conversion is recommended.
13.029
- 'io_data': Internal transfer format of the atmospheric data
now uses the actual number of species
(rather than a maximum number of species 'mspec' defined in "io_data.f").
This saves disk space in case of nspec==1,
and avoids the need to change 'mspec' in case of nspec>2.
- New option to run regional inversions
that simplifies the handling of the far-field ("trans") contribution
in subsequent regional forward runs:
- Step 1 (the global inversion) and the Intermediate step (the 2 global forward runs)
stay the same.
- When starting Step 2 (the regional inversion), replace the data version
'-D-' (passing the "remaining concentration" [observed-farfield]
as observation)
by '---' (passing the observed concentration unchanged,
and additionally the far-field contribution as "modelled";
STILT will then add its near-field ["cis"] contribution to it).
- In regional forward runs,
the far-field contribution will thus be added automatically as well.
13.028
- Fixed a compilation problem in case of regional inversions
(NetCDF library in the gcc compiler)
- If using land fractions calculated from ETOPO (plandfile='', see 13.025),
fields will be stored in the new user-owned directory "INVERSION/MAPS/"
to be used in subsequent runs, because the calculation from ETOPO is quite slow.
The stored file also contains land orography (variable 'orogr') and
vegetated fraction (variable 'vegfrac').
There is a versioning such that the file will automatically be recomputed
in case of changes to the content of the file
- Postprocessing: New parameter 'shapeFact_cutoutname'
to get diagnostic output for regional inverions
(notice: the handling of shapeFact likely to be revised soon)
- Several small internal changes
- Speeding up normalization in case of multiple test points
(such as Sigma_timemask='[]Filt2.0g_Jul01+YRVI-YRVE')
13.027
- Flux grid and transport model grid
can now be chosen independently from each other
(bftype sets flux grid as before,
tgrid sets transport model grid, with suitable defaults, see "Run_inv.defaults").
If the two grids are different, a grid conversion is done automatically
around the transport model run.
For example, chosing a finer-resolved flux grid than the available transport model grid
may be useful to preserve details of the land/sea mask, of prior fluxes,
or of explanatory variables.
Of course, the domain of the flux grid should in general be as large as or larger
than the transport model grid (otherwise, the uncovered part of the
transport model grid will be zero).
- A variety of new global grids has been defined,
see the list of grids.
- Internal (due to the above-mentioned changes): The variables
lat,
lon,
lat_bounds,
lon_bounds,
dxyp,
and others have been collated into a new structured variable fgeo.
Analoguous variables for the transport model grid are in tgeo.
- Reading of binary files from previous runs (subroutine load_flux_1)
does not require an identical time axis any more,
but the file may have additional records before or after the pertinent time range
(the time steps still need to be identical).
- Adding of hypothetical data points before 1957
(to stabilize spin-up transient):
Now use a shifted copy of data from 1958.0--1964.0, because the previous scheme
(using data from 1957.0--1958.5 only) led to numerically unstable estimates
13.026
- New subroutines ijfield2p1field and p1field2ijfield
to rearrange 2-dimensional spatial fields into 1-dimensional vectors
of their land or ocean grid cells.
This is useful if you want to apply subroutines that need a 1-dimensional vector;
is also saves CPU time because land pixels in ocean fields, and ocean pixels in land fields,
are skipped.
- Analoguously to the existing aprifluxdir, aprifluxID,
additional set-up variables fosfluxdir, fosfluxID, inputdir, inputID
that can be used to modify path names where to read external files from.
- Integration masks: Clean up internal calculation of integration region sets;
provide more region sets as hard-coded, thus available in any grid;
remove old region sets not considering fractional pixels.
- Bug fix, previously wrong behaviour for tmodel == '*'.
13.025
- Default regionset_rhs for convergence diagnostics and RHS
changed to "3Bands25e"
(this region set is available for any grid, because it is calculated in the code rather than read in)
- By setting plandfile = '' in subroutine parameters,
the land fraction (variable pland) is calculated from the ETOPO1 digital elevation data.
This allows a mutually consistent land fraction for any grid
(without the need to prepare an external land fraction file).
- Further small improvements to the grid conversion routines
13.024
- Grid conversion routines generalized to now also handle regional grids
- Input ingestion:
Updated file specifications for GCP fossil fuel CO2 emissions (subroutine ingest_fos_GCP).
13.023
- Grid conversion routines
can now handle all internal grids, including regional grids.
They also have been optimized for speed.
Routines for reading in NetCDF files and converting these fields
from original grid to internal grid are collated in "grid.f90".
The file "grid.f90" contains a number of examples
(e.g., surface classification, CO2 fluxes, environmental variables)
that can be used as templates how to apply the grid conversion routines.
13.022
- A number of parameter checks added (for safety).
- Use of mproc (max number of components) for variable declaration homogenized.
13.021
- Selection of atmospheric transport model:
In order to switch to an alternative transport model or model variant,
the name of its main source file
(without trailing ".f")
can now be set by
setenv tmodel "tm3"
in "Run_inv". The named source file needs to be present
in your "INVERSION/RUN/" or "INVERSION/RUN/src/" directory.
Note: Currently, this does not work for STILT - switching to STILT is done
via bftype as before.
- Due to the choice of alternative transport model files,
the scheme to name the output directories has slightly been changed,
now containing the tmodel setting (plus the mtype setting if relevant).
13.020
- In STILT runs, the sigmas of all total-column stations
are directly taken from the input data files,
even if sigma_from_file is not set.
- Specification of time masks:
When limiting the temporal range of a set of time masks
(such as e.g. "monthly+2000-2009" for monthly
averages from Jan 2000 to Dec 2009),
the years can now also be specified by
"YRFI", "YRVI", "YRFE", or "YRVE"
as in the specification of filters (see 13.019).
Example:
"monthly+YRVI-YRVE" denotes
monthly averages throughout the valid period.
- New time mask: "Jul01"
creates a set of time masks, each representing
a single time step at July 1st each year.
- Specification of time masks:
Time masks can now be filtered
(so far, one only could create single filtered time steps).
In order to maintain a syntax consistent with that used in postprocessing,
the filter is put in front of the actual time mask designation,
separated by an underscore.
Note that the filter is actually applied as an adjoint filter
(only relevant in the rare cases,
such as differentiation not being self-adjoint at the very first and last time steps).
- Normalization of the flux model components:
If 'Sigma_timemask' specifies a set of multiple time masks
(not a single one as always used so far),
the normalization is done with respect to the average of all these time masks.
This is relevant for components with an interannually varying shape,
such as regression components.
Example:
In contrast to "[]Filt2.0g" which normalizes the component
with respect to mid of the last valid year (after filtering),
the setting "[]Filt2.0g_Jul01+YRVI-YRVE" normalizes
with respect to the average over all time steps at July 1
within the valid period (after filtering).
- Small syntax change in 'Sigma_timemask':
In order to make it possible to use the underscore in a consistent way
also for filtered time masks as in the previous bullet points,
the specification of scaling of the target sigma according
to the ratio between the actual adjustable Fourier terms
and a complete Fourier series is now appended after an asterisk
rather than an underscore (think of the asterisk as denoting multiplication by the ratio).
Example:
Sigma_timemask = "[]Filt2.0g_Filt12.0Txa:Filt12.0T"
now becomes
Sigma_timemask = "[]Filt2.0g*Filt12.0Txa:Filt12.0T".
13.019
- Extended syntax in the specification of filters:
When giving the time range for calculating mean seasonal cycles etc.
(as in "Filt2.0gmxs-1993-2018"),
first and/or last year can now also be given as
"YRFI": beginning of full period
"YRVI": beginning of valid period
"YRFE": end of full period
"YRVE": end of valid period
Example:
"Filt2.0gmxs-1993-YRVE" takes the mean seasonal cycle over all years
between 1993 and the last year of the valid period.
- Extended syntax in the specification of station lists
(both in "Run_inv" or for forward runs in "*integrate.script"):
The station list name
(i.e., the file name component name of a "STATIONS/stations.name.d" file)
can now be followed by a list of modifiers
of the form "-item" or "+item".
Each "-item" modifier discards the station from the original list
that matches item by either being identical or containing item from the 3rd character
(e.g., the station fcHUNc is matched by the modifiers fcHUNc, HUN, or HUNc).
Each "+item" modifier adds a station:
If the forward station list 'stnlist_fwd' has been given and contains a station that matches item,
this name from 'stnlist_fwd' is added;
otherwise, item itself is used "as is" as the name of the added station.
Examples:
"s04v23" denotes all the stations from "STATIONS/stations.s04v23.d", as before.
"s04v23-HUN" denotes the stations from "STATIONS/stations.s04v23.d" except "fcHUNc".
"s04v23+fsCVRb" denotes the stations from "STATIONS/stations.s04v23.d" plus "fsCVRb".
"s04v23+CVR" is shorthand for "s04v23+fsCVRb"
if the list given in 'stnlist_fwd' contains "fsCVRb".
"+fsCVRb" (or "+CVR") denotes a list with only "fsCVRb" (i.e., the base list name can be left empty).
Remark:
As announced with version 13.018, the column nstat (Number of stations) in "Run_inv*"
is now obsolete, i.e., any content is ignored (nevertheless there needs to be a placeholder, e.g. '').
Station list files are recommended to have no number of stations in their names any more.
If you want to use an existing station list file that still has the number of stations in its file name,
you can specify it by giving "name.number"
in the stn (station list name) column.
- Binary output files of flux totals:
The file names are now more self-explanatory,
containing "TOTspec" for the sum over all components,
and "LANDspec" or "OCEANspec", respectively,
for the sums over those land or ocean components that are specified as
normal output type (OT='..')
[in contrast to components that are subtracted (OT='S.' or OT='SS')
or excluded (OT='EE') in the output].
13.018
- In "grid.f" (subroutines for reading in and grid-converting input files):
- Remove internal variable 'integrate_timemask';
the default time mask is now set in
'io_write_field',
'io_write_field_gridded',
'io_write_regave', and
'io_write_flux'.
- In "Run_inv*": Number of stations can be left void ('')
to use station lists not containing that number in the file name any more.
Background: Plan to get rid of number of stations in station file names entirely,
because it propagates to various directory and file names causing the need to know these numbers
in downstream steps.
- In this context, some variable renamings to make code more understandable:
stn_nstat0 --> stnlist_inv
stn_nstat --> stnlist
- The file names of the a-priori fields are now "PRI_*.b"
(instead of "apriflux_*.b")
to be consistent with the naming of NetCDF output.
Likewise, the binary a-posteriori output files have been renamed
omitting the "apostflux" name portion.
13.017
- Additional option kind_exts=exts_hyp for spatial correlations
using spatial elements with unisotropic hyperbolic decay
(as introduced by Panos)
- Writing "inversion.nc" (plotting-friendly info-only flux model parameter file):
Corrected bug leading to crash if derived flux model components were present.
- Code files for the individual versions keep their time stamp of last modification
(rather than time when the version was frozen).
13.016
- For flux model components with linear trends
(e.g., exttFilter()='Trend'
or extt2Filter()='/')
only:
The linear rise now extends over the valid period only
(not any more over the full inversion period).
Trend components thus are zero before yrfi_valid
and constant after yrfe_valid.
This makes trend components compatible with regression components,
and may reduce interference with any initial transients.
- New station class 'b' (baseline):
Uncertainty as 'r' (remote), but additionally not taking part in n-sigma selection.
- Replacing the previous link "TS/" that was pointing to the data directory,
the data directory name is now available in "tm3.f" in the new variable 'TSdir0'.
- For forward transport model runs (from "integrate"),
an additional setting dataversion = '-S=' is now available.
Like '-S-', it performs a n-sigma data selection on reading,
but instead of the directory specified in the parameter 'TSdir'
it is using the new parameter 'TSdir2' (to be set in "Run_inv").
13.015
- Substantial performance optimization of the TM3 adjoint (thanks to H. Bockelmann), achieving
5-fold wall clock speed of iteration.
- More flexible specification of temporal filters:
Extending the band pass specification (see 13.010),
filter specifications can now contain up to 10 "frequency-type" pairs (such as "6.0T")
specifying elementary filters which will be combined multiplicatively.
Negative frequencies denote high-pass filters, otherwise low-pass filters.
The letters for seasonality, long-term mean, and trend are (optionally) appended after the whole chain.
(The extended syntax is compatible with the previous syntax, except for
some cases where the "-" of the appended period is mistaken for a negative frequency
which leads to an error message; therefore,
e.g., "Filt6.0T-1993-2016" now needs to be written as "Filt6.0Tx-1993-2016".)
- The default test time for "rhs" functionals
(used for convergence diagnostics and/or a-posteriori uncertainty calculation)
is now always the mid of the last year of the valid period.
This only makes a difference if 'yrfe_valid' is specified explicitly,
otherwise it corresponds to the default already implemented before.
- Bug fix: For filters "Diff...."
(temporal differentiation via Fourier decomposition),
'tsfilter' so far spuriously added the mean of the original time series.
- Removed "taper" functionality of NetCDF flux output (never actually used).
13.014
- The subroutine 'tsfilter' for time series filtering has been revised for speed.
The 'ts' argument is no longer a scalar time series, but has 2 "space" dimensions of arbitrary size.
This makes the subroutine 'tsfilter2D' obsolete;
it needs to be replaced by 'tsfilter'
in all user-specific code.
13.013
- If stations_class_file=='', the station classes are taken from the 2nd small letter of the record code.
This reflects a change in the naming convention for the data records,
as described in Station Codes.
13.012
- New parameter timemask4g in the integrate script,
allowing to output gridded time-filtered fields in the same postprocessing run
with regionally-integrated time-filtered fields but using different sets of temporal filters.
- Through the new parameters miniter_diag1, miniter_diag2, and miniter_diag3
in "iteration.in",
the diagnostic convergence output for specific mu values can be specified to start only after a
certain number of iterations. This is useful for mu values smaller than 1, for which the output
differs from that for mu=1 only at later stages of the iteration.
This helps saving execution time, as each diagnostic mu requires matrix solver to be called.
- "grid.f":
The names of various public variables have been changed and are now prepended by grid_,
to make them more easily recognisible in user code calling "grid.f" routines
from "parameters.*.*.F".
These variable names thus need to be changed when re-using older "parameters.*.*.F" subroutines.
- Subroutine parameters is now in "special.f90"
together with "setpriors_special" etc.,
not any more in "parameters2.f90" as part of module global.
This allows subroutines from other modules to be used in subroutine parameters.
However, a use global statement is now needed at the beginning of subroutine parameters.
- For long CO2 inversions starting in 1955 or earlier, the data points between 1957.0 and 1958.5
are additionally used already 2 years earlier, diminished by (0.7ppm/yr * 2yr)
corresponding to the CO2 rise at MLO 1958-1968.
This is meant to stabilize the initial transient and get a better global atmospheric CO2 field
at the start of 1957.
The effect on the estimated CO2 fluxes is small, except for a
reduction in the initial spike in early 1957.
13.011
- Changed initial c0 for CO2 from linear rise to
a quadratic rise to better represent early (1950s) and recent (2010s) parts of hvMLOk time series.
This removes large spurious adjustment fluxes in CO2 inversions starting in 1955.
13.010
- Temporal filters: Added option to specify a high-pass frequency (in addition to a low-pass frequency).
Simply put the high-pass frequency with a minus sign after the low-pass frequency,
e.g., "Filt2.0-0.05g" for a band-pass between 3-monthly and decadal variations.
- Time masks: Added option "Jan-Jul" to specify the amplitude of seasonal variations.
This yields 2 masks per year, giving Janyr-(Julyr+Julyr-1)/2
and (Janyr+Janyr+1)/2-Julyr, respectively.
Analogously for "Apr-Oct".
13.009
- Additional built-in regionset options:
"3Bands15e", "3Bands20e", "3Bands25e", "3Bands30e"
using "exact" latitudinal boundaries (i.e., fractional pixels, rather than nearest full pixel).
- Bug fix for setting extt2Filter (modulation of spectral parameters introduced in 13.008):
extt2Filter='/' erroneously also switched on quadratic modulation terms.
13.008
- Transport model: Switch to TM3 version 3.8.04 with some performance optimizations (by Hendryk).
- Fluxmodel definition: Added option to allow temporal variations in spectral parameters of the unknowns
(e.g., a slow variation in the mean seasonal cycle).
- Station lists: Introduced additional comment sign "-" for sites not to be used in the inversion
but nevertheless to be included in forward runs.
(The updated station lists version "v21" now use this comment sign such that all stations of the "FWD" set
are included in forward runs.)
- Minor changes in log messages or code comments.
13.007
- NetCDF output: Added variables 'lon_bounds' and 'lat_bounds' for the
grid cell boundaries in longitude/latitude direction.
- Additional time masks: 'Q1' ... 'Q4' for the 4 quarters of a year
(same as 'JFM' etc.).
- Use updated compiler version (intel/17.0.1), to get better performance.
- Changed queuing options to run on Mistral's 'compute2' partion using 36 CPUs,
to get better performance and more memory.
Make sure to remove any previous explicit setenv CPU settings in your "Run_inv"
script that might lower the number of CPUs.
13.006
- Added options when reading in the model-data uncertainties from the "*.ts" files:
sigma_from_file can take the following values (also see "Run_inv.defaults"):
- .false. : calculate data sigmas from station class, meassigma, etc. (standard)
- modsigma_only: read data sigmas from *.ts files, but take it as model sigma
only (i.e. still quadratically add calculated measurement sigma)
- obssigma_only: read data sigmas from *.ts files, but take it as measurement sigma
only (i.e. still quadratically add calculated model sigma)
- .true. : read data sigmas from *.ts files as is
- When reading NetCDF files by grid_open_nc, take attributes
scale_factor and add_offset into account.
- Writing out flux totals during postprocessing (out_binary_tot):
In multi-species setups, write each species into a separate file.
- Data-density weighting: For moving stations, do not de-weight any more as soon as data points are
spatially more distant from each other than DDW_spatial_corr_len (default value 1000.km)
(code partly thanks to Shreeya; consideration of altitude not yet implemented).
13.005
- read_prior: Allow to read in files that do not cover all the inversion period.
Added options controlling how to fill in the uncovered part of the inversion period.
- "regave.f90": Correct output of incomplete regional averages.
13.004
- Infrastructure to convert external gridded files to the internal grid and file format of the inversion
(TM3 grid, STILT grid, etc.)
has been included in the inversion code. In particular:
- Grid/format conversion can now be done by runs similar to forward runs from flux files,
except that the set-up file "parameters.*.*.F" contains the code
(in SUBROUTINE setpriors_special)
to read in the original file and to perform the grid conversion.
The resulting converted fields are then available as "apriflux.*.*.b" files
in the output directory of this conversion run.
- There are several subroutines available for standard tasks,
such as reading in NetCDF files or grid-converting 2D fields.
See examples in "parameters.co2.Pri_*.F".
- The set-up name should start with "Pri*".
If that is the case, the directory name will start with "PRIOR" rather than "OUTPUT",
and the redundant data-related parts of the directory name will be omitted,
in order to avoid overlong names in the later use of the prior files.
- Once the conversion has been run,
the usual post-processing (regional integrals, temporal filtering, transport model runs)
can directly be done in the same directory just as in normal forward-run directories.
- If the set-up name starts with "Fwd*" or "Pri*",
then RT='_fwd' is set automatically.
- More flexibility for specifying data in forward transport model runs:
- For forward transport model runs started via "*integrate.script",
the data version can be changed through the namelist variable dataversion,
and the station list through stn_nstat (as formerly through inputTag).
- All "input.*" and "*output1.*" files/directories now always wear
a tag of the form ".dataversion.stn_nstat".
-
In output directory names, the station set is now surrounded by "." rather than "_",
and the number of stations is added,
in order to be more consistent with the "input.*" and "*output1.*"
file/directory names.
(Note however that naming is not consistent any more if the station set or the data
are manipulated by setting msite, psite, osite, or bsite.
In that case, the manipulation is applied to all station lists used within this run,
but only indicated in the main directory name.)
13.003
- Further adjustments for use on MISTRAL,
including the STILT code and the column observation operator.
- Further speed optimization (fluxmodel, ad_fluxmodel).
- If you want to use an older code version rather than the most recent one installed in your account,
you can set, e.g.,
setenv codeversion '13.002'
in "Run_inv*".
13.002a
- Minor script adjustments for use on MISTRAL.
13.002
- Code ported by Hendryk to the architecture of the new MISTRAL compute nodes.
12.120
- Last version for the architecture of BLIZZARD.
12.119
- Further performance improvement (scorep in "model.f90") by Hendryk.
12.118
- New possible setting of region sets:
'(lon,lat)' denotes a single pixel of the specified coordinates.
- For postprocessing synthetic runs, the known truth is now integrated twice,
once assuming it to be a land flux ("knowntruthL.*") and once an ocean flux ("knowntruthO.*")
[the previous file name was "TRUTH.*"].
- Correction of adjoint atmospheric chemistry code ("tm3_userchem_ad.f").
- "tm3.F" subroutine ad_pick: If TM3 is run with permanent non-leap year (iyearm/=0),
the checking of time in interpolation is suppressed to avoid trouble on Feb 29.
(Currently this leads to somewhat deteriorated symmetry index in runs with fixed meteorological year.)
12.117
- Numerical correction: No OpenMP around 'tsfilter'
(to prevent occasional seg.faults or numerical errors).
- ad_fluxmodel_drv: Added security check (previously possibly wrong array access).
- Change in compiler options (by Hendryk).
- Correction in postprocessing (for out_cross):
Use the time pattern closest to 'test_time'
(i.e., same behaviour as in definition of RHS).
12.116
- Slight change in "model.f90" for bit-identically reproducible results (by Hendryk).
- The user's base "INVERSION/" directory is now available as a symbolic link in each "OUTPUT*/" directory.
12.115
- All pre-defined "parameters.*.*.conc.F" files have been placed into the "src/version/" directory,
in order to ensure that they stay consistent with the rest of the code.
If needed, user-specific "parameters.*.*.conc.F" files can still be placed into your "RUN/" directory
and used by #include'ing them into the "parameters.*.*.F" file.
However, remove any of the standard "parameters.*.*.conc.F" files from your "RUN/" directory,
otherwise they will be used instead of the current ones from "src/version/".
12.114
- Corrected bug (introduced in index mapping in 12.112) that may cause segmentation faults.
12.113
- Correction: sigma_from_file now works as described in 12.088:
The data density weighting is applied also to the sigmas read in from the "*.ts" files,
unless switched off explicitly by
  setenv no_ddw .true.
Caution in 2-step inversions with sigma_from_file:
Due to this, no_ddw needs to be set to .true. in step 2,
otherwise data density weighting will be applied twice
(the "Run_inv*" file created automatically for step 2 already takes this into account).
- New option for temporal subsampling: timemask='msc' provides mean monthly seasonal cycle.
Similar to filtering/subsampling by 'MOxm_monthly',
but can also be used with subroutine io_write_regave.
However, cannot be done over restricted time period.
- Compilation: add option -qstrict.
12.112
- Further optimization for memory efficiency through index mapping of the large array variables
'shape', 'extt', 'exts', and all arrays used as 2nd argument to 'ad_fluxmodel'.
As a consequence, if any of these arrays has been explicitly accessed by user-specific code (in 'setpriors_special' etc.),
the last dimension needs to be index mapped as in
    shape(:,:,:,iproc)   becoming   shape(:,:,:,iadjust0(iproc))
- Set-up parameter exttFilter:
Previously, 3rd filter letter " " had been replaced by "a" for backward compatibility.
This has now been removed as it creates confusion, i.e., the 3rd filter letter is now interpreted correctly.
This change will
only affect old set-ups that count on the previous letter replacement.
12.111
- Increase OMP_STACKSIZE as recommended by Hendryk to prevent segmentation fault on large resolution.
- Give error message if correlation length parameters xradexts or yradexts are set zero or negative.
- Set-up parameter regionfile (spatial state-space layout): Add new options 'QxQdegr' and 'HxHdegr'
for regular 1/4 or 1/2 degree grids.
12.110
- For use in sensitivity runs, a constant offset can be added to the concentration data of a given site (by Ute).
The name of the site is specified in "Run_inv" through bsite,
the value of the offset through site_bias (see "Run_inv.defaults").
- New site class UP (urban polluted), set to 5 times the data uncertainty of class R (by Ute).
Due to this addition,
the variable modsigma_UP needs to be added
into any user-specific "parameters.*.conc.F" files
(see e.g. "parameters.co2.Std15.conc.F" for a template).
12.109
- Discarding sites from the station list when using do_unc_rnd:
If a site name is preceeded by "$" (instead of the usual comment signs "#" or "!"),
then all values of this site are discarded in the cost function (by setting their sigma values to negative),
but the site is nevertheless first processed normally, including drawing its random numbers.
This is important when different station lists are to be compared (as in network design studies),
as it ensures that the same random numbers
are used for any particular data point.
- New filter option:
12.108
- Optimization for memory efficiency (by Hendryk)
12.107
- New integration
timemasks:
decadal and pentadal.
- Number of CPUs can be set again (variable CPU), but default is 16 as before.
See "Run_inv.defaults" for meaningful choices.
- NetCDF output: The first 100 time masks (if present) are always included in the files.
- Write sizes of largest arrays to log file (for info only).
Further, get resource use of code (by getrusage, result in "*.rusage").
- Bug correction for option 'sigma_from_file' (so far, sigmas from file had been overwritten).
- Unused constants ndyn and ndyn_cg in "grid_*.f90" removed.
12.106
- In the "parameters.*.*.F" files, an additional CPP macro definition giving the grid
(GRID_bftype, e.g. GRID_fg)
is now available for #ifdef decisions.
This may be useful, e.g., for different settings of 'nz' depending on the grid, as in
#ifdef GRID_vfg
  integer,parameter :: nz=13421 ! GridPixel (ocean, _vfg)
#else
  integer,parameter :: nz=2590 ! GridPixel (ocean, _fg)
#endif
- Similarly, a CPP macro definition giving the species
(SPEC_spec, e.g. SPEC_co2)
is available.
This can be used to use the same "parameters.*.*.F" file simultaneously for different (related) species
(such as co2 and co2+o2).
To do so,
- select the actual species (as usual) by the 3rd argument in "Run_inv", as co2 in
  ${SCRIPT} 2006 2007 co2 S19c 'M96k' 53 Std18
- give the species in the name of the parameters file by e.g.
  setenv specp co2+o2
- use
#ifdef SPEC_co2
to branch settings in "parameters.co2+o2.*.F"
12.105
- Correction of 'include' syntax (now CPP rather than FORTRAN)
12.104
- Slightly changed compiler and queuing options (e.g. now 16 CPUs) for further speed optimization (recommended by Hendryk).
12.103
- STILT version 1.7:
- Further speed-optimized by Hendryk.
- In particular, footprint files are read in as NetCDF files that take much less disk space.
- In your "run_inv.user" file,
set STILTDIR=/work/mj0143/STILT should be set
(this is a new central directory for STILT code and input files maintained by Ute).
Further, your "Run_inv" file
should not redefine DATAFP
unless an alternative footprint directory is explicitly required.
- TM3 version 3.7.26s5a (small bug correction allowing to compile double precision version).
12.102
- Further speed-optimization (fluxmodel routines from "model.f90") by Hendryk.
- "*integrate.script": Small change in default filters for postprocessing.
12.101
- Using TM3 version 3.7.26s5 speed-optimized by Hendryk.
12.100
- Integrate: store recomputed state vector, for reload in subsequent uses of integrate.
- "ClimCorr.f90": Allow correlation of pixels to regional totals.
- "tm3_stilt.F": Correction in case of zero-response footprints (by Ute).
12.099
- Added species: Rn, SF6
- Changed initial condition for CH4
- Using STILT version (v1.5) speed-optimized by Hendryk.
12.098
- Added options:
- difference = 'zeroconc': Set all data to zero.
- do_unc_rnd = 'only_prior': Ensemble-based uncertainties, but omitting data uncertainty.
- New option for derived components:
drvType = 'TISfhist' solves a linear differential equation as 'TIS', but includes
a 'history flux' contribution as in the ocean mixed-layer budget equation (Rödenbeck et al., Ocean Sci. 9, 193-216 (2013)).
For that, mixed-layer depth is available as a variable MLD in the inversion code
(needs to be initialized by the user through subroutine allocate_MLD).
- 3D mixing ratio output from TM3:
Added alternative information on vertical position via surface pressure and coordinate coefficients
(see Format description).
- Minor adjustments in default settings for the integration scripts.
- For synthetic runs: The knowntruthfile is only read once, and stored locally as "knowntruth.*.b".
On postprocessing, the known truth is also integrated/filterd (files "TRUTH.*flux.*.nc);
the regional integrals however may be slightly wrong because the region type is assumed as "either" (rt=3)
as the actual region type of the known truth is unknown to the program.
12.097
- Use TM3 version 3.7.26 which includes performance optimizations by Hendryk.
Results are numerically the same, but not bit-identical.
12.096
- Added option to calculate a-priori and a-posteriori uncertainties
from an ensemble of random realizations of prior and data errors
(code implementation by F. Reum following the method by Chevallier et al. (2007)).
- Corrections to column observation operator (small numerical changes if column data).
12.095
- Internal code change: Even if an a-priori flux component is zero (priorCT(iproc)==CT_zero),
it is not skipped any more in any calculation. This has become necessary because
a-priori components with zero mean may become non-zero if random error realizations are added
(see 12.094).
12.094
- "Run_inv": New parameter maxiter_tot to be passed on into "iteration.in"
(default: maxiter_tot=70 as before).
- Internal change in component-wise I/O ("apriflux.*.b" and "shape.*.b"):
Components are written if non-zero, on reading non-existing components are assumed zero.
(Reason for change: in some cases (e.g. random priors), prior components
exist even if priorCT==CT_zero.
Risk involved: No error message if files are missing or unreadable.)
12.093
12.092
- "Run_inv": New switch mtype to select alternative meteorological fields for TM3
(currently available: NCEP (default), ERA-Interim (mtype='_era')).
- Column observation operator:
- Input data format now analogous to station data.
- Postprocession option inputTag also works with column data,
thus column data can also be used freely in forward TM3 runs.
- inputTag: If the corresponding station file does not yet exist in the output directory,
it is linked from "STATIONS/" (this requires inputTag to include the number of stations
as contained in the file names of the station lists).
If inputTag refers to a list with only one site (if it ends in ".1")
then inputTag is interpreted as directly meaning that site (not a list)
and the list with that one station is created.
12.091
- "tm3.F": Added observation operator for GOSAT column data (by Friedemann Reum).
12.090
- ASCII station time series output: Format of height changed from I5 to I6.
- wall_clock_limit changed to 28800 (max on Blizzard).
- Use TM3 version 3.7.22b, which can also read large prepro input files (8-byte iolength).
- "tm3_stilt.F": correct reading of "chi2.d"
- 'tsfilter': correct bug affecting parsing of filter string starting with "-".
-
Preparation of ocean data: Stations starting with o are skipped in reading data
from "TS/"
- New parameters in "iteration.in" that determine postprocessing after convergence
of the iteration.
- 'run_integrate': whether or not
the postprocessing script ("*_integrate.script") is submitted automatically
(default is true, as previously).
- 'integrate_mu_default',
'integrate_timemask_default',
'integrate_regionset_default':
parameters to be activated in "*_integrate.script" by default
(these defaults can also be set in subroutine 'parameters').
- Correction to "correl.f90":
A-priori covariance at test pixel is now calculated separately for each component,
to avoid meaningless superposition of uncertainties with components of type CT_drv
(no problem for standard flux components as these are a-priori uncorrelated to each other).
- Forward runs in postprocessing: New parameter tm_MaskoutReg in "*_integrate.script":
In the forward run of the transport model, only fluxes from the region defined by this parameter
are transported (scope analoguous to tm_FluxFilter).
12.089
- add
setenv OMP_STACKSIZE 50M
to scripts (recommended by DKRZ to prevent segmentation fault in TM3 at higher resolutions).
- increase Tmrec = 3000000 (from 2000000)
- Corrected filter "MOxm*" (previously, the long-term average was wrong)
12.088
- Sigmas of data values can be read in from the "*.ts" files.
To do so, set in "Run_inv"
setenv sigma_from_file .true.
Then the read-in sigmas (e.g., column 12 if there is one species) will overwrite
the standard sigmas calculated from the station class.
The data density weighting will still be applied; to switch this off as well, additionally set
  setenv no_ddw .true.
Also see comments in "Run_inv.defaults".
-
The regionset and timemask to be activated by default in the integration script
can be set in "parameters.*.*.F" file:
In SUBROUTINE parameters, put the statements like
  integrate_regionset_default = '......'
  integrate_timemask_default = '......'
This is convenient in particular since the integration script is started automatically.
Of course, the regionset and timemask can still be changed manually
in "*_integrate.script" as usual.
-
Preparation of total-column data: Stations starting with c are skipped in reading data
from "TS/", some dummy subroutines have been added to "tm3.F".
12.087
- Integration: The name list items regionset and timemask can contain a comma-separated list
of region sets / time masks.
This allows faster output of NetCDF files because
no loops are needed in the integration script any more.
It also allows to do transport model forward runs in combination with several (not just one)
regionset or timemask.
(No manual adjustments by the user needed
as the automatically generated "*integrate.script" files follow this new syntax.)
- Integration script:
- The pre-selected region sets and time masks have been changed (depending on species).
- Integration script is automatically submitted after convergence.
- Temporal filters: New filter "MO" creating monthly steps.
For special purposes only, e.g. for using monthly values in an extra constraint.
- Enhanced syntax for time masks: Time masks corresponding to filters ('Filt*' etc.)
can always contain a test time
(appended to time mask name after a '+')
- Some region sets of general interest are available hardwired
(ie., no external "reg*d" file needed, thus available for any grid):
- '' = 'global' = 'Global',
- 'NH20' (Northern Hemishere 20N-90N),
- 'Tr20' (Tropics 20S-20N),
- 'SH20' (90S-20S),
- 'Aggreg6Eu01' (subdivision of Europe),
- '5OceanBands1545' (ocean latitude bands 90S-45S, 45S-15S, 15S-15N, 15N-45N, and 45N-90N),
- '5OceanBands1545PAI' (ocean latitude bands and basins),
- 'OceanStations' (HOT, KNOT, and BATS)
- For reference, the "Run_inv*" file actually used to start a run is
copied into the output directory under the name "Run_inv.started",
with the original name appended as a comment line.
- "CompileTM3": Added compiler flags -qsmallstack=dynlenonheap to avoid crash of TM3_vfg
at double precision
12.086
- integrate: If out_Lcurve=T, a file "*chi2r.d"
giving the reduced Chi2 statistic for different mu
is written in addition to the L-curve file.
- exchanged order of timemask_rhs and regionset_rhs in RHS-related filenames to be consistent with
other postprocessing output
- Simplified procedure for 2-step (regional) inversions:
- Intermediate step, second forward run:
Set
- tm_inputname = 'M-M'
- tm_cutoutname (name of DoI, now without start year of PoI) and
- tm_cutoutyrfi (new: start year of PoI);
The cut-out files (defining the DoI) have been renamed to match the grid tag of regional grids
(e.g. tm_cutoutname = 'stilt01' is identical to previous '12W35E35N62N')
- Step 2: The second forward run now writes a "Run_inv.*" file from which the step-2 run
can directly be started.
It contains the required shapeFact1 values to correct the normalization of the a-priori sigmas,
as well as the other required settings.
Edit end year or other settings if needed.
- Further changes to simplify regional inversions:
- Parameter setting regionfile: For grids other than TM3, regionfile='Grid03'
is now essentially equivalent to '1x1degr' for land components and '2x2degr' for ocean
(previously '4x4degr' and '8x8degr'). This allows the same setting for global and regional inversions.
- In order to switch between different directories for STILT footprint files,
the variable DATAFP can be set in "Run_inv".
- Recommendation: Add the line
  source "src/Run_inv.defaults"
at the beginning of "Run_inv"
to give default values to all runtime parameters.
This avoids the necessity to adjust "Run_inv" in case new runtime parameters will be added in
any future code update.
- (Started alternative solution scheme for RHS (option rhs_simultaneous)
but not yet tested properly.)
12.085
- init_input: Ignore data values smaller than -9.9e9 by setting sigma=0
(such values are ignored in TM3 anyway, but they caused problems in the "*.ts" ASCII output)
- "cross.*.d2": Added header lines (Attention: needs grep command in Matlab script)
- "tm3.F": Added chemistry for CH4 (by Ute)
12.084
- io_write_component: Gridded output:
- Filter is not ignored any more
- Still binary output (not NetCDF), but always single precision (r4)
- Add run-time option
setenv XLFRTEOPTS "err_recovery=no:langlvl=95std"
to all scripts to adjust to changes in default DKRZ settings;
needed to change 'X' format descriptors to '1X' to conform to FORTRAN90
12.083
- Updating coupling to STILT for regional inversions: Including changes by Ute/Kristina/Jan
- "tm3_stilt.F": Flip y-direction of field area0 (grid cell areas)
(numerical changes in STILT runs only)
- "run_inv": Added $DPREPRO directive in compilation of "tm3_stilt.F"
- "Run_inv": Additional setting DPREPRO (relevant for STILT only)
- Switch to STILT v1.3
- "run_inv": Default memory request for queue enlarged to 31240 mb.
- "tm3.F": Initial mixing ratios added to actual tracer fields for species CH4 and N2O
(preparation for implementation of atmospheric chemistry)
12.082
- io_write_component (relevant for component-wise output only):
If gridded file is requested, write binary file instead (rather than stopping with error)
12.081
- For exts=exts_file: Correct a bug in case of double precision.
12.080
- Binary file "fluxmodel.b" is now written as several FORTRAN records, to avoid over-long records.
12.079
- tsfilter: Correct bug affecting filters for mean seasonal cycle
with special treatment of linear trend ("Filt*.m.s").
- new option to read in region masks:
First look for file "map_regionset_grid.d"
containing region masks as fractional cover.
12.078
- Fluxmodel, derived components: Adding new parameter 'drvScaleAdd':
Similar to parameter 'drvScale' but meaning
that source component is to be directly added to the component considered
(w/o multipication by its 'shape' or any consideration of 'drvType').
This is done in addition to the effects of 'drvScale' etc.
12.077
- RHS, "mask.f90": Adding option in specifying the temporal integration via "Filt*" in the target quantities:
Add brackets ("[]Filt*") to limit the support in the time domain to one year around test time.
For example, "[]Filt2.0g" yields a roughly 3-monthly integration interval, with the tiny tails
outside the +/-0.5 years interval being cut.
- Cleaning up normalization of adjustable terms:
- Parameter 'shapeScale' is now always just a simple scaling factor
(as formerly if shapeScale_timemask=='')
- Normalization now to be set by new parameter 'Sigma_target'
(Sigma_target<=0 means normalization switched off)
- 'shapeScale_timemask' renamed to 'Sigma_timemask'
- 'shapeScale_region' renamed to 'Sigma_region'
12.076
- Default TM3 prepro data base switched from "TM3/prepro/" to "TM3/prepro02/" which has
- corrected _vfg fields (Not yet!)
- t and q fields present for all years
- slight numerical changes in several years, due to changes in original NCEP files
(The TM3 prepro data base can optionally be changed back by setting
  set PREPRODIR=${TM3DIR}/prepro
at the end of "run_inv.user".)
12.075
- Comment lines (column meanings, Gnuplot example) added to "*chi2_it.d"
12.074
- Corrections to L-curve calculation
12.073
- Postprocessing: added option 'out_cross' and 'out_cross_rhs'
to calculate (co)variance matrices for different mu values
- TM3 prepro directory can be changed by defining PREPRODIR in "run_inv.user"
(e.g. switching to new set of prepro files - set PREPRODIR=${TM3DIR}/prepro02).
- for species 'ch4', temperature fields are read in in TM3
12.072
- move function 'str' from module 'mask' to 'aux'
- new aux subroutine 'splitlist' to split items from a list of names
- "priors.f90": 'priorfile' can now be a blank-separated list of file names, then all files will be added
- Slightly changed c0 values for "ch4" and "n2o"
- Postprocessing - fwd runs: Added option 'tm_FluxFilter' in "*_integrate.script"
to apply a temporal filter to fluxes used in transport model run.
12.071
- add option 'h_along_params_conj' (iteration along parameter directions with making conjugate);
'h_along_params' now purely along parameter directions w/o conjugacy
- clean up real-kinds such that switching to double precision is possible:
- "tm3io_flux_buffer.f": sequential reading to avoid strange problem with record length with r8 fluxes
- "io.f90": writing of aux variables ('shape', 'extt', 'exts', 'dxyp', 'area', 'tmask', 'taper')
always as r4 independently of their internal kind
- 'lon' and 'lat' always r4 (because coordinates in NetCDF output)
- "Run_inv": kind options: rename 'r8' to 'r8f',
add new 'r8' having double precision in both flux and transport models
- additional diagnostics: "*parameters.out" files (parameters of components with few degrees of freedom in ASCII)
written also for all h, l, and b
12.070 and before
12.070 * omit mu in output file name if mu==0.
12.069 * depending on species, mixing ratio unit (both in the external and internal files) can be different from "ppm"
(as defined in "parameters..f")
* "tm3io_mix3D.f": Convert all variables to be output (c0, mix, gph) into real (in case kc/=k4)
* "tm3io_flux_buffer.f": Correct bug in effect if tm3 runs in double precision
* added parameters for further species (ch4, n2o, cos) [partially preliminary]
* generic file "parameters.xxx.FwdFile.F" provided for doing forward runs
12.068 * "aux.f90": read_prior: Add option to filter (by `tsfilter2D') after direct input
by starting filter string by "~"
--> this allows all filter types (incl. linear fit) to be applied to input
(had to change order of modules in "include.f90", and to move function `weight' to module 'mask')
* "monthly_data.f": No error generated if missing input .ts file - essential if `msite' is set
12.067 * init_rhs: Redefine the meaning of negative values for RHSgroup:
If RHSgroup<0 for a component, use each parameter belonging to that component
as a separate RHS.
* correct CPU time check for IBM (replacement of `tremain')
* add option "Define" to "Run_inv": cpp #DEFINE's to manipulate parameter file
* provide integration script for PRI just after fluxmodel is ready
* integrate: Parameter values are written into separate file rather than logfile
12.066 * Add compiler option '-qsmallstack=dynlenonheap' to solve problems with segmentation faults on IBM
* "aux.f90": read_prior: Ignore non-equidistantness of files with lower than daily frequency
because it seems that this can happen w/o being a problem
* "aux.f90": `unix': Correct way of calling `system' on IBM
12.065 * "aux.f90": load_flux_1: Bug correction:
- Do not read behind flux(:,:,ntimef) any more
- Stop loop if more than ntimef records
12.064 * "io.f90": Bug correction in output of time-filtered gridded files
*
* "sigmas.f90": add possibility to change the test time (add "+" to the filter;
"+I" means the starting time of the run)
12.063 * user-defined subroutines in "priors.f90":
- rename 'get_apriflux_special' into 'setpriors_special',
- call it before `get_apriflux' (ie., before any built-in subroutines of `setpriors')
* "integrate.f90":
- new subroutine `integrate_special' for diagnostic output calculations in `integrate'
- declare `apostflux' (formerly `apoflux') as global variable (suh that available in `integrate_special')
- prepare Lcurve
- ouput of temporal standard deviations of integrated/filtered fluxes to logfile
* rename: `integrate_timemask' into `timemask_rhs_default'
`integrate_region' into `regionset_rhs_default'
12.062 * new compiler version IBM/xlf12.1.0.5
12.061 * "priors.f90": correct bug for components with exttFilter="LT":
there was wrong normalization due to wrong filter ('c' rather than 'b' erronously introduced
for wgt_Box earlier [probably in 12.035])
--> a-priori sigmas for LT components may have been too large by factor ~1.2 (possibly
more for shorter inversion periods)
12.060 * "mask.f90": correct bug: time dimenasion of cos_ftime and sin_ftime only 1:ntimef
* "diagnose.f90": additionally give values for components as-is (w/o scaling for
the individual species) - important for components not directly affecting the
surface-atmosphere fluxes but only through derived components
12.059 * add parameter `atm_constraint' to swtich off transport model run
* read_prior: no allocatable arrays any more, to prevent memory leaks
12.058 * "Run_inv": can swtich between different "kinds_*.f" files
12.057 * model.f90: parallel do in TIS
12.056 * model.f90: some preparations for using TIS in derived components
adjoint TIS
12.055
12.054 * changes necessary for porting the code to Power6 (blizzard.dkrz.de):
- change of compiler flags, path names, etc.
removal of any explicit path names other than in "run_inv.user"
- "state.f90": replace NAG library calls by LAPACK
- get_pfgh: remove some wrong and unnessecary lines
12.053 * iteration: possibility to calculate conjugacy separately for pixels
12.052 * "priors.f90" (extra constraints): set shape to zero for all inactive pixels
12.051 * "priors.f90": new option for shape in extra constraints:
shapefile(iproc)=='%' for setting shape to root mean square apriflux
(to obtain similar cost function contributions for each pixel)
12.050 * "mask.f90": change in end treatment of "DiffD2" filter
12.049 * "tm3.F": correct problem from 12.048: data ignored if mixo<=-9e9 (or smix<=0.)
because O2 data can be negative
* "mask.f90": new filter "DiffD" for differentiation in time domain
(to avoid trouble from cyclic link between start and end when differentiating in Fourier domain)
12.048 * "tm3.F": ignore all data values with mixo<=0. or smix<=0.
(meant to allow data points where not all species have a measured value)
12.047 * extra constraints: re-define `apriflux' and `shape':
apriflux --> -apriflux
shape --> 1/shape
* "integrate.f90": also calculate a-post values of extra constraints
12.046 * "tmodel_tm3.f90": No transport model run if zero flux to atmosphere
(for minimization of extra constraints only)
* "integrate.f90": replace `xor' by `neqv' (to be standard conformant)
12.045 * "Diff....???s" filters: unaccuracy in derivative of trend
12.044 * correct bug in `add_extra': negative for diff==.false.
12.043 * correct bug in `tsfilter': negative trend for "Diff....???s" filters
12.042 * changes in real type handling (intended to enable full double precision run),
but not yet finished
12.041 * "aux.f90": pland: cut very small land or ocean fractions (below 0.0001)
to avoid numerical trouble (might slightly change results!)
12.040 * implementation of extra constraints (CT_extra components)
12.039 * prepared implementation of extra constraints
* compiler flags only to be set in "Compile" and "CompileTM3" (not any more in "run_inv")
12.038 * "model.f90": For CT_drv components, change of units convention (no unit change in fluxmodel)
* "mask.f90": Filter: added options for treatment of linear trend (4th letter)
12.037 * "priors.f90": `priorFile' or `shapeFile' can be '#' to leave `apriflux' or `shape' untouched - assuming
they are set in `get_shape_special' or `get_apriflux_special'
12.036 * `read_prior': add fake records within last year (from last year + trend) if missing in input file
(only in multi-year inversions assuming that last year is spin-down only)
* "tm3.F": corrected bug in calls to write out 3D fields
* integrate: corrected new bug in integrating PRI
* "tmodel_tm3.f90": totflux and ad_totflux are deleted after run (to save unnecessary disk usage)
12.035 * "tm3.F":
- option to output surface mixing ratio, wind speed, pressure (if ninstsfc>0)
- use "tm3io_mix_yearly_netCDF.f" (yearly NetCDF 3D mixing ratio output)
* "tmodel_tm3.f90", "integrate.f90", "nr.frprmn.f90": add `ninstsfc'
12.034 * parameter files can now contain subroutines for parameter manipulations
* "model.f90": prepared derived flux components and extra constraints
* parameters for grid definitions now in separate files "grid_*.f90"
12.033 * "priors.f90": corrections for flux model for STILT application:
- get_regions_Grid03: Generic code to generate regular regions for all non-TM3 grids
- get_dist: Distance of grid cells calculated from `lat' and `lon'
(for TM3 grid, the old code has been kept for backward compatibility)
12.032 * "nr.frprmn.f90": add test option to replace conjucate h directions by vectors along the parameters
(setting `h_along_params' in "iteration.in")
12.031 * test time for RHS can now be chosen (`time_rhs')
* "nr.frprmn.f90": do fwd transport run for each RHS (to get info about which data signals created flux feature)
* "nr.frprmn.f90": additional convergence criterion: iter>m (prevent more iterations than degrees of freedom)
* "nr.frprmn.f90": output k as column 10 of "*chi_it.d"
* integrate: NetCDF output set as default (but ASCII "*.d2" output still possible)
* integrate: option to output gridded time-filtered fluxes as NetCDF file
* integrate: option to set mu='PRI' for integrating prior in NetCDF file
* integrate: `timemask' can now contain both temporal filter and time mask
* compilation: less optimization (vsafe rather than vopt)
to avoid occasional "Bus error" and numerical inaccuracy
12.030 * "aux.f90": Reading-in of flux files: implement filter '-LT' (subtract long-term mean)
12.029 * add capability for NetCDF output of filtered/aggregated flux time series
12.028 * "priors.f90": shape can be proportional to the difference between 2 files
syntax for `shapefile(iproc)': "- "
12.027 prepare coupling to regional models (STILT)
* "aux.f90", "run_inv": generalize grid description
12.026 * "priors.f90": write diagnostic messages about filtered spectra of the components
(to be used to judge the relation of the a-priori sigmas between the component)
* "io.f90": add attributes etc. to make NetCDF output CF-1.1 conformable
12.025 * init_rhs: regionset_rhs=='' or timemask_rhs =='' means that no r.h.s. are created
* remove manipulations specific to TM3 grid (polar rows) - replaced by setting according to where dxyp==0
* rename "Run_tdep.iter" --> "Run_inv" and "src/run_tdep.iter" --> "src/run_inv"
* integrate: NetCDF output name: "*adjustflux*" --> "*apostflux*"
12.024 * options to manipulate flux model:
- cut-out apriflux, shape, regions, and exts (for test of nesting scheme only)
- additional multiplicative factors `shapeFact' of adjustable terms (per component)
* "correl_mp.f90": Ferret commands:
- no interpolation for correlation plot
- fixed color scale for normalization plots
12.023 * "aux.f90": read_flux: if only one-year inversion, then no error message `climatolog. data'
* new datamaode -D-: as -R- but not switching to `diff' - keep using priors
* always read cutout files from CUTOUT dir
* "integrate.f90": add possibility to output binary files convolved with time masks (e.g. 'JJA', not only filtere
d)
12.022 sgm/rgm: subtract long-term mean difference for sgm, and add the corresponding difference for rgm
12.021 data reading:
- add possibility to subtract external global mean file
- moved adjustment of minutes in .ts file into `read_line' - might affect a few values near itaui or itaue
12.020 Add capability to manipulate station list:
`msite': site to be removed from station list
`psite': site to be added instead (`msite' needs to be set then)
`osite': all sites except for this one are set to zero (automatically sets difference=.true.)
12.019 "priors.f90" (get_extt): add possibility to specify Fourier series with mean (by setting
3rd filter letter of `exttFilter' to "x" - a letter " " still means the previous default 'no mean'
[as does letter "a"] for backward compatibility)
12.018 "mask.f90" (tsfilter): extend filter syntax (e.g. "Filt2.0gd-2001-2005"):
can specify beginning and end years of an interval over which long-term mean and
mean seasonal cycle is calculated --> to avoid period dependence when comparing inversion runs
of different lengths
12.017 add capability for n-sigma criterion:
* conc. time series from fwd runs now contain unweighted sigma (data densitt weighting undone;
in "input/" sigma is still weighted)
* reading-in of conc data: option to read selected data, add new parameter `nsigma'
12.016 add capability for nesting:
* forward runs possible with cut-out (step 1)
* reading-in of conc data: option to read residual (obs-model) from previous run
12.015 * integrate: add `name_stationlist' as parameter available for TM3 forward runs
12.014 * TM3 fwd runs:
- 3D output fields now split into yearly files
- can set `ninststn' on integration for regular time series output
12.013 * parameters: new parameter `priorMaskoutReg' for masking out priors read in from files
12.012 * move "run_tdep.iter" to "src/", move "parameters.*.F" to start directory,
in order to separate fixed code from application-dependent code
* integrate: optional output of fluxes as NetCDF file
(with possibility to taper specified components)
* "priors.f": add `ini1' time extension: one flux pulse at first time step (not during first half year)
* parameters: add `enhance_sigma' (factor to increase data sigmas within first year,
meant to allow initial concentration to establish itself with less force
on fluxes
12.011 * read_prior: correct calculation of spectral power ( missing factor 1/sqrt(2) )
(should not affect inversion results due to scaling of global sigma in all cases)
skip `reimbursement' of the seasonal components in SD and power calculation
* geomtry: TM3 specific polar cells for `smask_NH20' etc.
* "parameters.*.FwdFile_quere7*.F": Read yrfi to yrfe only to get power calculation only for used period
12.010 * read_prior: allow deseasonalization for "Filt..."
12.009 * switch prepro path to "/scr/24/mj0143/TM3/prepro/"
* ""tmodel_tm3.f90": `ninststn=21600' if `fwd_only'
* "model.f90": suppress writing/reading of `shape' if `fwd_only' (to save disk space)
12.008 * further implement multi-species (successsfully tested with "co2+o2"):
- c0
- integrate: multi-species output
12.007 * partially implement multi-species capability
* "tmodel_tm3"/"tm3": unique file names of "totflux" again (jobid-dependent, for simultaneous integration jobs)
12.006 * integrate: pass parameters `ninst' and `idatet' to TM3 for writing of 3D concentration fields
* integrate: parameter `out_binary_tot' for writing totals
* "tm3.F", "tmodel_tm3.f90": remove `fluxdir'
12.005 * new internal variable `fluxext'
* write a-priori flux, shape, and inversion update as individual components
(saving disk space, and for access to inversion update for later forward runs)
12.004 * implement `Tmol2unitf', `unitf' (needs loops over species)
* parameters: add `spec3Scale', `spec4Scale'; internally use new variable `specScale'
* new internal variable `dtau' (=itau(itime+1)-itau(itime))
* read_prior: direct output (Filter=='') now possible for shorter time steps in input file than that
of inversion (flux is summed up within inversion interval then)
12.003 * init_rhs: selection of groups of components into individual RHS's now done according to `RHSgroup'
for co2: seasonal components not added to variability group any more (omitted instead)
* read_prior: 3 do-loops parallelized
12.002 * integrate: filter set via `timemask' (remove `intFilter', script written by "nr.frprmn.f90" accordingly)
* parameters: conc. sigmas now defined in separate file "parameters...conc.F"
* parameters: remove `diu', `diudir'
* read_prior: implement "-Filt*" filters, and "Filt*..a" (anomalies) for all filter types
12.001 CHANGES THAT YIELD RESULTS SLIGHTLY DIFFERENT FROM 11.213:
* "tm3.F": fluxes read-in in one piece
- solve problem with reading-in of fluxes by TM3: had been systematically 1 record too late
- more efficient (only slight effect)
* init_input: only read data within TM3 running period
(this changed symmetry index back from ~1e-4 to ~1e-7)
* init_input: handle dates correctly (e.g. minute<0 for hourly mean)
* "tm3.F": linearly interpolate modelled conc. in time between model time steps
(test: shift of time of data points by 3 hours in either fwd. or adj. increases symmetry index by factor 1000
- this indicates that interpolation is identical in fwd. and adj.)
CHANGES THAT REQUIRE MODIFICATIONS TO "parameter.*.*.F" file:
* switch between sensitivity set-ups via CPP functionality:
put #if clauses in standard file, include standard file from sensitivity files
* parameters: remove `priordir2' (is same as `priordir')
* prepare multi-species parameters (for later implementation)
- species-specific parameters in extra file "parameters..f"
- additional parameters `spec*Scale' linking components to species
- add `nspec' (not yet used)
* parameters, integrate: replace `subtr' by `OT' (more flexible, taper not yet implemented)
* introduce parameters `RHSgroup' for later implementation of grouping in sigma calculation
* specification of file reading parameters (prior, shape) by filter string
translation:
out_ave --> 'LT'
out_dummy --> '/'
out_MSC --> 'Filt7.0Tm' etc. according to `priorFreql' and `priorWgt'
out_IAV --> 'Filt7.0T' - " -
out_seas --> 'SD6.0Tm' etc. according to `shapeFreql' and `shapeWgt'
"aux.f90": `read_prior' has now string argument `Filter' determining kind of output as well as filter
(internally just translated into old arguments - no change in actual code yet)
* name change `apfact' --> `priorScale'
* added capability to scale components according to global sigmas (set by `shapeScale')
introduce `shapeScale_timemask' and `shapeScale_region' determining scales of normalization of component
long-term comp. --> 'sqrt_T'
seasonal comp. --> 'asis1', 'Filt2.0g', etc.
non-seasonal comp. --> 'triangular1', 'Filt2.0g', 'Filt2.0gd', etc.
initialization comp. --> 'firstyear'
values of `shapeScale' found from "sigmas.*.out" files of previous run with code 11.xxx
* remove `shapeScaleTr'
* remove `apftst', `tscale'
* priors: specification of temporal correlations (`extt') via string `exttFilter'
extt_ave --> 'LT'
extt_seas --> 'Filt12.0Tm' etc.
extt_nonseas --> 'Filt12.0Td' etc.
extt_fourier --> 'Filt12.0T' etc.
extt_const --> '1'
extt_ini02 --> 'ini02'
* priors: remove filtered normalization of extt (remove `normFreql/h', `normWgt')
(not needed any more due to normalization of components by global contraints)
* remove `monthly_conc' (had been unused)
FURTHER CHANGES:
* "run_tdep.iter" calls "run_tdep.user" containing all user-specific settings
* remove `p_ih'
* `tsfilter': only string argument for filter type (replacing Freql and code)
- in `get_tmask', any filter is possible now for creating test integration pattern
- in "integrate", filter is given as string `intFilter'="FiltXXXxx" (`intFreq' removed)
- high-pass filter possible by "-FiltXXXxx"
* reduces disk space needs:
- avoid TOT*b
- avoid SEAS*b, etc.
- output of binary in "intergrate.f90" only if requested (`out_binary')
- writing of "inversion.nc" moved to "correl_mp.f90" (--> only done on request)
store `region'/`regionc' in "fluxmodel.b" (for correct writing into "inversion.nc" by "correl_mp")
(still not fully tested!)
* init_input: skip writing of "input.old/"
-------------------------------------------------------------------------
11.213 added NetCDF output of fluxes
11.212 added capability to do forward TM3 runs in `integrate' with alternative station sets
(to be specified through `inputTag')
[involves shift of `init_input' to module `tmodel']
11.211 added capability to do syntheic runs directly, but subtracting known truth
11.210 * undo change from 11.205 to 11.206
(fixed terms not any more set to zero if do_subtract_gm,
because this is not appropriate: subtracting the global mean from the data does not change
implied spatial gradients, therefore it is still correct to have fixed terms that are
constant in time [which is the case for co2 and apo standard set-ups])
* correct bug introduced in 11.209: Save a-post state again because needed in `finish_rhs'
11.209 never save any states any more (in order to save disk space)
therefore always recompute state in integrate.f90
init_rhs: write output into separate logfile
integrate.f90: Print parameter values for all one-parameter components
11.208 integrate.f90: slight change in order of reading-in: avoid reading of flux model if just integrating prior
11.207 prepare reading-in of data from several station lists (for forward runs),
but not yet fully implemented.
file "stations.coords.d" now has name "input.coords.d"
11.206 priors: set fixed terms to zero if do_subtract_gm
[[ ATTENTION: will be undone in 11.210 ]]
11.205 init_c0: set zero c0 if do_subtract_gm
mask.f90, integrate.f90: added timemasks for seasonal sums ('JJA' etc.)
11.204 integrate.f90: added options to integrate or flatten shape
11.203 tm3.F: Corrected bug: Negative height in data files now interpreted as altitude above ground
11.202 init_rhs: Skip entries if zero response
"parameters.apo.Std07.F": integrate_region = '3Bands' (previously: 'AggregOcean04')
11.201 writing out shapes as binaries
11.200 "io.f90": Add NetCDF attributes
units = degrees_north (degrees_east)
point_spacing = even
to lon and lat variables, for correct plotting in Ferret
11.199 mode_flux restartable (changes in main program)
11.198 init_input, tm3: I/O of concentration data using binary direct-access files
for CPU performance
INFO: not bit-identical to 11.197
"stations.coords.d": full site name (as in input file names)
warning coords -999. etc only if differences larger than threshold
11.197 integrate: change order of statements for influxfile = '....'
11.196 save_state_index
11.195 change in first iteration for each new RHS:
go along b (made conjugate) - do not need b as initial guess any more
11.194 tm3 fine grid executable called tm3_fg,
option _vfg
11.193 idatee = (/ yrfe ,12,31, 0, 0, 0 /)
(to avoid loading of next TM3 prepro year)
11.192a mnzt smaller than ntimef by parameter fmnzt
read_prior: skip zero harmonics
11.192 define im_cg,jm_cg in script (to prepare _vfg)
unit of "totflux*.b" changed into Tmol/grid/s
(to allow 3-hourly time step - remove setting idate to monthly/daily/hourly in get_calendar)
11.191 variable end date (idatee) of TM3 run
11.154 correction of h right after it was calculated - now also corrected h
in state files (before uncorrected - wrong for integrate
and if reloaded)
11.153ll2 redefine A (and thus chi2): factor 2
11.150 Normalization of extt for extt_tri corrected