Back to home page

MITgcm

 
 

    


File indexing completed on 2026-01-28 06:08:56 UTC

view on githubraw file Latest commit 6a9e386e on 2026-01-27 18:10:16 UTC
b4daa24319 Shre*0001 #include "CPP_EEOPTIONS.h"
                0002 C--   File active_write_tap.F: Active write with Tapenade.
                0003 C--    Contents:
                0004 C--    o ACTIVE_WRITE_XY_D
                0005 C--    o ACTIVE_WRITE_XYZ_D
                0006 C--    o ACTIVE_WRITE_XY_B
                0007 C--    o ACTIVE_WRITE_XYZ_B
6a9e386e2e dngo*0008 C--    o ACTIVE_WRITE_XY_BWD (for use without checkpointing)
                0009 C--    o ACTIVE_WRITE_XY_FWD (for use without checkpointing)
b4daa24319 Shre*0010 
                0011 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0012 
                0013 CBOP
                0014 C     !ROUTINE: ACTIVE_WRITE_XY_D
                0015 C     !INTERFACE:
6a9e386e2e dngo*0016       SUBROUTINE ACTIVE_WRITE_XY_D(
b4daa24319 Shre*0017      I                            active_var_file,
                0018      I                            active_var,
                0019      I                            active_vard,
                0020      I                            iRec,
                0021      I                            myOptimIter,
                0022      I                            myThid,
                0023      I                            dummy,
                0024      I                            dummyd
                0025      &                          )
                0026 
                0027 C     *==========================================================*
                0028 C     | SUBROUTINE ACTIVE_WRITE_XY_D
                0029 C     | o Forward differentiation of ACTIVE_WRITE_XY.
                0030 C     *==========================================================*
                0031 C     | written by Shreyas Gaikwad, Laurent Hascoet in Nov 2022
                0032 C     *==========================================================*
                0033 C     \ev
                0034 
                0035 C     !USES:
                0036       IMPLICIT NONE
                0037 C     == global variables ==
                0038 #include "SIZE.h"
                0039 
                0040 C     !INPUT/OUTPUT PARAMETERS:
                0041 C     active_var_file:: filename
                0042 C     active_var     :: array
                0043 C     active_vard    :: forward derivative of active_var
                0044 C     iRec           :: record number
                0045 C     myOptimIter    :: number of optimization iteration (default: 0)
                0046 C     myThid         :: thread number for this instance
                0047       CHARACTER*(*) active_var_file
                0048       Real*8     active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0049       Real*8     active_vard(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0050       INTEGER iRec
                0051       INTEGER myOptimIter
                0052       INTEGER myThid
                0053       Real*8     dummy
                0054       Real*8     dummyd
                0055 
                0056 C     !LOCAL VARIABLES:
                0057       CHARACTER*(2) pref
                0058       CHARACTER*(80) fname
                0059       INTEGER myNr
                0060       LOGICAL globalFile
                0061       LOGICAL useCurrentDir
                0062 CEOP
                0063 
                0064       pref = 'g_'
                0065       CALL ADD_PREFIX( pref, active_var_file, fname )
                0066       myNr = 1
                0067       globalFile = .FALSE.
                0068       useCurrentDir = .FALSE.
                0069 
6a9e386e2e dngo*0070       CALL ACTIVE_WRITE_3D_RL(
b4daa24319 Shre*0071      &                 active_var_file, active_var, globalFile,
                0072      &                 useCurrentDir, iRec, myNr,
                0073      &                 0, myOptimIter, myThid )
                0074 
6a9e386e2e dngo*0075       CALL ACTIVE_WRITE_3D_RL(
b4daa24319 Shre*0076      &                 fname, active_vard, globalFile,
                0077      &                 useCurrentDir, iRec, myNr,
                0078      &                 2, myOptimIter, myThid )
                0079 
                0080       RETURN
                0081       END
                0082 
                0083 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0084 
                0085 CBOP
                0086 C     !ROUTINE: ACTIVE_WRITE_XYZ_D
                0087 C     !INTERFACE:
6a9e386e2e dngo*0088       SUBROUTINE ACTIVE_WRITE_XYZ_D(
b4daa24319 Shre*0089      I                            active_var_file,
                0090      I                            active_var,
                0091      I                            active_vard,
                0092      I                            iRec,
                0093      I                            myOptimIter,
                0094      I                            myThid,
                0095      I                            dummy,
                0096      I                            dummyd
                0097      &                          )
                0098 
                0099 C     *==========================================================*
                0100 C     | SUBROUTINE ACTIVE_WRITE_XYZ_D
                0101 C     | o Forward differentiation of ACTIVE_WRITE_XYZ.
                0102 C     *==========================================================*
                0103 C     | written by Shreyas Gaikwad, Laurent Hascoet in Nov 2022
                0104 C     *==========================================================*
                0105 C     \ev
                0106 
                0107 C     !USES:
                0108       IMPLICIT NONE
                0109 C     == global variables ==
                0110 #include "SIZE.h"
                0111 
                0112 C     !INPUT/OUTPUT PARAMETERS:
                0113 C     active_var_file:: filename
                0114 C     active_var     :: array
                0115 C     active_vard    :: forward derivative of active_var
                0116 C     iRec           :: record number
                0117 C     myOptimIter    :: number of optimization iteration (default: 0)
                0118 C     myThid         :: thread number for this instance
                0119       CHARACTER*(*) active_var_file
                0120       Real*8     active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0121       Real*8     active_vard(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0122       INTEGER iRec
                0123       INTEGER myOptimIter
                0124       INTEGER myThid
                0125       Real*8     dummy
                0126       Real*8     dummyd
                0127 
                0128 C     !LOCAL VARIABLES:
                0129       CHARACTER*(2) pref
                0130       CHARACTER*(80) fname
                0131       INTEGER myNr
                0132       LOGICAL globalFile
                0133       LOGICAL useCurrentDir
                0134 CEOP
                0135 
                0136       pref = 'g_'
                0137       CALL ADD_PREFIX( pref, active_var_file, fname )
                0138       myNr = Nr
                0139       globalFile = .FALSE.
                0140       useCurrentDir = .FALSE.
                0141 
6a9e386e2e dngo*0142       CALL ACTIVE_WRITE_3D_RL(
b4daa24319 Shre*0143      &                 active_var_file, active_var, globalFile,
                0144      &                 useCurrentDir, iRec, myNr,
                0145      &                 0, myOptimIter, myThid )
                0146 
6a9e386e2e dngo*0147       CALL ACTIVE_WRITE_3D_RL(
b4daa24319 Shre*0148      &                 fname, active_vard, globalFile,
                0149      &                 useCurrentDir, iRec, myNr,
                0150      &                 2, myOptimIter, myThid )
                0151 
                0152       RETURN
                0153       END
                0154 
                0155 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0156 
                0157 CBOP
                0158 C     !ROUTINE: ACTIVE_WRITE_XY_B
                0159 C     !INTERFACE:
6a9e386e2e dngo*0160       SUBROUTINE ACTIVE_WRITE_XY_B(
b4daa24319 Shre*0161      I                              active_var_file,
                0162      I                              active_var,
                0163      U                              active_varb,
                0164      I                              iRec,
                0165      I                              myOptimIter,
                0166      I                              myThid,
                0167      I                              dummy,
                0168      O                              dummyb
                0169      &                            )
                0170 
                0171 C     *==========================================================*
                0172 C     | SUBROUTINE ACTIVE_WRITE_XY_B
                0173 C     | o Reverse differentiation of ACTIVE_WRITE_XY.
                0174 C     *==========================================================*
                0175 C     | written by Shreyas Gaikwad, Laurent Hascoet in Nov 2022
                0176 C     *==========================================================*
                0177 C     \ev
                0178 
                0179 C     !USES:
                0180       IMPLICIT NONE
                0181 C     == global variables ==
6a9e386e2e dngo*0182 #include "EEPARAMS.h"
b4daa24319 Shre*0183 #include "SIZE.h"
                0184 
                0185 C     !INPUT/OUTPUT PARAMETERS:
                0186 C     active_var_file:: filename
                0187 C     active_var     :: array
                0188 C     active_varb    :: reverse derivative of active_var
                0189 C     iRec           :: record number
                0190 C     myOptimIter    :: number of optimization iteration (default: 0)
                0191 C     myThid         :: thread number for this instance
                0192       CHARACTER*(80) active_var_file
                0193       Real*8     active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0194       Real*8     active_varb(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0195       INTEGER iRec
                0196       INTEGER myOptimIter
                0197       INTEGER myThid
                0198       Real*8     dummy
                0199       Real*8     dummyb
                0200 
                0201 C     !LOCAL VARIABLES:
                0202       CHARACTER*(2) adpref
                0203       CHARACTER*(80) fname
                0204       INTEGER myNr
                0205       LOGICAL globalFile
                0206       LOGICAL useCurrentDir
                0207 CEOP
                0208       adpref = 'ad'
                0209       CALL ADD_PREFIX( adpref, active_var_file, fname )
                0210       myNr = 1
                0211       globalFile = .FALSE.
                0212       useCurrentDir = .FALSE.
                0213       CALL ACTIVE_WRITE_3D_RL(
                0214      &                 fname, active_varb, globalFile,
                0215      &                 useCurrentDir, iRec, myNr,
6a9e386e2e dngo*0216      &                 REVERSE_SIMULATION, myOptimIter, myThid )
                0217 
b4daa24319 Shre*0218       RETURN
                0219       END
                0220 
                0221 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0222 
                0223 CBOP
                0224 C     !ROUTINE: ACTIVE_WRITE_XYZ_B
                0225 C     !INTERFACE:
6a9e386e2e dngo*0226       SUBROUTINE ACTIVE_WRITE_XYZ_B(
b4daa24319 Shre*0227      I                              active_var_file,
                0228      I                              active_var,
                0229      U                              active_varb,
                0230      I                              iRec,
                0231      I                              myOptimIter,
                0232      I                              myThid,
                0233      I                              dummy,
                0234      O                              dummyb
                0235      &                            )
                0236 
                0237 C     *==========================================================*
                0238 C     | SUBROUTINE ACTIVE_WRITE_XYZ_B
                0239 C     | o Reverse differentiation of ACTIVE_WRITE_XYZ.
                0240 C     *==========================================================*
                0241 C     | written by Shreyas Gaikwad, Laurent Hascoet in Nov 2022
                0242 C     *==========================================================*
                0243 C     \ev
                0244 
                0245 C     !USES:
                0246       IMPLICIT NONE
                0247 C     == global variables ==
6a9e386e2e dngo*0248 #include "EEPARAMS.h"
b4daa24319 Shre*0249 #include "SIZE.h"
                0250 
                0251 C     !INPUT/OUTPUT PARAMETERS:
                0252 C     active_var_file:: filename
                0253 C     active_var     :: array
                0254 C     active_varb    :: reverse derivative of active_var
                0255 C     iRec           :: record number
                0256 C     myOptimIter    :: number of optimization iteration (default: 0)
                0257 C     myThid         :: thread number for this instance
                0258       CHARACTER*(80) active_var_file
                0259       Real*8     active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0260       Real*8     active_varb(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0261       INTEGER iRec
                0262       INTEGER myOptimIter
                0263       INTEGER myThid
                0264       Real*8     dummy
                0265       Real*8     dummyb
                0266 
                0267 C     !FUNCTIONS:
                0268       INTEGER  ILNBLNK
                0269       EXTERNAL ILNBLNK
                0270 
                0271 C     !LOCAL VARIABLES:
                0272       CHARACTER*(2) adpref
                0273       CHARACTER*(80) fname
                0274       INTEGER il
                0275       INTEGER myNr
                0276       LOGICAL globalFile
                0277       LOGICAL useCurrentDir
                0278 CEOP
                0279       adpref = 'ad'
                0280       CALL ADD_PREFIX( adpref, active_var_file, fname )
                0281       myNr = Nr
                0282       globalFile = .FALSE.
                0283       useCurrentDir = .FALSE.
                0284       CALL ACTIVE_WRITE_3D_RL(
                0285      &                 fname, active_varb, globalFile,
                0286      &                 useCurrentDir, iRec, myNr,
6a9e386e2e dngo*0287      &                 REVERSE_SIMULATION, myOptimIter, myThid )
                0288 
                0289       RETURN
                0290       END
                0291 
                0292 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0293 
                0294 CBOP
                0295 C     !ROUTINE: ACTIVE_WRITE_XY_FWD
                0296 C     !INTERFACE:
                0297       SUBROUTINE ACTIVE_WRITE_XY_FWD(
                0298      I                              active_var_file,
                0299      I                              active_var,
                0300      I                              iRec,
                0301      I                              myOptimIter,
                0302      I                              myThid,
                0303      I                              dummy
                0304      &                            )
                0305 
                0306 C     *==========================================================*
                0307 C     | SUBROUTINE ACTIVE_WRITE_XY_FWD
                0308 C     | o Reverse differentiation of ACTIVE_WRITE_XY.
                0309 C     *==========================================================*
                0310 C     | written by Shreyas Gaikwad, Laurent Hascoet in Nov 2022
                0311 C     *==========================================================*
                0312 C     \ev
                0313 
                0314 C     !USES:
                0315       IMPLICIT NONE
                0316 
                0317 C     == global variables ==
                0318 #include "SIZE.h"
                0319 
                0320 C     !INPUT/OUTPUT PARAMETERS:
                0321 C     active_var_file:: filename
                0322 C     active_var     :: array
                0323 C     iRec           :: record number
                0324 C     myOptimIter    :: number of optimization iteration (default: 0)
                0325 C     myThid         :: thread number for this instance
                0326       CHARACTER*(80) active_var_file
                0327       Real*8     active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0328       INTEGER iRec
                0329       INTEGER myOptimIter
                0330       INTEGER myThid
                0331       Real*8     dummy
                0332 
                0333       CALL ACTIVE_WRITE_XY(
                0334      I                 active_var_file,
                0335      I                 active_var,
                0336      I                 iRec,
                0337      I                 myOptimIter,
                0338      I                 myThid,
                0339      I                 dummy
                0340      &                    )
                0341 
                0342       RETURN
                0343       END
                0344 
                0345 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0346 
                0347 CBOP
                0348 C     !ROUTINE: ACTIVE_WRITE_XY_BWD
                0349 C     !INTERFACE:
                0350       SUBROUTINE ACTIVE_WRITE_XY_BWD(
                0351      I                              active_var_file,
                0352      I                              active_var,
                0353      U                              active_varb,
                0354      I                              iRec,
                0355      I                              myOptimIter,
                0356      I                              myThid,
                0357      I                              dummy,
                0358      O                              dummyb
                0359      &                            )
                0360 
                0361 C     *==========================================================*
                0362 C     | SUBROUTINE ACTIVE_WRITE_XY_BWD
                0363 C     | o Reverse differentiation of ACTIVE_WRITE_XY.
                0364 C     *==========================================================*
                0365 C     | written by Shreyas Gaikwad, Laurent Hascoet in Nov 2022
                0366 C     *==========================================================*
                0367 C     \ev
                0368 
                0369 C     !USES:
                0370       IMPLICIT NONE
                0371 C     == global variables ==
                0372 #include "SIZE.h"
                0373 
                0374 C     !INPUT/OUTPUT PARAMETERS:
                0375 C     active_var_file:: filename
                0376 C     active_var     :: array
                0377 C     active_varb    :: reverse derivative of active_var
                0378 C     iRec           :: record number
                0379 C     myOptimIter    :: number of optimization iteration (default: 0)
                0380 C     myThid         :: thread number for this instance
                0381       CHARACTER*(80) active_var_file
                0382       Real*8     active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0383       Real*8     active_varb(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0384       INTEGER iRec
                0385       INTEGER myOptimIter
                0386       INTEGER myThid
                0387       Real*8     dummy
                0388       Real*8     dummyb
                0389 
                0390       CALL ACTIVE_WRITE_XY_B(
                0391      I                 active_var_file,
                0392      I                 active_var,
                0393      U                 active_varb,
                0394      I                 iRec,
                0395      I                 myOptimIter,
                0396      I                 myThid,
                0397      I                 dummy,
                0398      O                 dummyb )
                0399 
b4daa24319 Shre*0400       RETURN
                0401       END