Initial commit
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
!&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
|
||||
subroutine stomoptimization(npoints,ioption,pco2s0,rehulfsurf0,
|
||||
&gammas0,yAnet0,gswmeas0,stomintercept,stomslope,pvapordef_s0,
|
||||
&rayDzero)
|
||||
implicit none
|
||||
include '../testarea/stomoptim.h'
|
||||
c
|
||||
integer npoints,ioption
|
||||
double precision pco2s0(npoints),rehulfsurf0(npoints),
|
||||
&gammas0(npoints),yAnet0(npoints),gswmeas0(npoints),
|
||||
&pvapordef_s0(npoints),stomintercept,stomslope,rayDzero
|
||||
integer i,ndim
|
||||
double precision beta(10),fatbeta,ftol
|
||||
parameter(ftol=1.0d-7)
|
||||
external funkmin_stom,f1dim_stom
|
||||
|
||||
istommodel=ioption
|
||||
nobs = npoints
|
||||
|
||||
do i=1,npoints
|
||||
pco2s(i)=pco2s0(i)
|
||||
rehulfsurf(i)=rehulfsurf0(i)
|
||||
gammas(i)=gammas0(i)
|
||||
assim_net(i)=yAnet0(i)
|
||||
gswmeas(i)=gswmeas0(i)
|
||||
pvapordef_s(i)=pvapordef_s0(i)
|
||||
enddo
|
||||
|
||||
ndim=2
|
||||
beta(1)=stomintercept
|
||||
bmin(1)=0.0d0
|
||||
bmax(1)=1.0d+7
|
||||
if(stomintercept.lt.bmin(1).or.stomintercept.gt.bmax(1))
|
||||
&beta(1)=0.001d0
|
||||
|
||||
beta(2)=stomslope
|
||||
bmin(2)=0.0d0
|
||||
bmax(2)=1.0d+8
|
||||
if(stomslope.lt.bmin(2).or.stomslope.gt.bmax(2))
|
||||
&beta(2)=10.0d0
|
||||
|
||||
if(istommodel.eq.1.or.istommodel.eq.3)then
|
||||
ndim=2
|
||||
endif
|
||||
if(istommodel.eq.2.or.istommodel.eq.4)then
|
||||
ndim=3
|
||||
beta(3)=rayDzero
|
||||
bmin(3)=0.00001d0
|
||||
bmax(3)=1.0d+8
|
||||
if(rayDzero.lt.bmin(3).or.rayDzero.gt.bmax(3))
|
||||
&beta(3)=2000.0d0
|
||||
endif
|
||||
!
|
||||
! Initialize the cost function evaluation counter in the subroutine funkmin.
|
||||
! The counter counts and memorizes points where the cost function is evaluated.
|
||||
|
||||
call funkmin_stom(ndim,beta,fatbeta)
|
||||
call nongradopt(ndim,funkmin_stom,f1dim_stom,beta,
|
||||
& bmin,bmax,ftol,fatbeta)
|
||||
call RepeatCompassSearch(ndim,beta,fatbeta,bmin,
|
||||
& bmax,funkmin_stom,f1dim_stom,ftol)
|
||||
! Replace these parameters with their optimized values
|
||||
stomintercept=beta(1)
|
||||
stomslope=beta(2)
|
||||
if(istommodel.eq.2.or.istommodel.eq.4)rayDzero=beta(3)
|
||||
return
|
||||
END subroutine stomoptimization
|
||||
c
|
||||
!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||
Reference in New Issue
Block a user