90 lines
3.3 KiB
FortranFixed
90 lines
3.3 KiB
FortranFixed
subroutine c4leafanetmodel(ilimittype,aPPFDlf,templeaf,pco2i,
|
|
&pres_air,vcmax25,c4aparslope,c4kp25,rdlight25,anet_pred,
|
|
&Postiphotolimit)
|
|
implicit none
|
|
!------------ Inputs -------------------
|
|
!ilimittype=1: Rubisco,RuBp and TPU limitations
|
|
!ilimittype=2: Rubisco and RuBp limitations only
|
|
!ilimittype=3: Rubisco and TPU limitations only
|
|
!ilimittype=4: RuBp and TPU limitations only
|
|
!ilimittype=5: Rubisco limitation only
|
|
!ilimittype=6: RuBp limitation only
|
|
!ilimittype=7: TPU limitation only
|
|
!aPPFDlf: Absorbed photosynthetic photon flux density by leaf (umol m-2 s-1)
|
|
!templeaf: Leaf temperature [K]
|
|
!pco2i: Intercellular air pressure [Pa]
|
|
!pres_air: Ambient air pressure [Pa]
|
|
!vcmax25: Maximum RuBP saturated rate of carboxylation at 25oC
|
|
! of leaf temperature [umol m-2 s-1]
|
|
!c4aparslope: Slope of the response of light-limited rate with respect
|
|
! to absorbed light
|
|
!c4kp25: Slope of the response of the PEP carboxylase-limited
|
|
! rate of carboxylation for C4 plants
|
|
!rdlight25: Mitochondrial respiration rate in the light at 25oC
|
|
double precision aPPFDlf,templeaf,pco2i,pres_air,
|
|
&vcmax25,c4aparslope,c4kp25,rdlight25
|
|
!------------Output---------------------
|
|
!anet_pred: Predicted net photosynthetic rate [umol m-2 s-1]
|
|
!Postiphotolimit: limit state indicator
|
|
! = 1 Rubisco-limited rate
|
|
! = 2 RuBP-regeneration limited rate
|
|
! = 3 Product-limited rate
|
|
double precision anet_pred
|
|
integer ilimittype,Postiphotolimit
|
|
!--------------------------------------
|
|
double precision q10,fh,fl,frd,wc,wj,wp,rd,thetacj,thetaip,Ai
|
|
q10=2.0d0
|
|
fh=1.0d0+dexp(0.3d0*(templeaf-313.15d0))
|
|
fl=1.0d0+dexp(0.2d0*(288.15d0-templeaf))
|
|
frd=1.0d0+dexp(1.3d0*(templeaf-328.15d0))
|
|
wc=vcmax25*(q10**((templeaf-298.15d0)/10.0d0))/(fh*fl)
|
|
wj=c4aparslope*aPPFDlf
|
|
wp=c4kp25*(q10**((templeaf-298.15)/10.0d0))*pco2i/pres_air
|
|
rd=rdlight25*(q10**((templeaf-298.15d0)/10.0d0))/frd
|
|
if((ilimittype.eq.1.and.wc.le.wj.and.wc.le.wp).or.
|
|
&ilimittype.eq.5)then
|
|
Postiphotolimit=1
|
|
anet_pred=wc-rd
|
|
endif
|
|
if((ilimittype.eq.1.and.wj.le.wc.and.wj.le.wp).or.
|
|
&ilimittype.eq.6)then
|
|
Postiphotolimit=2
|
|
anet_pred=wj-rd
|
|
endif
|
|
if((ilimittype.eq.1.and.wp.le.wc.and.wp.le.wj).or.
|
|
&ilimittype.eq.7)then
|
|
Postiphotolimit=3
|
|
anet_pred=wp-rd
|
|
endif
|
|
if(ilimittype.eq.2.and.wc.le.wj)then
|
|
Postiphotolimit=1
|
|
anet_pred=wc-rd
|
|
else
|
|
Postiphotolimit=2
|
|
anet_pred=wj-rd
|
|
endif
|
|
if(ilimittype.eq.3.and.wc.le.wp)then
|
|
Postiphotolimit=1
|
|
anet_pred=wc-rd
|
|
else
|
|
Postiphotolimit=3
|
|
anet_pred=wp-rd
|
|
endif
|
|
if(ilimittype.eq.4.and.wj.le.wp)then
|
|
Postiphotolimit=2
|
|
anet_pred=wj-rd
|
|
else
|
|
Postiphotolimit=3
|
|
anet_pred=wp-rd
|
|
endif
|
|
if(ilimittype.eq.1)then
|
|
thetacj=0.8d0
|
|
thetaip=0.95d0
|
|
Ai=((wc+wj)-dsqrt((wc+wj)**2-4.0d0*thetacj*wc*wj))/
|
|
&(2.0d0*thetacj)
|
|
anet_pred=((Ai+wp)-dsqrt((Ai+wp)**2-4.0d0*thetaip*Ai*wp))/
|
|
&(2.0d0*thetaip)-rd
|
|
endif
|
|
return
|
|
end
|