Century and DayCent Version 5 - Release Notes
Century5 (5.5.12), DayCent5 (5.5.17), C5MPI (1.6.4) - Oct 2016
Fixes and Maintenance
-
DayCent5 soil mineral N: several tweaks to correct mass balance checks.
Code for leaching of mineral N cleaned up (same algorithm).
-
Century5 soil water model: fine tuning transpiration and water budget testing.
-
DayCent5 soil hydrology: Fixed error where amtTrans accumulator was incorrectly updated in Infiltration.
Fixed issue occuring when bottom layer does not dry below field capacity.
Array AMTTRANS now accumulates water transfers between soil layers for saturated flow only.
-
Misc. code cleanup so builds on g++ 6.x with fewer warnings.
-
Misc. checks for handling very small values.
-
Tree/shrub:
In a savanna system,
added check for zero live biomass, at which time the tree/shrub is removed from the system.
This allows TREM CCKILL events to transform a savanna system to a crop/grass system.
Enhancements
-
NetCDF files based upon class IndexLatLonIdNcFile can now have unsorted IDs.
Century5 (5.5.11), DayCent5 (5.5.16), C5MPI (1.6.3) - Aug 2016
Fixes and Maintenance
-
C5MPI: mods to SiteMgr and SitesLatLonNcFile to reduce memory footprint and enhance parallel reads.
-
Daymet utilities are now marked as obsolete since they use the old Daymet directory structure.
(A new Daymet reader is in the works.)
-
New algorithm for tree basal area, modified from Century 4.5.
BASFCT is used only for small tree biomass when relationship is linear.
Basal area is less than linear amount for large aboveground tree biomass.
-
DayCent5: Transpiration - fixed issue where transpiration from a soil layer
was not always removed from the soil water pool.
-
DayCent5:
evaporation and transpiration potential rates use only aboveground dead per Century/Daycent4.5;
the bare soil evaporation rate uses both litter and aboveground dead.
Enhancements
-
New script: SplitCmdLinesFile
Century5 (5.5.11), DayCent5 (5.5.15), C5MPI (1.6.2) - April 2016
Fixes and Maintenance
-
Weather readers using monthly model-data time mapping upon rewind:
CRU reader modified to determine the data extent from the netCDF file;
all readers - rewind wraps correctly when model year is any value outside of data year range.
-
Weather from site parameters: if any PRECIP, TMN2M, or TMX2M parameter values are a missing value
(less than -99) the weather site parameters will not be used.
-
C5MPI: fixed issue in message-send timing for command-lines to work tasks.
Enhancements
-
C5MPI: Restart file capability writes to a spatial site netCDF file
using new "-rf" command-line option.
For details see C5MPI.
-
New utility: CopyFrom100.awk -- Copies a parameter database set from a *.100 file to stdout.
-
Management events in schedule files can be a repeating event over a range of years.
Find details in Management Blocks.
Century5 (5.5.10), DayCent5 (5.5.14), C5MPI (1.5.2) - Oct 2015
Fixes and Maintenance
-
DayCent5 site parameter checks now verify and fix the values for parameters FSUBLM and STDMP.
-
Fixed incorrect assignment in DCSiteParamMods::VerifyValues for wilting point.
-
Site parameters now have numerical limits check upon input.
-
DayCent5 snow/soil water now correctly balances sublimation when
FSUBLIM parameter != 1.0.
-
C5MPI can use site parameters stored in spatial netCDF file format.
See Site Parameters: Spatial netCDF File for details.
Enhancements
-
CROP management events can now specify a parameter value in the event data.
This value replaces the parameter value for that crop.
See Management Events for details.
-
FERT management events can now specify the amount of N, P, and S
(parameters FERAMT(*)) in the event for the month.
See Management Events for details.
-
OMAD management events can now specify the amount of carbon
(parameter ASTGC) in the event for the month.
See Management Events for details.
-
CopySite utility now can display a progress bar.
C5MPI (1.5) - June 2015
Enhancements
Century5 (5.5.9) and DayCent5 (5.5.13) - April 2015
Fixes and Maintenance
-
Management: mods to handle schedule files (SCH text format) with
varying newline types (e.g. Windows vs. Linux), and trailing spaces after events.
Enhancements
-
Management: SCH files can have "monthly" or "annual" for
the output intervals in blocks, as well as the traditional
numeric value.
-
Management: Blocks in SCH files have events years that repeat the
previous year's events using the keyword "repeat" after the
block year.
Find details in Management Blocks.
Century5 (5.5.8) and DayCent5 (5.5.12) - Feb 2015
Enhancements
-
New output variables tracking monthly fertilization (N,P,S) transfers to soil pools
EFERT(*)
-
Management schedule files in text format (SCH files)
can now have comments after and a block event.
E.g., 1 5 GRAZ GM # moderate grazing from field data
-
Internal: Configuration information was consolidated from several locations into
the main configuration classes.
User: More configuration information is written to the log file, and is used
in the initialization of output files.
-
The file WeatherDataPaths.txt can now have an "any" system name,
specifying the path if no matching system name if found.
Century5 (5.5.7) and DayCent5 (5.5.11) - Oct 2013
Enhancements
-
New soils netCDF file format.
A soils netCDF file contains a collection of soil profiles expressed in terms of site parameters,
in which each soil is identified by latitude, longitude and ID number.
See Soils netCDF file.
-
New site spatial netCDF file format.
A spatial netCDF file contains a collection of sites,
in which each site is identified by latitude, longitude and ID number.
See Site Parameters: Spatial netCDf file,
-
New site and soils ID management classes
to assist with the new files.
-
New utilities: CopySoil, CopySite.
See Utilities.
-
Added Century5 and DayCent5 command-line option -soil.
See Running a Century5 or DayCent5 Simulation.
-
A log file is now created for each Century5 and DayCent5 simulation.
Production of a log is turned off using
the "-no-log" command-line option option.
Century5 (5.5.6) and DayCent5 (5.5.10) - May 2013
Fixes and Maintenance
-
DayCent5: Infiltration better handles long periods of ponded water;
and when the wetting front does not reach saturation, there is no
infiltration.
Enhancements
-
Leaching: Added solution pools for organic C, N, P, S
leached from the simulation layer: soil and baseflow.
Leaching now also occurs in the soil litter layer.
-
DayCent5: Snow submodel now uses the sublimation site parameter,
FSUBLM.
-
DayCent5Chem added to the source code tree.
Century5 (5.5.5) and DayCent5 (5.5.9) - April 2013
Enhancements
-
New netCDF file format to contain multiple site parameter sets.
Each site has a unique key of latitude, longitude and site ID number.
-
New Water/Temperature output variables:
EVAPA = annual EVAP accumulator
TRANA = annual TRAN accumulator
RUNOFFA = annual RUNOFF accumulator
STREAMA = annual STREAM(1) accumulator
-
New Crop/Grass C and Forest C output variables are:
LAI = leaf area index, estimated monthly
LAIMAX = annual maximum LAI
Century5 (5.5.4) and DayCent5 (5.5.8) - October 2012
Fixes and Maintenance - DayCent5
-
Fertilization issue fixed: If a mgmt schedule has the same FERT option
repeatedly, the DB (GetFertilization) does not get called. But the amount
to fertilize, as specified in the original FERT event, did not get
replenished. Now it is.
-
Base flow leaching of N,P,S could occur even if no new water flow entered
the deep storage. Now there must be flow into deep storage in order for
there to be base flow leaching.
-
Tree growth: Maintenance respiration is now subtracted from potential
production before allocations to tree parts are made, as is done in
monthly Century.
-
Nitrification: Conversion of soil ammonium to NO3 is limited to 20% of ammonium.
-
InitializePools: Burke's Eq. can be negative for small silt and clay fractions.
Now provides a minimum of 100 g of SOC.
-
InitDailyCycle: wt.evap now includes sublimation.
Enhancements - DayCent5
Century5 (5.5.2.2) and DayCent5 (5.5.5.3) - March 2012
Enhancements
Century5 (5.5.1.15) and DayCent5 (5.5.4.11) - Jan 2012
Fixes and Maintenance
-
Fall of standing dead, death of roots and shoots, have monthly rates.
For DayCent, the rate is modified by the length of the production period (1 week or less).
-
If an initial tree was not specified in the sch files, but
a block planted a tree, relevant initialization code was not called.
Initialization is now done for the tree addition after startup.
Century5 (5.5.1.10) and DayCent5 (5.5.4.7) - Sep 2011
Fixes and Maintenance
-
Grazing: The
GRZEFF
effect upon production had applied to potential production. But the
Holland et al. (1992)
curves could not be reproduced for the CPER
in the model responses. Changed to apply grazing restrictions to actual
production (crop/grass growth).
For GRZEFF options 5 and 6, the
Holland
curves now can be approximated for CPER simulations.
-
The temperature effect upon potential production:
Changed algorithm to the original
Paustian algorithm; had been using the VEMAP algorithm.
Century5 (5.5.1.8) and DayCent5 (5.5.4.5) - Aug 2011
Fixes and Maintenance
-
Fixed bug in a Century4 algorithm which calculated potential production for
crop/grasses. The fraction of root C was not recalculated
after the root-to-shoot ratio was modified.
Century5 (5.5.1) and DayCent5 (5.5.4) - May-June 2011
Fixes and Maintenance
-
Fixed bug in a Century4 algorithm which initialized some annual accumulators
mid-year. This caused a loss of accumulated amounts for simulations in the
southern hemisphere, where the amounts were from the second half of the
previous growing season.
-
Removed the NetCDF 3.5.0 source tree from the IRC source tree. All build files
were modified to use the system-installed NetCDF library and development
files, which currently should be at version 4.x.
Enhancements
-
Added output variables to track peak biomass for the growing season:
Variable
|
Description
|
BMAXAGL, BMAXAGD, BMAXBG
|
Annual maximum monthly biomass for crop/grass aboveground live and dead
(litter), and belowground components. Units = g C/m2.
|
BMAXLF, BMAXR, BMAXW, BMAXWD
|
Annual maximum monthly biomass for tree/shrub leaf + fine branch, root
components, aboveground wood, and aboveground dead wood. Units = g
C/m2.
|
-
C5MPI
is a new front-end for Century5 (and soon DayCent5) which runs multiple simulations
concurrently on systems that support MPI. C5MPI accepts a text file
containing Century5 command-lines, and runs one simulation per command-line,
on as many CPUs or cores as is specified.
-
The algorithm for the soil water effect upon production has been changed to
use a logistic curve. See the page
Crop and Grassland Submodel
to read a description of the algorithm.
-
Added debug command-line option to Century5: "-d7". This produces an log file
of the weather schedule each time it is changed.
Century5 (5.5.0) and DayCent5 (5.5.3) - March 2011
Enhancements
-
Replaced the weather data code with the Weather Data Framework. The source
for this is in source code directory
Ecosystem/Weather/
-
Added a weather data interface to use the CRU monthly weather data in the
netCDF format used at NREL.
-
For grass simulations, the output variables for C and (N,P,S) returns and
removals now are separate for grazing and fire.
Here is a table of the old and new variables for "Crop and Grassland C Output
Variables":
Old Variable
|
New Variables
|
(both fire & grazing)
|
Grass Fire
|
Grazing
|
Description
|
CRETA
|
CRETFA
|
CRETGA
|
C RETurn from [Fire | Grazing] Annually.
CRETFA is always zero, since currently fire does not transfer C to system
or soil pools.
|
SDREMA
|
SDRMFA
|
SDRMGA
|
Standing Dead ReMoved by [Fire | Grazing] Annually
|
SDRMAI(2)
|
SDRFAI(2)
|
SDRGAI(2)
|
Standing Dead Removed by [Fire | Grazing] Annually: Isotopes
|
SHREMA
|
SHRMFA
|
SHRMGA
|
SHoots ReMoved by [Fire | Grazing] Annually
|
SHRMAI(2)
|
SHRFAI(2)
|
SHRGAI(2)
|
SHoots Removed by [Fire | Grazing] Annually: Isotopes
|
Here is a table of the old and new variables for "NPS Output Variables":
Old Variable
|
New Variables
|
(both fire & grazing)
|
Grass Fire
|
Grazing
|
Description
|
ERETA(3)
|
ERETFA(3)
|
ERETGA(3)
|
E amount RETurned by [Fire | Grazing] Annually
|
SDRMAE(3)
|
SDRFAE(3)
|
SDRGAE(3)
|
Standing Dead Returned by [Fire | Grazing] Annual E amount
|
SHRMAE(3)
|
SHRFAE(3)
|
SHRGAE(3)
|
SHoots Returned by [Fire | Grazing] Annual E amount
|
-
Modified function PotPlantProdFromSoilH2O so the algorithm behaves exactly
like the graph in
figure 3.9.
-
Initialization of day length (hours) in code from Century4 was not well handled,
such that southern hemi had an initial value = 24, and northern had 0 hours.
Now they initialize to the expected day length for the latitude on Julian
day 1.
-
If a site parameter set has snow > 0, but is much too warm, then the start
of growth was delayed, particularly in the southern hemisphere. Fixed this
by running the soil water submodel to get rid of the snow before running the
soil temperature submodel.
Century5 (5.4.8.15) and DayCent5 (5.5.2.20) - November
2010
Fixes and Maintenance
-
PartitionResidue: Allowed for partitioning of N, P, S when the donor pool
was <= 0. The result was negative values in the donor pool (e.g., BGLIVE(1)).
Now partitioning does not occur unless the donor pool is > 0. The transfers
to structural and metabolic pools are limited by the size of the donor pool.
-
Several values used in Assert statements, which check for bounds of variables,
were not large enough. Changed to accept reasonable ranges.
-
Output variable values for EUPPRT(part,element) were written "part" order
first, so the variable names did not match the ordering. Now they are written
correctly.
Century5 (5.4.8.1) and DayCent5 (5.5.2.1) - March 2009
Fixes and Maintenance
-
Added to Forest C output variables NEEA and NBPA to accumlate annually the
monthly varables NEE and NBP.
-
Corrected the output variables
FERTOT(*)
which were storing monthly values;
they now store cumulative values.
Enhancements
-
New R script to read and plot Century5 and DayCent5 output variables. In the
source tree at Ecosystem/Century5/scripts/Century5.R
Century5 and DayCent5 Version: 5.5.1 - September 2007
Enhancements
-
Reorganized Tree and Crop/Grass objects' code providing tighter encapsulation.
This is documented in the source code documentation: Ecosystem/Century5/doc/SoftwareDesign/SoftwareDesignNotes.html
-
Refactored of DayCent potential production so it can accept other models,
i.e., photosynthesis. This is documented in the source code documentation: Ecosystem/Century5/doc/SoftwareDesign/SoftwareDesignNotes.html
-
Refactored of daily time step code (simsom.cpp) to provide capability of hourly
time step option.
-
Refactored management scheduling algorithms and classes so can handle events
scheduled for a day within a month. (The schedule file formats were not
changed, but remain a planned task.)
-
DayCent5 has an enhanced soil hydrology submodel that provides smoother and
predictible responses. The submodel runs in both hourly and daily time steps
with similar behavior and results.
DayCent5 Version: 5.5.0 - April 2007
Enhancements
-
Updated trace gas submodel to match DayCent 4.5. Added immobilization and
mineralization. Updated equations for NO calcs. Added canopy absorbtion
of NO.
-
New monthly output variables for trace gasses: CH4, NO, N2O,
N2. These are written to a new output file which has the suffix "-mtg",
e.g., "grass-mtg.csv".
-
Reorganized daily trace gas output variables, so fluxes are listed first,
and soil variables are last. Simplified names for flux variables.
DayCent5 Version: 5.4.8.0 - August 2006
Fixes and Maintenance
-
Modifications to soil hydrology model which provide a better balance of the
water budget. Evaporation is now a closer match to the algorithms in Hillel
(1977).
Version: 5.4.7.11 - July 2006
Fixes and Maintenance
-
DayCent5: Modified TDCSoilFlows::FlowNPSintoMineralSoil and FlowNPSfromMineralSoil
so check for minimum flow amount. If smaller, return w/out doing the flow.
Minimum is currently set to 1.0e-3 g m-2. This produced a speedup of about
2X for g++ build (optimized with -O1 and inline functions) and about 50%
for BCB6 builds (optimized with inline functions and auto register variables)
simulating c3 grass for 2000 years.
-
Fix for differences in results from BCB6 vs g++ 3.4 builds of daycent5. Problem
was in TDayCentSoil/h2oflux.cpp (TDayCentSoil::SoilWaterFlux) where amtTrans
was copied to amtTransDbl. BDB6 w/CARRAY correctly performed the implicit
conversion of float -> double for each element in the arrays. g++ did
not cast correctly for either BLITZ or CARRAY builds – had to add
an explicit cast using the macro CAST_ARRAY_1D.
-
DayCent5: Add a check in the transpiration calculation which correctly checks
that the transpired amount does not exceed available water.
-
Updated comparisons of Century4, Century5, and DayCent5 for the c3grs site.
See Ecosystem/Century5/doc for graphs in PDF format.
Enhancements
-
R scripts are available to display simulation results using the R package
( http://www.r-project.org ). See the source code directory Ecosystem/Century5/scripts.
Version: 5.4.7.10 - May 2006
Enhancements
-
Rewrite of import function for Century4 site parameter files ("site.100" files).
Now, parameter groups can be in any order. Within a parameter group (e.g.,
Climate) parameters can be in any order, and import continues if a parameter
is missing.
Fixes and Maintenance
-
Refactoring necessary for building successfully with g++ 4.x.
-
Code reorganization and refactoring of several base class' for greater conformance
to standard C++, and organizational consistancy.
Version: 5.4.7.9 - December 2005
Enhancements
-
Optimization of the read and management of the parameter databases. Classes
refactored for clarity, speed. The source was moved from the Century support
directories to the Management source directory.
Fixes and Maintenance
-
Fixed loop issue where tree removal parameters retrieved the RETF values.
The loop index order was incorrect.
Version: 5.4.7 - November 2005
Enhancements
Monthy Century5 and DayCent5
-
A new command-line parameter
-pp path
specifies
a directory in which to search for parameter files (e.g., crop.100).
This path is searched before the default Century path (e.g.,
install_dir/bin/parameters/Monthly). See
Running Century and CMI with Command-Line
Options
for details on command-line options.
-
A site file can now be created at the end of a simulation, based upon the
state of the simulated system at that point. A new command-line option
-sf file_name
specifies
the site file name. New classes SiteCreatorBase, CenturySiteCreatorBase,
MCSiteCreator, and DCSiteCreator implement this feature. See
Running Century and CMI with Command-Line
Options
for details on command-line options.
-
New page in the reference:
Running a Century Simulation to Equilibrium
-
The algorithm for nutrient limitation uses only the fine root and leaves of
trees for determining the upper limit on the (N,P,S):C ratio.
-
In restriction of production algorithms, the C-to-biomass conversion factor
constant was 2.5 for all parts. Now it is 2.0 for tree parts other than
fine root and leaves.
-
Adjusted the timing classes so monthly Century agrees with DayCent in the
floating-point time for output. In floating-point time, January 2000 = 2000.083;
December = 2001.0.
-
Weather data files and site parameter files (Century4 text-format) can now
have comments - lines that start with the characters: ; ! # // (double-slash).
-
Site parameter definitions NetCDF file now stores the parameter set titles.
-
Site parameter validation is enhanced. Validation and fill of "missing
values" now occurs when the configuration object is built, rather than
in the Century model. Messages of actions are written to the user's output,
or if CMI is in use, to the message window. A description of the actions taken
by the validator objects is described in the new page
Site Parameters Validation.
Century Model Interface
-
Includes a major refactoring of the Site Parameters editor (a long time in
the works, and a long time needed). Now it can edit both monthly and daily
site parameter sets.
Utilities
-
New utility: DailyWthr2MonthlyWthr - Creates a monthly weather data set from
a daily weather data set.
-
New utility: DailyWthr2SiteParams - Creates a site weather parameter set from
a daily weather set. This can be pasted into a site parameter set (e.g.,
site.100 file).
Fixes and Maintenance
-
Transpiration is restricted to rooting depth layers. For crop/grass systems,
this is the current value of NLAYPG. For tree/savanna systems, this is the
depth of the soil profile.
-
Century5: Evaporation is restricted to the simulation depth (nominally 20
cm). (DayCent5 has a flux-based algorithm that operates across the entire
soil profile.)
-
Century soil classes: Minor optimization of a few functions to prevent excessive
memory allocations.
-
Parameter database files: Added detailed error messages for problems reading
the parameter database files (e.g., crop.100).
-
Calculations involving the layered soil and soil profile organic C distribution
have better error messages and more robust recovery from errors and poor
soil parameterization.
-
The class for handling the parameter databases (e.g., crop.100) now
has full error handling and recovery.
-
Century Model Interface: Misc. modifications as needed to implement the same
new and modified features as described above for Century5 and DayCent5.
Version: 5.4.6 - February 2005
Fixes and Maintenance
Monthly Century and Century Base Classes
-
Fixed issues with the -f and -fm command-line arguments.
-
Added additional diagnostic messages when site parameter-related errors are
generated.
Version: 5.4.5 - November 2004
Fixes and Maintenance
Monthly Century and Century Base Classes
-
Harvest volatization of N: Previously, the cumulative amount for the month
of volatized N was being removed from the aboveground biomass. Now, just
the amount volatized for that harvest event is removed from the biomass.
-
Water submodel: Fixed an imbalance which occurred at low PET; a minimum PET
value is then used for transpiration calculations, but was not saved for
use elsewhere, where the ~zero PET value was used. This directly affects
the calculation of CGRAIN, where with the zero value, small negative values
of CGRAIN were calculated.
-
Snow submodel: Liquid remaining in the snow (SNLQ) when the snow melted was
not always transferred to the water entering the soil profile. Now it is.
-
Available water for plants was affected by limitations in the soil layer homogenization
algorithm. This algorithm is triggered by cultivation, when a depth of homogenization
of the surface soil is estimated from the intensity of cultivation. Previously,
when the depth would cause a soil layer to be divided into two layers, the
thickness of the divisions was not a restriction. Very thin layers caused
havoc with the water submodel. Now, the minimum thickness of a layer division
is 0.5 cm.
-
Potential production: The effect of soil water content on potential production
suffered from the problems described above. Now it works well using the
depth of roots (NLAYPG) for the amount of soil water. The water amount is
now calculated using the plant-available water content over that depth,
rather than the total water.
-
The depth of roots, NLAYPG, can vary depending upon changes in the number
of layers. The rooting depth is stored internally, and is used to recalculate
NLAYPG as needed.
-
Added various minor fixes related to floating point comparisons in assertions
(internal checks on the reasonableness of values).
Version: 5.4.4 - August 2004
Enhancements
CMI Site Editor
-
Added a button to "Clear Set". This sets all parameters in the currently
displayed parameter set to zero.
-
Added a checkbox for "read-only" status. When checked, the parameter
values cannot be modified.
-
Minor modifications to the layout of the dialog.
-
More robust handling of new and empty site sets.
CMI Management Editor
-
Minor modifications to the layout of the dialog.
Simulation Output File Dialog
-
A new output configuration dialog replaces the multiple simple dialogs previously
used to configure the output file base name and file type.
Century Command Line
-
Added options
-f
and -fm
to specify
the location and name of the fix.100 file to use for the simulation. For more
details, see
Running Century and CMI with Command-Line
Options.
Classes and functions affected:
TCenturyCmdLine, TCenturyConfigBase, TCenturyConfig, TDailyCenturyConfig,
TEventDBList, TEventOptionSet
-
Updated HTML documentation describing the command-line options.
Fixes and Maintenance
Monthly Century
-
Fixed read of weather files bug, in which weather file was "stuck" at
the first record. (Due to a temporary debugging change to the code, which
mistakenly was not removed.)
CMI Site Editor
-
Fixed memory-corrupting attempt to display unusually large parameter values.
-
Fixed initializion of parameter values when "New" button is pressed.
Improper initialization was causing crashes or exceptions.
-
Misc. minor code cleanup and performance enhancements.
Layered Soil Framework
-
Fixed improper initialization of default soil properties in soil layered component
classes, causing unwanted zeroing of by-layer values.
-
Some speed optimization of calculations over depth ranges.
Version: 5.4.3 - October 2003
Enhancements
CMI
-
Now built with V GUI library version 1.90a.
-
A tabbed-window toolbar is displayed under the menu bar, to provide convenient
window access.
-
Management Editor: Define Blocks: Choose Event Additional Data button:
The radiobutton dialog now pre-selects the radiobutton matching the current
value of the Additional data field.
-
Management Editor: Simulation Information: Initial System:
The "Select" buttons for crop/grass and tree display a list of available
crop, grass, and tree types from which to choose the initial system.
-
Added a popup menu accessable with a right-mouse button click on one of the
windows in CMI. The menu has "Copy", "Change Font" and "Exit" selections.
Fixes and Maintenance
Command-Line Arguments
-
New base class manages arguments as a series of options (1 to N arguments
each) rather than as a simple array of strings.
-
Century's command-line class is rewritten to use the new base class.
-
Functions accessing command-line arguments were modified to use the new classes.
Misc.
-
Fixed potential memory leaks in the site parameters class, and the V GUI library.
Version: 5.4.3 - September 2003
Misc. Modifications
User Preferences:
-
Opening and reading a "user preferences" INI file now works correctly.
CMI
-
Compiler flags are used during the project build to force correct use of Microsoft
Windows 98/ME common dialog boxes when built with Borland C++ Builder 6.
The flags, specified when building the V GUI library, are:
WINVER=0x0400
_WIN32_WINNT=0x0400
-
Improved error handling when reading and importing site and management.
Installation program
-
System requirements modified to accept a minimal Microsoft Windows 98 operating
system and hardware.
-
Installation and executables were tested on the following Microsoft Windows
systems:
-
98 SE
-
2000
-
XP Professional
Century Classes
-
Repeated simulation runs of the same configuration now are re-initialized
correctly.
Version: 5.4.2 - September 2003
General Comments
Version 5.4 contains a tremendous number of structural changes to
the Century source code. Our task of combining the monthly and daily models
into a stronger object-oriented design is largely complete. The Century source
code is now part of the source code structure for the
new IRC
model using the Grid-Cohort Framework.
Significant new features since the last release include
-
layered soil mineral N, P, and S,
-
better error handling throughout,
-
more robust importation of Century4 site and management files,
-
update reference document.
The source code builds and runs in both the latest Borland and GNU
C++ compilers, and so should run in any environment and operating system for
which those compilers are available. We routinely test in the following compiler/systems:
Borland C++ Builder/Microsoft Windows; GNU g++/Cygwin; GNU g++/Linux.
New or Enhanced Algorithms
-
Completed implementation of complete TCenturyBase. Most common elements of
monthly and daily Century (classes TCentury and TDayCent) have been moved
into class TCenturyBase.
-
Importation of Century4 schedule files: Error checking has been greatly enhanced.
Detailed messages provide location information for import problems.
-
The site parameter classes have undergone a major refactoring, providing better
encapulation, division of tasks, and future extensibility.
Fixes and Maintenance
Class TCentury
-
The relative water contents supplied in the site file were overwritten at
the start of a simulation by the calculation using the wilting point and
field capacity for each layer. This is fixed so the RWCF(*) are not calculcated
at the start unless all values are zero.
-
Has a large number of fixes, and issues found during code reorganization.
Physical Soil-related Classes
-
Corrected storage of deep soil water storage, so it isn't overwritten, and
is placed in output variable ASMOS(10) per the Century reference manual.
CMI
-
Upgraded to use the modified class interfaces for site and management.
-
Several misc. bugs have been fixed.
Miscellaneous
-
The user preferences class, TUserPref, now adds the extension "ini" to
a user preferences file name, if no extension is provided. Fixed a memory
leak, where a list of strings was not deleted.
-
Installation of the Century model's files puts the template and parameter
files into the install path, in the subdirectories
template
and parameters,
respectively.
These two subdirectories are now further subdivided into Monthly
and Daily
subdirectories,
in order to accomodate the different sets of files required for the monthly
and daily versions of Century.
Version: 5.4.0 - July 2002
New or Enhanced Algorithms
Miscellaneous
-
New new command-line option, "-t0", to turn OFF writing output files.
Class TCentury
-
At end of each simulation year, the bulk densities and thicknesses of the
soil layers encompassed by the simulation depth are recalculated according
to the change in the annual mean value of monthly SOMSC. See the section
Layered Soil Submodel
for details.
-
The mineral nutrient storage (N, P, S), previously stored in fixed layers
(an unmodified relict from Century 4) are now layered components of the
physical soil structure. Transfers between the simulation layer pools and
these soil mineral nutrient pools account for the layers spanning the simulation
depth, rather than surface layer only.
Physical Soil-related Classes
-
Conversion functions for different units of SOM and SOC are provided in TSoilBase.
Classes TCenturySoil, TSoilCDistribution, TDeposition, and TErosion now
use these new functions.
-
Functions for estimating the change in bulk density as the soil organic C
content changes are provided in class TSoilBase.
Fixes and Maintenance
Class TCentury
-
Output for
ASMOS(*)
and
MINERL(*, *)
now properly put the deep store values in the 10th element, i.e., ASMOS(10)
and MINERL(10, *).
-
Now checks for a soil thickness (from the site parameters) that is less than
the minimum thickness for the simulation layer (20 cm).
-
Checks for a soil thickness that is equal to the simulation layer thickness.
In this case, the lower soil pools are not used, and the algorithms which
require more soil are not used - C distribution in the profile, and erosion.
-
Phosphorus is now correctly transferred between the mineral, secondary, and
parent P. See the section
Phosphorus Submodel
for details.
-
Forest C output variable, TCREM, is now an annual accumulator, rather than
cumulative over the simulation.
Century Model Interface
-
Site Editor: Fixed several issues involved in accessing site parameter files
and replacing the displayed site parameter file.
Miscellaneous
-
TLowerSoil, TCenturySoil, TSoilBase: Misc. fixes for minor issues found in
portability testing.
Version: 5.3.2 - November 2001
New or Enhanced Algorithms
Command Line Options
-
New command line option "
-i filename
", where
filename
is the name of an initialization file. The default name is "
century.ini
" in the current path.
-
Both the command-line version and CMI (e.g., in MS Windows,
century.exe
and CMI.exe
respectively)
accept command-line arguments. For instance, you can modify your MS Windows
shortcut to CMI to include your initialization file. Likewise, on UNIX or
Linux systems, you can create an alias which runs CMI with your initialization
file.
-
Removed command-line option "-dn" which displayed default file names.
These default names are now determined in class TCenturyConfig, but are not
available at the time the command-line is parsed.
Century Model Interface
-
The Management Editor's Define Blocks page now provides a popup list of event
options for those events which have associated parameter databases.
class TCenturyConfig
-
New class to contain a complete configuration for a simulation. All initialization
of input (site, management, output, etc) is now external to the Century
model and class TCentury.
-
Modified classes TCentury, TApp and the GUI classes, and function main to
use this new class.
Fixes and Maintenance
Class TCentury
-
Fixed bug in reading organic matter input parameter ASTREC.
-
Fixed bug in reading of Century 4 schedule file which uses CO 2 effects.
-
Additional modifications to help build a common source tree with daily and
gridded versions (including new base classes TEcosystemModelBase, TCenturyBase,
TOutputBase, TCentOutFileBase).
Parameters Database Files
-
The parameter databases store options for a specific event (e.g., CROP event
or FIRE event). The parameter database list have been abstracted into a
new class to manage the list. This will allow future features for selective
specification of parameter database sets by the user, and provides for centralized
management of the database.
-
Class TCentury: The Century model class now receives a parameter database
list object when instantiated. Previously the class opened each database
as needed, and managed the list internally.
Century Model Interface
-
User Preferences dialog: Width of the project, site, and management path fields
is larger.
-
Site and Management Editors: Several improvements, including adding Century4
files to the "Open" button file filters.
-
TModalDialog base class: Better positioning of large dialogs..
Version: 5.3.1 - June 2001
General Comments
This release has a substantial number of modifications over version
5.2, including many bug fixes, enhancements to the object-oriented design of
the code, and implementation of design changes to allow for swapping of simulations.
The design goal is provide Century and its supporting submodels with a "pluggable" architecture,
so submodels can be changed easily, and so Century can be plugged into other
model architectures.
Fixes and Maintenance
Class TFlow
-
Class TFlow has been rebuilt using containers and algorithms from the the
standard C++ library.
Class TSoil
-
Class TSoil has been replaced by a new set of classes which more easily allow
for extensibility of the physical soil. These classes are named TSoilVDCompBase,
TSoilPool, TSoilProperty, TSoilCompList, TSoilLayer, TSoilBase.
Class TCenturySoil
-
TCenturySoil has been rewritten to utilize the new set of soil classes, and
is derived from class TSoilBase.
-
Utilizes a new class TSoilCDistribution which calculates a curve estimating
the distribution of the density (g cm -3 ) of soil organic
C throughout the soil profile. The parameters for this curve are based upon
(1) the current C density in the simulation layer, (2) the initial value
or last estimated value of the lower soil C pool, and (3) the depth of the
soil profile.
-
Minor cleanup of the soil water bucket submodel.
Classes TLowerSoil, TErosion, and TDeposition
-
These classes have been modified to use the new version of class TCenturySoil.
-
These classes no longer modify the physical soil, only the simulation pools.
Class: TCentury
-
The netCDF template file for the output variables' definitions had the MINERL()
ordering sorted first by element, then by layer. Fixed so that sorting is
first by layer.
-
Modification of several member functions to utilize the new soil class, TCenturySoil.
-
Leaching of organic C is now determined from water flow from the bottom of
the simulation layer rather than from "layer 2" or "30 cm
depth" as in version 4. Organic C leaching is now encapsulated in a
new member function LeachOrganicC.
-
New output variables:
soilDepth
,
lhsomtc
and
somtpc
.
-
Increased code readability with several boolean functions.
-
Fixed bug in which N volatility fixed parameter
vlosse
was modified in member function DeathOfShoots.
-
Encapsulated the system type information in a new class TPlantSystemType.
-
Encapsulated the site geographic and non-weather surface environment in a
new class TSiteEnvironment.
-
Encapsulated the microcosm calculations in a new class TMicrocosm.
-
Encapsulated the canopy variables and functions in the new class TCanopy.
-
Corrected setup of microcosm simulations such that (1) temperature is constant,
and read from the site parameters; (2) rainfall and irrigation is always
zero; (3) the soil water submodel is not used so that the soil water content
is constant.
-
The parameter databases are now stored in memory rather than read at each
request. This results in a substantial speed increase of simulations, at
the cost of increased memory requirements.
-
Calculation of whether or not the number of hours in the day are increasing
or decreasing fixed so that when current and previous day lengths are equal,
no change in the direction occurs.
-
Calculation of the day length now accounts properly for the southern hemisphere
(site parameter
SITLAT
< 0).
-
Fix in uptake of N, P, or S so P and S uptake is correctly calculated.
-
CO 2 effect ramping function calculating intermediate concentrations
did not account for end of the year, at which time no ramping is needed. Now
the CO 2 concentration uses the final value.
-
Added new event and associated function to provide for external events. This
event calls an external function provided by the main program unit or the
function which created the Century object. Added the member function UseExtEventtFunction
to specify this external function.
-
Encapsulated all asynchronous functions and variables in a new class, TAsynchFunctions.
Graphical User Interface
-
Management Editor: Microcosm now has its own entry fields.
Version: 5.2.1 - June 2000
Class: TCentury
-
Added additional functions to access output variables.
Version: 5.2.0 - May 2000
New or Enhanced Algorithms
New class: TCenturySoil
-
Derived from TSoil, contains Century-specific soil functions, including the
water bucket model.
Weather data (class TWeather)
-
Replaced the random number generator functons (which were from the book Numerical
Recipies) with a set of portable functions that are freely distributable.
Class: Import of Century4 schedule files.
-
Block definition descriptions are now prefixed by the block number.
Century Model Interface
-
Added a simple toolbar of buttons for "Quick Steps" to configuring
and running a simulation.
Fixes and Maintenance
Class: TCentury
-
Soil organic matter percent (OMPC) is now updated at the end of each simulation
iteration and after erosion and deposition. This is needed in order to update
variables dependent upon soil texture and OMPC, such as field capacity and
wilting point (depending upon the value of the site parameter SWFLAG).
-
The mean maximum plant-available water content (field capacity minus wilting
point, calculated as a weighted mean by layer thickness) used for the determining
the potential crop and tree production is now calculated over the rooting
depth. In Century 4, this is only calculated for the surface soil layer,
irrespective of layer thickness.
-
Added fix in calculation of N uptake in soil, so that the monthly symbiotic
N fixation amount is not included in soil N uptake. (This fix had previously
been included in the gridded Century version.)
-
Function OutputVariables: Fixed bug in the calculation of the output variable
ADEFAC, which was a remnant of the conversion of some very bad FORTRAN (Imagine!)
to C++.
-
The water bucket model was moved into a new class TCenturySoil, which is derived
from class TSoil.
-
Increased exception-robustness through the use of auto_ptr for the
dynamically-allocated data.
-
Added the applicable latest changes from the VEMAP and daily FORTRAN versions,
including:
-
WoodDeath: Check for available soil water when deciding to drop leaves
in deciduous forests. Also added check for winter solstice if trying
to drop decidous leaves.
-
AtmCO2Effect: Fix use of step vs. ramp function.
-
InitMonthlyCycle: Added a simple soil temperature calculation based upon
a warming or cooling trend. (This fix had previously been included in
the gridded Century version.) The soil temperature output variable STEMP
now contains the new calculation.
-
Site parameter and internal variable, NLAYPG, the number of layers available
for plant growth, is now updated when any change to the physical soil occurs,
including as erosion and deposition. It is limited to the range 1-9, and
will not exceed the number of soil layers.
-
Further cleanup of the water submodel code, which contained much spaghetti
inherited from the FORTRAN version.
Weather data (class TWeather)
-
Rewrote the algorithm for reading weather data files. The original was a holdover
from the FORTRAN code. The new algorithm is predictable and easy to understand.
-
Changed algorithm to replace missing values (-99.99) for temperatures in the
weather file and the site parameters. The algorithm is now:
(1) If the site parameter temperature value is valid, use it.
(2) Otherwise, estimate a value using linear interpolation or extrapolation.
(3) If the estimate is not available or reasonable, then use the mean annual
minimum or maximum temperature.
-
Modified the precipitation algorirthm for replacing missing values in the
weather file and the site parameters. Previously a stochastic value was
generated, as described in item 2 below.
(1) If the site parameter precipitation value is valid, use it.
(2) Otherwise, generate a stochastic value based upon the standard deviations
and skewness values from the site parameters.
-
Fully encapsulated the weather class. It is now completely independent of
the Century code.
Class: TSoil
-
Fixed bug in the calculation of weighted means of properties, and encapsulated
duplicated code in member functions.
-
Changed dynamically-allocated member arrays to be of standard library class vector ,
and modified code to use them appropriately.
-
Additional improvements to the erosion and deposition algorithms, especially
in the area of managing soil water contents.
-
Some functions which are specific to the Century model were moved into the
new derived class TCenturySoil.
Class: TSiteEditorDlg (the site parameter editor)
-
Fixed bug in which a site parameter set which has been read from a file into
the site editor was not copied to the permament site parameter set.
Century Model Interface
-
Fixed several minor but irritating quirks of the GUI code.
-
Built CMI for Microsoft Windows using the latest version of the V GUI library
(1.24).
Documentation
-
HTML Help pages - added much of the online Century 4 manual, with some minor
modifications to reflect version 5.
Version: 5.1.0 - June 1999
Class: TNcFile (base class for netCDF files)
-
Rewrote most of the function CreateFrom to fix inconsistancies.
Utility: ef2cvs
Converts an erosion output file in netCDF format, to a text file in CSV (comma-separated
values) format, for import into a spreadsheet program.
Class: Output variable classes
-
Added the management scheme and site file names, and the site parameter set
description to the output files.
Class: TWaterTemp (output variables for water and temperature)
-
Added the output variable "SIMDEPTH", which records in each output
record the depth of the simulation layer in cm. This variable is initialized
to the value of the fixed parameter EDEPTH (20 cm), and will only be altered
by erosion or deposition events.
New classes: TLowerSoil, TDepEroBase, TErosion, TDeposition, TNcErosionFile
-
Completed the initial version of these new classes.
Class: TMgtDlg (Management editor dialog)
-
Activated the entry fields and browse buttons for the erosion and depostion
files.
Class: TCentury
-
Function RunSimulation: Added exception handling for failure upon read of
intial crop tree parameters.
-
Function Schedule: Added exception handling for failure upon read of event
parameters.
Class: TSimTime
-
Corrected a problem in Century output timing.
Class: TManagementScheme
-
Enhanced error messages upon import of Century 4 schedule files.
Class: TSiteParameters
-
Allowed import of Century 4 site parameter files to accept parameter names
that are not enclosed in single quotes.
-
Fixed bug in import of Century 4 site parameter files.
-
Enhanced error messages upon import of Century 4 site parameter files.
Class: TWeatherVars
-
Enhanced reading of the weather file with better error messages.
-
Made "file rewind" requests more robust (less susceptable to compiler
idiosyncracies).
Version: 5.0.x
Apr 1999
Class: TApp
-
Function RunSimulation: Now closes the progress dialog when execution is stopped
prematurely, either through the "Cancel" button or when an exception
is generated.
Class: TCentury
-
Added notes on using C++ inheritance to create a custom version of the Century
class.
Mar 1999
Class: TMgtDlg (Management editor dialog)
-
Fix problem in the display of simulation description.
-
Added controls, events, functions to select the files for 14 C
input data, erosion output data, deposition input data to the Simulation Information
dialog.
Class: TNcFile (netCDF file base class)
-
Added a member variable to store the netCDF file version, applicable to all
Century netCDF file types.
-
Added functions to "set", "get", and "check" the
file version.
Class: TSiteParameters, TNcSiteParameters, TSiteFromLibDlg
-
TSiteParameters, TNcSiteParameters: Added code to read and write the editor
name and edit date in the site parameter netCDF file.
-
TSiteFromLibDlg: Added display of the editor name and edit date in the summary
panel.
Feb 1999
Class: TCentury
-
Made default values to be TCentury static member constants.
-
Modified the soil water submodel and all depth-dependent calculations in the
decomposition functions to use the new TSoil class.
-
TSimTime class finished: data and functions for simulation time encapsulated.
-
Added command-line option to display the execution time of the simulation.
-
Added a deposition event to the management scheduling.
Class TSoil, TLowerSoil, TErosion, TDeposition (incomplete), TNcErosionFile
-
New classes for implementing the new erosion and deposition submodels.
-
TLowerSoil implements the lower layer element pools as a source and sink for
the simulation layer pools at the surface, as the simulation layer undergoes
erosion and deposition.
-
TSoil implements a layered physical soil, containing vertically-differentiated
layers unique in texture, bulk density, and water content.
-
TErosion and TDeposition implement erosion and deposition functions. TNcErosionFile
manages a file of erosion values, written during erosion events, and read
during deposition events.
Class: TDefaultPaths
-
New class which encapsulates management of default paths for parameter and
management files, parameter and management templates, and parameter definition
databases.
Class: TNcFile (netCDF file base class)
-
Added member variable for netCDF file types in the file ncftypes.h.
-
Added functions to "set", "get", and "check" the
file type. Upon creation of a Century netCDF file object, automatically compares
the requested type to the type specified in the disk file.
Class: TVerifyMgmt
-
New class - originally was part of class TMgtDlg, the management editor. Extracted
all verification functions into their own class.
Utility: ncfilelist
A command-line utility to list the names and types of Century netCDF files in
the directory in which it is run.
Jan 1999
Class: TCentOutFileBase, TCentNcFile, TCentSprShtFile
-
Added classes which encapsulate Century output:
TCentOutFileBase is the base class for all output files.
TCentNcFile produces netCDF output.
TCentSprShtFile produces CSV (comma-separated values) output for input into
spreadsheet and word processor applications.
Class: TCentury
-
Modified constructor args to utilize new output class.
-
Modified function "wrtbin" to use new output class;
-
Discarded the function "detiv", which in Century 4 initialized output
files.