diff --git a/tests/orog/CMakeLists.txt b/tests/orog/CMakeLists.txt index 6b709dce8..4fe257e9e 100644 --- a/tests/orog/CMakeLists.txt +++ b/tests/orog/CMakeLists.txt @@ -8,7 +8,12 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-0 -fdefault-real-8") endif() -#include_directories(${PROJECT_SOURCE_DIR}) +# Copy necessary test files from the source data directory to the +# build data directory. + +# Note, the "read_global_mask" routine expects the filename "landcover.umd.30s.nc". +execute_process( COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_CURRENT_SOURCE_DIR}/data/landcover.umd.lowres.nc ${CMAKE_CURRENT_BINARY_DIR}/landcover.umd.30s.nc) add_executable(ftst_ll2xyz ftst_ll2xyz.F90) add_test(NAME orog-ftst_ll2xyz COMMAND ftst_ll2xyz) @@ -57,3 +62,7 @@ target_link_libraries(ftst_get_xnsum3 orog_lib) add_executable(ftst_rm_isolated_pts ftst_rm_isolated_pts.F90) add_test(NAME orog-ftst_rm_isolated_pts COMMAND ftst_rm_isolated_pts) target_link_libraries(ftst_rm_isolated_pts orog_lib) + +add_executable(ftst_read_global_mask ftst_read_global_mask.F90) +add_test(NAME orog-ftst_read_global_mask COMMAND ftst_read_global_mask) +target_link_libraries(ftst_read_global_mask orog_lib) diff --git a/tests/orog/data/landcover.umd.lowres.nc b/tests/orog/data/landcover.umd.lowres.nc new file mode 100644 index 000000000..5652f438f Binary files /dev/null and b/tests/orog/data/landcover.umd.lowres.nc differ diff --git a/tests/orog/ftst_read_global_mask.F90 b/tests/orog/ftst_read_global_mask.F90 new file mode 100644 index 000000000..9a4a67229 --- /dev/null +++ b/tests/orog/ftst_read_global_mask.F90 @@ -0,0 +1,36 @@ + program read_gbl_mask + +! Test routine "read_global_mask" using a reduced-size +! version (6 x 3 vs 43200 x 21600) of the umd land mask file. + + use io_utils, only : read_global_mask + + implicit none + + integer, parameter :: im=6 + integer, parameter :: jm=3 + + integer :: i, j + + integer(kind=1) :: mask(im,jm) + integer(kind=1) :: mask_expected(im,jm) + +! Note the routine flips the i and j directions. + data mask_expected /1,1,1,0,0,1, & + 1,1,1,0,0,0, & + 1,1,1,0,0,0/ + + print*,"- Begin test of read_global_mask" + + call read_global_mask(im, jm, mask) + + do j = 1, jm + do i = 1, im + if (mask(i,j) /= mask_expected(i,j)) stop 3 + enddo + enddo + + print*,"OK" + print*,"SUCCSSS" + + end program read_gbl_mask