Skip to content

Commit 5717571

Browse files
authored
Merge pull request #1581 from slevisconsulting/fix_escomp_1575
Correct build errors in mksurfdata tools testers
2 parents 44b0e00 + c0f55d5 commit 5717571

File tree

3 files changed

+35
-328
lines changed

3 files changed

+35
-328
lines changed

tools/mksurfdata_map/unit_testers/test_mkgridmapMod.F90

Lines changed: 21 additions & 209 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,15 @@ module test_mkgridmapMod
99
private
1010

1111
public :: test_gridmap_areastddev
12-
public :: test_gridmap_areaave_default
12+
public :: test_gridmap_areaave_no_srcmask
1313
public :: test_gridmap_areaave_srcmask
14-
public :: test_gridmap_areaave_srcmask2
1514

1615
character(len=*), parameter :: modname = 'test_mkgridmapMod'
1716

1817
contains
1918

2019
!------------------------------------------------------------------------------
21-
subroutine test_gridmap_areaave_default
20+
subroutine test_gridmap_areaave_no_srcmask
2221

2322
implicit none
2423

@@ -32,7 +31,7 @@ subroutine test_gridmap_areaave_default
3231
real(r8), parameter :: nodata = -1._r8
3332
real(r8), parameter :: eps = 1.e-13_r8
3433

35-
character(len=*), parameter :: subname = 'test_gridmap_areaave_default'
34+
character(len=*), parameter :: subname = 'test_gridmap_areaave_no_srcmask'
3635

3736
! Note about the gridmaps for the tests here:
3837
! For most tests here, the test arrays are: (1) simple case, (2) the main case to
@@ -61,7 +60,7 @@ subroutine test_gridmap_areaave_default
6160
testname = 'no overlap'
6261
src_array = (/0.1_r8,0.2_r8,0.3_r8,0.4_r8/)
6362
dst_array_t = (/0.125_r8, nodata, 0.375_r8/)
64-
call gridmap_areaave(gridmap, src_array, dst_array, nodata)
63+
call gridmap_areaave_no_srcmask(gridmap, src_array, dst_array, nodata)
6564
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
6665
deallocate(gridmap%src_indx, gridmap%dst_indx, gridmap%wovr, gridmap%frac_dst)
6766
deallocate(src_array, dst_array, dst_array_t)
@@ -87,15 +86,15 @@ subroutine test_gridmap_areaave_default
8786
testname = 'single overlap'
8887
src_array = (/0.1_r8,0.2_r8,0.5_r8,0.3_r8,0.4_r8/)
8988
dst_array_t = (/0.125_r8, 0.5_r8, 0.375_r8/)
90-
call gridmap_areaave(gridmap, src_array, dst_array, nodata)
89+
call gridmap_areaave_no_srcmask(gridmap, src_array, dst_array, nodata)
9190
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
9291

9392
! Now change the overlap point to have weight=0
9493
testname = 'single overlap with 0 weight'
9594
gridmap%wovr(3) = 0.0_r8
9695
gridmap%frac_dst(2) = 0.0_r8
9796
dst_array_t(2) = nodata
98-
call gridmap_areaave(gridmap, src_array, dst_array, nodata)
97+
call gridmap_areaave_no_srcmask(gridmap, src_array, dst_array, nodata)
9998
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
10099

101100
deallocate(gridmap%src_indx, gridmap%dst_indx, gridmap%wovr, gridmap%frac_dst)
@@ -130,13 +129,13 @@ subroutine test_gridmap_areaave_default
130129
testname='multiple overlaps, all the same value'
131130
src_array = (/0.1_r8, 0.5_r8, 0.5_r8, 0.5_r8, 0.5_r8, 0.5_r8, 0.5_r8, 0.5_r8, 0.6_r8/)
132131
dst_array_t = (/0.2_r8, 0.5_r8, 0.575_r8/)
133-
call gridmap_areaave(gridmap, src_array, dst_array, nodata)
132+
call gridmap_areaave_no_srcmask(gridmap, src_array, dst_array, nodata)
134133
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
135134

