| aquaphy {deSolve} | R Documentation |
A phytoplankton model with uncoupled carbon and nitrogen assimilation as a function of light and Dissolved Inorganic Nitrogen (DIN) concentration.
Algal biomass is described via 3 different state variables:
All algal state variables are expressed in mmol C m-3.
Only proteins contain nitrogen and chlorophyll, with a fixed stoichiometric ratio.
As the relative amount of proteins changes in the algae, so does the N:C and the Chl:C ratio.
An additional state variable, dissolved inorganic nitrogen (DIN) has units of mmol N m-3.
The algae grow in a dilution culture (chemostat): there is constant inflow of DIN and outflow of culture water, including DIN and algae, at the same rate.
There is a day-night illumination regime, i.e. the light is switched on and off at fixed times (where the sum of illuminated+dark period=24 hours).
aquaphy(times,y,parms,...)
times |
time sequence for which output is wanted; the first value of times must be the initial time |
y |
the initial (state) values ("DIN","PROTEIN","RESERVE","LMW"), in that order. |
parms |
vector or list with the aquaphy model parameters; see the example for the order in which these have to be defined |
... |
any other parameters passed to the integrator ode (which solves the model) |
The model is implemented primarily to demonstrate the linking of FORTRAN with R-code.
The source can be found in the ‘dynload’ subdirectory of the package.
Karline Soetaert <k.soetaert@nioo.knaw.nl>
Lancelot, C., Veth, C. and Mathot, S. (1991). Modelling ice-edge phytoplankton bloom in the Scotia-Weddel sea sector of the Southern Ocean during spring 1988. Journal of Marine Systems 2, 333..346.
Soetaert, K. and Herman, P. (2008). A practical guide to ecological modelling. Using R as a simulation platform. Springer.
ccl4model, the CCl4 inhalation model
#-----------------------#
# the model parameters: #
#-----------------------#
parameters<-c(maxPhotoSynt =0.125, #molC/molC/hr
rMortPHY =0.001, #/hr
alpha =-0.125/150, #uEinst/m2/s/hr
pExudation =0.0, #-
maxProteinSynt =0.136, #molC/molC/hr
ksDIN =1.0, #mmolN/m3
minpLMW =0.05, #molC/molC
maxpLMW =0.15, #molC/molC
minQuotum =0.075, #molC/molC
maxStorage =0.23, #/h
respirationRate=0.0001, #/h
pResp =0.4, #-
catabolismRate =0.06, #/h
dilutionRate =0.01, #/h
rNCProtein =0.2, #molN/molC
inputDIN =10.0, #mmolN/m3
rChlN =1, #gChl/molN
parMean =250., #umolPhot/m2/s
dayLength =15. #hours
)
#-------------------------#
# the initial conditions: #
#-------------------------#
state <-c(DIN =6., #mmolN/m3
PROTEIN =20.0, #mmolC/m3
RESERVE =5.0, #mmolC/m3
LMW =1.0) #mmolC/m3
#----------------------#
# RUNNING the model: #
#----------------------#
times <-seq(0,24*20,1)
out <- as.data.frame(aquaphy(times,state,parameters))
#------------------------#
# PLOTTING model output: #
#------------------------#
par(mfrow=c(2,2), oma=c(0,0,3,0))
col <- grey(0.9)
ii <- 1:length(out$PAR)
plot (times[ii],out$Chlorophyll[ii],type="l",
main="Chlorophyll",xlab="time, hours",ylab="ug/l")
polygon(times[ii],out$PAR[ii]-10,col=col,border=NA);box()
lines (times[ii],out$Chlorophyll[ii] ,lwd=2 )
plot (times[ii],out$DIN[ii] ,type="l",main="DIN",
xlab="time, hours",ylab="mmolN/m3")
polygon(times[ii],out$PAR[ii]-10,col=col,border=NA);box()
lines (times[ii],out$DIN[ii] ,lwd=2 )
plot (times[ii],out$NCratio[ii] ,type="n",main="NCratio",
xlab="time, hours",ylab="molN/molC")
polygon(times[ii],out$PAR[ii]-10,col=col,border=NA);box()
lines (times[ii],out$NCratio[ii] ,lwd=2 )
plot (times[ii],out$PhotoSynthesis[ii],type="l",
main="PhotoSynthesis",xlab="time, hours",
ylab="mmolC/m3/hr")
polygon(times[ii],out$PAR[ii]-10,col=col,border=NA);box()
lines (times[ii],out$PhotoSynthesis[ii] ,lwd=2 )
mtext(outer=TRUE,side=3,"AQUAPHY",cex=1.5)
#------------------------#
# SUMMARY model output: #
#------------------------#
t(summary(out))