Back to home page

MITgcm

 
 

    


File indexing completed on 2026-02-06 06:08:56 UTC

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