136135
testname='multiple overlaps, different values'
137136
src_array = (/0.1_r8, 0.2_r8, 0.3_r8, 0.7_r8, 0.5_r8, 1.5_r8, 0.5_r8, 1.7_r8, 1.8_r8/)
138137
dst_array_t = (/0.125_r8, 0.875_r8, 1.775_r8/)
139-
call gridmap_areaave(gridmap, src_array, dst_array, nodata)
138+
call gridmap_areaave_no_srcmask(gridmap, src_array, dst_array, nodata)
140139
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
141140

142141
! dividing the weights by 2 shouldn't affect the mean
@@ -145,7 +144,7 @@ subroutine test_gridmap_areaave_default
145144
gridmap%frac_dst(:) = gridmap%frac_dst(:) / 2.0_r8
146145
src_array = (/0.1_r8, 0.2_r8, 0.3_r8, 0.7_r8, 0.5_r8, 1.5_r8, 0.5_r8, 1.7_r8, 1.8_r8/)
147146
dst_array_t = (/0.125_r8, 0.875_r8, 1.775_r8/)
148-
call gridmap_areaave(gridmap, src_array, dst_array, nodata)
147+
call gridmap_areaave_no_srcmask(gridmap, src_array, dst_array, nodata)
149148
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
150149
! restore wovr & frac_dst
151150
gridmap%wovr(:) = gridmap%wovr(:) * 2.0_r8
@@ -157,15 +156,15 @@ subroutine test_gridmap_areaave_default
157156
gridmap%frac_dst(:) = gridmap%frac_dst(:) * 2.0_r8
158157
src_array = (/0.1_r8, 0.2_r8, 0.3_r8, 0.7_r8, 0.5_r8, 1.5_r8, 0.5_r8, 1.7_r8, 1.8_r8/)
159158
dst_array_t = (/0.125_r8, 0.875_r8, 1.775_r8/)
160-
call gridmap_areaave(gridmap, src_array, dst_array, nodata)
159+
call gridmap_areaave_no_srcmask(gridmap, src_array, dst_array, nodata)
161160
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
162161
! restore wovr & frac_dst
163162
gridmap%wovr(:) = gridmap%wovr(:) / 2.0_r8
164163
gridmap%frac_dst(:) = gridmap%frac_dst(:) / 2.0_r8
165164

166165
deallocate(src_array, dst_array, dst_array_t)
167166

168-
end subroutine test_gridmap_areaave_default
167+
end subroutine test_gridmap_areaave_no_srcmask
169168

170169
!------------------------------------------------------------------------------
171170
subroutine test_gridmap_areaave_srcmask
@@ -176,7 +175,7 @@ subroutine test_gridmap_areaave_srcmask
176175
character(len=128) :: testname
177176

178177
real(r8), allocatable :: src_array(:)
179-
real(r8), allocatable :: mask_src(:)
178+
integer , allocatable :: mask_src(:)
180179
real(r8), allocatable :: dst_array(:)
181180
real(r8), allocatable :: dst_array_t(:)
182181

@@ -212,9 +211,9 @@ subroutine test_gridmap_areaave_srcmask
212211
dst_array_t(gridmap%nb))
213212
testname = 'no overlap'
214213
src_array = (/0.1_r8,0.2_r8,0.3_r8,0.4_r8/)
215-
mask_src(:) = 1.0_r8
214+
mask_src(:) = 1
216215
dst_array_t = (/0.125_r8, nodata, 0.375_r8/)
217-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src)
216+
call gridmap_areaave_srcmask(gridmap, src_array, dst_array, nodata, mask_src=mask_src, frac_dst=gridmap%frac_dst)
218217
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
219218
deallocate(gridmap%src_indx, gridmap%dst_indx, gridmap%wovr, gridmap%frac_dst)
220219
deallocate(src_array, mask_src, dst_array, dst_array_t)
@@ -242,14 +241,14 @@ subroutine test_gridmap_areaave_srcmask
242241
src_array = (/0.1_r8,0.2_r8,0.5_r8,0.3_r8,0.4_r8/)
243242
mask_src(:) = 1.0_r8
244243
dst_array_t = (/0.125_r8, 0.5_r8, 0.375_r8/)
245-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src)
244+
call gridmap_areaave_srcmask(gridmap, src_array, dst_array, nodata, mask_src=mask_src, frac_dst=gridmap%frac_dst)
246245
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
247246

