20 PROGRAM grid_transform_test
26 INTEGER,
PARAMETER :: ninterv=5, nval=7
27 REAL :: interv_lower(ninterv)=(/20.,20.,rmiss,20.,20./), &
28 interv_upper(ninterv)=(/40.,rmiss,40.,20.,10./), &
29 interv_testval(nval)=(/5.,10.,15.,20.,30.,40.,50./)
30 REAL :: interv_ffresult(nval,ninterv)=reshape((/ &
38 interv_ftresult(nval,ninterv)=reshape((/ &
44 /), (/nval,ninterv/)), &
45 interv_tfresult(nval,ninterv)=reshape((/ &
51 /), (/nval,ninterv/)), &
52 interv_ttresult(nval,ninterv)=reshape((/ &
58 /), (/nval,ninterv/)), &
59 tmpresult(nval,ninterv)
62 TYPE(interval_info) :: interv, interv_init
64 print*,
'=== Testing grid_transform module ==='
66 print*,
'Checking intervals a<x<b'
68 interv = interval_info_new(interv_gt=interv_lower(j), interv_lt=interv_upper(j))
70 tmpresult(i,j) = interval_info_valid(interv, interv_testval(i))
73 CALL interv_print_result(tmpresult, interv_ffresult)
75 print*,
'Checking intervals a<x<=b'
77 interv = interval_info_new(interv_gt=interv_lower(j), interv_le=interv_upper(j))
79 tmpresult(i,j) = interval_info_valid(interv, interv_testval(i))
82 CALL interv_print_result(tmpresult, interv_ftresult)
84 print*,
'Checking intervals a<=x<b'
86 interv = interval_info_new(interv_ge=interv_lower(j), interv_lt=interv_upper(j))
88 tmpresult(i,j) = interval_info_valid(interv, interv_testval(i))
91 CALL interv_print_result(tmpresult, interv_tfresult)
93 print*,
'Checking intervals a<=x<=b'
95 interv = interval_info_new(interv_ge=interv_lower(j), interv_le=interv_upper(j))
97 tmpresult(i,j) = interval_info_valid(interv, interv_testval(i))
100 CALL interv_print_result(tmpresult, interv_ttresult)
104 SUBROUTINE interv_print_result(res, ref)
105 REAL,
INTENT(in) :: res(nval,ninterv), ref(nval,ninterv)
107 IF (count(res == ref) == nval*ninterv)
THEN
112 IF (res(i,j) /= ref(i,j))
THEN
113 print*,
'Failing: ',interv_lower(j),
'<(=)',interv_testval(i),
'<(=)',interv_upper(j)
114 print*,
'Result: ',res(i,j),
' Reference: ',ref(i,j)
121 END SUBROUTINE interv_print_result
125 END PROGRAM grid_transform_test
Definitions of constants and functions for working with missing values.