New changes from l2g
w
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
!&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
|
||||
subroutine C4PhotoFit()
|
||||
implicit none
|
||||
include '../testarea/LeafGasParams.h'
|
||||
include '../testarea/LeafGasHybridFit.h'
|
||||
integer i,ndim,k,j,iderivative,iwrong,jnon,n,icompete,isame,i2,
|
||||
&isitnaninf,nave
|
||||
double precision beta(20),sumsquare0,beta0(20),sumsquarecp,
|
||||
&betacp(20),ftol,xtol,shortx(maxobs,10),shorty(maxobs,5),
|
||||
&ftol_relax,term1,term2,ran2,history(2000,25),discount,upper,lower,
|
||||
&f1dim_C4Fit,ff_pikaia
|
||||
parameter(ftol=1.0d-7,xtol=1.0d-7)
|
||||
external funkmin_C4Fit,f1dim_C4Fit,FCN_C4Fit,ff_pikaia
|
||||
ndim=3
|
||||
beta(1)=vcmax25_ori
|
||||
beta(2)=c4aparslope_ori
|
||||
beta(3)=c4kp25_ori
|
||||
betamin(1)=0.0d0
|
||||
betamax(1)=500.0d0
|
||||
betamin(2)=0.0d0
|
||||
betamax(2)=10.0d0
|
||||
betamin(3)=0.0d0
|
||||
betamax(3)=200000.0d0*betamax(1)
|
||||
if(idord.eq.1)then
|
||||
ndim=4
|
||||
beta(ndim)=rdlight25_ori
|
||||
betamin(ndim)=0.0d0
|
||||
betamax(ndim)=15.0d0
|
||||
endif
|
||||
isitbounded=1
|
||||
call funkmin_C4Fit(ndim,beta,sumsquare)
|
||||
do i=1,ndim
|
||||
beta0(i)=beta(i)
|
||||
enddo
|
||||
sumsquare0=sumsquare
|
||||
do i=1,ntotsamples
|
||||
responses(i,1)=anet_obs(i)
|
||||
forcings(i,1)=pco2i(i)
|
||||
forcings(i,2)=aPPFDlf(i)
|
||||
forcings(i,3)=templeaf(i)
|
||||
forcings(i,4)=pres_air(i)
|
||||
do j=1,4
|
||||
weitforcings(i,j)=1.0d0
|
||||
enddo
|
||||
weitresponses(i,1)=1.0d0
|
||||
enddo
|
||||
j=4
|
||||
i=1
|
||||
iderivative=0
|
||||
iwrong=0
|
||||
call odr_leastsquare(ndim,FCN_C4Fit,beta,ntotsamples,
|
||||
&forcings(1:ntotsamples,1:j),j,responses(1:ntotsamples,1:i),i,
|
||||
&weitforcings(1:ntotsamples,1:j),weitresponses(1:ntotsamples,1:i),
|
||||
&iderivative,shortx(1:ntotsamples,1:j),shorty(1:ntotsamples,1:i),
|
||||
&sumsquare,iwrong)
|
||||
!after odr_leastsquare, forcing variables are destroyed. restore to the origninals
|
||||
do i=1,ntotsamples
|
||||
pco2i(i)=pco2i_ori(i)
|
||||
aPPFDlf(i)=aPPFDlf_ori(i)
|
||||
templeaf(i)=templeaf_ori(i)
|
||||
pres_air(i)=pres_air_ori(i)
|
||||
enddo
|
||||
call funkmin_C4Fit(ndim,beta,sumsquare)
|
||||
do i=1,10
|
||||
call nongradopt(ndim,funkmin_C4Fit,f1dim_C4Fit,beta,betamin,
|
||||
&betamax,ftol,sumsquare)
|
||||
call funkmin_C4Fit(ndim,beta,sumsquare)
|
||||
call RepeatCompassSearch(ndim,beta,sumsquare,
|
||||
&betamin,betamax,funkmin_C4Fit,f1dim_C4Fit,ftol)
|
||||
call funkmin_C4Fit(ndim,beta,sumsquare)
|
||||
enddo
|
||||
call ilimittypestats(ntotsamples,Postiphotolimit,
|
||||
&bestilimittype,bestnumrubis,bestnumrubp,bestnumtpu)
|
||||
return
|
||||
END subroutine C4PhotoFit
|
||||
Reference in New Issue
Block a user