Files
piscal/dataassim/math/othersupmath/boundary.f
T
2016-02-03 18:52:05 +00:00

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