248247
! Now change the overlap point to have src_mask=0
249248
testname = 'single overlap with 0 src_mask'
250249
mask_src(3) = 0.0_r8
251250
dst_array_t(2) = nodata
252-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src)
251+
call gridmap_areaave_srcmask(gridmap, src_array, dst_array, nodata, mask_src=mask_src, frac_dst=gridmap%frac_dst)
253252
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
254253

255254
deallocate(gridmap%src_indx, gridmap%dst_indx, gridmap%wovr, gridmap%frac_dst)
@@ -286,21 +285,21 @@ subroutine test_gridmap_areaave_srcmask
286285
src_array = (/0.1_r8, 0.5_r8, 0.5_r8, 0.5_r8, 0.5_r8, 0.5_r8, 0.5_r8, 0.5_r8, 0.6_r8/)
287286
mask_src(:) = 1.0_r8
288287
dst_array_t = (/0.2_r8, 0.5_r8, 0.575_r8/)
289-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src)
288+
call gridmap_areaave_srcmask(gridmap, src_array, dst_array, nodata, mask_src=mask_src, frac_dst=gridmap%frac_dst)
290289
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
291290

292291
testname='multiple overlaps, different values'
293292
src_array = (/0.1_r8, 0.2_r8, 0.3_r8, 0.7_r8, 0.5_r8, 1.5_r8, 0.5_r8, 1.7_r8, 1.8_r8/)
294293
mask_src(:) = 1.0_r8
295294
dst_array_t = (/0.125_r8, 0.875_r8, 1.775_r8/)
296-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src)
295+
call gridmap_areaave_srcmask(gridmap, src_array, dst_array, nodata, mask_src=mask_src, frac_dst=gridmap%frac_dst)
297296
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
298297

299298
testname='multiple overlaps, different values, srcmask'
300299
src_array = (/0.1_r8, 0.2_r8, 0.3_r8, 0.7_r8, 0.5_r8, 1.5_r8, 0.5_r8, 1.7_r8, 1.8_r8/)
301300
mask_src(:) = (/1.0_r8, 1.0_r8, 0.0_r8, 0.5_r8, 1.0_r8, 0.5_r8, 0.0_r8, 1.0_r8, 1.0_r8/)
302301
dst_array_t = (/0.125_r8, 0.923076923076923_r8, 1.775_r8/)
303-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src)
302+
call gridmap_areaave_srcmask(gridmap, src_array, dst_array, nodata, mask_src=mask_src, frac_dst=gridmap%frac_dst)
304303
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
305304

306305
! dividing the weights by 2 and dividing mask_src by a constant shouldn't affect the mean
@@ -310,7 +309,7 @@ subroutine test_gridmap_areaave_srcmask
310309
src_array = (/0.1_r8, 0.2_r8, 0.3_r8, 0.7_r8, 0.5_r8, 1.5_r8, 0.5_r8, 1.7_r8, 1.8_r8/)
311310
mask_src(:) = 0.25_r8
312311
dst_array_t = (/0.125_r8, 0.875_r8, 1.775_r8/)
313-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src)
312+
call gridmap_areaave_srcmask(gridmap, src_array, dst_array, nodata, mask_src=mask_src, frac_dst=gridmap%frac_dst)
314313
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
315314
! restore wovr & frac_dst
316315
gridmap%wovr(:) = gridmap%wovr(:) * 2.0_r8
@@ -323,7 +322,7 @@ subroutine test_gridmap_areaave_srcmask
323322
src_array = (/0.1_r8, 0.2_r8, 0.3_r8, 0.7_r8, 0.5_r8, 1.5_r8, 0.5_r8, 1.7_r8, 1.8_r8/)
324323
mask_src(:) = 0.25_r8
325324
dst_array_t = (/0.125_r8, 0.875_r8, 1.775_r8/)
326-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src)
325+
call gridmap_areaave_srcmask(gridmap, src_array, dst_array, nodata, mask_src=mask_src, frac_dst=gridmap%frac_dst)
327326
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
328327
! restore wovr & frac_dst
329328
gridmap%wovr(:) = gridmap%wovr(:) / 2.0_r8
@@ -334,193 +333,6 @@ subroutine test_gridmap_areaave_srcmask
334333

