64 integer :: itime, nstop, metdata_format
80 integer :: indj,memaux
81 real :: uuh(0:nxmax-1,0:nymax-1,nuvzmax)
82 real :: vvh(0:nxmax-1,0:nymax-1,nuvzmax)
83 real :: pvh(0:nxmax-1,0:nymax-1,nuvzmax)
84 real :: wwh(0:nxmax-1,0:nymax-1,nwzmax)
85 real :: uuhn(0:nxmaxn-1,0:nymaxn-1,nuvzmax,maxnests)
86 real :: vvhn(0:nxmaxn-1,0:nymaxn-1,nuvzmax,maxnests)
87 real :: pvhn(0:nxmaxn-1,0:nymaxn-1,nuvzmax,maxnests)
88 real :: wwhn(0:nxmaxn-1,0:nymaxn-1,nwzmax,maxnests)
107 INTEGER millisecs_start, millisecs_stop, count_rate, count_max
116 if ((ldirect*wftime(1).gt.ldirect*itime).or. &
117 (ldirect*wftime(numbwf).lt.ldirect*itime))
then
118 write(*,*)
'FLEXPART WARNING: NO WIND FIELDS ARE AVAILABLE.'
119 write(*,*)
'A TRAJECTORY HAS TO BE TERMINATED.'
125 if ((ldirect*memtime(1).le.ldirect*itime).and. &
126 (ldirect*memtime(2).gt.ldirect*itime))
then
133 else if ((ldirect*memtime(2).le.ldirect*itime).and. &
134 (memtime(2).ne.999999999))
then
144 memtime(1)=memtime(2)
150 do indj=indmin,numbwf-1
151 if (ldirect*wftime(indj+1).gt.ldirect*itime)
then
154 CALL system_clock(millisecs_start, count_rate, count_max)
156 if (metdata_format.eq.ecmwf_metdata)
then
163 memtime(2)=wftime(indj+1)
166 if (metdata_format.eq.gfs_metdata)
then
173 memtime(2)=wftime(indj+1)
178 CALL system_clock(millisecs_stop, count_rate, count_max)
179 print *,
'Wall time to process: ', trim(wfname(indj+1)), &
180 ': ', (millisecs_stop-millisecs_start)/1000.0,
' seconds'
194 do indj=indmin,numbwf-1
195 if ((ldirect*wftime(indj).le.ldirect*itime).and. &
196 (ldirect*wftime(indj+1).gt.ldirect*itime))
then
198 if (metdata_format.eq.ecmwf_metdata)
then
200 CALL system_clock(millisecs_start, count_rate, count_max)
208 memtime(1)=wftime(indj)
211 CALL system_clock(millisecs_stop, count_rate, count_max)
212 print *,
'Wall time to process: ', trim(wfname(indj)), &
213 ': ', (millisecs_stop-millisecs_start)/1000.0,
' seconds'
217 CALL system_clock(millisecs_start, count_rate, count_max)
225 memtime(2)=wftime(indj+1)
228 CALL system_clock(millisecs_stop, count_rate, count_max)
229 print *,
'Wall time to process: ', trim(wfname(indj+1)), &
230 ': ', (millisecs_stop-millisecs_start)/1000.0,
' seconds'
233 if (metdata_format.eq.gfs_metdata)
then
235 CALL system_clock(millisecs_start, count_rate, count_max)
243 memtime(1)=wftime(indj)
246 CALL system_clock(millisecs_stop, count_rate, count_max)
247 print *,
'Wall time to process: ', trim(wfname(indj)), &
248 ': ', (millisecs_stop-millisecs_start)/1000.0,
' seconds'
252 CALL system_clock(millisecs_start, count_rate, count_max)
260 memtime(2)=wftime(indj+1)
263 CALL system_clock(millisecs_stop, count_rate, count_max)
264 print *,
'Wall time to process: ', trim(wfname(indj+1)), &
265 ': ', (millisecs_stop-millisecs_start)/1000.0,
' seconds'
275 lwindinterv=abs(memtime(2)-memtime(1))
277 if (lwindinterv.gt.idiffmax) nstop=3
subroutine readwind_nests(indj, n, uuhn, vvhn, wwhn)
subroutine getfields(itime, nstop, metdata_format)
subroutine calcpar_nests(n, uuhn, vvhn, pvhn, metdata_format)
subroutine readwind_gfs(indj, n, uuh, vvh, wwh)
subroutine readwind_ecmwf(indj, n, uuh, vvh, wwh)
subroutine calcpar_gfs(n, uuh, vvh, pvh)
subroutine calcpar_ecmwf(n, uuh, vvh, pvh)