File indexing completed on 2026-10-08 05:08:54 UTC
view on githubraw file Latest commit 27256b2d on 2026-10-07 21:35:21 UTC
497a20ca68 Patr*0001 #include "SEAICE_OPTIONS.h"
93bee5c6a2 Jean*0002 #include "AD_CONFIG.h"
772b2ed80e Gael*0003 #ifdef ALLOW_AUTODIFF
0004 # include "AUTODIFF_OPTIONS.h"
0005 #endif
497a20ca68 Patr*0006
0007
a10c595eb6 Timo*0008
497a20ca68 Patr*0009
a10c595eb6 Timo*0010 SUBROUTINE SEAICE_AD_DUMP( myTime, myIter, myThid )
497a20ca68 Patr*0011
0012
0013
4545c79864 Jean*0014
497a20ca68 Patr*0015
b7b61e618a Mart*0016
497a20ca68 Patr*0017
0018
0019
0020
0021
4545c79864 Jean*0022
497a20ca68 Patr*0023
0024
0025
0026
0027 IMPLICIT NONE
0028
0029
0030 #include "SIZE.h"
0031 #include "EEPARAMS.h"
0032 #include "PARAMS.h"
c8d9ddcff2 Patr*0033 #include "SEAICE_SIZE.h"
b7a8f5427d Patr*0034 #include "SEAICE_PARAMS.h"
497a20ca68 Patr*0035 #ifdef ALLOW_MNC
0036 #include "MNC_PARAMS.h"
0037 #endif
0038 #include "GRID.h"
0039 #ifdef ALLOW_AUTODIFF_MONITOR
6bf91ae0ea Gael*0040 # include "AUTODIFF_PARAMS.h"
0041 # include "AUTODIFF.h"
497a20ca68 Patr*0042 # include "adcommon.h"
a10c595eb6 Timo*0043 # ifdef ALLOW_DIAGNOSTICS
41c4545f8f Jean*0044 # include "DIAGNOSTICS_P2SHARE.h"
a10c595eb6 Timo*0045 # endif
497a20ca68 Patr*0046 #endif
0047
0048
4545c79864 Jean*0049
0050
0051
0052 _RL myTime
0053 INTEGER myIter
0054 INTEGER myThid
497a20ca68 Patr*0055
0056 #ifdef ALLOW_AUTODIFF_MONITOR
27256b2d6a Jean*0057 #if (defined ALLOW_ADJOINT_RUN || defined ALLOW_ADMTLM )
497a20ca68 Patr*0058
4545c79864 Jean*0059
0060 LOGICAL DIFFERENT_MULTIPLE
0061 EXTERNAL DIFFERENT_MULTIPLE
0062
497a20ca68 Patr*0063
4545c79864 Jean*0064
0065
a10c595eb6 Timo*0066
4545c79864 Jean*0067
27256b2d6a Jean*0068 # ifdef ALLOW_MNC
18b4e739f1 Mart*0069 _RL var2Du(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0070 _RL var2Dv(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
27256b2d6a Jean*0071 # endif
18b4e739f1 Mart*0072 _RS dumRS(1)
a10c595eb6 Timo*0073 LOGICAL doExch
0074 LOGICAL doDump
497a20ca68 Patr*0075
0076
a10c595eb6 Timo*0077
0078 doDump = DIFFERENT_MULTIPLE( adjDumpFreq, myTime, deltaTClock )
4545c79864 Jean*0079
a10c595eb6 Timo*0080
0081 doExch = doDump
27256b2d6a Jean*0082 # ifdef ALLOW_DIAGNOSTICS
a10c595eb6 Timo*0083 doExch = doDump .OR. useDiag4AdjOutp
27256b2d6a Jean*0084 # endif
a10c595eb6 Timo*0085 doExch = doExch .AND. ( dumpAdVarExch.EQ.1 )
18b4e739f1 Mart*0086
a10c595eb6 Timo*0087
0088 IF ( doExch ) THEN
0089 CALL TIMER_START('I/O (WRITE) [ADJOINT LOOP]', myThid )
0090 # ifdef AUTODIFF_TAMC_COMPATIBILITY
0091 CALL ADEXCH_XY_RL( myThid, adarea )
0092 CALL ADEXCH_XY_RL( myThid, adheff )
0093 CALL ADEXCH_XY_RL( myThid, adhsnow )
0094 CALL ADEXCH_UV_XYZ_RL( .TRUE., myThid, aduice,advice )
0095 # else
0096 CALL ADEXCH_XY_RL( adarea, myThid )
0097 CALL ADEXCH_XY_RL( adheff, myThid )
0098 CALL ADEXCH_XY_RL( adhsnow, myThid )
0099 CALL ADEXCH_UV_3D_RL( aduice,advice, .TRUE., 1, myThid )
0100 # endif /* AUTODIFF_TAMC_COMPATIBILITY */
27256b2d6a Jean*0101 ENDIF
18b4e739f1 Mart*0102
a10c595eb6 Timo*0103
0104
41c4545f8f Jean*0105
18b4e739f1 Mart*0106
a10c595eb6 Timo*0107
0108
0109
0110 IF ( doDump ) THEN
0111
0112 dumpAdRecSi=dumpAdRecSi+1
0113 CALL TIMER_START('I/O (WRITE) [ADJOINT LOOP]', myThid )
0114 ENDIF
0115
0116
0117
0118
0119 CALL DUMP_ADJ_XY( dumRS, adarea, 'ADJarea ', 'ADJarea.',
0120 & 12, doDump, dumpAdRecSi, myTime, myIter, myThid )
0121 CALL DUMP_ADJ_XY( dumRS, adheff, 'ADJheff ', 'ADJheff.',
0122 & 12, doDump, dumpAdRecSi, myTime, myIter, myThid )
0123 CALL DUMP_ADJ_XY( dumRS, adhsnow, 'ADJhsnow', 'ADJhsnow.',
0124 & 12, doDump, dumpAdRecSi, myTime, myIter, myThid )
45315406aa Mart*0125 # if ( defined SEAICE_CGRID || defined SEAICE_BGRID_DYNAMICS )
a10c595eb6 Timo*0126
0127 CALL DUMP_ADJ_XY_UV(
0128 & dumRS, aduice, 'ADJuice ', 'ADJuice.',
0129 & dumRS, advice, 'ADJvice ', 'ADJvice.',
0130 & 34, doDump, dumpAdRecSi, myTime, myIter, myThid)
0131
45315406aa Mart*0132 # endif
a10c595eb6 Timo*0133
0134 IF ( doDump ) THEN
27256b2d6a Jean*0135 # ifdef ALLOW_MNC
497a20ca68 Patr*0136 IF (useMNC .AND. autodiff_mnc) THEN
af20bc5e19 Jean*0137
aa753c2639 Mart*0138 CALL MNC_CW_SET_UDIM('adseaice', -1, myThid)
0139 CALL MNC_CW_RL_W_S('D','adseaice',0,0,'T',myTime,myThid)
0140 CALL MNC_CW_SET_UDIM('adseaice', 0, myThid)
0141 CALL MNC_CW_I_W_S('I','adseaice',0,0,'iter',myIter,myThid)
0142 CALL MNC_CW_RL_W_S('D','adseaice',0,0,'model_time',myTime,
0143 & myThid)
497a20ca68 Patr*0144
aa753c2639 Mart*0145 IF (dumpAdVarExch.EQ.2) THEN
0146 CALL COPY_ADVAR_OUTP( dumRS, adarea, var2Du, 1 , 12, myThid )
0147 CALL MNC_CW_RL_W('D','adseaice',0,0,'adarea',
0148 & var2Du, myThid)
0149 CALL COPY_ADVAR_OUTP( dumRS, adheff, var2Du, 1 , 12, myThid )
0150 CALL MNC_CW_RL_W('D','adseaice',0,0,'adheff',
0151 & var2Du, myThid)
0152 CALL COPY_ADVAR_OUTP( dumRS, adhsnow, var2Du, 1 , 12, myThid )
0153 CALL MNC_CW_RL_W('D','adseaice',0,0,'adhsnow',
0154 & var2Du, myThid)
27256b2d6a Jean*0155 # if ( defined SEAICE_CGRID || defined SEAICE_BGRID_DYNAMICS )
aa753c2639 Mart*0156
0157 CALL COPY_AD_UV_OUTP( dumRS, dumRS, aduice, advice,
0158 & var2Du, var2Dv, 1, 34, myThid )
0159 CALL MNC_CW_RL_W('D','adseaice',0,0,'aduice',
0160 & var2Du, myThid)
0161 CALL MNC_CW_RL_W('D','adseaice',0,0,'advice',
0162 & var2Dv, myThid)
0163
27256b2d6a Jean*0164 # endif
aa753c2639 Mart*0165 ELSE
497a20ca68 Patr*0166 CALL MNC_CW_RL_W('D','adseaice',0,0,'adarea',
0167 & adarea, myThid)
0168 CALL MNC_CW_RL_W('D','adseaice',0,0,'adheff',
0169 & adheff, myThid)
0170 CALL MNC_CW_RL_W('D','adseaice',0,0,'adhsnow',
0171 & adhsnow, myThid)
27256b2d6a Jean*0172 # if ( defined SEAICE_CGRID || defined SEAICE_BGRID_DYNAMICS )
aa753c2639 Mart*0173
0174 CALL MNC_CW_RL_W('D','adseaice',0,0,'aduice',
497a20ca68 Patr*0175 & aduice, myThid)
aa753c2639 Mart*0176 CALL MNC_CW_RL_W('D','adseaice',0,0,'advice',
497a20ca68 Patr*0177 & advice, myThid)
aa753c2639 Mart*0178
27256b2d6a Jean*0179 # endif
aa753c2639 Mart*0180 ENDIF
497a20ca68 Patr*0181
0182 ENDIF
27256b2d6a Jean*0183 # endif /* ALLOW_MNC */
497a20ca68 Patr*0184
4545c79864 Jean*0185 CALL TIMER_STOP( 'I/O (WRITE) [ADJOINT LOOP]', myThid )
497a20ca68 Patr*0186
4545c79864 Jean*0187 ENDIF
497a20ca68 Patr*0188
27256b2d6a Jean*0189 #endif /* ALLOW_ADJOINT_RUN or ALLOW_ADMTLM */
497a20ca68 Patr*0190 #endif /* ALLOW_AUTODIFF_MONITOR */
0191
d4bd695091 Jean*0192 RETURN
0193 END