MODULE isfutils !!====================================================================== !! *** MODULE isfutils *** !! istutils module : miscelenious useful routines !!====================================================================== !! History : 4.1 ! 2019-09 (P. Mathiot) original code !!---------------------------------------------------------------------- !!---------------------------------------------------------------------- !! isfutils : - read_2dcstdta to read a constant input file with iom_get !! - debug to print array sum, min, max in ocean.output !!---------------------------------------------------------------------- USE iom USE lib_fortran USE lib_mpp IMPLICIT NONE PRIVATE INTERFACE debug MODULE PROCEDURE debug2d, debug3d END INTERFACE debug PUBLIC read_2dcstdta, debug CONTAINS SUBROUTINE read_2dcstdta(cdfile, cdvar, pvar) !!-------------------------------------------------------------------- !! *** ROUTINE read_2dcstdta *** !! !! ** Purpose : read input file !! !!-------------------------------------------------------------------- !!-------------------------- OUT ------------------------------------- REAL(wp), DIMENSION(jpi,jpj), INTENT( out) :: pvar ! output variable !!-------------------------- IN ------------------------------------- CHARACTER(len=256) , INTENT(in ) :: cdfile, cdvar ! input file name and variable name !!-------------------------------------------------------------------- INTEGER :: inum !!-------------------------------------------------------------------- CALL iom_open( cdfile, inum ) CALL iom_get( inum, jpdom_data, cdvar, pvar, 1) CALL iom_close(inum) END SUBROUTINE read_2dcstdta SUBROUTINE debug2d(cdtxt,pvar) !!-------------------------------------------------------------------- !! *** ROUTINE isf_debug2d *** !! !! ** Purpose : add debug print !! !!-------------------------------------------------------------------- !!-------------------------- OUT ------------------------------------- !!-------------------------- IN ------------------------------------- CHARACTER(LEN=256) , INTENT(in ) :: cdtxt REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: pvar !!-------------------------------------------------------------------- REAL(wp) :: zmin, zmax, zsum !!-------------------------------------------------------------------- ! zsum = glob_sum( 'debug', pvar(:,:) ) zmin = MINVAL( pvar(:,:) ) ; CALL mpp_min( 'debug', zmin ) ! min over the global domain zmax = MAXVAL( pvar(:,:) ) ; CALL mpp_max( 'debug', zmax ) ! max over the global domain ! WRITE(numout,*) TRIM(cdtxt),' (min, max, sum) : ',zmin, zmax, zsum ! FLUSH(numout) END SUBROUTINE debug2d SUBROUTINE debug3d(cdtxt,pvar) !!-------------------------------------------------------------------- !! *** ROUTINE isf_debug3d *** !! !! ** Purpose : add debug print !! !!-------------------------------------------------------------------- !!-------------------------- OUT ------------------------------------- !!-------------------------- IN ------------------------------------- CHARACTER(LEN=256) , INTENT(in ) :: cdtxt REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in ) :: pvar !!-------------------------------------------------------------------- REAL(wp) :: zmin, zmax, zsum !!-------------------------------------------------------------------- ! zsum = glob_sum( 'debug', pvar(:,:) ) zmin = MINVAL( pvar(:,:) ) ; CALL mpp_min( 'debug', zmin ) ! min over the global domain zmax = MAXVAL( pvar(:,:) ) ; CALL mpp_max( 'debug', zmax ) ! max over the global domain ! WRITE(numout,*) TRIM(cdtxt),' (min, max, sum) : ',zmin, zmax, zsum ! FLUSH(numout) ! END SUBROUTINE debug3d END MODULE isfutils