File indexing completed on 2021-09-30 05:16:07 UTC
view on githubraw file Latest commit 872ff0f0 on 2021-09-09 19:00:21 UTC
6548dcf207 Patr*0001 #include "MONITOR_OPTIONS.h"
eded583e53 Jean*0002 #ifdef ALLOW_AUTODIFF
0003 # include "AUTODIFF_OPTIONS.h"
0004 #endif
0005 #ifdef ALLOW_CTRL
0006 # include "CTRL_OPTIONS.h"
0007 #endif
967746e1a9 Patr*0008 #include "AD_CONFIG.h"
6548dcf207 Patr*0009
0010
0011
0012
0013
0014
0015 SUBROUTINE G_MONITOR(
4f6d3a8d05 Jean*0016 I myTime, myIter, myThid )
6548dcf207 Patr*0017
0018
0019
0020
0021
0022
0023 IMPLICIT NONE
0024 #include "SIZE.h"
0025 #include "EEPARAMS.h"
0026 #include "PARAMS.h"
0027 #include "GRID.h"
0028 #include "DYNVARS.h"
0029 #include "FFIELDS.h"
0030 #include "MONITOR.h"
0031 #ifdef ALLOW_MNC
0032 # include "MNC_PARAMS.h"
0033 #endif
eded583e53 Jean*0034 #ifdef ALLOW_AUTODIFF_MONITOR
0035 # include "g_common.h"
6548dcf207 Patr*0036 #endif
0037
0038
0039 _RL myTime
4f6d3a8d05 Jean*0040 INTEGER myIter
6548dcf207 Patr*0041 INTEGER myThid
0042
0043
0044 #if (defined (ALLOW_TANGENTLINEAR_RUN) || defined (ALLOW_ADMTLM))
eded583e53 Jean*0045 #ifdef ALLOW_AUTODIFF_MONITOR
6548dcf207 Patr*0046
0047
0048 LOGICAL DIFFERENT_MULTIPLE
0049 EXTERNAL DIFFERENT_MULTIPLE
0050 LOGICAL MASTER_CPU_IO
0051 EXTERNAL MASTER_CPU_IO
0052
0053
0054 CHARACTER*(MAX_LEN_MBUF) msgBuf
872ff0f059 Jean*0055
b082722712 Jean*0056 _RL dummyRL(6)
0057 INTEGER k
6548dcf207 Patr*0058
872ff0f059 Jean*0059 IF ( DIFFERENT_MULTIPLE(adjMonitorFreq,myTime,deltaTClock) ) THEN
6548dcf207 Patr*0060
0061 IF ( MASTER_CPU_IO(myThid) ) THEN
0062
3daafce20b Jean*0063
6548dcf207 Patr*0064
0065 IF (monitor_stdio) THEN
0066 mon_write_stdout = .TRUE.
0067 ELSE
0068 mon_write_stdout = .FALSE.
0069 ENDIF
0070 mon_write_mnc = .FALSE.
0071 #ifdef ALLOW_MNC
0072 IF (useMNC .AND. monitor_mnc) THEN
b082722712 Jean*0073 DO k = 1,MAX_LEN_MBUF
0074 mon_fname(k:k) = ' '
6548dcf207 Patr*0075 ENDDO
b082722712 Jean*0076 mon_fname(1:9) = 'g_monitor'
6548dcf207 Patr*0077 CALL MNC_CW_APPEND_VNAME(
0078 & 'T', '-_-_--__-__t', 0,0, myThid)
0079 CALL MNC_CW_SET_UDIM(mon_fname, -1, myThid)
0080 CALL MNC_CW_RL_W_S(
0081 & 'D',mon_fname,1,1,'T', myTime, myThid)
0082 CALL MNC_CW_SET_UDIM(mon_fname, 0, myThid)
0083 mon_write_mnc = .TRUE.
0084 ENDIF
0085 #endif /* ALLOW_MNC */
0086
0087
0088 IF ( mon_write_stdout ) THEN
0089 WRITE(msgBuf,'(2A)') '// ==========================',
0090 & '============================='
0091 CALL PRINT_MESSAGE( msgBuf, mon_ioUnit, SQUEEZE_RIGHT , 1)
0092 WRITE(msgBuf,'(A)')
872ff0f059 Jean*0093 & '// Begin TL_MONITOR dynamic field statistics'
6548dcf207 Patr*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
0101 ENDIF
0102
0103
0104 CALL MON_SET_PREF('g__time',myThid)
0105 CALL MON_OUT_I( '_tsnumber', myIter,mon_string_none,myThid)
0106 CALL MON_OUT_RL('_secondsf', myTime,mon_string_none,myThid)
0107
0108
0109 CALL MON_SET_PREF('g__dynstat',myThid)
b082722712 Jean*0110
0111 CALL MON_WRITESTATS_RL( 1, g_etaN, '_g_eta',
0112 & maskInC, maskInC, rA , drF, dummyRL, myThid )
0113 CALL MON_WRITESTATS_RL( Nr, g_uVel, '_g_uvel',
0114 & hFacW, maskInW, rAw, drF, dummyRL, myThid )
0115 CALL MON_WRITESTATS_RL( Nr, g_vVel, '_g_vvel',
0116 & hFacS, maskInS, rAs, drF, dummyRL, myThid )
0117 CALL MON_WRITESTATS_RL( Nr, g_wVel, '_g_wvel',
0118 & maskC, maskInC, rA , drC, dummyRL, myThid )
0119 CALL MON_WRITESTATS_RL( Nr, g_theta,'_g_theta',
0120 & hFacC, maskInC, rA , drF, dummyRL, myThid )
0121 CALL MON_WRITESTATS_RL( Nr, g_salt, '_g_salt',
0122 & hFacC, maskInC, rA , drF, dummyRL, myThid )
0123 IF ( nSx.EQ.1 .AND. nSy.EQ.1 ) THEN
0124
0125 k = 1
0126 IF ( usingPCoords ) k = Nr
0127 CALL MON_WRITESTATS_RL( 1,g_theta(1-OLx,1-OLy,k,1,1),'_g_sst',
0128 & maskInC, maskInC, rA , drF, dummyRL, myThid )
0129 CALL MON_WRITESTATS_RL( 1, g_salt(1-OLx,1-OLy,k,1,1),'_g_sss',
0130 & maskInC, maskInC, rA , drF, dummyRL, myThid )
0131 ENDIF
6548dcf207 Patr*0132
0133
872ff0f059 Jean*0134 IF ( monitorSelect.GE.4 ) THEN
b082722712 Jean*0135 CALL MON_SET_PREF('g__forcing',myThid)
0136 CALL MON_WRITESTATS_RS( 1, g_Qnet, '_g_qnet',
0137 & maskInC, maskInC, rA , drF, dummyRL, myThid )
6548dcf207 Patr*0138 #ifdef SHORTWAVE_HEATING
b082722712 Jean*0139 CALL MON_WRITESTATS_RS( 1, g_Qsw , '_g_qsw',
0140 & maskInC, maskInC, rA , drF, dummyRL, myThid )
6548dcf207 Patr*0141 #endif
b082722712 Jean*0142 CALL MON_WRITESTATS_RS( 1, g_EmPmR,'_g_empmr',
0143 & maskInC, maskInC, rA , drF, dummyRL, myThid )
0144 CALL MON_WRITESTATS_RS( 1, g_fu , '_g_fu',
0145 & maskInW, maskInW, rAw, drF, dummyRL, myThid )
0146 CALL MON_WRITESTATS_RS( 1, g_fv , '_g_fv',
0147 & maskInS, maskInS, rAs, drF, dummyRL, myThid )
872ff0f059 Jean*0148 ENDIF
6548dcf207 Patr*0149
0150
872ff0f059 Jean*0151
0152
0153
0154
0155
0156
0157
6548dcf207 Patr*0158
0159
0160 IF ( MASTER_CPU_IO(myThid) ) THEN
0161
3daafce20b Jean*0162
6548dcf207 Patr*0163
0164 IF ( mon_write_stdout ) THEN
0165 WRITE(msgBuf,'(2A)') '// ==========================',
0166 & '============================='
0167 CALL PRINT_MESSAGE( msgBuf, mon_ioUnit, SQUEEZE_RIGHT , 1)
0168 WRITE(msgBuf,'(A)')
872ff0f059 Jean*0169 & '// End TL_MONITOR dynamic field statistics'
6548dcf207 Patr*0170 CALL PRINT_MESSAGE( msgBuf, mon_ioUnit, SQUEEZE_RIGHT , 1)
0171 WRITE(msgBuf,'(2A)') '// ==========================',
0172 & '============================='
0173 CALL PRINT_MESSAGE( msgBuf, mon_ioUnit, SQUEEZE_RIGHT , 1)
0174 ENDIF
0175
0176 mon_write_stdout = .FALSE.
0177 mon_write_mnc = .FALSE.
0178
0179
0180 ENDIF
0181
0182
0183 ENDIF
0184
0185 #endif /* ALLOW_AUTODIFF_MONITOR */
0186 #endif /* ALLOW_TANGENTLINEAR_RUN */
0187
0188 RETURN
0189 END