Back to home page

MITgcm

 
 

    


File indexing completed on 2023-08-04 05:10:48 UTC

view on githubraw file Latest commit 45315406 on 2023-08-03 16:50:12 UTC
fb247706a7 Patr*0001 #include "SEAICE_OPTIONS.h"
772b2ed80e Gael*0002 #ifdef ALLOW_AUTODIFF
                0003 # include "AUTODIFF_OPTIONS.h"
                0004 #endif
fb247706a7 Patr*0005 
                0006 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0007 CBOP
                0008 C     !ROUTINE: ADSEAICE_MONITOR
                0009 
                0010 C     !INTERFACE:
                0011       SUBROUTINE ADSEAICE_MONITOR(
                0012      I                  myTime, myIter, myThid )
                0013 
                0014 C     !DESCRIPTION:
                0015 C     Print some statistics about input forcing fields.
                0016 
                0017 C     !USES:
                0018       IMPLICIT NONE
                0019 #include "SIZE.h"
                0020 #include "EEPARAMS.h"
                0021 #include "PARAMS.h"
                0022 #include "GRID.h"
                0023 #include "SEAICE_SIZE.h"
                0024 #include "SEAICE_PARAMS.h"
                0025 #include "SEAICE.h"
                0026 #include "SEAICE_TRACER.h"
                0027 #ifdef ALLOW_MONITOR
                0028 # include "MONITOR.h"
                0029 #endif
                0030 #ifdef ALLOW_AUTODIFF
                0031 # ifdef ALLOW_AUTODIFF_MONITOR
                0032 #  include "adcommon.h"
                0033 # endif
                0034 #endif
                0035 
                0036 C     !INPUT PARAMETERS:
                0037       INTEGER myIter
                0038       _RL myTime
                0039       INTEGER myThid
                0040 CEOP
                0041 
14275b5e70 Patr*0042 #if ( defined (ALLOW_MONITOR) && defined (ALLOW_AUTODIFF_MONITOR) )
                0043 
fb247706a7 Patr*0044 C     === Functions ====
                0045       LOGICAL  DIFFERENT_MULTIPLE
                0046       EXTERNAL DIFFERENT_MULTIPLE
                0047       LOGICAL  MASTER_CPU_IO
                0048       EXTERNAL MASTER_CPU_IO
                0049 
                0050 C     == Local variables ==
                0051       CHARACTER*(MAX_LEN_MBUF) msgBuf
