Back to home page

MITgcm

 
 

    


File indexing completed on 2023-05-28 05:10:39 UTC

view on githubraw file Latest commit b4daa243 on 2023-05-28 03:53:22 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
                0008 
                0009 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0010 
                0011 CBOP
                0012 C     !ROUTINE: ACTIVE_READ_XY_D
                0013 C     !INTERFACE:
                0014       SUBROUTINE ACTIVE_READ_XY_D(active_var_file,
                0015      &                 active_var, active_vard,
                0016      &                 iRec, doglobalread, lAdInit,
                0017      &                 myOptimIter, myThid, dummy, dummyd)
                0018 
                0019 C     *==========================================================*
                0020 C     | SUBROUTINE ACTIVE_READ_XY_D
                0021 C     | o Tangent linear differentiation of ACTIVE_READ_XY.
                0022 C     *==========================================================*
                0023 C     | written by Shreyas Gaikwad, Laurent Hascoet in Nov 2022
                0024 C     *==========================================================*
                0025 C     \ev
                0026 
                0027 C     !USES:
                0028       IMPLICIT NONE
                0029 
                0030 C     === Global variables ===
                0031 #include "SIZE.h"
                0032 #include "EEPARAMS.h"
                0033 C     !INPUT/OUTPUT PARAMETERS:
                0034 C     === Routine arguments ===
                0035 C     active_var_file:: filename
                0036 C     active_var     :: array
                0037 C     active_vard     :: forward derivative of active_var
                0038 C     iRec           :: record number
                0039 C     doglobalread   :: flag for global or local read/write
                0040 C                       (default: .false.)
                0041 C     lAdInit        :: initialisation of corresponding adjoint
                0042 C                       variable and write to active file
                0043 C     myOptimIter    :: number of optimization iteration (default: 0)
                0044 C     myThid     :: my Thread Id. number
                0045       CHARACTER*(*) active_var_file
                0046       _RL     active_vard(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0047       _RL     active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0048       INTEGER iRec
                0049       LOGICAL doglobalread
                0050       LOGICAL lAdInit
                0051       INTEGER myOptimIter
                0052       INTEGER myThid
                0053       _RL  dummy
                0054       _RL dummyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0055 
                0056 C     !LOCAL VARIABLES:
                0057       CHARACTER*(80) fname
                0058       CHARACTER*(2) tlmpref
                0059 CEOP
                0060 
                0061       tlmpref = 'g_'
                0062       call ADD_PREFIX( tlmpref, active_var_file, fname )
                0063 
                0064       call active_read_xy(active_var_file, active_var,
                0065      &                    iRec, doglobalread, lAdInit,
                0066      &                    myOptimIter, myThid, dummy)
                0067       call active_read_xy(fname, dummyd, iRec,
                0068      &                    doglobalread, lAdInit,
                0069      &                    myOptimIter, myThid, dummy)
                0070 
                0071       active_var = 0.d0
                0072       active_vard = dummyd
                0073 
                0074       END
                0075 
                0076 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0077 
                0078 CBOP
                0079 C     !ROUTINE: ACTIVE_READ_XYZ_D
                0080 C     !INTERFACE:
                0081       subroutine ACTIVE_READ_XYZ_D(active_var_file,
                0082      &                 active_var, active_vard,
                0083      &                 iRec, doglobalread, lAdInit,
                0084      &                 myOptimIter, myThid, dummy, dummyd)
                0085 
                0086 C     *==========================================================*
                0087 C     | SUBROUTINE ACTIVE_READ_XYZ_D
                0088 C     | o Tangent linear differentiation of ACTIVE_READ_XYZ.
                0089 C     *==========================================================*
                0090 C     | written by Shreyas Gaikwad, Laurent Hascoet in Nov 2022
                0091 C     *==========================================================*
                0092 C     \ev
                0093 
                0094 C     !USES:
                0095       IMPLICIT NONE
                0096 
                0097 C     === Global variables ===
                0098 #include "SIZE.h"
                0099 #include "EEPARAMS.h"
                0100 C     !INPUT/OUTPUT PARAMETERS:
                0101 C     === Routine arguments ===
                0102 C     active_var_file:: filename
                0103 C     active_var     :: array
                0104 C     active_vard     :: forward derivative of active_var
                0105 C     iRec           :: record number
                0106 C     doglobalread   :: flag for global or local read/write
                0107 C                       (default: .false.)
                0108 C     lAdInit        :: initialisation of corresponding adjoint
                0109 C                       variable and write to active file
                0110 C     myOptimIter    :: number of optimization iteration (default: 0)
                0111 C     myThid     :: my Thread Id. number
                0112       CHARACTER*(*) active_var_file
                0113       _RL     active_vard(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0114       _RL     active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0115       INTEGER iRec
                0116       LOGICAL doglobalread
                0117       LOGICAL lAdInit
                0118       INTEGER myOptimIter
                0119       INTEGER myThid
                0120       _RL  dummy
                0121       _RL dummyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0122 
                0123 C     !LOCAL VARIABLES:
                0124       CHARACTER*(80) fname
                0125       CHARACTER*(2) tlmpref
                0126 CEOP
                0127 
                0128       tlmpref = 'g_'
                0129       call ADD_PREFIX( tlmpref, active_var_file, fname )
                0130 
                0131       call active_read_xyz(active_var_file, active_var,
                0132      &                    iRec, doglobalread, lAdInit,
                0133      &                    myOptimIter, myThid, dummy)
                0134       call active_read_xyz(fname, dummyd, iRec,
                0135      &                    doglobalread, lAdInit,
                0136      &                    myOptimIter, myThid, dummy)
                0137 
                0138       active_var = 0.d0
                0139       active_vard = dummyd
                0140 
                0141       END
                0142 
                0143 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0144 
                0145 CBOP
                0146 C     !ROUTINE: ACTIVE_READ_XY_B
                0147 C     !INTERFACE:
                0148       SUBROUTINE ACTIVE_READ_XY_B(active_var_file,
                0149      &                 active_var, active_varb,
                0150      &                 iRec, doglobalread, lAdInit,
                0151      &                 myOptimIter, myThid, dummy, dummyb)
                0152 
                0153 C     *==========================================================*
                0154 C     | SUBROUTINE ACTIVE_READ_XY_B
                0155 C     | o Reverse differentiation of ACTIVE_READ_XY.
                0156 C     *==========================================================*
                0157 C     | written by Shreyas Gaikwad, Laurent Hascoet in Nov 2022
                0158 C     *==========================================================*
                0159 C     \ev
                0160 
                0161 C     !USES:
                0162       IMPLICIT NONE
                0163 
                0164 C     === Global variables ===
                0165 #include "SIZE.h"
                0166 #include "EEPARAMS.h"
                0167 C     !INPUT/OUTPUT PARAMETERS:
                0168 C     === Routine arguments ===
                0169 C     active_var_file:: filename
                0170 C     active_var     :: array
                0171 C     active_varb     :: reverse derivative of active_var
                0172 C     iRec           :: record number
                0173 C     doglobalread   :: flag for global or local read/write
                0174 C                       (default: .false.)
                0175 C     lAdInit        :: initialisation of corresponding adjoint
                0176 C                       variable and write to active file
                0177 C     myOptimIter    :: number of optimization iteration (default: 0)
                0178 C     myThid     :: my Thread Id. number
                0179       CHARACTER*(*) active_var_file
                0180       _RL     active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0181       _RL     active_varb(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0182       INTEGER iRec
                0183       INTEGER myIter, myThid
                0184       LOGICAL doglobalread
                0185       LOGICAL lAdInit
                0186       INTEGER myOptimIter
                0187 C Tags for IO: ctrl input and adjoint (gradient) output
                0188       _RL  dummy, dummyb
                0189 
                0190 C     !LOCAL VARIABLES:
                0191       CHARACTER*(2) adpref
                0192       CHARACTER*(80) fname
                0193       INTEGER myNr
                0194       LOGICAL useCurrentDir
                0195 CEOP
                0196 
                0197       adpref = 'ad'
                0198       CALL ADD_PREFIX( adpref, active_var_file, fname )
                0199       myNr = 1
                0200       useCurrentDir = .FALSE.
                0201 
                0202       CALL ACTIVE_READ_3D_RL(
                0203      &                 fname, active_varb, doglobalread,
                0204      &                 useCurrentDir, lAdInit, iRec, myNr,
                0205      &                 REVERSE_SIMULATION, myIter, myThid )
                0206 
                0207       RETURN
                0208 
                0209       END
                0210 
                0211 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0212 
                0213 CBOP
                0214 C     !ROUTINE: ACTIVE_READ_XYZ_B
                0215 C     !INTERFACE:
                0216       SUBROUTINE ACTIVE_READ_XYZ_B(active_var_file,
                0217      &                 active_var, active_varb,
                0218      &                 iRec, doglobalread, lAdInit,
                0219      &                 myOptimIter, myThid, dummy, dummyb)
                0220 
                0221 C     *==========================================================*
                0222 C     | SUBROUTINE ACTIVE_READ_XYZ_B
                0223 C     | o Reverse differentiation of ACTIVE_READ_XYZ.
                0224 C     *==========================================================*
                0225 C     | written by Shreyas Gaikwad, Laurent Hascoet in Nov 2022
                0226 C     *==========================================================*
                0227 C     \ev
                0228 
                0229 C     !USES:
                0230       IMPLICIT NONE
                0231 
                0232 C     === Global variables ===
                0233 #include "SIZE.h"
                0234 #include "EEPARAMS.h"
                0235 C     !INPUT/OUTPUT PARAMETERS:
                0236 C     === Routine arguments ===
                0237 C     active_var_file:: filename
                0238 C     active_var     :: array
                0239 C     active_varb     :: reverse derivative of active_var
                0240 C     iRec           :: record number
                0241 C     doglobalread   :: flag for global or local read/write
                0242 C                       (default: .false.)
                0243 C     lAdInit        :: initialisation of corresponding adjoint
                0244 C                       variable and write to active file
                0245 C     myOptimIter    :: number of optimization iteration (default: 0)
                0246 C     myThid     :: my Thread Id. number
                0247       CHARACTER*(*) active_var_file
                0248       _RL     active_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0249       _RL     active_varb(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0250       INTEGER iRec
                0251       INTEGER myIter, myThid
                0252       LOGICAL doglobalread
                0253       LOGICAL lAdInit
                0254       INTEGER myOptimIter
                0255 C Tags for IO: ctrl input and adjoint (gradient) output
                0256       _RL  dummy, dummyb
                0257 
                0258 C     !LOCAL VARIABLES:
                0259       CHARACTER*(2) adpref
                0260       CHARACTER*(80) fname
                0261       INTEGER myNr
                0262       LOGICAL useCurrentDir
                0263 CEOP
                0264 
                0265       adpref = 'ad'
                0266       CALL ADD_PREFIX( adpref, active_var_file, fname )
                0267       myNr = Nr
                0268       useCurrentDir = .FALSE.
                0269 
                0270       CALL ACTIVE_READ_3D_RL(
                0271      &                 fname, active_varb, doglobalread,
                0272      &                 useCurrentDir, lAdInit, iRec, myNr,
                0273      &                 REVERSE_SIMULATION, myIter, myThid )
                0274 
                0275       RETURN
                0276       END
                0277