Back to home page

darwin3

 
 

    


File indexing completed on 2025-09-13 12:07:40 UTC

view on githubraw file Latest commit 11d365ac on 2025-06-05 16:41:12 UTC
8fbfd1f382 Oliv*0001 #include "DARWIN_OPTIONS.h"
                0002 
                0003 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0004 CBOP
                0005 C     !ROUTINE: DARWIN_MONITOR
                0006 
                0007 C     !INTERFACE:
                0008       SUBROUTINE DARWIN_MONITOR(
                0009      I               myTime, myIter, myThid )
                0010 
                0011 C     !DESCRIPTION:
                0012 C     Print some statistics about input forcing fields.
                0013 
                0014 C     !USES:
                0015       IMPLICIT NONE
                0016 #include "SIZE.h"
                0017 #include "EEPARAMS.h"
                0018 #include "PARAMS.h"
                0019 #include "GRID.h"
                0020 #include "EXF_PARAM.h"
                0021 #include "DARWIN_SIZE.h"
                0022 #include "DARWIN_EXF_FIELDS.h"
                0023 #ifdef ALLOW_MONITOR
                0024 # include "MONITOR.h"
                0025 #endif
                0026 #ifdef ALLOW_MNC
                0027 # include "MNC_PARAMS.h"
                0028 #endif
                0029 
                0030 C     !INPUT PARAMETERS:
                0031       _RL myTime
                0032       INTEGER myIter
                0033       INTEGER myThid
                0034 CEOP
                0035 
                0036 #ifdef ALLOW_MONITOR
                0037 
                0038 C     === Functions ====
                0039       LOGICAL  DIFFERENT_MULTIPLE
                0040       EXTERNAL DIFFERENT_MULTIPLE
                0041       LOGICAL  MASTER_CPU_IO
                0042       EXTERNAL MASTER_CPU_IO
                0043 
                0044 C     == Local variables ==
                0045       _RL dummyRL(6)
                0046       CHARACTER*(MAX_LEN_MBUF) msgBuf
                0047       CHARACTER*(MAX_LEN_MBUF) suff
                0048       INTEGER l
                0049 #ifdef ALLOW_MNC
                0050       INTEGER k
                0051 #endif
                0052       LOGICAL computed
                0053 
                0054 #ifdef ALLOW_BULKFORMULAE
                0055       computed = .TRUE.
                0056 #else
                0057       computed = .FALSE.
                0058 #endif
                0059 
                0060       IF ( DIFFERENT_MULTIPLE(exf_monFreq,myTime,deltaTClock)
                0061      &   ) THEN
                0062 
                0063         IF ( MASTER_CPU_IO(myThid) ) THEN
                0064 C--   only the master thread is allowed to switch On/Off mon_write_stdout
                0065 C     & mon_write_mnc (since it is the only thread that uses those flags):
                0066 
                0067           IF (monitor_stdio) THEN
                0068             mon_write_stdout = .TRUE.
                0069           ELSE
                0070             mon_write_stdout = .FALSE.
                0071           ENDIF
                0072           mon_write_mnc = .FALSE.
                0073 #ifdef ALLOW_MNC
                0074           IF (useMNC .AND. monitor_mnc) THEN
                0075             DO k = 1,MAX_LEN_MBUF
                0076               mon_fname(k:k) = ' '
                0077             ENDDO
                0078             mon_fname(1:11) = 'monitor_darwin'
                0079             CALL MNC_CW_APPEND_VNAME(
                0080      &           'T', '-_-_--__-__t', 0,0, myThid)
                0081             CALL MNC_CW_SET_UDIM(mon_fname, -1, myThid)
                0082             CALL MNC_CW_RL_W_S(
                0083      &          'D',mon_fname,1,1,'T', myTime, myThid)
                0084             CALL MNC_CW_SET_UDIM(mon_fname, 0, myThid)
                0085             mon_write_mnc = .TRUE.
                0086           ENDIF
                0087 #endif /* ALLOW_MNC */
                0088 
                0089           IF ( mon_write_stdout ) THEN
                0090             WRITE(msgBuf,'(2A)') '// ===========================',
                0091      &           '============================'
                0092             CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
                0093             WRITE(msgBuf,'(A)') '// Begin MONITOR DARWIN statistics'
                0094             CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
                0095             WRITE(msgBuf,'(2A)') '// ===========================',
                0096      &           '============================'
                0097             CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
                0098           ENDIF
                0099 
                0100 C--   endif master cpu io
                0101         ENDIF
                0102 
                0103         CALL MON_SET_PREF('darwin_',myThid)
                0104         CALL MON_OUT_I ('tsnumber', myIter,mon_string_none,myThid)
                0105         CALL MON_OUT_RL('time_sec', myTime,mon_string_none,myThid)
                0106 
                0107 C       Print some statistics about input forcing fields
                0108 
                0109         CALL MON_WRITESTATS_RL( 1, surfPAR, 'surfPAR',
                0110      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0111 
                0112         CALL MON_WRITESTATS_RL( 1, inputFe, 'inputFe',
                0113      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0114 
                0115         CALL MON_WRITESTATS_RL( 1, iceFrac, 'iceFrac',
                0116      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0117 
                0118         CALL MON_WRITESTATS_RL( 1, windSpeed, 'windSpeed',
                0119      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0120 
                0121         CALL MON_WRITESTATS_RL( 1, atmospCO2, 'atmospCO2',
                0122      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
e79020cc6e Oliv*0123 
6ed0cf4850 Oliv*0124         CALL MON_WRITESTATS_RL( 1, ventHe3, 'ventHe3',
                0125      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0126 
e79020cc6e Oliv*0127         CALL MON_WRITESTATS_RL( 1, DOCrunoff, 'DOCrunoff',
                0128      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0129 
                0130         CALL MON_WRITESTATS_RL( 1, DONrunoff, 'DONrunoff',
                0131      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0132 
                0133         CALL MON_WRITESTATS_RL( 1, DOPrunoff, 'DOPrunoff',
                0134      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0135 
                0136         CALL MON_WRITESTATS_RL( 1, DINrunoff, 'DINrunoff',
                0137      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0138 
11d365acff Oliv*0139         CALL MON_WRITESTATS_RL( 1, NO3runoff, 'NO3runoff',
                0140      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0141 
                0142         CALL MON_WRITESTATS_RL( 1, NO2runoff, 'NO2runoff',
                0143      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0144 
                0145         CALL MON_WRITESTATS_RL( 1, NH4runoff, 'NH4runoff',
                0146      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0147 
e79020cc6e Oliv*0148         CALL MON_WRITESTATS_RL( 1, IPrunoff, 'IPrunoff',
                0149      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0150 
                0151         CALL MON_WRITESTATS_RL( 1, DSirunoff, 'DSirunoff',
                0152      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0153 
                0154         CALL MON_WRITESTATS_RL( 1, POCrunoff, 'POCrunoff',
                0155      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0156 
                0157         CALL MON_WRITESTATS_RL( 1, POPrunoff, 'POPrunoff',
                0158      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0159 
                0160         CALL MON_WRITESTATS_RL( 1, PONrunoff, 'PONrunoff',
                0161      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
                0162 
                0163         CALL MON_WRITESTATS_RL( 1, DICrunoff, 'DICrunoff',
                0164      &           maskInC, maskInC, rA , drF, dummyRL, myThid )
8fbfd1f382 Oliv*0165 
                0166         IF ( MASTER_CPU_IO(myThid) ) THEN
                0167 C--   only the master thread is allowed to switch On/Off mon_write_stdout
                0168 C     & mon_write_mnc (since it is the only thread that uses those flags):
                0169 
                0170           IF ( mon_write_stdout ) THEN
                0171             WRITE(msgBuf,'(2A)') '// ===========================',
                0172      &           '============================'
                0173             CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
                0174             WRITE(msgBuf,'(A)') '// End MONITOR DARWIN statistics'
                0175             CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
                0176             WRITE(msgBuf,'(2A)') '// ===========================',
                0177      &           '============================'
                0178             CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
                0179           ENDIF
                0180 
                0181           mon_write_stdout = .FALSE.
                0182           mon_write_mnc    = .FALSE.
                0183 
                0184 C--   endif master cpu io
                0185         ENDIF
                0186 
                0187 C     endif different multiple
                0188       ENDIF
                0189 
                0190 #endif /* ALLOW_MONITOR */
                0191 
                0192       RETURN
                0193       END