#include /*--------------------------------------------------------------------------*/ double opp_eppley( double chl, double irr, double sst, double dayL ) { /* !C--------------------------------------------------------------------------*\ !Description: opp_eppley - computes daily primary productivity using the Behrenfeld-Falkowski (BeFa) algorithm, but modifies the pb_opt function after Eppley (as implemented by Antoine and Morel). The BeFa algorithm estimates productivity using surface chl (mg m-3), surface irradiance (Einsteins m-2 d-1), sea surface temperature (C), and day length (hours). Pb_opt is modelled as an exponential function of SST. !Input Parameters: chl Chlorophyll_a surface concentration in milligrams chlorophyl per cubic meter irr Photosynthetically available radiation in Einsteins per day per square meter sst Sea surface temperature in degrees Centigrade dayL Length day in decimal hours. !Output Parameters: Primary productivity in milligrams Carbon per square meter per day !Revision History: First programmed up by Monica Chen at Rutgers (1996) Revised by K. Turpie at NASA (August 1997) Maintained by Don Shea at NASA Now maintained by Robert O'Malley at Oregon State University (April, 2005 - present) !References and Credits Behrenfeld,M.J; Falkowski,P.G.; 1997. Photosynthetic Rates Derived from Satellite-Based Chlorophyll Concentration. Limnology and Oceanography, Volume 42, Number 1 Eppley, R.W.; 1972. Temperature and Phytoplankton Growth in the Sea. Fishery Bulletin, Volume 79, Number 4 Antoine, D.; Morel, A.; 1996. Oceanic Primary Production 1. Adatptation of a Spectral Light-Photosynthesis Model in view of Application to Satellite Chlorophyll Observations !END------------------------------------------------------------------------*\ */ double chl_tot, z_eu, pb_opt, irrFunc, npp; /* Calculate euphotic depth (z_eu) with Morel's Case I model. */ /* Calculate chl_tot from Satellite Surface Chlorophyll Data. */ if (chl < 1.0L) chl_tot = 38.0L * pow( chl, 0.425L ); else chl_tot = 40.2L * pow( chl, 0.507L ); z_eu = 200.0L * pow( chl_tot, (-.293L) ); if (z_eu <= 102.0L) z_eu = 568.2L * pow( chl_tot, (-.746L) ); /* Calculate the Pb_opt from satellite sea surface temperature (sst). */ pb_opt = 1.54 * pow(10, 0.0275 * sst - 0.07); /* calculate the irradiance function */ irrFunc = 0.66125L * irr / ( irr + 4.1L ); /* Return the primary production calculation. */ npp = pb_opt * chl * dayL * irrFunc * z_eu; return npp; }