20PROGRAM grid_transform_test
26INTEGER,
PARAMETER :: ninterv=5, nval=7
27REAL :: 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./)
30REAL :: interv_ffresult(nval,ninterv)=reshape((/ &
38interv_ftresult(nval,ninterv)=reshape((/ &
44 /), (/nval,ninterv/)), &
45interv_tfresult(nval,ninterv)=reshape((/ &
51 /), (/nval,ninterv/)), &
52interv_ttresult(nval,ninterv)=reshape((/ &
58 /), (/nval,ninterv/)), &
59 tmpresult(nval,ninterv)
62TYPE(interval_info) :: interv, interv_init
64print*,
'=== Testing grid_transform module ==='
66print*,
'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))
73CALL interv_print_result(tmpresult, interv_ffresult)
75print*,
'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))
82CALL interv_print_result(tmpresult, interv_ftresult)
84print*,
'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))
91CALL interv_print_result(tmpresult, interv_tfresult)
93print*,
'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))
100CALL interv_print_result(tmpresult, interv_ttresult)
104SUBROUTINE interv_print_result(res, ref)
105REAL,
INTENT(in) :: res(nval,ninterv), ref(nval,ninterv)
107IF (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)
121END SUBROUTINE interv_print_result
125END PROGRAM grid_transform_test
Definitions of constants and functions for working with missing values.