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 , ONLY: iom_open, iom_get, iom_close, jpdom_data ! read input file USE lib_fortran , ONLY: glob_sum, glob_min, glob_max ! compute global value USE par_oce , ONLY: jpi,jpj,jpk ! domain size USE in_out_manager, ONLY: wp, lwp, numout ! miscelenious 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 ! input file name CHARACTER(len=34) , INTENT(in ) :: cdvar ! variable name !!-------------------------------------------------------------------- INTEGER :: inum !!-------------------------------------------------------------------- CALL iom_open( TRIM(cdfile), inum ) CALL iom_get( inum, jpdom_data, TRIM(cdvar), pvar) CALL iom_close(inum) END SUBROUTINE read_2dcstdta SUBROUTINE debug2d(cdtxt,pvar) !!-------------------------------------------------------------------- !! *** ROUTINE isf_debug2d *** !! !! ** Purpose : add debug print for 2d variables !! !!-------------------------- 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 = glob_min( 'debug', pvar(:,:) ) zmax = glob_max( 'debug', pvar(:,:) ) ! IF (lwp) WRITE(numout,*) TRIM(cdtxt),' (min, max, sum) : ',zmin, zmax, zsum ! CALL FLUSH(numout) ! END SUBROUTINE debug2d SUBROUTINE debug3d(cdtxt,pvar) !!-------------------------------------------------------------------- !! *** ROUTINE isf_debug3d *** !! !! ** Purpose : add debug print for 3d variables !! !!-------------------------- 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 = glob_min( 'debug', pvar(:,:,:) ) zmax = glob_max( 'debug', pvar(:,:,:) ) ! IF (lwp) WRITE(numout,*) TRIM(cdtxt),' (min, max, sum) : ',zmin, zmax, zsum ! CALL FLUSH(numout) ! END SUBROUTINE debug3d END MODULE isfutils