File indexing completed on 2025-03-03 06:11:14 UTC
view on githubraw file Latest commit b7b61e61 on 2025-03-02 15:55:22 UTC
8ee0cbb22d Patr*0001 #include "EXF_OPTIONS.h"
57c22ecc45 Jean*0002 #include "AD_CONFIG.h"
5459551853 Jean*0003 #ifdef ALLOW_AUTODIFF
0004 # include "AUTODIFF_OPTIONS.h"
0005 #endif
98238efc8b Patr*0006
0007
5459551853 Jean*0008
98238efc8b Patr*0009
5459551853 Jean*0010 SUBROUTINE G_EXF_ADJOINT_SNAPSHOTS(
0011 I iwhen, myTime, myIter, myThid )
98238efc8b Patr*0012
0013
0014
5459551853 Jean*0015
98238efc8b Patr*0016
5459551853 Jean*0017
b7b61e618a Mart*0018
98238efc8b Patr*0019
0020
0021
0022
0023
5459551853 Jean*0024
98238efc8b Patr*0025
0026
0027
0028
0029 IMPLICIT NONE
0030
0031 #include "SIZE.h"
0032 #include "EEPARAMS.h"
0033 #include "PARAMS.h"
40c4aecbbc Jean*0034 #include "EXF_PARAM.h"
98238efc8b Patr*0035 #ifdef ALLOW_AUTODIFF_MONITOR
0036 # include "g_common.h"
0037 #endif
0038
0039
5459551853 Jean*0040
0041
0042
40c4aecbbc Jean*0043
0044 INTEGER iwhen
0045 _RL myTime
0046 INTEGER myIter
0047 INTEGER myThid
98238efc8b Patr*0048
0049 #ifdef ALLOW_TANGENTLINEAR_RUN
0050 #ifdef ALLOW_AUTODIFF_MONITOR
0051
40c4aecbbc Jean*0052
0053 LOGICAL DIFFERENT_MULTIPLE
0054 EXTERNAL DIFFERENT_MULTIPLE
0055
98238efc8b Patr*0056
40c4aecbbc Jean*0057
0058
df5a9764ba Jean*0059 CHARACTER*(10) suff
40c4aecbbc Jean*0060
98238efc8b Patr*0061
0062
0063 IF (useEXF) THEN
40c4aecbbc Jean*0064 IF (
0065 & DIFFERENT_MULTIPLE(adjDumpFreq,myTime,deltaTClock)
0066 & ) THEN
98238efc8b Patr*0067
40c4aecbbc Jean*0068 CALL TIMER_START('I/O (WRITE) [TLM LOOP]', myThid )
98238efc8b Patr*0069
0070
df5a9764ba Jean*0071 IF ( rwSuffixType.EQ.0 ) THEN
0072 WRITE(suff,'(I10.10)') myIter
0073 ELSE
0074 CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
0075 ENDIF
98238efc8b Patr*0076
0077 IF ( iwhen .EQ.1 ) THEN
0078
0079 CALL WRITE_FLD_XY_RL ( 'G_Justress.',
40c4aecbbc Jean*0080 & suff, g_ustress, myIter, myThid )
98238efc8b Patr*0081 CALL WRITE_FLD_XY_RL ( 'G_Jvstress.',
40c4aecbbc Jean*0082 & suff, g_vstress, myIter, myThid )
98238efc8b Patr*0083 CALL WRITE_FLD_XY_RL ( 'G_Jhflux.',
40c4aecbbc Jean*0084 & suff, g_hflux, myIter, myThid )
98238efc8b Patr*0085 CALL WRITE_FLD_XY_RL ( 'G_Jsflux.',
40c4aecbbc Jean*0086 & suff, g_sflux, myIter, myThid )
98238efc8b Patr*0087
0088 ELSEIF ( iwhen .EQ.2 ) THEN
0089
0090 # ifdef ALLOW_ATM_TEMP
0091 CALL WRITE_FLD_XY_RL ( 'G_Jatemp.',
40c4aecbbc Jean*0092 & suff, g_atemp, myIter, myThid )
98238efc8b Patr*0093 CALL WRITE_FLD_XY_RL ( 'G_Jaqh.',
40c4aecbbc Jean*0094 & suff, g_aqh, myIter, myThid )
98238efc8b Patr*0095 CALL WRITE_FLD_XY_RL ( 'G_Jprecip.',
40c4aecbbc Jean*0096 & suff, g_precip, myIter, myThid )
98238efc8b Patr*0097 # endif
40c4aecbbc Jean*0098 IF ( useAtmWind ) THEN
0099 CALL WRITE_FLD_XY_RL ( 'G_Juwind.',
0100 & suff, g_uwind, myIter, myThid )
0101 CALL WRITE_FLD_XY_RL ( 'G_Jvwind.',
0102 & suff, g_vwind, myIter, myThid )
0103 ENDIF
98238efc8b Patr*0104 # ifdef ALLOW_DOWNWARD_RADIATION
0105 CALL WRITE_FLD_XY_RL ( 'G_Jswdown.',
40c4aecbbc Jean*0106 & suff, g_swdown, myIter, myThid )
98238efc8b Patr*0107 # endif
0108 # ifdef ALLOW_CLIMSST_RELAXATION
0109 CALL WRITE_FLD_XY_RL ( 'G_Jclimsst.',
40c4aecbbc Jean*0110 & suff, g_climsst, myIter, myThid )
98238efc8b Patr*0111 # endif
0112 # ifdef ALLOW_CLIMSSS_RELAXATION
0113 CALL WRITE_FLD_XY_RL ( 'G_Jclimsss.',
40c4aecbbc Jean*0114 & suff, g_climsss, myIter, myThid )
98238efc8b Patr*0115 # endif
0116
0117 ENDIF
0118
40c4aecbbc Jean*0119 CALL TIMER_STOP( 'I/O (WRITE) [TLM LOOP]', myThid )
98238efc8b Patr*0120
40c4aecbbc Jean*0121 ENDIF
98238efc8b Patr*0122 ENDIF
0123
0124 #endif /* ALLOW_AUTODIFF_MONITOR */
0125 #endif /* ALLOW_TANGENTLINEAR_RUN */
0126
57c22ecc45 Jean*0127 RETURN
0128 END