All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project follows a GNU standard version numbering
of major.minor.patch
with
-
major
for substantial changes to code functionality, -
minor
for additions of modules and functionality, and -
patch
for technical changes and bugfixes without extending the functionality of the code. -
if applicable, categories to include in the CHANGELOG.md are:
- Added
- Changed
- Deprecated
- Removed
- Fixed
- Security
- author: David Hoetten (davidho@pik-potsdam.de)
- code review: Sibyll Schaphoff (sibylls@pik-potsdam.de), Werner von Bloh (bloh@pik-potsdam.de)
- order of freezing of different water soil water components changed: free water freezes last to simply mathematical description of model
- author: Werner von Bloh (bloh@pik-potsdam.de)
- code review: David Hoetten (davidho@pik-potsdam.de), Sebastian Ostberg (ostberg@pik-potsdam.de)
- Utility
cdf2grid
added to convert grid files in NetCDF format into grid CLM files. - Option
-json
and-raw
added tocdf2coord
utility to write additional JSON metafile and to write without CLM header.
- Check added that dimension must be greater 1 for variable in NetCDF file in
cdf2coord.c
,input_netcdf.c
andcoord_netcdf.c
. - Datatype of longitude/latitude array in
coord_netcdf.c
changed from float to double for consistency, variable name correctly printed in error messages. - Intel and clang compiler recognized in
printflags.c
.
- Test for
null
corrected for"output"
infscanoutput.c
. - Missing
break
added inswitch
statement inreceiver_coupler.c
. - Code changed to compile successfully without
-DSAFE
,-DUSE_NETCDF
, and-DUDUNITS
compilation flag. - Unit for
"estab_storage_n"
corrected to"gN/m2"
inoutputvars.cjson
. - Scaling set to 1 if datatype is not short in
cdf2coord.c
andcdf2clm
.
- author: Sebastian Ostberg (ostberg@pik-potsdam.de)
- code review: Christoph Mueller (cmueller@pik-potsdam.de), Werner von Bloh (bloh@pik-potsdam.de)
- Fix a regression for
NBP
output infwriteoutput
introduced in version 5.9.4
- author: Werner von Bloh (bloh@pik-potsdam.de)
- code review: Jens Heinke (heinke@pik-potsdam.de), Christoph Müller (cmueller@pik-potsdam.de)
- Warning added if time step of output is longer than output interval.
- Cycle length of spinup and number of spinup years checked for positive values in
fscanconfig.c
. - File size of CLM input files is checked for consistency with header and lpjml is stopped accordingly.
- Utility
drainage2cdf
added to convert CLM drainage file into a NetCDF file using the soil code NetCDF file (issue #355).
- Setting
"const_lai_max"
renamed to"laimax_const"
for consistency. - Keyword
"laimax_interpolate"
renamed to"laimax_manage"
. - Region-specific fractions for residue burning replaced by global parameter
"bifratio"
and"fuelratio"
. lpjml
now terminates with an error message instead of a warning on invalid country codes to avoid invalid access to country-specific parameters.- Country code files can now have only one band. Files with 2 bands are still supported, but region code ignored.
- Filename and source is written into configuration file created by
regridlpj
. null
allowed for"global_attrs"
,"inpath"
,"outpath"
,"restartpath"
,"output"
, and"checkpoint_filename"
to disable the feature.
"laimax_interpolate"
,"firewood"
,"black_fallow"
,"till_fallow"
,"cropsheatfrost"
, and"grassland_fixed_pft"
settings and corresponding code removed (issue #350).- Obsolete function
daily_setaside.c
removed. Function is not necessary any more for coupling to POEM. - Obsolete constants removed in
conf.h
. - Unused parameter
"residue_rate"
,"residue_pool"
,"residue_cn"
,"residue_fbg"
removed. - Functions for reading region-specific parameters removed.
- Obsolete region parameter file
manage_reg.cjson
removed - Obsolete outputs
"region"
,"flux_firewood"
,"flux_firewood_n"
removed. - Region definitions removed from
managepar.h
.
- Typos in error messages corrected in
bin2cdf.c
andclm2cdf.c
. - Output of turnover corrected in
fprintpar_grass.c
. - Output of options fixed in
openconfig.c
if environment variableLPJOPTIONS
is set. - Calculation of average fixed in
statclm
. res_remove
calculation fixed for residue fires inharvest_crop.c
to close carbon and nitrogen balance.- Missing update of
FLUX_ESTABN_MG
added inturnover_tree.c
. - Function
initdrain()
corrected to handle river routing files in NetCDF format.
- author: Werner von Bloh (bloh@pik-potsdam.de), Sebastian Ostberg (ostberg@pik-potsdam.de)
- code review: Fabian Stenzel (stenzel@pik-potsdam.de), David Hötten (davidho@pik-potsdam.de), Christoph Müller (cmueller@pik-potsdam.de)
- Output
"nbp"
for net biosphere productivity and"tws"
for total water storage added. fail
added to mail type inlpjsubmit_hpc
.- Option
-map
added tocdf2bin
andcdf2clm
to read map from NetCDF file and write it into JSON metafile. "sim_name"
and all other global attributes are written into JSON file forcdf2bin
utility.
- Scaling of
"littertemp"
output fixed. - Unit corrected for
"rootmoist"
output and scaling corrected. - Correct number of output files printed in
lpjfiles
utility if separate output files for each year are enabled.
DEPTH_NAME
andBNDS_NAME
excluded for search for variable in NetCDF file if no variable name is provided.- Check added that dimension must be greater 1 for variable in NetCDF file.
- author: Sebastian Ostberg (ostberg@pik-potsdam.de)
- code review: Jens Heinke (heinke@pik-potsdam.de), Christoph Müller (cmueller@pik-potsdam.de)
fire_grass
burns grass leaf biomass based on fire resistence parameter (function did nothing before)- Burning of fruits added to
fire_tree
, although stands with fruit trees currently do not experience fire
- Unit and description of
FIREF
output changed from fire return interval to fire fraction to harmonize output between GlobFirM and SpitFire
- Added missing update of FPCs after fire before establishment
- author: Werner von Bloh (bloh@pik-potsdam.de)
- code review: Christoph Mueller (cmueller@pik-potsdam.de), Sebastian Ostberg (ostberg@pik-potsdam.de)
- Missing regridding of wateruse and livestock density input added in
regridlpj
.
- Compile option
-Werror
added to stop compilation oficx
/gcc
after warning. This feature can be disabled by using the-noerror
option ofconfigure.sh
. - Filename and source is written into configuration file created by
regridlpj
. - All missing output indices are printed in case that the
"outputvar"
array is too short.
- Incorrect scaling removed in utility
printharvest
. - Uninitialized PFT pointer set to first PFT in
harvest_stand.c
. - Uninitialized variable
n_attr
set to zero in utilityprintclm
. - Prescribed land cover is now read correctly if landcover map size differs from number of natural PFTs.
- Check for land use type
WP
corrected inlandusechange.c
(issue #354). - Code fixed to remove all warnings if compiled with
icx
/gcc
. regridclm
now used for regridding of soil file inregridlpj
.- Missing seek to offset added in filesexist.c
- Misplaced deallocation of memory for unit corrected in
printclm
.
- author: David Hötten (davidho@pik-potsdam.de)
- code review: Sibyll Schaphoff (sibylls@pik-potsdam.de), Werner von Bloh (bloh@pik-potsdam.de)
- Added
GPL_HEAT
macro to change number of gridpoints per soil layer used for heat convection. - Added
percolation_heattransfer
switch to disable convection/percolation heattransfer. - Added
littertemp
output variable for litter temperature. - Added fast implicit crank nicolson heat conduction scheme for non-phase change conditions
apply_heatconduction_of_a_day.c
.
- Replaced
soiltemp
soil temperature and snow and litter heat conduction routines withupdate_soil_thermal_state.c
;soiltemp
remains in the repository for POEM/FMS coupling. - Use enthalpy (thermal energy) as state variable for soil thermal regime instead of temperature.
- Numeric heat conduction method is a finite element enthalpy scheme
apply_heatconduction_of_a_day.c
. - Numeric heat convection method is improved by closing the energy balance for water infil and percolation.
- Conduction through snow and litter cover is now part of the numerical method for the soil.
- Snow and litter temperatures are now calculated by interpolating air and top gridpoint temperature.
- Snow melt by snow temperature greater than 0 deg is removed.
- Litter heat insulation is now based on literature values for litter thermal conductivity.
- author: Werner von Bloh (bloh@pik-potsdam.de)
- code review: Sibyll Schaphoff (sibylls@pik-potsdam.de), Sebastian Ostberg (ostberg@pik-potsdam.de)
- List of required modules on new PIK cluster added in
INSTALL
. configure.sh
script recognizes new PIK cluster and setsmpiicx
/icx
compiler accordingly.- New site-specific
Makefile.hpc2024
and Makefile.icx` for parallel/sequential compilation on new cluster added. - New
lpjsubmit_hpc
slurm script added for new PIK cluster.configure.sh
sets symbolic link oflpjsubmit
to this script.
- All occurrences of the deprecated function
MPI_Type_extent
replaced byMPI_Type_get_extent
to allow compilation with OpenMPI. *.tmp
files added to.gitignore
.
- Functions
mpi_write.c
,mpi_write_txt.c
,mpi_read_socket.c
andmpi_write_socket.c
changed to avoidSEGV
on new PIK cluster.
- author: Christoph Müller (cmueller@pik-potsdam.de)
- reviewer: Fabian Stenzel (stenzel@pik-potsdam.de), Luke Oberhagemann (lukeober@pik-potsdam.de)
- .zenodo.org updated to be compliant with PIK publication rules:
- added "active-development" and "Potsdam Institute for Climate Impact Research" to keywords
- added Christoph as "contributor", which seems to be the only way to have a visible contact person
- author: Werner von Bloh (bloh@pik-potsdam.de)
- code review: Jannes Breier (breier@pik-potsdam.de), Christoph Mueller (cmueller@pik-potsdam.de)
- A preprocessed JSON configuration file can be written if the following setting is added to the
*.cjson
configuration file:
"json_config_filename" : "output/lpjml_config_restart.json", /* Filename of preprocessed configuration file written or null to disable this feature */
- The right allocated storage for
config->coupled_model
is checked forNULL
infscanconfig.c
.
- author: Sebastian Ostberg (ostberg@pik-potsdam.de)
- code review: Susanne Rolinski (rolinski@pik-potsdam.de), Christoph Mueller (cmueller@pik-potsdam.de)
- fixed PFT pool scaling in mix_veg_grass() and mix_veg_tree()
- author: Jannes Breier (jannesbr@pik-potsdam.de)
- code review: Stephen Wirth (wirth@pik-potsdam.de), Jens Heinke (heinke@pik-potsdam.de)
- PFT parameter lai_sapl has been set back to its original value of 0.001 for grasses (tropical, temperate, polar)
- author: Sibyll Schaphoff (sibylls@pik-potsdam.de), Werner von Bloh (bloh@pik-potsdam.de)
- code review: Stephen Wirth (wirth@pik-potsdam.de), Christoph Mueller (cmueller@pik-potsdam.de), Sebastian Ostberg (ostberg@pik-potsdam.de)
- added link to LPJmL Zenodo archive to README
- changed
ifndef
usage inlpjml_config.cjson
toifdef
to avoid confusion
- fixed handling of monthly and daily outputs in
iterateyear.c
to ensure that last annual timestep of outputs is written afterupdate_annual()
is called
- author: Johanna Braun (jobraun@pik-potsdam.de)
- code review: Stephen Wirth (wirth@pik-potsdam.de), Constanze Werner (cowerner@pik-potsdam.de), Jannes Breier (breier@pik-potsdam.de)
- added four new outputs for managed land: deposition (
NDEPO_MG
), biological nitrogen fixation (BNF_MG
), applied nitrogen (NAPPLIED_MG
) and nitrogen establishment flux (FLUX_ESTABN_MG
)
- author: Jannes Breier (jannesbr@pik-potsdam.de)
- code review: Stephen Wirth (wirth@pik-potsdam.de), David Hoetten (davidho@pik-potsdam.de)
- In outputvars.cjson, the
variable
field for output grid has been changed back to"grid"
(instead of"soil"
). If NetCDF output is written the variable name would be cell id, if raw output is written the variable name would be the coordinates."grid"
is used as generic naming here,long_name
is used to describe this exception ("grid information (raw: coordinates, cdf: cell_id)"
)
- author: Werner von Bloh (bloh@pik-potsdam.de), Sebastian Ostberg (ostberg@pik-potsdam.de)
- code review: Jannes Breier (breier@pik-potsdam.de)
- NetCDF output files are now in a more ISIMIP3 compliant format, datatype of time, lat, and lon is now double,
depth_bnds
added to layer specific output. Standard and long name can be specified inoutputvars.json
. - Deprecated function
MPI_Extent
replaced byMPI_Get_extent
inmpi_write.c
. - Functions
create_netcdf.c
/create_pft_netcdf.c
andcreate1_netcdf.c
/create1_pft_netcdf.c
have been merged. - Function
findcoord()
improved to find cell indices, returns now true if coord is within cell. STYLESHEET
file converted to markup.- Cell size in
regridclm
is set to cell size of target grid, warning is printed if cell size differs. - Format and suffix of output files have been removed in
lpjml_config.cjson
and are now set by"default_fmt"
and"default_suffix"
:
{ "id" : "npp", "file" : { "name" : "output/mnpp"}},
LPJINPATH
set to/p/projects/lpjml/input/historical
inregridlpj
if not defined."descr"
inoutputvars.cjson
renamed to"long_name"
.
- More options added to
lpjml_config.cjson
to customize format of output:
"default_fmt" : "raw", /* default format for output files: "raw","txt","cdf","clm","sock" */
"default_suffix" : ".bin", /* default file suffix for output files */
"grid_type" : "short", /* set datatype of grid file ("short", "float", "double") */
"flush_output" : false, /* flush output to file every time step */
"absyear" : false, /* absolute years instead of years relative to baseyear (true/false) */
"rev_lat" : false, /* reverse order of latitudes in NetCDF output (true/false) */
"with_days" : true, /* use days as units for monthly output in NetCDF files */
"nofill" : false, /* do not fill NetCDF files at creation (true/false) */
"baseyear" : 1901, /* base year for output in NetCDF files */
- Global attributes for NetCDF output files can be set in the
lpjml_config.cjson
file:
"global_attrs" : {"institution" : "Potsdam Institute for Climate Impact Research",
"contact" : "", /* name and email address */
/* any name and string value can be added: "name" : "value", */
"comment" : "" /* additional comments */
}, /* Global attributes for NetCDF output files */
"standard_name"
for output can be set inoutputvars.cjson
. If not defined standard name is set to variable name.- Chunking defined for NetCDF files if compiled with
-DUSE_NETCDF4
. - Option
-metafile
added toregridclm
andbinsum
. If metafile contains name of grid file, the filename of the source grid can be omitted:
regridclm -metafile grid_new.clm temp.clm.json temp_new.clm
binsum -metafile mnpp.bin.json anpp.bin
- NetCDF files can be created with
bin2cdf
andclm2cdf
from the JSON metafiles containing all global attributes:
bin2cdf -metafile soilc_layer.bin.json soilc_layer.nc
clm2cdf -metafile temp.clm.json temp.nc
"landcovermap"
added to define mapping of the prescribed FPC input to PFTs.-hostfile
option added tolpjrun
.- New utilities added:
cmpbin
- compares binary ouput filesstatclm
- prints minimum, maximum and average of clm filesregriddrain
- regrids drainage file to new grid
- Option
-metafile
and-f
added tomathclm
. cdf2clm
stores all global attributes of NetCDF file in JSON metafile if-json
option is set.- Option
-nopp
added tolpjml
. This option disables preprocessing of the config file bycpp
. - Option
-ofiles
added tolpjml
andlpjcheck
to print list of all available output files. - Option
-pedantic
added tolpjcheck
andlpjml
to stop on warning. - Option
-json
added toregridclm
andregridsoil
utilities to create additional JSON metafiles. - Compile flag
-DSTRICT_JSON
added to enable more strict syntax checking of JSON files. - Remark message in
fscankeywords.c
added if number instead of string is used in JSON file.
- Missing deallocation added in
freeconfig.c
and memory leak infscanpftpar.c
fixed. - Missing argument after option handling fixed in
cdf2bin
andcountr2cdf
. - Missing
$dir/
added to manure data inregridlpj
. - Correct default landuse, sowing data and crop PHU file set in
regridlpj
.
- author: Christoph Mueller (cmueller@pik-potsdam.de)
- code review: Boris Sakschewski (borissa@pik-potsdam.de), Sabine Mathesius (sabine.mathesius@pik-potsdam.de)
- missing family names added in CITATION.cff
- renamed
double_harvest.c
toseparate_harvests.c
andupdate_double_harvest.c
toupdate_separate_harvests.c
and changed entries in Makefiles accordingly - renamed functions
double_harvest()
toseparate_harvests()
andupdate_double_harvest()
toupdate_separate_harvests()
throughout the code - renamed the
struct
Double_harvest
toSeparate_harvest
and the variable of typeSeparate_harvest
instruct
Pftcrop
fromdh
tosh
- renamed
double_harvest
flag instruct
Config
toseparate_harvests
- author: Sibyll Schaphoff (sibylls@pik-potsdam.de)
- code review: Jens Heinke (heinke@pik-potsdam.de), Werner von Bloh (bloh@pik-potsdam.de)
- new output
PFT_WATER_SUPPLY
to calculate water stress PFT-specific.
- output writing for the new output (
conf.h
,outputvar.cjson
,createpftnames.c
,fwriteoutput.c
,outputsize.c
,water_stressed.c
). isopen()
call removed (fwriteoutput.c
).
- author: Stephen Wirth (wirth@pik-potsdam.de), Werner von Bloh (bloh@pik-potsdam.de), Jens Heinke (heinke@pik-potsdam.de), Marie Hemmen (hemmen@pik-potsdam.de)
- code review: Johanna Braun (jobraun@pik-potsdam.de)
- Divsion by zero avoided for calculation of
nc_ratio
inndemand_tree.c
andndemand_grass.c
(issue #341). - Default directory for input files to current directory set and directory created in
regridlpj
. - Correct id 11 set for
"tamp"
input ininput.cjson
(issue #347). - Correct filename used in error message in utility
mathclm
. - Datatype of Version 4 CLM files correctly handled in
cutclm
,catclm
,mergeclm
,regridclm
.
- Hard coded CFT indices (e.g.
MAIZE
) have been replaced by their names. - Datatype of
bmgr_harvest_day_nh
andbmgr_harvest_day_nh
changed toint
. - Function
freadseed()
used infreadrestartheader.c
. - First value of CO2 data file used for simulation years before first year of CO2 data.
- CO2 data replaced by TRENDY data in
input.cjson
.
- Man page for
regridclm
andregridsoil
added. - New keywords
"cft_fertday_temp"
and"cft_fertday_tropic"
added inlpjparam.cjson
to specify the CFT names where the fertilizer application dates are taken from for grasslands. - Missing filename of tillage input added to
lpjfiles
utility. - Option
-h
added tolpjsubmit
. Options-v
and-l
added toconfigure.sh
. - New keyword
"error_limits"
defined inlpjparam.cjson
to set maximum balance errors allowed in simulation:
"error_limits" :
{
"carbon" : 1.0, /* maximum error in local carbon balance (gC/m2) */
"nitrogen" : 0.2, /* maximum error in local nitrogen balance (gN/m2) */
"water_local" : 1.5, /* maximum error in local water balance (mm) */
"water_global" : 1e-3 /* maximum error in global water balance (mm) */
},
- Option
--propagate
removed fromsrun
inlpjsubmit_slurm
. - Hard-coded parameter
k_l
removed inlittersom.c
. - Parameter
"residues_in_soil_notillage"
removed. - Parameter
"co2_p"
removed. - Keyword in
"till_startyear"
removed fromlpjml_config.cjson
.
- author: Christoph Mueller (cmueller@pik-potsdam.de) and the entire LPJmL team
- code review: Boris Sakschewski (borissa@pik-potsdam.de), Fabian Stenzel (stenzel@pik-potsdam.de)
- added
.zenodo.json
for interaction with zenodo archives - added CITATION.cff file
- updated AUTHORS file
- author: Fabian Stenzel (stenzel@pik-potsdam.de), Stephen Wirth (wirth@pik-potsdam.de), Sibyll Schaphoff (schaphoff@pik-potsdam.de)
- code review: Stephen Wirth, Constanze Werner (cowerner@pik-potsdam.de)
- Removed lines 240 and 241 in landuse/annual_biomass_tree.c to get rid of the carbon balance error, which shows up in cells with significant bioenergy tree fractions in the landuse input.
- author: Werner von Bloh (bloh@pik-potsdam.de)
- code review: Jannes Breier (breier@pik-potsdam.de), Christoph Mueller (cmueller@pik-potsdam.de)
- allowed range for coordinates checked in
readcoord()
. - allowed formats (
"raw"
,"clm"
,"clm2"
) for input files checked inopenmetafile()
. - Output scaling added to
writearea.c
.
- Error messages changed for more clarity.
- NetCDF output for grid file corrected if cells are skipped.
var_len
correctly set for input with no time axis inopenclimate_netcdf.c
.
- author: Johanna Braun (jobraun@pik-potsdam.de), Sebastian Ostberg (ostberg@pik-potsdam.de)
- code review: Christoph Mueller (cmueller@pik-potsdam.de)
- dicussed by attendees of LPJmL seminar on Dec. 21st 2023 and Nov. 23rd 2023.
wateruse
from "yes" to "all"sowing_date_option
from "fixed_sdate" to "prescribed_sdate"crop_phu_option
from "new" to "prescribed"tillage_type
from "all" to "read"residue_treatment
from "fixed_residue_remove" to "read_residue_data"grazing
from "default" to "livestock"prescribe_lsuha
from FALSE to TRUE- set
nspinup
to 420 instead of 390 for LU spinup - updated paths to land management input files in
input.cjson
- set all available LandInG1.0 inputs as the
default
option
- author: Werner von Bloh (bloh@pik-potsdam.de), Sebastian Ostberg (ostberg@pik-potsdam.de), Christoph Mueller (cmueller@pik-potsdam.de), Sibyll Schaphoff (sibylls@pik-potsdam.de)
- tmin, tmax, humid GSWP3-W5E5 inputs added to
input.cjson
. - missing parameters added in
lpjparam_non.cjson
andpft_non.cjson
.
- set gml.noaa data as default CO2 input.
- GSWP3-W5E5 climate is now the default.
regridlpj
utility script updated for new inputs
- GLDAS climate input removed.
- scaling fixed for daily output and unit 1/second in fwriteoutput.c (issue #332).
#ifdef
and#elif
statements fixed inlpjml_config.cjson
andinput.cjson
.- computation of root biomass based on carbon fixed in
nuptake_grass
andnuptake_tree
(issue #330) - fixed bug in
allocation_tree
(issue #330)
- author: Jannes Breier (breier@pik-potsdam.de), Werner von Bloh (bloh@pik-potsdam.de), Stephen Wirth (wirth@pik-potsdam.de)
- code review: Sibyll Schaphoff (sibylls@pik-potsdam.de), Christoph Mueller (cmueller@pik-potsdam.de)
- dicussed by attendees of LPJmL seminar on Nov. 23rd 2023.
- new keyword
"cultivation_types"
added to specify an array of cultivation types read from thepft.cjson
file:
"cultivation_types" : ["none","biomass","annual crop"],
- wood plantation and agricultural tree PFTs added to
pft.cjson
. - '"k_est"' establishment density array added for agricultural trees to
"countrypar"
inmanage_irrig_systems_with_dummy_laimax_data.cjson
. - Makros to select different climate (CRU_MONTHLY, CRU_NETCDF, GLDAS) as well as land use, fertilizer and manure (OLD_LU, MADRAT) inputs added to
input.cjson
. - Makro to disable nitrogen cycle (WITHOUT_NITROGEN) added to
lpjml_config.cjson
. - Makros definition and description added to
lpjml_config.cjson
.
- file ending from
js
tocjson
. - renamed
lpjml.cjson
tolpjml_config.cjson
. - extended
input.cjson
to include CRU, GSWP3-W5E5 and GLDAS climate inputs and LandInG, MADRAT and "Old" land use, fertilizer and manure inputs. - Moved mappings from
input.cjson
to lpjml_config.cjson. - Moved soil depths array and fuel bulk density factors from
soil.cjson
tolpjparam.cjson
.
lpjml_*js
,param_*js
,lpjparam_*js
,pft_*.js
,input_*.js
andmanage_*.js files
for specific projects.
- author: Werner von Bloh (bloh@pik-potsdam.de)
- code review: Jannes Breier (breier@pik-potsdam.de), Constanze Werner (cowerner@pik-potsdam.de), Sebastian Ostberg(ostberg@pik-potsdam.de), Marie Hemmen (hemmen@pik-potsdam.de), Christoph Mueller (cmueller@pik-potsdam.de)
- name of grid file and
"terr_area"
output file written to output JSON files. A link to the corresponding JSON file is added. - list of utilities added to
INSTALL
file. -json
flag added tocdf2clm
utility.- last year of CO2 data is checked at run time and last year of simulation is changed accordingly.
fscanfloat()
accepts now also integer input.
- obsolete constant definitions in
conf.h
.
- opening of grid file in JSON metafile format fixed in
opencoord()
. - default soil map is set for soil data in NetCDF format.
- missing carbon influx added to NBP calculation in
flux_sum.c
.
- author: Werner von Bloh (bloh@pik-potsdam.de), Jens Heinke (heinke@pik-potsdam.de), Stephen Wirth (wirth@pik-potsdam.de)
- code review: Sibyll Schaphoff (sibylls@pik-potsdam.de), Constanze Werner (cowerner@pik-potsdam.de), Christoph Mueller (cmueller@pik-potsdam.de)
- constant wood density has been replaced by PFT-specific parameter
"wood_density"
.
- Unused flag
"biomass_grass_harvest"
removed from configuration.
- update of
pft->establish.nitrogen
corrected inturnover_tree.c
. - C and N in manure from grazing livestock goes to litter (as described in Heinke et al. 2023 instead of going to soil pools directly.
- author: Sebastian Ostberg (ostberg@pik-potsdam.de)
- code review: Christoph Mueller (cmueller@pik-potsdam.de), Jannes Breier (breier@pik-potsdam.de)
- bug in
landusechange.c
where land transfers between rainfed and irrigated setaside stands were not taken into account when determining rainfed and irrigated areas to deforest/regrow - false positive carbon balance errors in
turnover_tree.c
if the code is compiled withCHECK_BALANCE
switch
- author: Werner von Bloh (bloh@pik-potsdam.de)
- code review: Jens Heinke (heinke@pik-potsdam.de), Sibyll Schaphoff (sibylls@pik-potsdam.de), Christoph Mueller (cmueller@pik-potsdam.de)
- grassland specific variables
deficit_lsu_ne
anddeficit_lsu_mp
added tofprint_grassland.c
and therefore are printed bylpjprint
.
- obsolete definition of constants removed in
conf.h
.
- division by zero resulting in a floating point exception if lpjml is run with
-fpe
option fixed inlittersom.c
andharvest_stand.c
. - index in
"cft_nir"
output is now correctly calculated foragriculture_tree
/agrculture_grass
stands indistribute_water.c
. pft->npp_bnf
set to zero for the auto fertilization setting in the N uptake functions. Fertilization only applied if N deficit is greater than zero.
- reallocation of N added in
allometry_tree.c
if tree height exceeds the maximum height. - reproduction costs for nitrogen added to
turnover_tree.c
. - missing output
"harvestc_agr"
updated and written to file.
- check for
sum>1
for warnings has been replaced bysum>1+epsilon
ingetlanduse()
. ml.landfrac
scaling of output has been replaced by acual stand fraction.output_gbw_*
functions have been merged into oneoutput_gbw
function.
- misplaced
CFT_AIRRIG
update has been removed fromdaily_woodplantation.c
.
- missing
#include "grass.h"
added insowingcft.c
. - arguments of
setaside
calls inannual_woodplantation.c
andannual_biomass_tree.c
have been corrected. - update of
LITFALLN
corrected intimber_burn.c
. - output written to correct
N2O_DENIT_*
file indenitrification.c
. - missing
reservoirfrac
added to scaling for outputs indaily_agriculture_grass.c
anddaily_agriculture_tree.c
.
- outputs:
- IRRIG_STOR
- RIVERVOL
- SWC_VOL
- unit of output RES_STORAGE changed from hm3 to dm3 to be in line with IRRIG_STOR, RIVERVOL, LAKEVOL, SWC_VOL
- check for land-use fractions to not exceed 100% after scaling with
landfrac
, re-scale to 100%, print warning see !173 - add turnover before allocation in cultcftstand to prevent sporadic C balance errors when running with intercrops, see!175
- number of wet days not read if daily precipitation input is used. A warning is additionally printed to set
"random_prec"
to false. - boolean
"river_routing"
is read before"with_lakes"
flag to avoid uninitialized variable.
- changed quadratic soil evaporation function to sigmoid form and a minimum amount of evaporation of 5% of the available energy, following Sun et al. 2013, as described in !168
- correct accounting of blue water transpiration on agriculture stands in outputs
- missing variable initialization for bioenergy grass
- landuse change from irrigated to rainfed setaside moved area to wrong target setaside
- removed timestep attributes (monthly/annual) in all output descriptions that are not timestep specific
- outputs:
- PFT_WATER_DEMAND: PFT specific water demand
- RD: dark respiration
- NDEPOS: total N deposition as sum of NH4 and NO3 deposition
- wrong use of
&f
instead off
, infscanparam.c
. Bug was introduced in version 5.6.26 and caused that parameter files could not be read properly
- land fraction can now be read from file, with a new flag
"landfrac_from_file"
and a new input"landfrac"
- If setting
"landfrac_from_file : true"
cell areas in LPJmL are scaled down by land fraction from input file. If land fraction is zero, land fraction is set tominlandfrac
and a warning is printed. - new flag
"with_lakes"
defined - new outputs
"terr_area"
,"land_area"
and"lake_area"
defined writing the terrestrial area (land and lakes), land area and lake area of each cell - new parameters
"minlandfrac"
and"tinyfrac"
added to lpjparams.js - option
-area filename
added to theprintglobal
utility to scale with the cell areas read from the file specified.
- Lake fraction and land-use fractions are rescaled by the reciprocal of land fraction. If lake fraction is greater than one, lake fraction is set to one and a warning is printed.
- Lakes can be enabled without river routing by setting
"with_lakes" : true
. Variabledmass_lake
is always written to restart file. - lake fraction is read in utility
lpjprint
and printed - flag
"shuffle_spinup_climate"
only read if"nspinup"
is non-zero. - Terrestrial area and harvest fraction are read in utility
printharvest
. Output format changed to CSV.
- removed large chunks of code in
allocation_daily_crop.c
that was inactive
- fixed output
PFT_VEGC
to not includebm_inc.nitrogen
for crops indaily_agriculture.c
- fixed global flux summation for
flux.soil.carbon
andflux.soil.nitrogen
(+=
instead of=
), bug was introduced in version 5.6.25
- avoid daily leaf turnover for biomass grass and harvest leaf turnover as dead biomass at harvest event instead (reduces litter and increases harvest)
- introduce harvest dates depending on green/brown harvest instead of C threshold for biomass grass
- literature-based C/N ratios and fn_turnover for biomass grass depending on green/brown harvest configuration
- results and literature references can be found in issue #275.
- introduced
#define
flag to change from green harvest (default) to brown harvest:#define BMGR_BROWN
- two options include green harvest (fresh biomass, high N content - usually used for biofuels) and brown harvest (dry biomass, high lignin content, low N content - usually used for combustion)
- brown harvest uses later harvest dates (defined in lpjparam.js) and higher N recovery (as lower fn_turnover defined in pft.js) than green harvest
- the
#define
flag is required to read the correct flag-specific parameter from the lpjparam.js and pft.js, see issue #311
- New outputs added for N fluxes from timber extraction and for N pools in wood product pools
- New outputs added for
estab_storage
C and N - Added missing N fluxes,
estab_storage
, and reservoirs toglobalflux
output - Added new fluxes to man pages
- Corrected/added units in comments in output.h
- Corrected units in
flux_sum
man page - Corrected
N2O_DENIT
output, which now no longer also includesN2O_NIT
values - Corrected writing of mineral N pools to outputs, so that also mineral N in frozen soil layers is included
- Corrected writing of
VEGN
for crops, so thatbm_inc.nitrogen
is no longer included to avoid double accounting
- Removed unecessary initialization of output variables to zero in
update_annual.c
, which is done ininitoutputdata.c
- The number of bands is now correctly checked for the
read_residue_data
input.
- Instead of the soil code the index of the grid cell is written into the NetCDF file for
"grid"
output.
- Configuration files
lpjml_netcdf.js
,lpjml_non.js
,param_non.js
, andlpjparam_non.js
updated to latest lpjml version.
-
Predefined daily outputs (
"d_lai"
-"d_pet"
) and corresponding functions removed. -
Version numbers removed from man pages.
- Variable
issocket
always initialized toFALSE
inreadfilename.c
.
-
Flag
"nitrogen_coupled"
disabled for lpjml offline runs. Water stress is always coupled with nitrogen stress. Only if lpjml is compiled with-DCOUPLING_WITH_FMS
flag is enabled. -
Flag
"new_trf"
renamed to"transp_suction_fcn"
.
- New flags
"fix_co2"
and"fix_co2_year"
added.
-
Flag
"istimber"
renamed to"luc_timber"
. -
Flag
"new_phenology"
renamed to"gsi_phenology"
. -
Flag
"shuffle_climate"
renamed to"shuffle_spinup_climate"
. -
The settings for fixed input data have been updated. For climate and N deposition input an interval can be specified from which data is taken after the specified year. In can specified whether random shuffling or cycling is used:
"fix_climate" : false, /* fix climate after specified year */
"fix_climate_year" : 1901, /* year after climate is fixed */
"fix_climate_interval" : [1901,1930],
"fix_climate_shuffle" : true, /* randomly shuffle climate in the interval */
"fix_deposition_with_climate" : false, /* fix N deposition same as climate */
"fix_deposition" : false, /* fix N deposition after specified year */
"fix_deposition_year" : 1901, /* year after deposition is fixed */
"fix_deposition_interval" : [1901,1930],
"fix_deposition_shuffle" : true, /* randomly shuffle depositions in the interval */
"fix_landuse" : false, /* fix land use after specfied year */
"fix_landuse_year" : 1901, /* year after land use is fixed */
"fix_co2" : false, /* fix atmospheric CO2 after specfied year */
"fix_co2_year" : 1901, /* year after CO2 is fixed */
- Obsolete flag
"const_climate"
removed.
-
Help option
-h
added tobin2cdf
andclm2cdf
utility. -
Target
lpjcheck
added toMakefile
to create only thelpjcheck
utility.
-
The version of all man pages has been set to the LPJmL version number, date of last modification removed.
-
The different versions of the utilities have been replaced by a reference to the LPJmL version.
-
All html files have been removed from the repository.
-
Obsolete link
lpj
tolpjml
removed.
- Soil array
wpwp
is now correctly initialized withsoilpar->wpwp
for the"prescribed_soilpar"
setting.
- Replaced logical
or
by logicaland
insurvive.c
. This solves issue #309.
- Removed excess
pft->nind
in all harvest routines inharvest_stand.c
.
- Check for matching size of discharge queues read from restart file added to
initriver()
function ininitdrain.c
. If the size differs from the value calculated from the river lengths the queues will be resized and initialized to zero. Error message is additionally printed.
-
Support for the deprecated
*.conf
configuration file format has been removed. Only JSON files are allowed for configuration files and metafiles for input. -
Man pages for the description of the
*.conf
file format removed.
- Strings in JSON configuration files can now be longer than 256 characters.
- Missing update of
"harvestc"
and"harvestn"
output added inannual_biomass_tree.c
,annual_woodplantation.c
,daily_agriculture_tree.c
, andannual_agriculture_tree.c
.
-
Missing agsub litter pool added to
"litc"
,"litn"
,"mg_litc"
,"litc_agr"
,"mgrass_litc"
,"mgrass_litn"
outputs and in global flux oflitc
. -
Output of
"litc_ag"
and"litc_all"
now written to output file.
-
Item
ag
in structLitter
renamed toagtop
. -
Functions
litter_ag_grass()
,litter_ag_nitrogen_tree()
,litter_ag_sum()
,litter_ag_sum_quick()
,litter_ag_tree()
renamed tolitter_agtop_grass()
,litter_agtop_nitrogen_tree()
,litter_agtop_sum()
,litter_agtop_sum_quick()
,litter_agtop_tree()
. -
Index in
outnames
array infwriteoutput.c
corrected for"mgrass_soilc"
,"mgrass_soiln"
,"mgrass_litc"
,"mgrass_litn"
outputs.
- Invalid access to pointers
soil->wsat-soil->wpwp
has been replaced by access to layer specific datasoil->wsat[l]-soil->wpwp[l]
ininfil_perc_rain.c
andinfil_perc_irr.c
. See issue #303.
- PFT specific output for biological nitrogen fixation with grid and PFT scaling in
npp_contr_biol_n_fixation.c
andbiologicalNfixation.c
.
- Adjusted optimum temperature limits (
"temp_bnf_opt"
) of herbaceous PFTs for NPP controled biological nitrogen fixation inpft.js
.
-
Missing
break
statement added inharvest_stand.c
. See issue #302 -
Missing deallocation of
decomp_litter_pft
added infreesoil.c
. -
Missing deallocation of
with_tillage_filename
added infreeconfig.c
.
-
If input comes from socket connection the existence of the file is not checked anymore.
-
The memcpy arguments in
cpl.h
are now in the right order.
- flag
"start_coupling"
added in configuration file. If lpjml is coupled to an external model via
"coupled_model" : "model",
this flag allows so set a year when input is received from the external model. Before that year input is read from input file.
If flag is omitted or set to null
coupling starts at the first year.
- For input received from an external model a file name can additionally be specified where input is read from before the specified coupling year:
"with_tillage" : { "fmt" : "clm", "socket" : true, "name" : "tillage.clm"},
-
lpjcheck and lpjml checks for specified filenames if they are necessary for the coupled run
-
JSON metafiles are also created for NetCDF output
- CHANGELOG.md added see issue #298
- leading zeros removed in
patch
identifier of the version number
- all versions prior to 5.6.7 have not been documented by a changelog or similar but in the respective merge requests (internal link accessible at PIK only)