File indexing completed on 2021-09-30 05:15:28 UTC
view on githubraw file Latest commit 3d063ab4 on 2021-09-07 16:04:11 UTC
fb247706a7 Patr*0001 #include "EXF_OPTIONS.h"
35fa3f16b2 An T*0002 #ifdef ALLOW_AUTODIFF
0003 # include "AUTODIFF_OPTIONS.h"
0004 #endif
fb247706a7 Patr*0005
0006
0007
0008
0009
0010
0011 SUBROUTINE ADEXF_MONITOR(
0012 I iwhen, myTime, myIter, myThid )
0013
0014
0015
0016
0017
0018 IMPLICIT NONE
0019 #include "SIZE.h"
0020 #include "EEPARAMS.h"
0021 #include "PARAMS.h"
0022 #include "GRID.h"
0023 #include "EXF_PARAM.h"
0024 #include "EXF_FIELDS.h"
0025 #ifdef ALLOW_MONITOR
0026 # include "MONITOR.h"
0027 #endif
0028 #ifdef ALLOW_MNC
0029 # include "MNC_PARAMS.h"
0030 #endif
0031 #ifdef ALLOW_AUTODIFF
0032 # ifdef ALLOW_AUTODIFF_MONITOR
0033 # include "adcommon.h"
0034 # endif
0035 #endif
0036
0037
0038 INTEGER iwhen
dbbbf73d12 Jean*0039 _RL myTime
0040 INTEGER myIter
fb247706a7 Patr*0041 INTEGER myThid
0042
0043
14275b5e70 Patr*0044 #if ( defined (ALLOW_MONITOR) && defined (ALLOW_AUTODIFF_MONITOR) )
fb247706a7 Patr*0045
0046
0047 LOGICAL DIFFERENT_MULTIPLE
0048 EXTERNAL DIFFERENT_MULTIPLE
0049 LOGICAL MASTER_CPU_IO
0050 EXTERNAL MASTER_CPU_IO
0051
0052
0053 _RL dummyRL(6)
0054 CHARACTER*(MAX_LEN_MBUF) msgBuf
0055 #ifdef ALLOW_MNC
0056 INTEGER k
0057 #endif
afd492c074 Mart*0058 LOGICAL printMonitorHeader
fb247706a7 Patr*0059
afd492c074 Mart*0060 IF ( exf_adjMonSelect .GT. 0 .AND.
0061 & DIFFERENT_MULTIPLE(exf_adjMonFreq,myTime,deltaTClock) ) THEN
fb247706a7 Patr*0062
afd492c074 Mart*0063 IF ( MASTER_CPU_IO(myThid) ) THEN
fb247706a7 Patr*0064
0065
0066
afd492c074 Mart*0067 printMonitorHeader = ( iwhen .EQ. 3 )
3d063ab48a Jean*0068 & .OR. ( iwhen .EQ. 1 .AND. exf_adjMonSelect .GE. 3 )
0069 & .OR. ( iwhen .EQ. 2 .AND. exf_adjMonSelect .GE. 2 )
afd492c074 Mart*0070
0071 IF ( printMonitorHeader ) THEN
0072
fb247706a7 Patr*0073 IF (monitor_stdio) THEN
0074 mon_write_stdout = .TRUE.
0075 ELSE
0076 mon_write_stdout = .FALSE.
0077 ENDIF
0078 mon_write_mnc = .FALSE.
0079 #ifdef ALLOW_MNC
0080 IF (useMNC .AND. monitor_mnc) THEN
0081 DO k = 1,MAX_LEN_MBUF
0082 mon_fname(k:k) = ' '
0083 ENDDO
0084 mon_fname(1:13) = 'admonitor_exf'
0085 CALL MNC_CW_APPEND_VNAME(
0086 & 'T', '-_-_--__-__t', 0,0, myThid)
0087 CALL MNC_CW_SET_UDIM(mon_fname, -1, myThid)
0088 CALL MNC_CW_RL_W_S(
0089 & 'D',mon_fname,1,1,'T', myTime, myThid)
0090 CALL MNC_CW_SET_UDIM(mon_fname, 0, myThid)
0091 mon_write_mnc = .TRUE.
0092 ENDIF
0093 #endif /* ALLOW_MNC */
0094
0095 IF ( mon_write_stdout ) THEN
0096 WRITE(msgBuf,'(2A)') '// ===========================',
0097 & '============================'
0098 CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
24da7525ba Jean*0099 WRITE(msgBuf,'(A,I2)')
fb247706a7 Patr*0100 & '// Begin AD_MONITOR EXF statistics for iwhen = ',
0101 & iwhen
0102 CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
0103 WRITE(msgBuf,'(2A)') '// ===========================',
0104 & '============================'
0105 CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
0106 ENDIF
0107
afd492c074 Mart*0108
0109 ENDIF
fb247706a7 Patr*0110
3d063ab48a Jean*0111 ENDIF
fb247706a7 Patr*0112
0113 CALL MON_SET_PREF('ad_exf',myThid)
0114 CALL MON_OUT_I ('_tsnumber', myIter,mon_string_none,myThid)
0115 CALL MON_OUT_RL('_time_sec', myTime,mon_string_none,myThid)
0116
3d063ab48a Jean*0117 IF ( iwhen .EQ. 1 .AND. exf_adjMonSelect .GE. 3 ) THEN
fb247706a7 Patr*0118
0119
0120 IF ( stressIsOnCgrid ) THEN
0121 CALL MON_WRITESTATS_RL( 1, adustress, '_adustress',
0122 & maskInW, maskInW, rAw, drF, dummyRL, myThid )
0123 CALL MON_WRITESTATS_RL( 1, advstress, '_advstress',
0124 & maskInS, maskInS, rAs, drF, dummyRL, myThid )
0125 ELSE
0126 CALL MON_WRITESTATS_RL( 1, adustress, '_adustress',
0127 & maskInC, maskInC, rA , drF, dummyRL, myThid )
0128 CALL MON_WRITESTATS_RL( 1, advstress, '_advstress',
0129 & maskInC, maskInC, rA , drF, dummyRL, myThid )
0130 ENDIF
0131 CALL MON_WRITESTATS_RL( 1, adhflux, '_adhflux',
0132 & maskInC, maskInC, rA , drF, dummyRL, myThid )
0133 CALL MON_WRITESTATS_RL( 1, adsflux, '_adsflux',
0134 & maskInC, maskInC, rA , drF, dummyRL, myThid )
3d063ab48a Jean*0135 #ifdef SHORTWAVE_HEATING
0136 CALL MON_WRITESTATS_RL( 1, adswflux, '_adswflux',
0137 & maskInC, maskInC, rA , drF, dummyRL, myThid )
0138 #endif
fb247706a7 Patr*0139 CALL MON_WRITESTATS_RL( 1, adwspeed, '_adwspeed',
0140 & maskInC, maskInC, rA , drF, dummyRL, myThid )
0141
3d063ab48a Jean*0142 ELSEIF ( iwhen .EQ. 2 .AND. exf_adjMonSelect .GE. 2 ) THEN
fb247706a7 Patr*0143
3d063ab48a Jean*0144 IF ( useAtmWind ) THEN
0145 CALL MON_WRITESTATS_RL( 1, aduwind, '_aduwind',
0146 & maskInC, maskInC, rA , drF, dummyRL, myThid )
0147 CALL MON_WRITESTATS_RL( 1, advwind, '_advwind',
0148 & maskInC, maskInC, rA , drF, dummyRL, myThid )
0149 ENDIF
fb247706a7 Patr*0150 #ifdef ALLOW_ATM_TEMP
0151 CALL MON_WRITESTATS_RL( 1, adatemp, '_adatemp',
0152 & maskInC, maskInC, rA , drF, dummyRL, myThid )
0153 CALL MON_WRITESTATS_RL( 1, adaqh, '_adaqh',
0154 & maskInC, maskInC, rA , drF, dummyRL, myThid )
0155 CALL MON_WRITESTATS_RL( 1, adprecip, '_adprecip',
0156 & maskInC, maskInC, rA , drF, dummyRL, myThid )
3d063ab48a Jean*0157 IF ( lwfluxfile.NE.' ' .OR. lwdownfile.EQ.' ' ) THEN
0158 CALL MON_WRITESTATS_RL( 1, adlwflux, '_adlwflux',
0159 & maskInC, maskInC, rA , drF, dummyRL, myThid )
0160 ENDIF
fb247706a7 Patr*0161 #endif /* ALLOW_ATM_TEMP */
3d063ab48a Jean*0162 #if defined(ALLOW_ATM_TEMP) || defined(SHORTWAVE_HEATING)
0163 IF ( swfluxfile.NE.' ' .OR. swdownfile.EQ.' ' ) THEN
0164 CALL MON_WRITESTATS_RL( 1, adswflux, '_adswflux',
fb247706a7 Patr*0165 & maskInC, maskInC, rA , drF, dummyRL, myThid )
3d063ab48a Jean*0166 ENDIF
fb247706a7 Patr*0167 #endif
0168 #ifdef ALLOW_DOWNWARD_RADIATION
3d063ab48a Jean*0169 CALL MON_WRITESTATS_RL( 1, adlwdown, '_adlwdown',
0170 & maskInC, maskInC, rA , drF, dummyRL, myThid )
fb247706a7 Patr*0171 CALL MON_WRITESTATS_RL( 1, adswdown, '_adswdown',
0172 & maskInC, maskInC, rA , drF, dummyRL, myThid )
3d063ab48a Jean*0173 #endif
0174 #ifdef ALLOW_RUNOFF
0175 CALL MON_WRITESTATS_RL( 1, adrunoff, '_adrunoff',
fb247706a7 Patr*0176 & maskInC, maskInC, rA , drF, dummyRL, myThid )
0177 #endif
0178 #ifdef ATMOSPHERIC_LOADING
0179
0180
0181 #endif
24da7525ba Jean*0182 #ifdef EXF_SEAICE_FRACTION
fb247706a7 Patr*0183
0184
0185 #endif
0186 #ifdef ALLOW_CLIMSST_RELAXATION
0187
0188
0189 #endif
0190 #ifdef ALLOW_CLIMSSS_RELAXATION
0191
0192
0193 #endif
0194 #ifdef ALLOW_CLIMSTRESS_RELAXATION
0195
0196
0197
0198
0199 #endif
0200
3d063ab48a Jean*0201 ELSEIF ( iwhen .EQ. 3 ) THEN
fb247706a7 Patr*0202
dbbbf73d12 Jean*0203 CALL MON_WRITESTATS_RS( 1, adfu, '_adfu',
fb247706a7 Patr*0204 & maskInC, maskInC, rA , drF, dummyRL, myThid )
dbbbf73d12 Jean*0205 CALL MON_WRITESTATS_RS( 1, adfv, '_adfv',
fb247706a7 Patr*0206 & maskInC, maskInC, rA , drF, dummyRL, myThid )
3d063ab48a Jean*0207 CALL MON_WRITESTATS_RS( 1, adqnet, '_adqnet',
fb247706a7 Patr*0208 & maskInC, maskInC, rA , drF, dummyRL, myThid )
3d063ab48a Jean*0209 CALL MON_WRITESTATS_RS( 1, adempmr, '_adempmr',
fb247706a7 Patr*0210 & maskInC, maskInC, rA , drF, dummyRL, myThid )
3d063ab48a Jean*0211 #ifdef SHORTWAVE_HEATING
0212 CALL MON_WRITESTATS_RS( 1, adqsw, '_adqsw',
0213 & maskInC, maskInC, rA , drF, dummyRL, myThid )
0214 #endif
fb247706a7 Patr*0215
3d063ab48a Jean*0216 ENDIF
fb247706a7 Patr*0217
3d063ab48a Jean*0218 IF ( MASTER_CPU_IO(myThid) ) THEN
fb247706a7 Patr*0219
0220
0221
afd492c074 Mart*0222 IF ( printMonitorHeader ) THEN
0223
fb247706a7 Patr*0224 IF ( mon_write_stdout ) THEN
0225 WRITE(msgBuf,'(2A)') '// ===========================',
0226 & '============================'
0227 CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
24da7525ba Jean*0228 WRITE(msgBuf,'(A,I2)')
fb247706a7 Patr*0229 & '// End AD_MONITOR EXF statistics for iwhen = ',
0230 & iwhen
0231 CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
0232 WRITE(msgBuf,'(2A)') '// ===========================',
0233 & '============================'
0234 CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
0235 ENDIF
0236
0237 mon_write_stdout = .FALSE.
0238 mon_write_mnc = .FALSE.
0239
afd492c074 Mart*0240
0241 ENDIF
fb247706a7 Patr*0242
3d063ab48a Jean*0243 ENDIF
fb247706a7 Patr*0244
0245
0246 ENDIF
0247
0248 #endif /* ALLOW_MONITOR */
0249
0250 RETURN
0251 END