Background |
Models |
Projects |
Publications |
People |
News
Model Overview
Algorithms hyperlinked
Source code hyperlinked
Model download
Other Open Source tools
Overview: Periphyton Module Periphyton are found attached to macrophyte stems, floating as mats in the water column, and as a benthic layer on top of the soil. Long considered an integral part of the animal food web, periphyton respond rapidly to changes in water quality and hydroperiod. Like macrophytes, "native" periphyton are adapted to oligotrophic (low nutrient) conditions, while a variety of other periphyton are common in eutrophic (high nutrient) waters. Another important control on periphyton and algae is light availability: at intermediate and high plant densities (such as in high nutrient areas), emergent marsh macrophytes shade periphyton, and (to some extent) prevent healthy communities from developing. Capable of senescing during dry periods and coming back to high growth levels upon rehydration, there are a variety of different types of periphyton species & communities, depending on the subregion of the Everglades and its local environmental conditions. Periphyton
Module Description The general form of the equations that describe changes to a periphyton carbon stock is:
where S(time) is the standing stock of periphyton (g C m-2) at time t or t-1, P is the gross primary production gain (g C m-2 d-1), R is the respiration loss (g C m-2 d-1), M is the mortality loss (g C m-2 d-1), and dt is the time interval (days). The actual rates are products of the periphyton stock and maximum specific rates that are constrained by control functions:
where Pmax, Rmax, and Mmax are the maximum specific rates (d-1) of, respectively, gross primary production, respiration, and mortality; the CFP, CFR, and CFM are the (dimensionless, 0 Ð 1) control functions constraining gross production, respiration, and mortality, respectively. The control function constraining gross primary production includes a density-dependent feedback and a control function involving several environmental parameters. This combined control function is a multiplicative expression of relative effects of light intensity (e.g., macrophyte shading), temperature (seasonality), and nutrient availability. The dimensionless control function due to light intensity in
the water column is based on SteeleÕs (1965) photoinhibition formulation
integrated over depth (Bowie et al. 1985). The temperature control function (Jorgensen 1976) describes the biological
responses to temperature relative to a temperature optimimum and a
minimum. Whereas earlier ELM
versions (Fitz et al. 1996, Fitz
and Sklar 1999)
quantified nutrient limitation using Monod half-saturation kinetics, this
relationship appeared to behave inadequately in the oligotrophic conditions of much
of the Everglades, apparently with excessive constraint on growth under those
ambient conditions. There is
evidence that phosphatase activity of the periphyton assemblage tends to
increase under low nutrient conditions (Newman et al. 2003), thus potentially making
phosphorus less limiting and deviating from Monod kinetics. Moreover, while some experimental data
existed for half-saturation values of periphyton (Scinto and Reddy
submitted)
in laboratory settings, there was little information available on growth
responses at low nutrient concentrations.
Our alternative nutrient control function formulation uses an
exponential function, and a relationship to the parameter whose defininition
remains related to saturation kinetic experiments. The periphyton module considers two communities of periphyton[1]: those adapted to oligotrophic (ÒcalcareousÓ) and eutrophic (Ònon-calcareousÓ) conditions such as those observed along Everglades nutrient gradients (McCormick et al. 1996). Both periphyton communities are simulated with the same form of dynamic equations, but have different nutrient limitation parameters, different mortality responses to elevated phosphorus concentrations, and have simple density-dependent inter-community competition. Periphyton Module Equations ## all calculated within spatial loop across model grid rows, columns State Variable update calculations NC_ALG = NC_ALG + (NC_ALG_GPP - NC_ALG_RESP - NC_ALG_MORT) * DT C_ALG = C_ALG + (C_ALG_GPP - C_ALG_RESP - C_ALG_MORT) * DT Dependent upon: 1) attribute calculations ALG_REFUGE = HP_ALG_MAX* GP_ALG_REF_MULT ALG_SAT = HP_ALG_MAX*0.9 NC_ALG_AVAIL_MORT = Max(NC_ALG-ALG_REFUGE,0) C_ALG_AVAIL_MORT = Max(C_ALG-ALG_REFUGE,0) ## bio-avail P (PO4) is calc'd from TP, using pre-processed regression for predicting PO4 from TP ## assume that periphyton (microbial) alkaline phosphotase activity keeps PO4 at least 10% of TP conc PO4Pconc = Max(TP_SFWT_CONC_MG* GP_PO4toTP + GP_PO4toTPint, 0.10 * TP_SFWT_CONC_MG) ## light, water, temperature controls apply to both calc and non-calc ALG_LIGHT_EXTINCT = GP_alg_light_ext_coef ## algal self-shading implicit in density-dependent constraint function later ALG_INCID_LIGHT = SOLRADGRD*Exp(-MAC_LAI* GP_ALG_SHADE_FACTOR) Z_extinct = SURFACE_WAT*ALG_LIGHT_EXTINCT I_ISat = ALG_INCID_LIGHT/GP_ALG_LIGHT_SAT 2) control function calculations ## averaged over whole water column (based on Steele 1965) ALG_LIGHT_CF = ( Z_extinct > 0.0 ) ? ( 2.718/Z_extinct * (Exp(-I_ISat * Exp(-Z_extinct)) - Exp(-I_ISat)) ) : (I_ISat*Exp(1.0-I_ISat)) ## low-water growth constraint ready for something better based on data ALG_WAT_CF = ( SURFACE_WAT>0.0 ) ? ( 1.0 ) : ( 0.0) ## Jorgensen 1976; 5 deg C is minimum temperature parameter ALG_TEMP_CF = Exp(-2.3 * ABS((H2O_TEMP- GP_ALG_TEMP_OPT)/( GP_ALG_TEMP_OPT-5.0))) min_litTemp = Min(ALG_LIGHT_CF,ALG_TEMP_CF) ## the 2 communities have same form of growth response to avail phosphorus NC_ALG_NUT_CF = Exp(-GP_alg_uptake_coef * Max(GP_NC_ALG_KS_P-PO4Pconc, 0.0)/ GP_NC_ALG_KS_P) C_ALG_NUT_CF = Exp(-GP_alg_uptake_coef * Max(GP_C_ALG_KS_P-PO4Pconc, 0.0)/ GP_C_ALG_KS_P) ## the form of the control function assumes that at very low P conc, the alkaline phosphotase activity of the microbial assemblage scavenges P, maintaining a minimum nutrient availability to community NC_ALG_PROD_CF = Min(min_litTemp,ALG_WAT_CF)*Max(NC_ALG_NUT_CF, alg_alkP_min) C_ALG_PROD_CF = Min(min_litTemp,ALG_WAT_CF)*Max(C_ALG_NUT_CF, GP_alg_alkP_min) 3) flux calculations NC_ALG_RESP_POT = ( UNSAT_DEPTH> GP_algMortDepth ) ? ( 0.0) : (GP_ALG_RC_RESP*ALG_TEMP_CF*NC_ALG_AVAIL_MORT ) C_ALG_RESP_POT = ( UNSAT_DEPTH> GP_algMortDepth ) ? ( 0.0) : (GP_ALG_RC_RESP*ALG_TEMP_CF *C_ALG_AVAIL_MORT ) NC_ALG_RESP = ( NC_ALG_RESP_POT*DT>NC_ALG_AVAIL_MORT ) ? ( NC_ALG_AVAIL_MORT/DT ) : ( NC_ALG_RESP_POT) C_ALG_RESP = ( C_ALG_RESP_POT*DT>C_ALG_AVAIL_MORT ) ? ( C_ALG_AVAIL_MORT/DT ) : ( C_ALG_RESP_POT) ## this is the threshold control function that increases calcareous/native periph mortality (likely due to loss of calcareous sheath) as P conc. increases C_ALG_thresh_CF = Min(exp(GP_alg_R_accel*Max( TP_SFWT_CONC_MG- GP_C_ALG_threshTP,0.0)/GP_C_ALG_threshTP), 100.0) NC_ALG_MORT_POT = ( UNSAT_DEPTH>GP_algMortDepth ) ? ( NC_ALG_AVAIL_MORT* GP_ALG_RC_MORT_DRY ) : ( NC_ALG_AVAIL_MORT* GP_ALG_RC_MORT) C_ALG_MORT_POT = ( UNSAT_DEPTH> GP_algMortDepth ) ? ( C_ALG_AVAIL_MORT* GP_ALG_RC_MORT_DRY ) : ( C_ALG_thresh_CF * C_ALG_AVAIL_MORT* GP_ALG_RC_MORT) NC_ALG_MORT = ( (NC_ALG_MORT_POT+NC_ALG_RESP)*DT>NC_ALG_AVAIL_MORT ) ? ( (NC_ALG_AVAIL_MORT-NC_ALG_RESP*DT)/DT ) : ( NC_ALG_MORT_POT) C_ALG_MORT = ( (C_ALG_MORT_POT+C_ALG_RESP)*DT>C_ALG_AVAIL_MORT ) ? ( (C_ALG_AVAIL_MORT-C_ALG_RESP*DT)/DT ) : ( C_ALG_MORT_POT) ## gross production of the 2 communities, with density constraint on both noncalc and calc, competition effect accentuated by calc algae NC_ALG_GPP = NC_ALG_PROD_CF* GP_ALG_RC_PROD*NC_ALG * Max( (1.0-(GP_AlgComp*C_ALG+NC_ALG)/ HP_ALG_MAX),0.0) C_ALG_GPP = C_ALG_PROD_CF* GP_ALG_RC_PROD*C_ALG * Max( (1.0-(C_ALG+NC_ALG)/ HP_ALG_MAX),0.0) ## P uptake is dependent on available P and is relative to a maximum P:C ratio for the tissue NC_ALG_GPP_P = NC_ALG_GPP * GP_ALG_PC * NC_ALG_NUT_CF * Max(1.0-NC_ALG_PC/ GP_ALG_PC, 0.0) C_ALG_GPP_P = C_ALG_GPP * GP_ALG_PC * C_ALG_NUT_CF * Max(1.0-C_ALG_PC/ GP_ALG_PC, 0.0) ## check for available P mass (the nutCF does not) (unit conversion to g P) PO4P = Min(PO4Pconc * SFWT_VOL, 1000.0*TP_SF_WT) reduc = ( (NC_ALG_GPP_P+C_ALG_GPP_P) > 0) ? (PO4P / ( (NC_ALG_GPP_P+C_ALG_GPP_P)*CELL_SIZE*DT) ) : (1.0) ## can have high conc, but low mass of P avail, in presence of high peri biomass and high demand, reduce the production proportionally if excess demand is found if (reduc < 1.0) NC_ALG_GPP = NC_ALG_GPP * reduc if (reduc < 1.0) NC_ALG_GPP_P = NC_ALG_GPP_P * reduc if (reduc < 1.0) C_ALG_GPP = C_ALG_GPP * reduc if (reduc < 1.0) C_ALG_GPP_P = C_ALG_GPP_P * reduc 4) phosphorus associated with carbon stocks & flows mortPot = NC_ALG_MORT * NC_ALG_PC NC_ALG_MORT_P = (mortPot*DT>NC_ALG_P) ? (NC_ALG_P/DT) : (mortPot) mortPot = C_ALG_MORT * C_ALG_PC C_ALG_MORT_P = (mortPot*DT>C_ALG_P) ? (C_ALG_P/DT) : (mortPot) NC_ALG_P = NC_ALG_P + (NC_ALG_GPP_P - NC_ALG_MORT_P) * DT C_ALG_P = C_ALG_P + (C_ALG_GPP_P - C_ALG_MORT_P) * DT ## default to 3% of max P:C NC_ALG_PC = (NC_ALG>0.0) ? (NC_ALG_P/ NC_ALG) : (GP_ALG_PC * 0.03) C_ALG_PC = (C_ALG>0.0) ? (C_ALG_P/ C_ALG) : (GP_ALG_PC * 0.03 ) ## gP/m2 => kg P TP_SFWT_UPTAK = (NC_ALG_GPP_P+C_ALG_GPP_P)*0.001*CELL_SIZE TP_SF_WT = TP_SF_WT - TP_SFWT_UPTAK * DT TP_SFWT_CONC = ( SFWT_VOL > 0.0 ) ? ( TP_SF_WT/SFWT_VOL ) : ( 0.0) ## used for reporting and other modules to evaluate P conc when water is present TP_SFWT_CONC_MG = ( SURFACE_WAT > DetentZ ) ? (TP_SFWT_CONC*1000.0) : (0.0) External variables used TP_SF_WT (see TP/Salt module) TP_SFWT_CONC_MG (see TP/Salt module) SOLRADGRD (see Globals module) MAC_LAI (see Macrophyte module) SURFACE_WAT (see Hydrology module) SFWT_VOL (see Hydrology module) UNSAT_DEPTH (see Hydrology module) H2O_TEMP (see Hydrology module) Periphyton Module Variable and Parameter Definitions Module variables
Time series forcing data none Static global parameters (all grid-cells)
Static habitat-specific parameters (linked to HAB value of grid-cell)
Intrinsic C or ELM functions exp(x) = Exp(x) => e raised to the xth power Max(x,y) => maximum of variable x or y Min(x,y) => minimum of variable x or y (x) ? (y) : (z) => if (x is true, or 1), then (return value y), else (return value z) [1] The names of the periphyton state variables are rooted in the term ÒalgaeÓ, originating from the generalized nature of the module that was developed for algal communities. While periphyton are actually assemblages of microbial and algal biota, the aggregate, net-carbon fixing behavior of this assemblage is explicitly considered in its parameterization. Similarly, the somewhat archaic identifiers of ÒcalcareousÓ and Ònon-calcareousÓ are more properly described as oligotrophic and eutrophic communities, as the calcitic attributes of the periphyton are not considered in the model. |
EcoLandMod Models