92 lines
2.6 KiB
FortranFixed
92 lines
2.6 KiB
FortranFixed
program main
|
|
implicit none
|
|
! integer C_flag1,C_flag2,TA1_flag1,TA1_flag2,TA1_flag3,
|
|
! & Ta1_flag4,P_flag1,P_flag2,P_flag3,P_flag4
|
|
! double precision Year,month,DoY,Hour,seq_day_90,seq_time_90,
|
|
! & obs_NEE,obs_FCO2,fco2_corr,ustar,nee,Resp_e,gee,
|
|
! & obs_Ta_27m,Ta_27m_filled,Ta_2_5m,Ta_2_5m_filled,
|
|
! & PAR_28m,PAR_28m_filled
|
|
double precision daycurrent,gppmax,dataraw(33),datapick(33),
|
|
& work(50000,33),gppsamp(50),std,fmean
|
|
integer i,j,ntotal,nwindow,nstart,nend
|
|
|
|
nwindow=7
|
|
daycurrent=301.0d0
|
|
gppmax=-1.0d+10
|
|
open(unit=1,file='HF_9204_filled')
|
|
read(1,*)
|
|
read(1,*)
|
|
read(1,*)
|
|
read(1,*)
|
|
open(unit=2,file='HF_9204_gppmax')
|
|
10 read(1,*,end=100)dataraw
|
|
if(dabs(daycurrent-dataraw(3)).lt.0.01d0)then
|
|
dataraw(13)=dabs(dataraw(13))
|
|
if(dataraw(13).lt.150.0d0)then
|
|
if(dataraw(13).gt.gppmax)then
|
|
gppmax=dataraw(13)
|
|
do i=1,33
|
|
datapick(i)=dataraw(i)
|
|
enddo
|
|
endif
|
|
endif
|
|
else
|
|
if(dabs(gppmax).lt.150.0d0)then
|
|
write(2,310)datapick
|
|
endif
|
|
daycurrent=dataraw(3)
|
|
dataraw(13)=dabs(dataraw(13))
|
|
if(dataraw(13).lt.150.0d0)then
|
|
gppmax=dataraw(13)
|
|
do i=1,33
|
|
datapick(i)=dataraw(i)
|
|
enddo
|
|
else
|
|
gppmax=-1.0d+10
|
|
endif
|
|
endif
|
|
goto 10
|
|
100 write(2,310)datapick
|
|
close(1)
|
|
close(2)
|
|
open(unit=1,file='HF_9204_gppmax')
|
|
open(unit=2,file='HF_9204_gppmax_clean')
|
|
i=1
|
|
110 read(1,*,end=200)(work(i,j),j=1,33)
|
|
i=i+1
|
|
goto 110
|
|
200 close(1)
|
|
ntotal=i-1
|
|
do i=1,ntotal
|
|
nstart=i-nwindow/2
|
|
if(nstart.lt.1)then
|
|
nstart=1
|
|
endif
|
|
nend=i+nwindow/2
|
|
if(nend.gt.ntotal)then
|
|
nend=ntotal
|
|
endif
|
|
if((nend-nstart+1).lt.nwindow)then
|
|
if(nstart.eq.1)then
|
|
nend=nend+nwindow-(nend-nstart+1)
|
|
else
|
|
nstart=nstart-(nwindow-(nend-nstart+1))
|
|
endif
|
|
endif
|
|
fmean=0.0d0
|
|
do j=nstart,nend
|
|
fmean=fmean+work(j,13)
|
|
enddo
|
|
fmean=fmean/dble(nwindow)
|
|
std=0.0d0
|
|
do j=nstart,nend
|
|
std=std+(work(j,13)-fmean)*(work(j,13)-fmean)
|
|
enddo
|
|
std=dsqrt(std/dble(nwindow-1))
|
|
if((fmean-work(i,13)).lt.std.or.work(i,13).lt.1.0d-8)then
|
|
write(2,310)(work(i,j),j=1,33)
|
|
endif
|
|
enddo
|
|
310 format(33f15.7)
|
|
end
|