335334
end subroutine test_gridmap_areaave_srcmask
336335

337-
!------------------------------------------------------------------------------
338-
subroutine test_gridmap_areaave_srcmask2
339-
340-
implicit none
341-
342-
type(gridmap_type) :: gridmap
343-
character(len=128) :: testname
344-
345-
real(r8), allocatable :: src_array(:)
346-
real(r8), allocatable :: mask_src(:)
347-
real(r8), allocatable :: dst_array(:)
348-
real(r8), allocatable :: mask_dst(:)
349-
real(r8), allocatable :: dst_array_t(:)
350-
351-
real(r8), parameter :: mask_dst_min = 0.0_r8
352-
real(r8), parameter :: nodata = -1._r8
353-
real(r8), parameter :: eps = 1.e-13_r8
354-
355-
character(len=*), parameter :: subname = 'test_gridmap_areaave_srcmask2'
356-
357-
! Note about the gridmaps for the tests here:
358-
! For most tests here, the test arrays are: (1) simple case, (2) the main case to
359-
! test, (3) simple case. Thus, the main case in question is #2 of 3, and we're always
360-
! basically just testing one scenario in each call to the subroutine (rather than
361-
! doing a bunch of tests at once, which could make setting up the test arrays more
362-
! error-prone).
363-
364-
! Set up a gridmap with 0 weight of overlap on dest #2
365-
gridmap%na = 4
366-
gridmap%nb = 3
367-
gridmap%ns = 4
368-
allocate(gridmap%src_indx(gridmap%ns), &
369-
gridmap%dst_indx(gridmap%ns), &
370-
gridmap%wovr (gridmap%ns), &
371-
gridmap%frac_dst(gridmap%nb))
372-
gridmap%src_indx = (/1,2,3,4/)
373-
gridmap%dst_indx = (/1,1,3,3/)
374-
gridmap%wovr = (/0.75_r8,0.25_r8, & ! weights of sources 1:2 on dest 1
375-
0.25_r8,0.75_r8/) ! weights of sources 3:4 on test 3
376-
gridmap%frac_dst = (/1.0, 0.0, 1.0/)
377-
gridmap%set = 'gridmap_IsSet'
378-
allocate(src_array (gridmap%na), &
379-
mask_src (gridmap%na), &
380-
dst_array (gridmap%nb), &
381-
mask_dst (gridmap%nb), &
382-
dst_array_t(gridmap%nb))
383-
testname = 'no overlap'
384-
src_array = (/0.1_r8,0.2_r8,0.3_r8,0.4_r8/)
385-
mask_src(:) = 1.0_r8
386-
mask_dst(:) = 1.0_r8
387-
dst_array_t = (/0.125_r8, nodata, 0.375_r8/)
388-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src, mask_dst, mask_dst_min)
389-
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
390-
deallocate(gridmap%src_indx, gridmap%dst_indx, gridmap%wovr, gridmap%frac_dst)
391-
deallocate(src_array, mask_src, dst_array, mask_dst, dst_array_t)
392-
393-
! Set up a gridmap with a single point overlapping dest #2
394-
gridmap%na = 5
395-
gridmap%nb = 3
396-
gridmap%ns = 5
397-
allocate(gridmap%src_indx(gridmap%ns), &
398-
gridmap%dst_indx(gridmap%ns), &
399-
gridmap%wovr (gridmap%ns), &
400-
gridmap%frac_dst(gridmap%nb))
401-
gridmap%src_indx = (/1,2,3,4,5/)
402-
gridmap%dst_indx = (/1,1,2,3,3/)
403-
gridmap%wovr = (/0.75_r8,0.25_r8, & ! weights of sources 1:2 on dest 1
404-
1.0_r8, & ! weight of source 3 on dest 2
405-
0.25_r8,0.75_r8/) ! weights of sources 4:5 on test 3
406-
gridmap%frac_dst = (/1.0, 1.0, 1.0/)
407-
gridmap%set = 'gridmap_IsSet'
408-
allocate(src_array (gridmap%na), &
409-
mask_src (gridmap%na), &
410-
dst_array (gridmap%nb), &
411-
mask_dst (gridmap%nb), &
412-
dst_array_t(gridmap%nb))
413-
testname = 'single overlap'
414-
src_array = (/0.1_r8,0.2_r8,0.5_r8,0.3_r8,0.4_r8/)
415-
mask_src(:) = 1.0_r8
416-
mask_dst(:) = 1.0_r8
417-
dst_array_t = (/0.125_r8, 0.5_r8, 0.375_r8/)
418-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src, mask_dst, mask_dst_min)
419-
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
420-
421-
! Now change the overlap point to have src_mask=0
422-
testname = 'single overlap with 0 src_mask'
423-
mask_src(3) = 0.0_r8
424-
mask_dst(:) = 1.0_r8
425-
dst_array_t(2) = nodata
426-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src, mask_dst, mask_dst_min)
427-
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
428-
429-
deallocate(gridmap%src_indx, gridmap%dst_indx, gridmap%wovr, gridmap%frac_dst)
430-
deallocate(src_array, mask_src, dst_array, mask_dst, dst_array_t)
431-
432-
! Set up a gridmap for the remaining tests
433-
! This gridmap will have 3 src cells, 9 dest cells, and:
434-
! src 1: just overlaps with dst 1
435-
! src 2: overlaps with dst 1 & dst 2
436-
! src 3..7: just overlaps with dst 2
437-
! src 8: overlaps with dst 2 & dst 3
438-
! src 9: just overlaps with dst 3
439-
gridmap%na = 9
440-
gridmap%nb = 3
441-
gridmap%ns = 11
442-
allocate(gridmap%src_indx(gridmap%ns), &
443-
gridmap%dst_indx(gridmap%ns), &
444-
gridmap%wovr (gridmap%ns), &
445-
gridmap%frac_dst(gridmap%nb))
446-
gridmap%src_indx = (/1,2,2,3,4,5,6,7,8,8,9/)
447-
gridmap%dst_indx = (/1,1,2,2,2,2,2,2,2,3,3/)
448-
gridmap%wovr = (/0.75_r8,0.25_r8, & ! weights of sources 1:2 on dest 1
449-
0.05_r8,0.05_r8,0.1_r8,0.3_r8,0.2_r8,0.15_r8,0.15_r8, & ! weights of sources 2:8 on dest 2
450-
0.25_r8,0.75_r8/) ! weights of sources 8:9 on test 3
451-
gridmap%frac_dst = (/1.0_r8, 1.0_r8, 1.0_r8/)
452-
gridmap%set = 'gridmap_IsSet'
453-
allocate(src_array (gridmap%na), &
454-
mask_src (gridmap%na), &
455-
dst_array (gridmap%nb), &
456-
mask_dst (gridmap%nb), &
457-
dst_array_t(gridmap%nb))
458-
459-
460-
testname='multiple overlaps, all the same value'
461-
src_array = (/0.1_r8, 0.5_r8, 0.5_r8, 0.5_r8, 0.5_r8, 0.5_r8, 0.5_r8, 0.5_r8, 0.6_r8/)
462-
mask_src(:) = 1.0_r8
463-
mask_dst(:) = 1.0_r8
464-
dst_array_t = (/0.2_r8, 0.5_r8, 0.575_r8/)
465-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src, mask_dst, mask_dst_min)
466-
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
467-
468-
testname='multiple overlaps, different values'
469-
src_array = (/0.1_r8, 0.2_r8, 0.3_r8, 0.7_r8, 0.5_r8, 1.5_r8, 0.5_r8, 1.7_r8, 1.8_r8/)
470-
mask_src(:) = 1.0_r8
471-
mask_dst(:) = 1.0_r8
472-
dst_array_t = (/0.125_r8, 0.875_r8, 1.775_r8/)
473-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src, mask_dst, mask_dst_min)
474-
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
475-
476-
testname='multiple overlaps, different values, dst mask'
477-
src_array = (/0.1_r8, 0.2_r8, 0.3_r8, 0.7_r8, 0.5_r8, 1.5_r8, 0.5_r8, 1.7_r8, 1.8_r8/)
478-
mask_src(:) = 1.0_r8
479-
mask_dst(:) = (/1.0_r8, 0.0_r8, 1.0_r8/)
480-
dst_array_t = (/0.125_r8, nodata, 1.775_r8/)
481-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src, mask_dst, mask_dst_min)
482-
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
483-
484-
testname='multiple overlaps, different values, srcmask'
485-
src_array = (/0.1_r8, 0.2_r8, 0.3_r8, 0.7_r8, 0.5_r8, 1.5_r8, 0.5_r8, 1.7_r8, 1.8_r8/)
486-
mask_src(:) = (/1.0_r8, 1.0_r8, 0.0_r8, 0.5_r8, 1.0_r8, 0.5_r8, 0.0_r8, 1.0_r8, 1.0_r8/)
487-
mask_dst(:) = 1.0_r8
488-
dst_array_t = (/0.125_r8, 0.923076923076923_r8, 1.775_r8/)
489-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src, mask_dst, mask_dst_min)
490-
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
491-
492-
! dividing the weights by 2 and dividing mask_src by a constant shouldn't affect the mean
493-
testname='weights divided by 2'
494-
gridmap%wovr(:) = gridmap%wovr(:) / 2.0_r8
495-
gridmap%frac_dst(:) = gridmap%frac_dst(:) / 2.0_r8
496-
src_array = (/0.1_r8, 0.2_r8, 0.3_r8, 0.7_r8, 0.5_r8, 1.5_r8, 0.5_r8, 1.7_r8, 1.8_r8/)
497-
mask_src(:) = 0.25_r8
498-
mask_dst(:) = 1.0_r8
499-
dst_array_t = (/0.125_r8, 0.875_r8, 1.775_r8/)
500-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src, mask_dst, mask_dst_min)
501-
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
502-
! restore wovr & frac_dst
503-
gridmap%wovr(:) = gridmap%wovr(:) * 2.0_r8
504-
gridmap%frac_dst(:) = gridmap%frac_dst(:) * 2.0_r8
505-
506-
! using frac_dst > 1 should be okay
507-
testname='frac_dst > 1'
508-
gridmap%wovr(:) = gridmap%wovr(:) * 2.0_r8
509-
gridmap%frac_dst(:) = gridmap%frac_dst(:) * 2.0_r8
510-
src_array = (/0.1_r8, 0.2_r8, 0.3_r8, 0.7_r8, 0.5_r8, 1.5_r8, 0.5_r8, 1.7_r8, 1.8_r8/)
511-
mask_src(:) = 0.25_r8
512-
mask_dst(:) = 1.0_r8
513-
dst_array_t = (/0.125_r8, 0.875_r8, 1.775_r8/)
514-
call gridmap_areaave(gridmap, src_array, dst_array, nodata, mask_src, mask_dst, mask_dst_min)
515-
call test_close(dst_array, dst_array_t, eps, modname//' -- '//subname//' -- '//trim(testname))
516-
! restore wovr & frac_dst
517-
gridmap%wovr(:) = gridmap%wovr(:) / 2.0_r8
518-
gridmap%frac_dst(:) = gridmap%frac_dst(:) / 2.0_r8
519-
520-
deallocate(src_array, mask_src, dst_array, mask_dst, dst_array_t)
521-
522-
end subroutine test_gridmap_areaave_srcmask2
523-
524336
!------------------------------------------------------------------------------
525337
subroutine test_gridmap_areastddev
526338

0 commit comments

Comments
 (0)