New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
isfutils.F90 in NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF – NEMO

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

Last change on this file since 11852 was 11852, checked in by mathiot, 4 years ago

ENHANCE-02_ISF_nemo: fix WED025 restartability, finish removing useless USE, remove useless lbc_lnk

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