Back to home page

darwin3

 
 

    


File indexing completed on 2024-12-17 18:38:02 UTC

view on githubraw file Latest commit b55e95f1 on 2018-09-19 15:37:37 UTC
b55e95f1ff Oliv*0001 #include "RADTRANS_OPTIONS.h"
                0002 
                0003 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0004 CBOP
                0005 C     !ROUTINE: RADTRANS_MONITOR
                0006 
                0007 C     !INTERFACE:
                0008       SUBROUTINE RADTRANS_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 "RADTRANS_SIZE.h"
                0022 #include "RADTRANS_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:16) = 'monitor_radtrans'
                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 RADTRANS 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('RT_',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         DO l = 1, nlam
                0109           WRITE(suff,'(A5,I3.3)') 'Ed', l
                0110           CALL MON_WRITESTATS_RL( 1, RT_Ed_sfc(1-OLx,1-OLy,1,1,l), suff,
                0111      &             maskInC, maskInC, rA , drF, dummyRL, myThid )
                0112         ENDDO
                0113         DO l = 1, nlam
                0114           WRITE(suff,'(A5,I3.3)') 'Es', l
                0115           CALL MON_WRITESTATS_RL( 1, RT_Es_sfc(1-OLx,1-OLy,1,1,l), suff,
                0116      &             maskInC, maskInC, rA , drF, dummyRL, myThid )
                0117         ENDDO
                0118 
                0119         IF ( MASTER_CPU_IO(myThid) ) THEN
                0120 C--   only the master thread is allowed to switch On/Off mon_write_stdout
                0121 C     & mon_write_mnc (since it is the only thread that uses those flags):
                0122 
                0123           IF ( mon_write_stdout ) THEN
                0124             WRITE(msgBuf,'(2A)') '// ===========================',
                0125      &           '============================'
                0126             CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
                0127             WRITE(msgBuf,'(A)') '// End MONITOR RADTRANS statistics'
                0128             CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
                0129             WRITE(msgBuf,'(2A)') '// ===========================',
                0130      &           '============================'
                0131             CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
                0132           ENDIF
                0133 
                0134           mon_write_stdout = .FALSE.
                0135           mon_write_mnc    = .FALSE.
                0136 
                0137 C--   endif master cpu io
                0138         ENDIF
                0139 
                0140 C     endif different multiple
                0141       ENDIF
                0142 
                0143 #endif /* ALLOW_MONITOR */
                0144 
                0145       RETURN
                0146       END