Files
piscal/leafres/testarea/LeafGasHybridFit.h
2016-02-03 18:52:05 +00:00

240 lines
12 KiB
C

! This file contains common blocks used in the optimization runs.
!
! ------ Optimization variables common Blocks ---------------------
! maxobs: the maximum number of observations
! maxpsnparam: the maximum number of parameters to be optimized
! aPPFDlf: PAR absorbed by leaf (umol m-2 s-1)
! templeaf: leaf temperature (K)
! xpco2i: Intercellular CO2 partial pressure (Pa)
! po2i: Intercellular oxygen partial pressure (Pa)
! obs_psn: net photosynthetic rate (umol m-2 s-1)
! psnparamx: parameters in the leaf photosynthetic model
! nobs: integer, the actual number of observations
! IFIXBcp: the index for the parameters in psnparams that are being
! optimized (0= not optimized; 1= optimized)
! ilimittype: indicator for the choice of limitation types
! = 1, Rubisco+RuBP+TPU'
! = 2, Rubisco+RuBP
! = 3, Rubisco+TPU
! = 4, RuBP+TPU
! = 5, Rubisco Only
! = 6, RuBP Only
! = 7, TPU Only
! betamin: the lower bound of the parameters to be optimized
! betamax: the upper bound of the parameters to be optimized
!resistwp: =rwp, resistance to CO2 via cell walls and plasmalemma (Pa s m2 umol-1). If less than zero, set to zero.
!resistch: =rch, resistance to CO2 via chloroplast envelope and stroma (Pa s m2 umol-1). If less than zero, set to zero.
!idorwp, =0 zero rwp
! =1 fit for rwp
! =2 keep input rwp and don't optimize it
!idorch, =0 zero rch
! =1 fit for rch
! =2 keep input rch and don't optimize it
! ntotparams: the total number of optimized and unoptimized parameters
! isitgridsearch=0, in optimization mode (cij+cic is the transition RuBp-TPU CO2i threshold)
! =1, in grid search mode (cij is the transition RuBp-TPU CO2i threshold)
integer maxobs,maxcurves
parameter (maxobs=200,maxcurves=15)
double precision anet_obs(maxobs),pco2i(maxobs),templeaf(maxobs),
&aPPFDlf(maxobs),pres_air(maxobs),po2i(maxobs),chlflphips2(maxobs),
&pco2ambient(maxobs),trmmol(maxobs),gswmeas(maxobs),vpdl(maxobs),
&tempair(maxobs),eambient(maxobs),resiststomco2(maxobs),sumsquare,
&pco2i_ori(maxobs),templeaf_ori(maxobs),aPPFDlf_ori(maxobs),
&pres_air_ori(maxobs),po2i_ori(maxobs),chlflphips2_ori(maxobs),
&pco2ambient_ori(maxobs),trmmol_ori(maxobs),gswmeas_ori(maxobs),
&vpdl_ori(maxobs),tempair_ori(maxobs),eambient_ori(maxobs),
&fo_pam(maxobs),fm_pam(maxobs),fs_pam(maxobs),
&pam_measlight(maxobs),yield_ps2(maxobs),yield_npq(maxobs),
&qlake(maxobs),qpuddle(maxobs),kps2_norm(maxobs),knpq_norm(maxobs),
&resiststomco2_ori(maxobs),pco2i_pred(maxobs),anet_pred(maxobs),
&PhiPSII_pred(maxobs),pco2c(maxobs),bestsumsquare,
&subbestsumsquare(7),forcings(maxobs,10),weitforcings(maxobs,10),
&responses(maxobs,5),weitresponses(maxobs,5),
&pco2i_pred_flu(maxobs),anet_pred_flu(maxobs),
&pco2c_pco2i_flu(maxobs),pco2c_anet_flu(maxobs),
&PhiPSIIlights_pred(maxobs),templflights(maxobs),
&aparlights(maxobs),flphips2lights(maxobs),flujmaxfval,
&Fixedanet_obs(maxobs/4),Fixedpco2i(maxobs/4),
&Fixedtempleaf(maxobs/4),FixedaPPFDlf(maxobs/4),
&Fixedpres_air(maxobs/4),Fixedpo2i(maxobs/4),
&Fixedchlflphips2(maxobs/4),Fixedpco2ambient(maxobs/4),
&Fixedtrmmol(maxobs/4),Fixedgswmeas(maxobs/4),
&Fixedvpdl(maxobs/4),Fixedtempair(maxobs/4),
&Fixedeambient(maxobs/4),Fixedfo_pam(maxobs/4),
&Fixedfm_pam(maxobs/4),Fixedfs_pam(maxobs/4),
&Fixedpam_measlight(maxobs/4),Fixedyield_ps2(maxobs/4),
&Fixedyield_npq(maxobs/4),Fixedqlake(maxobs/4),
&Fixedqpuddle(maxobs/4),Fixedkps2_norm(maxobs/4),
&Fixedknpq_norm(maxobs/4),Fixedresiststomco2(maxobs/4),
&ACianet_obs0(maxobs/4,maxcurves),ACipco2i0(maxobs/4,maxcurves),
&ACitempleaf0(maxobs/4,maxcurves),ACiaPPFDlf0(maxobs/4,maxcurves),
&ACipres_air0(maxobs/4,maxcurves),ACipo2i0(maxobs/4,maxcurves),
&ACichlflphips20(maxobs/4,maxcurves),
&ACipco2ambient0(maxobs/4,maxcurves),
&ACitrmmol0(maxobs/4,maxcurves),ACigswmeas0(maxobs/4,maxcurves),
&ACivpdl0(maxobs/4,maxcurves),ACitempair0(maxobs/4,maxcurves),
&ACieambient0(maxobs/4,maxcurves),ACifo_pam0(maxobs/4,maxcurves),
&ACifm_pam0(maxobs/4,maxcurves),ACifs_pam0(maxobs/4,maxcurves),
&ACipam_measlight0(maxobs/4,maxcurves),
&ACiyield_ps20(maxobs/4,maxcurves),
&ACiyield_npq0(maxobs/4,maxcurves),ACiqlake0(maxobs/4,maxcurves),
&ACiqpuddle0(maxobs/4,maxcurves),ACikps2_norm0(maxobs/4,maxcurves),
&ACiknpq_norm0(maxobs/4,maxcurves),
&ACiresiststomco20(maxobs/4,maxcurves),
&ACianet_obs(maxobs/4,maxcurves),ACipco2i(maxobs/4,maxcurves),
&ACitempleaf(maxobs/4,maxcurves),ACiaPPFDlf(maxobs/4,maxcurves),
&ACipres_air(maxobs/4,maxcurves),ACipo2i(maxobs/4,maxcurves),
&ACichlflphips2(maxobs/4,maxcurves),
&ACipco2ambient(maxobs/4,maxcurves),
&ACitrmmol(maxobs/4,maxcurves),ACigswmeas(maxobs/4,maxcurves),
&ACivpdl(maxobs/4,maxcurves),ACitempair(maxobs/4,maxcurves),
&ACieambient(maxobs/4,maxcurves),ACifo_pam(maxobs/4,maxcurves),
&ACifm_pam(maxobs/4,maxcurves),ACifs_pam(maxobs/4,maxcurves),
&ACipam_measlight(maxobs/4,maxcurves),
&ACiyield_ps2(maxobs/4,maxcurves),
&ACiyield_npq(maxobs/4,maxcurves),ACiqlake(maxobs/4,maxcurves),
&ACiqpuddle(maxobs/4,maxcurves),ACikps2_norm(maxobs/4,maxcurves),
&ACiknpq_norm(maxobs/4,maxcurves),
&ACiresiststomco2(maxobs/4,maxcurves),
&ALightanet_obs0(maxobs/4,maxcurves),
&ALightpco2i0(maxobs/4,maxcurves),
&ALighttempleaf0(maxobs/4,maxcurves),
&ALightaPPFDlf0(maxobs/4,maxcurves),
&ALightpres_air0(maxobs/4,maxcurves),
&ALightpo2i0(maxobs/4,maxcurves),
&ALightchlflphips20(maxobs/4,maxcurves),
&ALightpco2ambient0(maxobs/4,maxcurves),
&ALighttrmmol0(maxobs/4,maxcurves),
&ALightgswmeas0(maxobs/4,maxcurves),
&ALightvpdl0(maxobs/4,maxcurves),
&ALighttempair0(maxobs/4,maxcurves),
&ALighteambient0(maxobs/4,maxcurves),
&ALightfo_pam0(maxobs/4,maxcurves),
&ALightfm_pam0(maxobs/4,maxcurves),
&ALightfs_pam0(maxobs/4,maxcurves),
&ALightpam_measlight0(maxobs/4,maxcurves),
&ALightyield_ps20(maxobs/4,maxcurves),
&ALightyield_npq0(maxobs/4,maxcurves),
&ALightqlake0(maxobs/4,maxcurves),
&ALightqpuddle0(maxobs/4,maxcurves),
&ALightkps2_norm0(maxobs/4,maxcurves),
&ALightknpq_norm0(maxobs/4,maxcurves),
&ALightresiststomco20(maxobs/4,maxcurves),
&ALightanet_obs(maxobs/4,maxcurves),
&ALightpco2i(maxobs/4,maxcurves),
&ALighttempleaf(maxobs/4,maxcurves),
&ALightaPPFDlf(maxobs/4,maxcurves),
&ALightpres_air(maxobs/4,maxcurves),
&ALightpo2i(maxobs/4,maxcurves),
&ALightchlflphips2(maxobs/4,maxcurves),
&ALightpco2ambient(maxobs/4,maxcurves),
&ALighttrmmol(maxobs/4,maxcurves),
&ALightgswmeas(maxobs/4,maxcurves),
&ALightvpdl(maxobs/4,maxcurves),
&ALighttempair(maxobs/4,maxcurves),
&ALighteambient(maxobs/4,maxcurves),
&ALightfo_pam(maxobs/4,maxcurves),
&ALightfm_pam(maxobs/4,maxcurves),
&ALightfs_pam(maxobs/4,maxcurves),
&ALightpam_measlight(maxobs/4,maxcurves),
&ALightyield_ps2(maxobs/4,maxcurves),
&ALightyield_npq(maxobs/4,maxcurves),
&ALightqlake(maxobs/4,maxcurves),
&ALightqpuddle(maxobs/4,maxcurves),
&ALightkps2_norm(maxobs/4,maxcurves),
&ALightknpq_norm(maxobs/4,maxcurves),
&ALightresiststomco2(maxobs/4,maxcurves),
&Freeanet_obs(maxobs/4),Freepco2i(maxobs/4),
&Freetempleaf(maxobs/4),FreeaPPFDlf(maxobs/4),
&Freepres_air(maxobs/4),Freepo2i(maxobs/4),
&Freechlflphips2(maxobs/4),Freepco2ambient(maxobs/4),
&Freetrmmol(maxobs/4),Freegswmeas(maxobs/4),
&Freevpdl(maxobs/4),Freetempair(maxobs/4),
&Freeeambient(maxobs/4),Freefo_pam(maxobs/4),
&Freefm_pam(maxobs/4),Freefs_pam(maxobs/4),
&Freepam_measlight(maxobs/4),Freeyield_ps2(maxobs/4),
&Freeyield_npq(maxobs/4),Freeqlake(maxobs/4),
&Freeqpuddle(maxobs/4),Freekps2_norm(maxobs/4),
&Freeknpq_norm(maxobs/4),Freeresiststomco2(maxobs/4)
integer ifitmode,ntotsamples,ntotphips2,nFixedPoints,numACicurves,
&nACiPoints(maxcurves),numALightcurves,nALightPoints(maxcurves),
&nFreePoints,Fixediphotolimit(maxobs),
&ACiiphotolimit(maxobs/4,maxcurves),
&ALightiphotolimit(maxobs/4,maxcurves),Freeiphotolimit(maxobs/4),
&Prioriphotolimit(maxobs),Priorilimittype,Prioriknowlimit,
&Currentiphotolimit(maxobs),Currentilimittype,Currentiknowlimit,
&Postiphotolimit(maxobs),bestiphotolimit(maxobs),bestilimittype,
&subbestiphotolimit(maxobs,7),nendaci(maxcurves),
&nstartaci(maxcurves),nendalight(maxcurves),
&nstartalight(maxcurves),ialightorder(maxcurves),ntotlights,
&ialightrubpmin(maxcurves),ialightrubpmax(maxcurves),
&ialightmin(maxcurves),ialightmax(maxcurves)
common /dbleleafgasobservations/anet_obs,pco2i,templeaf,
&aPPFDlf,pres_air,po2i,chlflphips2,pco2ambient,trmmol,gswmeas,
&vpdl,tempair,eambient,resiststomco2,sumsquare,pco2i_ori,
&templeaf_ori,aPPFDlf_ori,pres_air_ori,po2i_ori,chlflphips2_ori,
&pco2ambient_ori,trmmol_ori,gswmeas_ori,vpdl_ori,tempair_ori,
&eambient_ori,fo_pam,fm_pam,fs_pam,pam_measlight,yield_ps2,
&yield_npq,qlake,qpuddle,kps2_norm,knpq_norm,
&resiststomco2_ori,pco2i_pred,anet_pred,PhiPSII_pred,
&pco2c,bestsumsquare,subbestsumsquare,forcings,weitforcings,
&responses,weitresponses,pco2i_pred_flu,anet_pred_flu,
&pco2c_pco2i_flu,pco2c_anet_flu,PhiPSIIlights_pred,templflights,
&aparlights,flphips2lights,flujmaxfval,
&Fixedanet_obs,Fixedpco2i,Fixedtempleaf,FixedaPPFDlf,Fixedpres_air,
&Fixedpo2i,Fixedchlflphips2,Fixedpco2ambient,Fixedtrmmol,
&Fixedgswmeas,Fixedvpdl,Fixedtempair,Fixedeambient,Fixedfo_pam,
&Fixedfm_pam,Fixedfs_pam,Fixedpam_measlight,Fixedyield_ps2,
&Fixedyield_npq,Fixedqlake,Fixedqpuddle,Fixedkps2_norm,
&Fixedknpq_norm,Fixedresiststomco2,
&ACianet_obs0,ACipco2i0,ACitempleaf0,ACiaPPFDlf0,ACipres_air0,
&ACipo2i0,ACichlflphips20,ACipco2ambient0,ACitrmmol0,ACigswmeas0,
&ACivpdl0,ACitempair0,ACieambient0,ACifo_pam0,ACifm_pam0,
&ACifs_pam0,ACipam_measlight0,ACiyield_ps20,ACiyield_npq0,
&ACiqlake0,ACiqpuddle0,ACikps2_norm0,ACiknpq_norm0,
&ACiresiststomco20,ACianet_obs,
&ACipco2i,ACitempleaf,ACiaPPFDlf,ACipres_air,ACipo2i,
&ACichlflphips2,ACipco2ambient,ACitrmmol,ACigswmeas,ACivpdl,
&ACitempair,ACieambient,ACifo_pam,ACifm_pam,ACifs_pam,
&ACipam_measlight,ACiyield_ps2,ACiyield_npq,ACiqlake,ACiqpuddle,
&ACikps2_norm,ACiknpq_norm,ACiresiststomco2,ALightanet_obs0,
&ALightpco2i0,ALighttempleaf0,ALightaPPFDlf0,ALightpres_air0,
&ALightpo2i0,ALightchlflphips20,ALightpco2ambient0,ALighttrmmol0,
&ALightgswmeas0,ALightvpdl0,ALighttempair0,ALighteambient0,
&ALightfo_pam0,ALightfm_pam0,ALightfs_pam0,ALightpam_measlight0,
&ALightyield_ps20,ALightyield_npq0,ALightqlake0,ALightqpuddle0,
&ALightkps2_norm0,ALightknpq_norm0,
&ALightresiststomco20,ALightanet_obs,ALightpco2i,ALighttempleaf,
&ALightaPPFDlf,ALightpres_air,ALightpo2i,ALightchlflphips2,
&ALightpco2ambient,ALighttrmmol,ALightgswmeas,ALightvpdl,
&ALighttempair,ALighteambient,ALightfo_pam,ALightfm_pam,
&ALightfs_pam,ALightpam_measlight,ALightyield_ps2,
&ALightyield_npq,ALightqlake,ALightqpuddle,ALightkps2_norm,
&ALightknpq_norm,ALightresiststomco2,Freeanet_obs,
&Freetempleaf,FreeaPPFDlf,Freepres_air,Freepo2i,Freechlflphips2,
&Freepco2ambient,Freetrmmol,Freegswmeas,Freevpdl,Freetempair,
&Freeeambient,Freefo_pam,Freefm_pam,Freefs_pam,Freepam_measlight,
&Freeyield_ps2,Freeyield_npq,Freeqlake,Freeqpuddle,Freekps2_norm,
&Freeknpq_norm,Freeresiststomco2
common /intleafgasobservations/ifitmode,ntotsamples,ntotphips2,
&nFixedPoints,numACicurves,nACiPoints,numALightcurves,
&nALightPoints,nFreePoints,
&Fixediphotolimit,ACiiphotolimit,ALightiphotolimit,Freeiphotolimit,
&Prioriphotolimit,Priorilimittype,Prioriknowlimit,
&Currentiphotolimit,Currentilimittype,Currentiknowlimit,
&Postiphotolimit,bestiphotolimit,bestilimittype,subbestiphotolimit,
&nendaci,nstartaci,nendalight,nstartalight,ialightorder,ntotlights,
&ialightrubpmin,ialightrubpmax,ialightmin,ialightmax
save /dbleleafgasobservations/,/intleafgasobservations/
!-------- End of list of common block variables ------------------