101 real(dp),
dimension(:, :, :),
intent(in) :: data2
104 real(dp),
intent(in) :: cellsize2
107 real(dp),
intent(in) :: cellsize1
110 logical,
dimension(:, :),
intent(in) :: mask1
113 logical,
dimension(:, :),
intent(in) :: mask2
116 real(dp),
dimension(:, :, :),
allocatable,
intent(out) :: data1
119 integer(i4) :: nr2, nc2
122 integer(i4) :: nr1, nc1
124 real(dp) :: cellFactor
126 integer(i4),
dimension(:, :),
allocatable :: nTCells
128 integer(i4) :: nTimeSteps
130 integer(i4) :: i, j, ic, jc, t
137 ntimesteps =
size(data2, 3)
151 cellfactor = cellsize1 / cellsize2
154 allocate(ntcells(nr1, nc1))
158 jc = ceiling(real(j, dp) / cellfactor)
160 ic = ceiling(real(i, dp) / cellfactor)
161 if(.not. mask2(i, j)) cycle
162 ntcells(ic, jc) = ntcells(ic, jc) + 1
168 allocate(data1(nr1, nc1, ntimesteps))
169 data1(:, :, :) = 0.0_dp
176 jc = ceiling(real(j, dp) / cellfactor)
178 ic = ceiling(real(i, dp) / cellfactor)
181 if(.not. mask2(i, j)) cycle
182 data1(ic, jc, t) = data1(ic, jc, t) + data2(i, j, t)
190 data1(:, :, t) = data1(:, :, t) / real(ntcells(:, :), dp)
209 real(dp),
dimension(:, :, :, :),
intent(in) :: data2
212 real(dp),
intent(in) :: cellsize2
215 real(dp),
intent(in) :: cellsize1
218 logical,
dimension(:, :),
intent(in) :: mask1
221 logical,
dimension(:, :),
intent(in) :: mask2
224 real(dp),
dimension(:, :, :, :),
allocatable,
intent(out) :: data1
227 integer(i4) :: nr2, nc2
230 integer(i4) :: nr1, nc1
232 real(dp) :: cellFactor
234 integer(i4),
dimension(:, :),
allocatable :: nTCells
236 integer(i4) :: nMonths, nHours
238 integer(i4) :: i, j, ic, jc, t, h
245 nmonths =
size(data2, 3)
246 nhours =
size(data2, 4)
260 cellfactor = cellsize1 / cellsize2
263 allocate(ntcells(nr1, nc1))
267 jc = ceiling(real(j, dp) / cellfactor)
269 ic = ceiling(real(i, dp) / cellfactor)
270 if(.not. mask2(i, j)) cycle
271 ntcells(ic, jc) = ntcells(ic, jc) + 1
277 allocate(data1(nr1, nc1, nmonths, nhours))
278 data1(:, :, :, :) = 0.0_dp
286 jc = ceiling(real(j, dp) / cellfactor)
288 ic = ceiling(real(i, dp) / cellfactor)
291 if(.not. mask2(i, j)) cycle
292 data1(ic, jc, t, h) = data1(ic, jc, t, h) + data2(i, j, t, h)
300 data1(:, :, t, h) = data1(:, :, t, h) / real(ntcells(:, :), dp)
320 real(dp),
dimension(:, :, :),
intent(in) :: data2
323 real(dp),
intent(in) :: cellsize2
326 real(dp),
intent(in) :: cellsize1
329 logical,
dimension(:, :),
intent(in) :: mask1
332 logical,
dimension(:, :),
intent(in) :: mask2
335 real(dp),
dimension(:, :, :),
allocatable,
intent(out) :: data1
338 integer(i4) :: nr1, nc1
340 real(dp) :: cellFactor
342 integer(i4) :: nTimeSteps
344 integer(i4) :: i, j, t, ic, jc
352 cellfactor = cellsize2 / cellsize1
355 ntimesteps =
size(data2, 3)
358 allocate(data1(nr1, nc1, ntimesteps))
366 jc = ceiling(real(j, dp) / cellfactor)
368 ic = ceiling(real(i, dp) / cellfactor)
370 if(.not. mask2(ic, jc)) cycle
371 data1(i, j, t) = data2(ic, jc, t)
386 real(dp),
dimension(:, :, :, :),
intent(in) :: data2
389 real(dp),
intent(in) :: cellsize2
392 real(dp),
intent(in) :: cellsize1
395 logical,
dimension(:, :),
intent(in) :: mask1
398 logical,
dimension(:, :),
intent(in) :: mask2
401 real(dp),
dimension(:, :, :, :),
allocatable,
intent(out) :: data1
404 integer(i4) :: nr1, nc1
406 real(dp) :: cellFactor
408 integer(i4) :: nMonths, nHours
410 integer(i4) :: i, j, t, ic, jc, h
418 cellfactor = cellsize2 / cellsize1
421 nmonths =
size(data2, 3)
422 nhours =
size(data2, 4)
425 allocate(data1(nr1, nc1, nmonths, nhours))
434 jc = ceiling(real(j, dp) / cellfactor)
436 ic = ceiling(real(i, dp) / cellfactor)
438 if(.not. mask2(ic, jc)) cycle
439 data1(i, j, t, h) = data2(ic, jc, t, h)