The DynACof process-based model computes plot-scale Net Primary Productivity, carbon allocation, growth, yield, energy, and water balance of coffee plantations according to management, while accounting for spatial effects using metamodels from the 3D process-based model MAESPA. The model also uses cohorts for the development of the coffee buds and fruits to better represent fruit carbon demand distribution along the year.
DynACof( Period = NULL, WriteIt = F, ..., parallel = TRUE, output_f = ".RData", Inpath = NULL, Outpath = Inpath, Simulation_Name = "DynACof", FileName = list(Site = "1-Site.R", Meteo = NULL, Soil = "3-Soil.R", Coffee = "4-Coffee.R", Tree = NULL) )
Period | Period of time to be simulated, see details. Default: |
---|---|
WriteIt | If |
... | Further arguments to pass to |
parallel | Boolean. Parallelize the computation over crop rotations. |
output_f | Output format. If |
Inpath | Path to the input parameter list folder, Default: |
Outpath | Path pointing to the folder were the results will be writen, Default: |
Simulation_Name | Character name of the simulation file name if |
FileName | A list of input file names :
Default input files are provided with the package as an example parameterization. |
Return invisibly a list containing three objects (Parameters, Meteo and Sim):
Sim: A data.frame of the simulation outputs at daily time-step:
Type | Var | unit | Definition |
General | Cycle | - | Plantation cycle ID |
Plot_Age | year | Plantation age (starting at 1) | |
Plot_Age_num | year (numeric) | Numeric age of plantation | |
LAIplot | m2 leaves m-2 soil | Plot (Coffee + Shade Tree if any) Leaf Area Index | |
Suffixes for Coffee organs | x_RE | - | Reserves |
x_SCR | - | Stump and Coarse roots | |
x_Fruit | - | Fruit | |
x_Shoot | - | Resprout wood (= branches) | |
x_FRoot | - | Fine roots | |
x_Leaf | Leaves | ||
Suffixes for Shade Tree org. | x_RE_Tree | - | Reserves |
x_Stem_Tree | - | Stem (= trunk) | |
x_Branch_Tree | - | Branches | |
x_CoarseRoot_Tree | - | Coarse roots | |
x_FRoot_Tree | - | Fine roots | |
x_Leaf_Tree | Leaves | ||
Energy | Rn_tot | MJ m-2 d-1 | System net radiation |
Rn_Tree | MJ m-2 d-1 | Shade tree net radiation | |
Rn_Coffee | MJ m-2 d-1 | Coffee net radiation | |
Rn_Soil | MJ m-2 d-1 | Soil net radiation | |
Rn_Soil_SW | MJ m-2 d-1 | Soil net radiation computed using Shuttleworth & Wallace (1985) for reference | |
LE_x | MJ m-2 d-1 | System/Coffee/Tree/Soil latent heat | |
H_x | MJ m-2 d-1 | System/Coffee/Tree/Soil sensible heat | |
Q_Soil | MJ m-2 d-1 | Soil heat transport | |
Transmittance_Tree | fraction | Fraction of light transmitted by the shade trees | |
PAR_Trans_Tree | MJ m-2 d-1 | Light transmitted by the shade trees canopy | |
PAR_Trans | MJ m-2 d-1 | Light transmitted by the Coffea canopy | |
K_Dir | - | Direct light extinction coefficient | |
K_Dif | - | Diffuse light extinction coefficient | |
APAR | MJ m-2 d-1 | Absorbed PAR by the plant | |
APAR_Dif | MJ m-2 d-1 | Absorbed diffuse PAR (Direct is APAR-APAR_Dif) | |
lue | gC MJ | Light use efficiency | |
Tleaf_Coffee | deg C | Coffee canopy temperature computed by DynACof | |
WindSpeed_x | m s-1 | Wind speed at the center of the layer | |
TairCanopy_x | deg C | Air tempetature at the center of the layer | |
DegreeDays_Tcan | deg C | Growing degree days computed using Coffee Canopy Temperature | |
Carbon | GPP | gC m-2 d-1 | Gross primary productivity |
Consumption_RE | gC m-2 d-1 | Daily reserve consumption | |
Carbon_Lack_Mortality | gC m-2 d-1 | Mortality from a higher carbon consumption than Supply | |
Rm | gC m-2 d-1 | Total Coffee maintenance respiration | |
Rm_x | gC m-2 d-1 | Maintenance respiration at organ scale | |
Rg | gC m-2 d-1 | Total Coffee growth respiration | |
Rg_x | gC m-2 d-1 | Growth respiration at organ scale | |
Ra | gC m-2 d-1 | Coffee layer autotrophic respiration (=Rm+Rg) | |
Demand_x | gC m-2 d-1 | C demand at organ scale (fruit, leaf and fine root only) | |
Alloc_x | gC m-2 d-1 | C allocation to organ net of Rm (NPP+Rg) | |
Supply | gC m-2 d-1 | C supply at the begining of the day at layer scale (GPP+Reserve consumption-Rm) | |
Supply_x | gC m-2 d-1 | C supply to organ, net of Rm | |
NPP | gC m-2 d-1 | Net primary productivity at layer scale | |
NPP_x | gC m-2 d-1 | Net primary productivity at organ scale | |
Mnat_x | gC m-2 d-1 | Organ natural mortality (= due to lifespan) | |
Mprun_x | gC m-2 d-1 | Organ mortality due to pruning | |
M_ALS | gC m-2 d-1 | Coffee leaf mortality from American Leaf Spot | |
Mortality_x | gC m-2 d-1 | Total organ mortality | |
LAI | m2 leaves m-2 soil | Leaf Area Index | |
CM_x | gC m-2 d-1 | Organ C mass | |
DM_x | gDM m-2 d-1 | Organ dry mass | |
Fruit development | BudInitPeriod | boolean | Bud initiation period (BIP) |
Budinit | Buds d-1 | Total Number of Buds Initiated per day | |
ratioNodestoLAI | Nodes LAI-1 | Number of fruiting nodes per LAI unit | |
Temp_cor_Bud | fraction | Temperature correction factor for bud development | |
pbreak | 0-1 | Daily probability of bud dormancy break | |
BudBreak | Buds d-1 | Total number of buds breaking dormancy per day | |
SM | g m-2 d-1 | Coffee Fruit Sucrose Mass | |
SC | g Sugar gDM | Coffee Fruit Sucrose Content | |
Maturation_duration | days Fruit cohort-1 | Coffee Fruit Total Maturation Duration for each cohort | |
Harvest_Maturity_Pot | Fraction | Daily average fruit maturity (0-1) | |
Date_harvest | day of year | date of harvest | |
Harvest_Fruit | gC m-2 | Total fruit carbon mass at harvest | |
Harvest_Maturity | Fraction | Average fruit maturity at harvest (0-1) | |
Overriped_Fruit | gC m-2 d-1 | Overriped fruits that fall onto the ground | |
Water | IntercMax | mm | Maximum potential rainfall interception by canopy |
CanopyHumect | mm | Rainfall interception by canopy | |
Throughfall | mm | Rainfall not intercepted by the canopy, coming to the soil | |
SuperficialRunoff | mm | Water runoff from the superficial soil layer | |
ExcessRunoff | mm | Discharge from the superficial soil layer | |
TotSuperficialRunoff | mm | Sum of discharge+ExcessRunoff | |
InfilCapa | mm | Superficial water infiltration capacity to first layer of soil | |
Infiltration | mm | Superficial water infiltration to first layer of soil | |
Drain_[1-3] | mm | Water drainage from soil layer 1, 2 or 3 | |
WSurfaceRes | mm | Soil water content from the surface layer | |
W_tot | mm | Total soil profile water content | |
W_[1-3] | mm | Soil water content from the layer 1, 2 or 3 | |
REW_tot | - | Relative extractable water from the soil | |
REW_[1-3] | - | Relative extractable water from the layer 1, 2 or 3 | |
EW_tot | mm | Extractable water from the soil | |
EW_[1-3] | mm | Extractable water from the layer 1, 2 or 3 | |
SWD | mm | soil water deficit | |
RootWaterExtract_[1-3] | mm | Root water extraction for soil layer 1 to 3 | |
IntercRevapor | mm | Evaporation by canopy | |
T_x | mm | Transpiration at system/Coffee/Tree scale | |
E_Soil | mm | Soil evaporation | |
ETR | mm | System evapotranspiration | |
SoilWaterPot | MPa | Soil water potential | |
PSIL | Mpa | Coffee leaf water potential | |
Special shade tree variables | LA_Tree | m2 leaves tree-1 | shade tree leaf area |
Crown_H_Tree | m | Crown height | |
Trunk_H_Tree | m | Trunk height | |
Height_Tree | m | Shade tree total height (used for boundary conductance), set to 0 if no shade trees | |
DBH_Tree | m | Diameter at breast height | |
LAD_Tree | m2 m-3 | Shade tree Leaf Area Density | |
CrownRad_Tree | m | Crown radius | |
CrownProj_Tree | m2 crown tree-1 | Crown projection | |
Stocking_Tree | tree m-2 | Shade tree density | |
TimetoThin_Tree | boolean | Days on which tree is thinned | |
MThinning_x_Tree | gc m-2 d-1 | Mortality due to thining at organ scale |
Meteo: A data.frame of the input meteorology, potentially coming from the output of Meteorology()
:
Var | unit | Definition | If missing |
Date | POSIXct | Date in POSIXct format | Computed from start date parameter, or set a dummy date if missing |
year | year | Year of the simulation | Computed from Date |
DOY | day | day of the year | Computed from Date |
Rain | mm | Rainfall | Assume no rain |
Tair | Celsius | Air temperature (above canopy) | Computed from Tmax and Tmin |
Tmax | Celsius | Maximum air temperature during the day | Required (error) |
Tmin | Celsius | Minimum air temperature during the day | Required (error) |
RH | % | Relative humidity | Not used, but prefered over VPD for Rn computation |
RAD | MJ m-2 d-1 | Incident shortwave radiation | Computed from PAR |
Pressure | hPa | Atmospheric pressure | Computed from VPD, Tair and Elevation, or alternatively from Tair and Elevation. |
WindSpeed | m s-1 | Wind speed | Taken as constant: Parameters$WindSpeed |
CO2 | ppm | Atmospheric CO2 concentration | Taken as constant: Parameters$CO2 |
DegreeDays | Celsius | Growing degree days | Computed using GDD() |
PAR | MJ m-2 d-1 | Incident photosynthetically active radiation | Computed from RAD |
FDiff | Fraction | Diffuse light fraction | Computed using Diffuse_d() using Spitters et al. (1986) formula |
VPD | hPa | Vapor pressure deficit | Computed from RH |
Rn | MJ m-2 d-1 | Net radiation (will be depreciated) | Computed using Rad_net() with RH, or VPD |
DaysWithoutRain | day | Number of consecutive days with no rainfall | Computed from Rain |
Air_Density | kg m-3 | Air density of moist air (\(\rho\)) above canopy | Computed using bigleaf::air.density() |
ZEN | radian | Solar zenithal angle at noon | Computed from Date, Latitude, Longitude and Timezone |
Parameters: A list of the input parameters (see site()
)
The user can import a simulation using base::readRDS()
.
Almost all variables for coffee exist also for shade trees with the suffix
_Tree
after the name of the variable, e.g. : LAI = coffee LAI,
LAI_Tree = shade tree LAI.
Special shade tree variables (see return section) are only optional,
and it may have more variables upon parameterization because variables can be added in
the metamodels parameter file in Metamodels() or
Allometries()
.
Important :
It is highly recommended to set the system environment timezone to the one from the meteorology file.
For example the default meteorology file (Aquiares()
) has to be set to Sys.setenv(TZ="UTC")
.
All variable units are available as attributes (see example).
For simulations with custom initialisations (e.g. at age > 0), or running a simulation day by day, see dynacof_i()
.
if (FALSE) { if(interactive()){ Sys.setenv(TZ="UTC") Sim= DynACof(Period= as.POSIXct(c("1979-01-01", "1980-12-31"))) # Get the units of the input variables: attr(Sim$Meteo,"unit") # Get the units of the output variables: attr(Sim$Sim,"unit") } }