e54fe3e1f9 Gael*0052 #ifdef ALLOW_SITRACER
fb247706a7 Patr*0053       INTEGER iTracer
                0054       CHARACTER*(MAX_LEN_MBUF) suff
                0055 #endif
                0056 #ifdef ALLOW_MNC
                0057       INTEGER i
                0058 #endif /* ALLOW_MNC */
                0059       _RL dummyRL(6)
                0060 
                0061       IF ( DIFFERENT_MULTIPLE(adjmonitorFreq,myTime,deltaTClock)
                0062      &   ) THEN
                0063 
                0064         IF ( MASTER_CPU_IO(myThid) ) THEN
                0065 C--   only the master thread is allowed to switch On/Off mon_write_stdout
                0066 C     & mon_write_mnc (since it is the only thread that uses those flags):
                0067 
                0068           IF (SEAICE_mon_stdio) THEN
                0069             mon_write_stdout = .TRUE.
                0070           ELSE
                0071             mon_write_stdout = .FALSE.
                0072           ENDIF
                0073           mon_write_mnc = .FALSE.
                0074 #ifdef ALLOW_MNC
                0075           IF (useMNC .AND. SEAICE_mon_mnc) THEN
                0076             DO i = 1,MAX_LEN_MBUF
                0077               mon_fname(i:i) = ' '
                0078             ENDDO
                0079             mon_fname(1:14) = 'admonitor_seaice'
                0080             CALL MNC_CW_APPEND_VNAME(
                0081      &           'T', '-_-_--__-__t', 0,0, myThid)
                0082             CALL MNC_CW_SET_UDIM(mon_fname, -1, myThid)
                0083             CALL MNC_CW_RL_W_S(
                0084      &          'D',mon_fname,1,1,'T', myTime, myThid)
                0085             CALL MNC_CW_SET_UDIM(mon_fname, 0, myThid)
                0086             mon_write_mnc = .TRUE.
                0087           ENDIF
                0088 #endif /* ALLOW_MNC */
                0089 
                0090           IF ( mon_write_stdout ) THEN
                0091             WRITE(msgBuf,'(2A)') '// ===========================',
                0092      &             '============================'
                0093             CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
                0094             WRITE(msgBuf,'(A)') '// Begin AD_MONITOR SEAICE statistics'
                0095             CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
                0096             WRITE(msgBuf,'(2A)') '// ===========================',
                0097      &             '============================'
                0098             CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
                0099           ENDIF
                0100 
                0101 C--   endif master cpu io
                0102         ENDIF
                0103 
                0104         CALL MON_SET_PREF('ad_seaice',myThid)
                0105         CALL MON_OUT_I ('_tsnumber', myIter,mon_string_none,myThid)
                0106         CALL MON_OUT_RL('_time_sec', myTime,mon_string_none,myThid)
                0107 
                0108 C       Print some statistics about input forcing fields
                0109 #ifdef SEAICE_CGRID
                0110         CALL MON_WRITESTATS_RL( 1, ADUICE, '_aduice',
                0111      &           maskInW, maskInW, rAw, drF, dummyRL, myThid )
                0112         CALL MON_WRITESTATS_RL( 1, ADVICE, '_advice',
                0113      &           maskInS, maskInS, rAs, drF, dummyRL, myThid )
45315406aa Mart*0114 #endif
                0115 #ifdef SEAICE_BGRID_DYNAMICS
                0116         CALL MON_WRITESTATS_RL( 1, ADUICE, '_aduice',
                0117      &                   UVM, UVM, rAz, drF, dummyRL, myThid )
fb247706a7 Patr*0118         CALL MON_WRITESTATS_RL( 1, ADVICE, '_advice',
                0119      &                   UVM, UVM, rAz, drF, dummyRL, myThid )
                0120 #endif
                0121         CALL MON_WRITESTATS_RL( 1, ADAREA, '_adarea',
                0122      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0123         CALL MON_WRITESTATS_RL( 1, ADHEFF, '_adheff',
                0124      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0125         CALL MON_WRITESTATS_RL( 1, ADHSNOW,'_adhsnow',
                0126      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0127 #ifdef SEAICE_VARIABLE_SALINITY
                0128         CALL MON_WRITESTATS_RL( 1, ADHSALT,'_adhsalt',
                0129      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0130 #endif /* SEAICE_VARIABLE_SALINITY */
                0131 
                0132         IF ( MASTER_CPU_IO(myThid) ) THEN
                0133 C--   only the master thread is allowed to switch On/Off mon_write_stdout
                0134 C     & mon_write_mnc (since it is the only thread that uses those flags):
                0135 
                0136           IF ( mon_write_stdout ) THEN
                0137             WRITE(msgBuf,'(2A)') '// ===========================',
                0138      &           '============================'
                0139             CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
                0140             WRITE(msgBuf,'(A)') '// End AD_MONITOR SEAICE statistics'
                0141             CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
                0142             WRITE(msgBuf,'(2A)') '// ===========================',
                0143      &           '============================'
                0144             CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
                0145           ENDIF
                0146 
                0147           mon_write_stdout = .FALSE.
                0148           mon_write_mnc    = .FALSE.
                0149 
                0150 C--   endif master cpu io
                0151         ENDIF
                0152 
                0153 C     endif different multiple
                0154       ENDIF
                0155 
                0156 #endif /* ALLOW_MONITOR */
                0157 
                0158       RETURN
                0159       END