New changes from l2g
w
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
program main
|
||||
implicit none
|
||||
integer dataunit,spareunit,ierr(2),runvalues(8),ipos1,ipos2,
|
||||
&ntotfiles,noutputfiles,i,j,k,indexunit(20)
|
||||
&ntotfiles,noutputfiles,i,j,k,indexunit(20),ic3c4cam
|
||||
character rundate*8,runtime*10,runzone*5,longchar*5000
|
||||
character*100 datapath,outpath,storein,storeout,
|
||||
&ACidata(8000)
|
||||
@@ -23,11 +23,14 @@
|
||||
|
||||
! Set input / output directory
|
||||
parameter(datapath=
|
||||
! &'../input/',
|
||||
&'/home/l2g/jimei/',
|
||||
! &'/home/l2g/ngeetropics/gamboa/curves/',
|
||||
! &'/home/l2g/ngeetropics/metropolitano/curves/',
|
||||
! &'/home/l2g/ngeetropics/fortsherman/curves/',
|
||||
! &'/home/l2g/ngeetropics/kelsey/curves/',
|
||||
& '/home/l2g/SingleLeafModel/ACiSimulation/hybrid/',
|
||||
! & '/home/l2g/SingleLeafModel/ACiSimulation/hybrid/',
|
||||
! &'/home/l2g/leafres/hybriddata/nicksmith/data/',
|
||||
! &'/home/l2g/leafres/hybriddata/dwestonpoplus/data3/',
|
||||
! &'/home/l2g/leafres/hybriddata/cernusak/2014data/',
|
||||
! &'/home/l2g/leafres/hybriddata/hanjimei/',
|
||||
@@ -59,6 +62,8 @@
|
||||
! & '/home/l2g/dataassim/leaf/data/dweston/inputs/',
|
||||
! & '/home/l2g/GEMSiS/curves/',
|
||||
& outpath=
|
||||
! &'../output/fitresult/touser/',
|
||||
&'/home/l2g/jimei/',
|
||||
! &'/home/l2g/ngeetropics/gamboa/results/',
|
||||
! &'/home/l2g/ngeetropics/metropolitano/results/',
|
||||
! &'/home/l2g/ngeetropics/fortsherman/results/',
|
||||
@@ -69,7 +74,9 @@
|
||||
! &'/home/l2g/leafres/hybriddata/hanjimei/',
|
||||
!
|
||||
! & '/home/l2g/leafres/hybriddata/Berner/',
|
||||
& '/home/l2g/SingleLeafModel/ACiSimulation/hybrid/',
|
||||
! & '/home/l2g/SingleLeafModel/ACiSimulation/hybrid/',
|
||||
! & '/home/l2g/leafres/hybriddata/nicksmith/results/',
|
||||
|
||||
! & '/home/l2g/leafres/hybriddata/huidafeng/',
|
||||
! &'/home/l2g/leafres/hybriddata/dwestonpoplus/data_Pn_tree_1_195_v2/
|
||||
! &',
|
||||
@@ -99,43 +106,28 @@
|
||||
! &storein='/home/l2g/leafweb/users/curves/',
|
||||
! &storeout='/home/l2g/leafweb/users/results/',
|
||||
|
||||
&storein='/home/l2g/leafres/testdata/',
|
||||
&storeout='/home/l2g/leafres/testdata/',
|
||||
! &storein='/home/l2g/junk/',
|
||||
! &storeout='/home/l2g/junk/',
|
||||
! &storein='../output/clninput/',
|
||||
! &storeout='../output/fitresult/nottouser/',
|
||||
|
||||
&storein='/home/l2g/jimei/',
|
||||
&storeout='/home/l2g/jimei/',
|
||||
! &storein='/home/l2g/dataassim/leaf/data/ellsworth/outputs/',
|
||||
! &storeout='/home/l2g/dataassim/leaf/data/ellsworth/outputs/',
|
||||
|
||||
& AllACiFiles='AllLeafGasFiles')
|
||||
! & AllACiFiles='../piscal.cfg')
|
||||
&AllACiFiles='/home/l2g/jimei/piscal.cfg')
|
||||
!---------------End of variable declaration----------------
|
||||
ierr(1)=-1
|
||||
ierr(2)=-1
|
||||
outputfile(1)='leafgasparameters.csv'
|
||||
outputfile(2)='leafgascomparison.csv'
|
||||
outputfile(3)='stomwuecicaparameters.csv'
|
||||
outputfile(4)='stomcomparison.csv'
|
||||
outputfile(5)='wuecicacomparison.csv'
|
||||
outputfile(6)='fluorescencefit.csv'
|
||||
outputfile(7)='fluoresparameters.csv'
|
||||
outputfile(8)='aciempfitparameters.csv'
|
||||
outputfile(9)='alightempfitparameters.csv'
|
||||
outputfile(10)='warningmessage'
|
||||
outputfile(11)='errormessage'
|
||||
noutputfiles=11
|
||||
do i=1,noutputfiles
|
||||
indexunit(i)=i+9
|
||||
enddo
|
||||
do i=1,noutputfiles-1
|
||||
open(unit=indexunit(i),file=trim(outpath)//trim(outputfile(i)))
|
||||
enddo
|
||||
!read A/Ci curve names stored in AllACiFiles
|
||||
dataunit=1
|
||||
spareunit=3
|
||||
open(unit=dataunit,status='scratch')
|
||||
open(unit=spareunit,file=trim(datapath)//trim(AllACiFiles))
|
||||
read(spareunit,fmt=300,err=40,end=40)longchar
|
||||
open(unit=spareunit,file=trim(AllACiFiles))
|
||||
read(spareunit,fmt=300,err=90,end=90)longchar
|
||||
rewind(spareunit)
|
||||
2 read(spareunit,fmt=300,err=40,end=5)longchar
|
||||
2 read(spareunit,fmt=300,err=90,end=5)longchar
|
||||
if(longchar.eq.''.or.longchar.eq.' ')goto 2
|
||||
3 k=index(longchar,char(13))
|
||||
if(k.gt.0)then
|
||||
!DOS text format, convert it to unix format
|
||||
@@ -147,7 +139,34 @@
|
||||
5 close(spareunit)
|
||||
rewind(dataunit)
|
||||
ntotfiles=1
|
||||
ic3c4cam=-9999
|
||||
10 read(dataunit,fmt=300,end=20)longchar
|
||||
if(ntotfiles.eq.1.and.ic3c4cam.lt.0)then
|
||||
i=0
|
||||
if((index(longchar,'_photosynthesis_leafweb')+
|
||||
&index(longchar,'_Photosynthesis_leafweb')+
|
||||
&index(longchar,'_Photosynthesis_LeafWeb')).gt.0)then
|
||||
i=index(longchar,'c3')+index(longchar,'C3')
|
||||
if(i.gt.0)then
|
||||
ic3c4cam=1
|
||||
else
|
||||
i=index(longchar,'c4')+index(longchar,'C4')
|
||||
if(i.gt.0)then
|
||||
ic3c4cam=2
|
||||
else
|
||||
i=index(longchar,'cam')+index(longchar,'caM')+
|
||||
&index(longchar,'cAm')+index(longchar,'cAM')+
|
||||
&index(longchar,'Cam')+index(longchar,'CaM')+
|
||||
&index(longchar,'CAm')+index(longchar,'CAM')
|
||||
if(i.gt.0)ic3c4cam=3
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
if(i.gt.0)goto 10
|
||||
!if no indication is provided, c3 photosynthesis is assumed and the first line
|
||||
!contains the name of the first data file
|
||||
ic3c4cam=1
|
||||
endif
|
||||
i=len(longchar)
|
||||
j=0
|
||||
15 j=j+1
|
||||
@@ -170,83 +189,32 @@
|
||||
goto 10
|
||||
20 ntotfiles=ntotfiles-1
|
||||
close(dataunit)
|
||||
call ToLeafGasOptimization(ntotfiles,ACidata,dataunit,spareunit,
|
||||
&datapath,indexunit,ierr)
|
||||
40 do i=1,noutputfiles-1
|
||||
outputfile(1)='leafgasparameters.csv'
|
||||
outputfile(2)='leafgascomparison.csv'
|
||||
outputfile(3)='stomwuecicaparameters.csv'
|
||||
outputfile(4)='stomcomparison.csv'
|
||||
outputfile(5)='wuecicacomparison.csv'
|
||||
outputfile(6)='fluorescencefit.csv'
|
||||
outputfile(7)='fluoresparameters.csv'
|
||||
outputfile(8)='aciempfitparameters.csv'
|
||||
outputfile(9)='alightempfitparameters.csv'
|
||||
outputfile(10)='warningmessage'
|
||||
outputfile(11)='errormessage'
|
||||
noutputfiles=11
|
||||
do i=1,noutputfiles
|
||||
if(ic3c4cam.eq.1)outputfile(i)='C3_'//outputfile(i)
|
||||
if(ic3c4cam.eq.2)outputfile(i)='C4_'//outputfile(i)
|
||||
if(ic3c4cam.eq.3)outputfile(i)='CAM_'//outputfile(i)
|
||||
indexunit(i)=i+9
|
||||
enddo
|
||||
do i=1,noutputfiles
|
||||
open(unit=indexunit(i),file=trim(outpath)//trim(outputfile(i)))
|
||||
enddo
|
||||
call ToLeafGasOptimization(ic3c4cam,ntotfiles,ACidata,dataunit,
|
||||
&spareunit,datapath,indexunit,ierr)
|
||||
do i=1,noutputfiles
|
||||
close(indexunit(i))
|
||||
enddo
|
||||
if(ierr(1).ne.0)then
|
||||
i=indexunit(noutputfiles)
|
||||
open(unit=i,file=trim(outpath)//trim(outputfile(noutputfiles)))
|
||||
if(ierr(1).eq.-1)then
|
||||
close(spareunit)
|
||||
write(i,*)
|
||||
&'No data files to analyze or incorrect file name format'
|
||||
else
|
||||
write(i,*)'Input data error in ',trim(ACidata(ierr(2)))
|
||||
write(i,*)
|
||||
&'Please resubmit the data after correcting the following error:'
|
||||
endif
|
||||
if(ierr(1).eq.1)then
|
||||
write(i,*)'Photosynthesis (umol/m2/s) out of range'
|
||||
endif
|
||||
if(ierr(1).eq.2)then
|
||||
write(i,*)'Intercellular CO2(ppm) out of range'
|
||||
endif
|
||||
if(ierr(1).eq.3)then
|
||||
write(i,*)'Leaf temperature (oC) out of range'
|
||||
endif
|
||||
if(ierr(1).eq.4)then
|
||||
write(i,*)'Chamber PAR (umol/m2/s) out of range'
|
||||
endif
|
||||
if(ierr(1).eq.5)then
|
||||
write(i,*)'Atmospheric pressure (Pa) out of range'
|
||||
endif
|
||||
if(ierr(1).eq.13)then
|
||||
write(i,*)'Check line 13 for data entry error'
|
||||
endif
|
||||
if(ierr(1).eq.14)then
|
||||
write(i,*)'Specified chloroplastic CO2 compensation point',
|
||||
&'(Pa) out of range'
|
||||
endif
|
||||
if(ierr(1).eq.15)then
|
||||
write(i,*)'Specified Michaelis-Menten constant for the',
|
||||
&'carboxylase (Kc) out of range'
|
||||
endif
|
||||
if(ierr(1).eq.16)then
|
||||
write(i,*)'Specified Michaelis-Menten constant for the',
|
||||
&'oxygenase (Ko) out of range'
|
||||
endif
|
||||
if(ierr(1).eq.17)then
|
||||
write(i,*)'Specified fraction of nonreturned glycolate',
|
||||
&'carbon(alpha) out of range 0~1'
|
||||
endif
|
||||
if(ierr(1).eq.18)then
|
||||
write(i,*)'Specified dark respiration rate Rd out of range >0'
|
||||
endif
|
||||
if(ierr(1).eq.19)then
|
||||
write(i,*)'Specified internal (mesophyll) conductance gi out',
|
||||
&'of range >0'
|
||||
endif
|
||||
if(ierr(1).eq.34)then
|
||||
write(i,*)'Check Column 33 or 34. Mixing area- and mass-based
|
||||
&measurements is not allowed'
|
||||
endif
|
||||
if(ierr(1).eq.36)then
|
||||
write(i,*)'Check line 16 for data entry error'
|
||||
endif
|
||||
if(ierr(1).eq.39)then
|
||||
write(i,*)
|
||||
&'Check the main body of data for data entry error, starting from
|
||||
&line 19'
|
||||
endif
|
||||
if(ierr(1).eq.40)then
|
||||
write(i,*)
|
||||
&'Data file format cannot be recognized'
|
||||
endif
|
||||
|
||||
close(i)
|
||||
endif
|
||||
do j=1,noutputfiles
|
||||
open(unit=2,file=trim(outpath)//trim(outputfile(j)))
|
||||
read(2,*,end=70)
|
||||
@@ -260,29 +228,47 @@
|
||||
80 enddo
|
||||
!----------------------------------------------------------
|
||||
!intercept the data
|
||||
goto 450
|
||||
399 call date_and_time(rundate,runtime,runzone,runvalues)
|
||||
90 if(ierr(1).ne.0)then
|
||||
if(ierr(1).eq.-1)then
|
||||
close(spareunit)
|
||||
open(unit=spareunit,file=trim(outpath)//'errormessage')
|
||||
write(spareunit,*)'No data files to analyze'
|
||||
close(spareunit)
|
||||
goto 450
|
||||
endif
|
||||
do i=1,ntotfiles
|
||||
open(unit=1,file=trim(datapath)//'clean'//trim(ACidata(i)))
|
||||
close(1,status='delete')
|
||||
enddo
|
||||
goto 450
|
||||
endif
|
||||
call date_and_time(rundate,runtime,runzone,runvalues)
|
||||
do i=1,ntotfiles
|
||||
open(unit=1,file=trim(datapath)//trim(ACidata(i)))
|
||||
open(unit=1,file=trim(datapath)//'clean'//trim(ACidata(i)))
|
||||
open(unit=2,file=
|
||||
&trim(storein)//rundate//runtime(1:6)//trim(ACidata(i)))
|
||||
&trim(storein)//rundate//runtime(1:6)//'clean'//trim(ACidata(i)))
|
||||
400 read(1,fmt=300,end=410)longchar
|
||||
write(2,310)trim(longchar)
|
||||
goto 400
|
||||
410 close(1)
|
||||
410 close(1,status='delete')
|
||||
close(2)
|
||||
enddo
|
||||
do i=1,6
|
||||
do i=1,noutputfiles
|
||||
k=0
|
||||
open(unit=1,file=trim(outpath)//trim(outputfile(i)))
|
||||
open(unit=2,file=
|
||||
if(i.ge.3.and.i.le.5)then
|
||||
open(unit=2,file=
|
||||
&trim(storeout)//rundate//runtime(1:6)//trim(outputfile(i)))
|
||||
else
|
||||
open(unit=2,file=
|
||||
&trim(outpath)//rundate//runtime(1:6)//trim(outputfile(i)))
|
||||
endif
|
||||
420 read(1,fmt=300,end=430)longchar
|
||||
write(2,310)trim(longchar)
|
||||
k=1
|
||||
goto 420
|
||||
430 if(k.eq.1)then
|
||||
close(1)
|
||||
close(1,status='delete')
|
||||
close(2)
|
||||
else
|
||||
close(1,status='delete')
|
||||
|
||||
Reference in New Issue
Block a user