source: NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfutils.F90 @ 11844

Last change on this file since 11844 was 11844, checked in by mathiot, 20 months ago

rm useless lbclnk + fix reproducibility WED025 + add isf debug option

File size: 4.0 KB
Line 
1MODULE isfutils
2   !!======================================================================
3   !!                       ***  MODULE  isfutils  ***
4   !! istutils module : miscelenious useful routines
5   !!======================================================================
6   !! History :  4.1  !  2019-09  (P. Mathiot) original code
7   !!----------------------------------------------------------------------
8
9   !!----------------------------------------------------------------------
10   !!   isfutils       : - read_2dcstdta to read a constant input file with iom_get
11   !!                    - debug to print array sum, min, max in ocean.output
12   !!----------------------------------------------------------------------
13
14   USE iom
15   USE lib_fortran
16   USE lib_mpp
17
18   IMPLICIT NONE
19
20   PRIVATE
21
22   INTERFACE debug
23      MODULE PROCEDURE debug2d, debug3d
24   END INTERFACE debug
25
26   PUBLIC read_2dcstdta, debug
27
28CONTAINS
29
30   SUBROUTINE read_2dcstdta(cdfile, cdvar, pvar)
31      !!--------------------------------------------------------------------
32      !!                  ***  ROUTINE read_2dcstdta  ***
33      !!
34      !! ** Purpose : read input file
35      !!
36      !!--------------------------------------------------------------------
37      !!-------------------------- OUT -------------------------------------
38      REAL(wp), DIMENSION(jpi,jpj), INTENT(  out) :: pvar          ! output variable
39      !!-------------------------- IN  -------------------------------------
40      CHARACTER(len=256)          , INTENT(in   ) :: cdfile   ! input file name
41      CHARACTER(len=34)           , INTENT(in   ) :: cdvar    ! variable name
42      !!--------------------------------------------------------------------
43      INTEGER :: inum
44      !!--------------------------------------------------------------------
45
46      CALL iom_open( TRIM(cdfile), inum )
47      CALL iom_get( inum, jpdom_data, TRIM(cdvar), pvar)
48      CALL iom_close(inum)
49
50   END SUBROUTINE read_2dcstdta
51
52   SUBROUTINE debug2d(cdtxt,pvar)
53      !!--------------------------------------------------------------------
54      !!                  ***  ROUTINE isf_debug2d  ***
55      !!
56      !! ** Purpose : add debug print
57      !!
58      !!--------------------------------------------------------------------
59      !!-------------------------- OUT -------------------------------------
60      !!-------------------------- IN  -------------------------------------
61      CHARACTER(LEN=256)          , INTENT(in   ) :: cdtxt
62      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) :: pvar
63      !!--------------------------------------------------------------------
64      REAL(wp) :: zmin, zmax, zsum
65      !!--------------------------------------------------------------------
66      !
67      zsum = glob_sum( 'debug', pvar(:,:) )
68      zmin = glob_min( 'debug', pvar(:,:) )
69      zmax = glob_max( 'debug', pvar(:,:) )
70      !
71      IF (lwp) WRITE(numout,*) TRIM(cdtxt),' (min, max, sum) : ',zmin, zmax, zsum
72      !
73      CALL FLUSH(numout)
74      !
75   END SUBROUTINE debug2d
76
77   SUBROUTINE debug3d(cdtxt,pvar)
78      !!--------------------------------------------------------------------
79      !!                  ***  ROUTINE isf_debug3d  ***
80      !!
81      !! ** Purpose : add debug print
82      !!
83      !!--------------------------------------------------------------------
84      !!-------------------------- OUT -------------------------------------
85      !!-------------------------- IN  -------------------------------------
86      CHARACTER(LEN=256)              , INTENT(in   ) :: cdtxt
87      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) :: pvar
88      !!--------------------------------------------------------------------
89      REAL(wp) :: zmin, zmax, zsum
90      !!--------------------------------------------------------------------
91      !
92      zsum = glob_sum( 'debug', pvar(:,:,:) )
93      zmin = glob_min( 'debug', pvar(:,:,:) )
94      zmax = glob_max( 'debug', pvar(:,:,:) )
95      !
96      IF (lwp) WRITE(numout,*) TRIM(cdtxt),' (min, max, sum) : ',zmin, zmax, zsum
97      !
98      CALL FLUSH(numout)
99      !
100   END SUBROUTINE debug3d
101
102END MODULE isfutils
103
Note: See TracBrowser for help on using the repository browser.