54 integer :: indj,itime,nstop,memaux,metdata_format
56 real :: uuh(0:nxmax-1,0:nymax-1,nuvzmax)
57 real :: vvh(0:nxmax-1,0:nymax-1,nuvzmax)
58 real :: pvh(0:nxmax-1,0:nymax-1,nuvzmax)
59 real :: wwh(0:nxmax-1,0:nymax-1,nwzmax)
60 real :: uuhn(0:nxmaxn-1,0:nymaxn-1,nuvzmax,maxnests)
61 real :: vvhn(0:nxmaxn-1,0:nymaxn-1,nuvzmax,maxnests)
62 real :: pvhn(0:nxmaxn-1,0:nymaxn-1,nuvzmax,maxnests)
63 real :: wwhn(0:nxmaxn-1,0:nymaxn-1,nwzmax,maxnests)
68 character(len=512) fpfname
71 INTEGER millisecs_start, millisecs_stop, count_rate, count_max
80 if ((ldirect*wftime(1).gt.ldirect*itime).or. &
81 (ldirect*wftime(numbwf).lt.ldirect*itime))
then
82 write(*,*)
'FLEXPART WARNING: NO WIND FIELDS ARE AVAILABLE.'
83 write(*,*)
'A TRAJECTORY HAS TO BE TERMINATED.'
89 if ((ldirect*memtime(1).le.ldirect*itime).and. &
90 (ldirect*memtime(2).gt.ldirect*itime))
then
97 else if ((ldirect*memtime(2).le.ldirect*itime).and. &
98 (memtime(2).ne.999999999))
then
108 memtime(1)=memtime(2)
114 do indj=indmin,numbwf-1
115 if (ldirect*wftime(indj+1).gt.ldirect*itime)
then
118 CALL system_clock(millisecs_start, count_rate, count_max)
121 if ( ldirect.eq.1 )
then
122 fpfname = trim(path(3)) // trim(wfname(indj+1)) //
'_fwd.fp'
124 fpfname = trim(path(3)) // trim(wfname(indj+1)) //
'_bwd.fp'
126 print *,
'loading... ', trim(fpfname)
128 memtime(2)=wftime(indj+1)
132 CALL system_clock(millisecs_stop, count_rate, count_max)
133 print *,
'Wall time to process: ', trim(fpfname), &
134 ': ', (millisecs_stop-millisecs_start)/1000.0,
' seconds'
150 do indj=indmin,numbwf-1
151 if ((ldirect*wftime(indj).le.ldirect*itime).and. &
152 (ldirect*wftime(indj+1).gt.ldirect*itime))
then
156 CALL system_clock(millisecs_start, count_rate, count_max)
159 if ( ldirect.eq.1 )
then
160 fpfname = trim(path(3)) // trim(wfname(indj)) //
'_fwd.fp'
162 fpfname = trim(path(3)) // trim(wfname(indj)) //
'_bwd.fp'
164 print *,
'loading... ', trim(fpfname)
166 memtime(1)=wftime(indj)
169 CALL system_clock(millisecs_stop, count_rate, count_max)
170 print *,
'Wall time to process: ', trim(fpfname), &
171 ': ', (millisecs_stop-millisecs_start)/1000.0,
' seconds'
175 CALL system_clock(millisecs_start, count_rate, count_max)
178 if ( ldirect.eq.1 )
then
179 fpfname = trim(path(3)) // trim(wfname(indj+1)) //
'_fwd.fp'
181 fpfname = trim(path(3)) // trim(wfname(indj+1)) //
'_bwd.fp'
183 print *,
'loading... ', trim(fpfname)
185 memtime(2)=wftime(indj+1)
188 CALL system_clock(millisecs_stop, count_rate, count_max)
189 print *,
'Wall time to process: ', trim(fpfname), &
190 ': ', (millisecs_stop-millisecs_start)/1000.0,
' seconds'
201 lwindinterv=abs(memtime(2)-memtime(1))
203 if (lwindinterv.gt.idiffmax) nstop=3
subroutine fpmetbinary_load(filename, cm_index)
subroutine getfpfields(itime, nstop, metdata_format)