!DESCRIPTION: Calculates the photosynthetic capacities based on a prescribed leaf nitrogen content, using the LUNA model, developed by Chonggang Xu, Ashehad Ali and Rosie Fisher Currently only works for C3 plants. See Xu et al 2012; Ali et al 2015a. Ecological Applications. http://dx.doi.org/10.1890/14-2111.1. and Ali et al 2015b.In Review. !USES:
Read in LUNA namelist
this subroutine updates the photosynthetic capacity as determined by Vcmax25 and Jmax25
Use the LUNA model to calculate the Nitrogen partioning
calcualte the nitrogen investment for electron transport, carb10oxylation, respiration given a specified value of nitrogen allocation in light capture [Nlc]. This equation are based on Ali et al 2015b.
Calculate the photosynthesis by solving the following 3 equations for 3 unknowns (A, gs, Ci): Farquahr's non-linear equation (A versus Ci), Ball-Berry equation (gs versus A) and the diffusion equation (A = gs * (Ca - Ci). The approach taken is the following; Solve the 3 equations for two phases. First phase is where Rubisco is limiting (Wc <= Wj) and second phase is where light is limiting (Wj > Wc).
Calculate the reference nitrogen use effieciency dependence on CO2 and leaf temperature
Calculate the Nitrogen use effieciency dependence on CO2 and leaf temperature
Calculate the temperature response for Vcmax; assuming temperature acclimation as in CLM4.5, based on Kattge and Knorr 2007
Calculate the temperature response for Jmax; assuming temperature acclimation as in CLM4.5, based on Kattge and Knorr 2007
Calculate the temperature response for Vcmax; without assuming temperature acclimation and following Leunning 2002 Plant, Cell & Environment
Calculate the temperature response for Jmax; without assuming temperature acclimation and following Leunning 2002 Plant, Cell & Environment
Calculate the temperature response for respiration, following Bernacchi PCE 2001
Calculate the soultion using the quadratic formula
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=r8), | public, | parameter | :: | Cv | = | 1.2e-5_r8*3600.0 | |
real(kind=r8), | public, | parameter | :: | Kc25 | = | 40.49_r8 | |
real(kind=r8), | public, | parameter | :: | Ko25 | = | 27840_r8 | |
real(kind=r8), | public, | parameter | :: | Cp25 | = | 4.275_r8 | |
real(kind=r8), | public, | parameter | :: | Fc25 | = | 294.2_r8 | |
real(kind=r8), | public, | parameter | :: | Fj25 | = | 1257.0_r8 | |
real(kind=r8), | public, | parameter | :: | NUEr25 | = | 33.69_r8 | |
real(kind=r8), | public, | parameter | :: | Cb | = | 1.78_r8 | |
real(kind=r8), | public, | parameter | :: | O2ref | = | 209460.0_r8 | |
real(kind=r8), | public, | parameter | :: | CO2ref | = | 380.0_r8 | |
real(kind=r8), | public, | parameter | :: | forc_pbot_ref | = | 101325.0_r8 | |
real(kind=r8), | public, | parameter | :: | Q10Enz | = | 2.0_r8 | |
real(kind=r8), | public, | parameter | :: | Jmaxb0 | = | 0.0311_r8 | |
real(kind=r8), | public | :: | Jmaxb1 | = | 0.1_r8 | ||
real(kind=r8), | public, | parameter | :: | Wc2Wjb0 | = | 0.8054_r8 | |
real(kind=r8), | public, | parameter | :: | relhExp | = | 6.0999_r8 | |
real(kind=r8), | public, | parameter | :: | Enzyme_turnover_daily | = | 0.1_r8 | |
real(kind=r8), | public, | parameter | :: | NMCp25 | = | 0.715_r8 | |
real(kind=r8), | public, | parameter | :: | Trange1 | = | 5.0_r8 | |
real(kind=r8), | public, | parameter | :: | Trange2 | = | 42.0_r8 | |
real(kind=r8), | public, | parameter | :: | SNC | = | 0.004_r8 | |
real(kind=r8), | public, | parameter | :: | mp | = | 9.0_r8 | |
real(kind=r8), | public, | parameter | :: | PARLowLim | = | 200.0_r8 | |
real(kind=r8), | public, | parameter | :: | minrelh | = | 0.25_r8 |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | NLFilename |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(bounds_type), | intent(in) | :: | bounds | |||
integer, | intent(in) | :: | fn | |||
integer, | intent(in) | :: | filterp(fn) | |||
real(kind=r8), | intent(in) | :: | dayl_factor(bounds%begp:) | |||
type(atm2lnd_type), | intent(in) | :: | atm2lnd_inst | |||
type(temperature_type), | intent(inout) | :: | temperature_inst | |||
type(CanopyState_type), | intent(inout) | :: | canopystate_inst | |||
type(photosyns_type), | intent(inout) | :: | photosyns_inst | |||
type(surfalb_type), | intent(in) | :: | surfalb_inst | |||
type(solarabs_type), | intent(inout) | :: | solarabs_inst | |||
type(waterstate_type), | intent(inout) | :: | waterstate_inst | |||
type(frictionvel_type), | intent(inout) | :: | frictionvel_inst |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(bounds_type), | intent(in) | :: | bounds | |||
integer, | intent(in) | :: | fn | |||
integer, | intent(in) | :: | filterp(fn) | |||
real(kind=r8), | intent(in) | :: | oair(bounds%begp:) | |||
real(kind=r8), | intent(in) | :: | cair(bounds%begp:) | |||
real(kind=r8), | intent(in) | :: | rb(bounds%begp:) | |||
real(kind=r8), | intent(in) | :: | rh(bounds%begp:) | |||
type(temperature_type), | intent(inout) | :: | temperature_inst | |||
type(photosyns_type), | intent(inout) | :: | photosyns_inst | |||
type(surfalb_type), | intent(in) | :: | surfalb_inst | |||
type(solarabs_type), | intent(inout) | :: | solarabs_inst | |||
type(waterstate_type), | intent(inout) | :: | waterstate_inst | |||
type(frictionvel_type), | intent(inout) | :: | frictionvel_inst |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(bounds_type), | intent(in) | :: | bounds | |||
integer, | intent(in) | :: | fn | |||
integer, | intent(in) | :: | filterp(fn) | |||
type(CanopyState_type), | intent(inout) | :: | canopystate_inst | |||
type(photosyns_type), | intent(inout) | :: | photosyns_inst | |||
type(surfalb_type), | intent(in) | :: | surfalb_inst | |||
type(solarabs_type), | intent(inout) | :: | solarabs_inst | |||
type(temperature_type), | intent(inout) | :: | temperature_inst |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(bounds_type), | intent(in) | :: | bounds | |||
integer, | intent(in) | :: | fn | |||
integer, | intent(in) | :: | filterp(fn) | |||
type(CanopyState_type), | intent(inout) | :: | canopystate_inst | |||
type(photosyns_type), | intent(inout) | :: | photosyns_inst | |||
type(surfalb_type), | intent(in) | :: | surfalb_inst | |||
type(solarabs_type), | intent(inout) | :: | solarabs_inst | |||
type(temperature_type), | intent(inout) | :: | temperature_inst |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | KcKjFlag | |||
real(kind=r8), | intent(in) | :: | FNCa | |||
real(kind=r8), | intent(in) | :: | Nlc | |||
real(kind=r8), | intent(in) | :: | forc_pbot10 | |||
real(kind=r8), | intent(in) | :: | relh10 | |||
real(kind=r8), | intent(in) | :: | CO2a10 | |||
real(kind=r8), | intent(in) | :: | O2a10 | |||
real(kind=r8), | intent(in) | :: | PARi10 | |||
real(kind=r8), | intent(in) | :: | PARimx10 | |||
real(kind=r8), | intent(in) | :: | rb10 | |||
real(kind=r8), | intent(in) | :: | hourpd | |||
real(kind=r8), | intent(in) | :: | tair10 | |||
real(kind=r8), | intent(in) | :: | tleafd10 | |||
real(kind=r8), | intent(in) | :: | tleafn10 | |||
real(kind=r8), | intent(in) | :: | Kj2Kc | |||
real(kind=r8), | intent(in) | :: | Wc2Wjb0 | |||
real(kind=r8), | intent(in) | :: | JmaxCoef | |||
real(kind=r8), | intent(in) | :: | Fc | |||
real(kind=r8), | intent(in) | :: | Fj | |||
real(kind=r8), | intent(in) | :: | NUEc | |||
real(kind=r8), | intent(in) | :: | NUEj | |||
real(kind=r8), | intent(in) | :: | NUEcref | |||
real(kind=r8), | intent(in) | :: | NUEjref | |||
real(kind=r8), | intent(in) | :: | NUEr | |||
real(kind=r8), | intent(inout) | :: | Kc | |||
real(kind=r8), | intent(inout) | :: | Kj | |||
real(kind=r8), | intent(inout) | :: | ci | |||
real(kind=r8), | intent(out) | :: | Vcmax | |||
real(kind=r8), | intent(out) | :: | Jmax | |||
real(kind=r8), | intent(out) | :: | JmeanL | |||
real(kind=r8), | intent(out) | :: | JmaxL | |||
real(kind=r8), | intent(out) | :: | Net | |||
real(kind=r8), | intent(out) | :: | Ncb | |||
real(kind=r8), | intent(out) | :: | Nresp | |||
real(kind=r8), | intent(out) | :: | PSN | |||
real(kind=r8), | intent(out) | :: | RESP |