Back to home page

MITgcm

 
 

    


File indexing completed on 2023-07-14 05:10:07 UTC

view on githubraw file Latest commit de57a2ec on 2023-07-13 16:55:13 UTC
6d54cf9ca1 Ed H*0001 #include "AUTODIFF_OPTIONS.h"
2dcaa8b9a5 Patr*0002 
1c93ccf46e Jean*0003 C     ==================================================================
                0004 C     active_files_ad.F: Routines to handle the I/O of the active file
                0005 C                        for the adjoint calculations. All files are
                0006 C                        direct access files.
                0007 C     Routines
                0008 C     o  adactive_read_xy         - Adjoint of active_read_xy
                0009 C     o  adactive_read_xyz        - Adjoint of active_read_xyz
                0010 C     o  adactive_read_xz         - Adjoint of active_read_xz
                0011 C     o  adactive_read_yz         - Adjoint of active_read_yz
04904a066e Timo*0012 C     o  adactive_read_1d         - Adjoint of active_read_1d
1c93ccf46e Jean*0013 C
                0014 C     o  adactive_write_xy        - Adjoint of active_write_xy
                0015 C     o  adactive_write_xyz       - Adjoint of active_write_xyz
                0016 C     o  adactive_write_xz        - Adjoint of active_write_xz
                0017 C     o  adactive_write_yz        - Adjoint of active_write_yz
04904a066e Timo*0018 C     o  adactive_write_1d        - Adjoint of active_write_1d
1c93ccf46e Jean*0019 C
                0020 C        changed: Christian Eckert eckert@mit.edu 24-Apr-2000
                0021 C                 - Added routines that do active writes on tiles
                0022 C                   instead of a whole thread.
                0023 C        changed: Patrick Heimbach heimbach@mit.edu 27-May-2000
                0024 C                 - changed suboutine argument list:
                0025 C                   dropped mycurrentiter, mycurrenttime
                0026 C        changed: heimbach@mit.edu 25-Mar-2002
                0027 C                 - added active file handling of xz-/yz-arrays
04904a066e Timo*0028 C        changed: tsmith@oden.utexas.edu 22-Oct-2019
                0029 C                 - added 1D vectors
f9d7cbfb72 Ou W*0030 C        changed: ou.wang@jpl.nasa.gov 24-Aug-2022
                0031 C                 - added helper S/R capable of handling
                0032 C                   active_var_file containing directory names
1c93ccf46e Jean*0033 C     ==================================================================
                0034 
                0035 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
d151781088 Patr*0036 CBOP
                0037 C     !ROUTINE: adactive_read_xy
                0038 C     !INTERFACE:
0a92c8c20d Patr*0039 #ifdef AUTODIFF_TAMC_COMPATIBILITY
2dcaa8b9a5 Patr*0040       subroutine adactive_read_xy(
                0041      I                             active_var_file,
1c93ccf46e Jean*0042      I                             iRec,
2dcaa8b9a5 Patr*0043      I                             doglobalread,
                0044      I                             lAdInit,
1c93ccf46e Jean*0045      I                             myIter,
                0046      I                             myThid,
2dcaa8b9a5 Patr*0047      I                             adactive_var
                0048      &                           )
0a92c8c20d Patr*0049 #else
                0050       subroutine adactive_read_xy(
                0051      I                             active_var_file,
                0052      I                             adactive_var,
1c93ccf46e Jean*0053      I                             iRec,
0a92c8c20d Patr*0054      I                             doglobalread,
                0055      I                             lAdInit,
1c93ccf46e Jean*0056      I                             myIter,
                0057      I                             myThid,
438282c1af Patr*0058      I                             dummy,
1c93ccf46e Jean*0059      O                             addummy
0a92c8c20d Patr*0060      &                           )
                0061 #endif
2dcaa8b9a5 Patr*0062 
d151781088 Patr*0063 C     !DESCRIPTION: \bv
1c93ccf46e Jean*0064 C     ==================================================================
                0065 C     SUBROUTINE adactive_read_xy
                0066 C     ==================================================================
                0067 C     o Adjoint of active_read_xy.
                0068 C     started: Christian Eckert eckert@mit.edu 24-May-1999
                0069 C     ==================================================================
d151781088 Patr*0070 C     \ev
2dcaa8b9a5 Patr*0071 
d151781088 Patr*0072 C     !USES:
1c93ccf46e Jean*0073       IMPLICIT NONE
2dcaa8b9a5 Patr*0074 
1c93ccf46e Jean*0075 C     == global variables ==
2dcaa8b9a5 Patr*0076 #include "EEPARAMS.h"
                0077 #include "SIZE.h"
                0078 
d151781088 Patr*0079 C     !INPUT/OUTPUT PARAMETERS:
04904a066e Timo*0080 C     active_var_file:: filename
                0081 C     adactive_var   :: array
                0082 C     iRec           :: record number
                0083 C     myIter         :: number of optimization iteration (default: 0)
                0084 C     myThid         :: thread number for this instance
                0085 C     doglobalread   :: flag for global or local read/write
                0086 C                       (default: .false.)
                0087 C     lAdInit        :: initialisation of corresponding adjoint
                0088 C                       variable and write to active file
1c93ccf46e Jean*0089       CHARACTER*(*) active_var_file
                0090       _RL     adactive_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0091       INTEGER iRec
04904a066e Timo*0092       INTEGER myIter, myThid
1c93ccf46e Jean*0093       LOGICAL doglobalread
                0094       LOGICAL lAdInit
b4daa24319 Shre*0095 C Tags for IO: ctrl input and adjoint (gradient) output
                0096       _RL  dummy, addummy
2dcaa8b9a5 Patr*0097 
1c93ccf46e Jean*0098 C     !LOCAL VARIABLES:
                0099       CHARACTER*(2) adpref
de57a2ec4b Mart*0100       CHARACTER*(MAX_LEN_FNAM) fname
1c93ccf46e Jean*0101       INTEGER myNr
                0102       LOGICAL useCurrentDir
d151781088 Patr*0103 CEOP
2dcaa8b9a5 Patr*0104 
                0105       adpref = 'ad'
f9d7cbfb72 Ou W*0106       CALL ADD_PREFIX( adpref, active_var_file, fname )
1c93ccf46e Jean*0107       myNr = 1
                0108       useCurrentDir = .FALSE.
2dcaa8b9a5 Patr*0109 
1c93ccf46e Jean*0110       CALL ACTIVE_READ_3D_RL(
                0111      &                 fname, adactive_var, doglobalread,
                0112      &                 useCurrentDir, lAdInit, iRec, myNr,
                0113      &                 REVERSE_SIMULATION, myIter, myThid )
2dcaa8b9a5 Patr*0114 
1c93ccf46e Jean*0115       RETURN
                0116       END
2dcaa8b9a5 Patr*0117 
1c93ccf46e Jean*0118 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
d151781088 Patr*0119 CBOP
                0120 C     !ROUTINE: adactive_read_xyz
                0121 C     !INTERFACE:
0a92c8c20d Patr*0122 #ifdef AUTODIFF_TAMC_COMPATIBILITY
2dcaa8b9a5 Patr*0123       subroutine adactive_read_xyz(
                0124      I                              active_var_file,
1c93ccf46e Jean*0125      I                              iRec,
2dcaa8b9a5 Patr*0126      I                              doglobalread,
                0127      I                              lAdInit,
1c93ccf46e Jean*0128      I                              myIter,
                0129      I                              myThid,
2dcaa8b9a5 Patr*0130      I                              adactive_var
                0131      &                            )
0a92c8c20d Patr*0132 #else
                0133       subroutine adactive_read_xyz(
                0134      I                              active_var_file,
                0135      I                              adactive_var,
1c93ccf46e Jean*0136      I                              iRec,
0a92c8c20d Patr*0137      I                              doglobalread,
                0138      I                              lAdInit,
1c93ccf46e Jean*0139      I                              myIter,
                0140      I                              myThid,
438282c1af Patr*0141      I                              dummy,
                0142      I                              addummy
0a92c8c20d Patr*0143      &                            )
                0144 #endif
2dcaa8b9a5 Patr*0145 
d151781088 Patr*0146 C     !DESCRIPTION: \bv
1c93ccf46e Jean*0147 C     ==================================================================
                0148 C     SUBROUTINE adactive_read_xyz
                0149 C     ==================================================================
                0150 C     o Adjoint of active_read_xyz.
                0151 C     started: Christian Eckert eckert@mit.edu 24-May-1999
                0152 C     ==================================================================
d151781088 Patr*0153 C     \ev
2dcaa8b9a5 Patr*0154 
d151781088 Patr*0155 C     !USES:
1c93ccf46e Jean*0156       IMPLICIT NONE
2dcaa8b9a5 Patr*0157 
1c93ccf46e Jean*0158 C     == global variables ==
2dcaa8b9a5 Patr*0159 #include "EEPARAMS.h"
                0160 #include "SIZE.h"
                0161 
1c93ccf46e Jean*0162 C     !INPUT/OUTPUT PARAMETERS:
04904a066e Timo*0163 C     active_var_file:: filename
                0164 C     adactive_var   :: array
                0165 C     iRec           :: record number
                0166 C     myIter         :: number of optimization iteration (default: 0)
                0167 C     myThid         :: thread number for this instance
                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
1c93ccf46e Jean*0172       CHARACTER*(*) active_var_file
                0173       _RL     adactive_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0174       INTEGER iRec
04904a066e Timo*0175       INTEGER myIter, myThid
1c93ccf46e Jean*0176       LOGICAL doglobalread
                0177       LOGICAL lAdInit
b4daa24319 Shre*0178 C Tags for IO: ctrl input and adjoint (gradient) output
                0179       _RL  dummy, addummy
2dcaa8b9a5 Patr*0180 
1c93ccf46e Jean*0181 C     !LOCAL VARIABLES:
                0182       CHARACTER*(2) adpref
de57a2ec4b Mart*0183       CHARACTER*(MAX_LEN_FNAM) fname
1c93ccf46e Jean*0184       INTEGER myNr
                0185       LOGICAL useCurrentDir
d151781088 Patr*0186 CEOP
2dcaa8b9a5 Patr*0187 
                0188       adpref = 'ad'
f9d7cbfb72 Ou W*0189       CALL ADD_PREFIX( adpref, active_var_file, fname )
1c93ccf46e Jean*0190       myNr = Nr
                0191       useCurrentDir = .FALSE.
2dcaa8b9a5 Patr*0192 
1c93ccf46e Jean*0193       CALL ACTIVE_READ_3D_RL(
                0194      &                 fname, adactive_var, doglobalread,
                0195      &                 useCurrentDir, lAdInit, iRec, myNr,
                0196      &                 REVERSE_SIMULATION, myIter, myThid )
2dcaa8b9a5 Patr*0197 
1c93ccf46e Jean*0198       RETURN
                0199       END
2dcaa8b9a5 Patr*0200 
1c93ccf46e Jean*0201 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
d151781088 Patr*0202 CBOP
d1d6b963cf Patr*0203 C     !ROUTINE: adactive_read_xz
                0204 C     !INTERFACE:
0a92c8c20d Patr*0205 #ifdef AUTODIFF_TAMC_COMPATIBILITY
d1d6b963cf Patr*0206       subroutine adactive_read_xz(
                0207      I                              active_var_file,
1c93ccf46e Jean*0208      I                              iRec,
d1d6b963cf Patr*0209      I                              doglobalread,
                0210      I                              lAdInit,
1c93ccf46e Jean*0211      I                              myIter,
                0212      I                              myThid,
d1d6b963cf Patr*0213      I                              adactive_var
                0214      &                            )
0a92c8c20d Patr*0215 #else
                0216       subroutine adactive_read_xz(
                0217      I                              active_var_file,
                0218      I                              adactive_var,
1c93ccf46e Jean*0219      I                              iRec,
0a92c8c20d Patr*0220      I                              doglobalread,
                0221      I                              lAdInit,
1c93ccf46e Jean*0222      I                              myIter,
                0223      I                              myThid,
438282c1af Patr*0224      I                              dummy,
1c93ccf46e Jean*0225      O                              addummy
0a92c8c20d Patr*0226      &                            )
                0227 #endif
d1d6b963cf Patr*0228 
                0229 C     !DESCRIPTION: \bv
1c93ccf46e Jean*0230 C     ==================================================================
                0231 C     SUBROUTINE adactive_read_xz
                0232 C     ==================================================================
                0233 C     o Adjoint of active_read_xz.
                0234 C     started: heimbach@mit.edu 05-Mar-2001
                0235 C     ==================================================================
d1d6b963cf Patr*0236 C     \ev
                0237 
                0238 C     !USES:
1c93ccf46e Jean*0239       IMPLICIT NONE
d1d6b963cf Patr*0240 
1c93ccf46e Jean*0241 C     == global variables ==
d1d6b963cf Patr*0242 #include "EEPARAMS.h"
                0243 #include "SIZE.h"
                0244 
1c93ccf46e Jean*0245 C     !INPUT/OUTPUT PARAMETERS:
04904a066e Timo*0246 C     active_var_file:: filename
                0247 C     adactive_var   :: array
                0248 C     iRec           :: record number
                0249 C     myIter         :: number of optimization iteration (default: 0)
                0250 C     myThid         :: thread number for this instance
                0251 C     doglobalread   :: flag for global or local read/write
                0252 C                       (default: .false.)
                0253 C     lAdInit        :: initialisation of corresponding adjoint
                0254 C                       variable and write to active file
1c93ccf46e Jean*0255       CHARACTER*(*) active_var_file
                0256       _RL     adactive_var(1-OLx:sNx+OLx,Nr,nSx,nSy)
                0257       INTEGER iRec
04904a066e Timo*0258       INTEGER myIter, myThid
1c93ccf46e Jean*0259       LOGICAL doglobalread
                0260       LOGICAL lAdInit
b4daa24319 Shre*0261 C Tags for IO: ctrl input and adjoint (gradient) output
                0262       _RL  dummy, addummy
d1d6b963cf Patr*0263 
1c93ccf46e Jean*0264 C     !LOCAL VARIABLES:
                0265       CHARACTER*(2) adpref
de57a2ec4b Mart*0266       CHARACTER*(MAX_LEN_FNAM) fname
1c93ccf46e Jean*0267       INTEGER myNr
                0268       LOGICAL useCurrentDir
d1d6b963cf Patr*0269 CEOP
                0270 
                0271       adpref = 'ad'
f9d7cbfb72 Ou W*0272       CALL ADD_PREFIX( adpref, active_var_file, fname )
1c93ccf46e Jean*0273       myNr = Nr
                0274       useCurrentDir = .FALSE.
d1d6b963cf Patr*0275 
1c93ccf46e Jean*0276       CALL ACTIVE_READ_XZ_RL(
                0277      &                 fname, adactive_var, doglobalread,
                0278      &                 useCurrentDir, lAdInit, iRec, myNr,
                0279      &                 REVERSE_SIMULATION, myIter, myThid )
d1d6b963cf Patr*0280 
1c93ccf46e Jean*0281       RETURN
                0282       END
d1d6b963cf Patr*0283 
1c93ccf46e Jean*0284 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
d1d6b963cf Patr*0285 CBOP
                0286 C     !ROUTINE: adactive_read_yz
                0287 C     !INTERFACE:
0a92c8c20d Patr*0288 #ifdef AUTODIFF_TAMC_COMPATIBILITY
d1d6b963cf Patr*0289       subroutine adactive_read_yz(
                0290      I                              active_var_file,
1c93ccf46e Jean*0291      I                              iRec,
d1d6b963cf Patr*0292      I                              doglobalread,
                0293      I                              lAdInit,
1c93ccf46e Jean*0294      I                              myIter,
                0295      I                              myThid,
d1d6b963cf Patr*0296      I                              adactive_var
                0297      &                            )
0a92c8c20d Patr*0298 #else
                0299       subroutine adactive_read_yz(
                0300      I                              active_var_file,
                0301      I                              adactive_var,
1c93ccf46e Jean*0302      I                              iRec,
0a92c8c20d Patr*0303      I                              doglobalread,
                0304      I                              lAdInit,
1c93ccf46e Jean*0305      I                              myIter,
                0306      I                              myThid,
438282c1af Patr*0307      I                              dummy,
1c93ccf46e Jean*0308      O                              addummy
0a92c8c20d Patr*0309      &                            )
                0310 #endif
d1d6b963cf Patr*0311 
                0312 C     !DESCRIPTION: \bv
1c93ccf46e Jean*0313 C     ==================================================================
                0314 C     SUBROUTINE adactive_read_yz
                0315 C     ==================================================================
                0316 C     o Adjoint of active_read_yz.
                0317 C     started: heimbach@mit.edu 05-Mar-2001
                0318 C     ==================================================================
d1d6b963cf Patr*0319 C     \ev
                0320 
                0321 C     !USES:
1c93ccf46e Jean*0322       IMPLICIT NONE
d1d6b963cf Patr*0323 
1c93ccf46e Jean*0324 C     == global variables ==
d1d6b963cf Patr*0325 #include "EEPARAMS.h"
                0326 #include "SIZE.h"
                0327 
1c93ccf46e Jean*0328 C     !INPUT/OUTPUT PARAMETERS:
04904a066e Timo*0329 C     active_var_file:: filename
                0330 C     adactive_var   :: array
                0331 C     iRec           :: record number
                0332 C     myIter         :: number of optimization iteration (default: 0)
                0333 C     myThid         :: thread number for this instance
                0334 C     doglobalread   :: flag for global or local read/write
                0335 C                       (default: .false.)
                0336 C     lAdInit        :: initialisation of corresponding adjoint
                0337 C                       variable and write to active file
1c93ccf46e Jean*0338       CHARACTER*(*) active_var_file
                0339       _RL     adactive_var(1-OLy:sNy+OLy,Nr,nSx,nSy)
                0340       INTEGER iRec
04904a066e Timo*0341       INTEGER myIter, myThid
1c93ccf46e Jean*0342       LOGICAL doglobalread
                0343       LOGICAL lAdInit
b4daa24319 Shre*0344 C Tags for IO: ctrl input and adjoint (gradient) output
                0345       _RL  dummy, addummy
d1d6b963cf Patr*0346 
1c93ccf46e Jean*0347 C     !LOCAL VARIABLES:
                0348       CHARACTER*(2) adpref
de57a2ec4b Mart*0349       CHARACTER*(MAX_LEN_FNAM) fname
1c93ccf46e Jean*0350       INTEGER myNr
                0351       LOGICAL useCurrentDir
d1d6b963cf Patr*0352 CEOP
                0353 
                0354       adpref = 'ad'
f9d7cbfb72 Ou W*0355       CALL ADD_PREFIX( adpref, active_var_file, fname )
1c93ccf46e Jean*0356       myNr = Nr
                0357       useCurrentDir = .FALSE.
d1d6b963cf Patr*0358 
1c93ccf46e Jean*0359       CALL ACTIVE_READ_YZ_RL(
                0360      &                 fname, adactive_var, doglobalread,
                0361      &                 useCurrentDir, lAdInit, iRec, myNr,
                0362      &                 REVERSE_SIMULATION, myIter, myThid )
d1d6b963cf Patr*0363 
1c93ccf46e Jean*0364       RETURN
                0365       END
d1d6b963cf Patr*0366 
1c93ccf46e Jean*0367 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
d1d6b963cf Patr*0368 CBOP
04904a066e Timo*0369 C     !ROUTINE: adactive_read_1d
                0370 C     !INTERFACE:
                0371 #ifdef AUTODIFF_TAMC_COMPATIBILITY
                0372       subroutine adactive_read_1d(
                0373      I                             active_var_file,
                0374      I                             active_var_length,
                0375      I                             iRec,
                0376      I                             lAdInit,
                0377      I                             myIter,
                0378      I                             myThid,
                0379      I                             adactive_var
                0380      &                           )
                0381 #else
                0382       subroutine adactive_read_1d(
                0383      I                             active_var_file,
                0384      I                             adactive_var,
                0385      I                             active_var_length,
                0386      I                             iRec,
                0387      I                             lAdInit,
                0388      I                             myIter,
                0389      I                             myThid,
                0390      I                             dummy,
                0391      O                             addummy
                0392      &                           )
                0393 #endif
                0394 
                0395 C     !DESCRIPTION: \bv
                0396 C     ==================================================================
                0397 C     SUBROUTINE adactive_read_1d
                0398 C     ==================================================================
                0399 C     o Adjoint of active_read_1d.
                0400 C     started: Tim Smith tsmith@oden.utexas.edu 22-Oct-2019
                0401 C     ==================================================================
                0402 C     \ev
                0403 
                0404 C     !USES:
                0405       IMPLICIT NONE
                0406 
                0407 C     == global variables ==
                0408 #include "EEPARAMS.h"
                0409 #include "SIZE.h"
                0410 
                0411 C     !INPUT/OUTPUT PARAMETERS:
                0412 C     active_var_file:: filename
                0413 C     adactive_var:  :: array
                0414 C     active_var_length :: length of array
                0415 C     iRec           :: record number
                0416 C     myIter         :: number of optimization iteration (default: 0)
                0417 C     myThid         :: thread number for this instance
                0418 C     lAdInit        :: initialisation of corresponding adjoint
                0419 C                       variable and write to active file
                0420       CHARACTER*(*) active_var_file
                0421       _RL     adactive_var(*)
                0422       INTEGER active_var_length
                0423       INTEGER iRec
                0424       INTEGER myIter, myThid
                0425       LOGICAL lAdInit
b4daa24319 Shre*0426 C Tags for IO: ctrl input and adjoint (gradient) output
                0427       _RL  dummy, addummy
04904a066e Timo*0428 
                0429 C     !FUNCTIONS:
                0430       INTEGER  ILNBLNK
                0431       EXTERNAL ILNBLNK
                0432 
                0433 C     !LOCAL VARIABLES:
                0434       CHARACTER*(2) adpref
de57a2ec4b Mart*0435       CHARACTER*(MAX_LEN_FNAM) fname
04904a066e Timo*0436       INTEGER il
                0437 CEOP
                0438 
                0439       adpref = 'ad'
                0440       il   = ILNBLNK( active_var_file )
de57a2ec4b Mart*0441       WRITE(fname,'(2A)') adpref, active_var_file(1:il)
04904a066e Timo*0442 
                0443       CALL ACTIVE_READ_1D_RL(
                0444      &                 fname, adactive_var, active_var_length,
                0445      &                 lAdInit, iRec,
                0446      &                 REVERSE_SIMULATION, myIter, myThid )
                0447 
                0448       RETURN
                0449       END
                0450 
                0451 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0452 CBOP
1c93ccf46e Jean*0453 C     !ROUTINE: adactive_write_xy
d151781088 Patr*0454 C     !INTERFACE:
0a92c8c20d Patr*0455 #ifdef AUTODIFF_TAMC_COMPATIBILITY
2dcaa8b9a5 Patr*0456       subroutine adactive_write_xy(
                0457      I                              active_var_file,
1c93ccf46e Jean*0458      I                              iRec,
                0459      I                              myIter,
                0460      I                              myThid,
2dcaa8b9a5 Patr*0461      U                              adactive_var,
                0462      I                              dummy
                0463      &                            )
0a92c8c20d Patr*0464 #else
                0465       subroutine adactive_write_xy(
                0466      I                              active_var_file,
                0467      U                              adactive_var,
1c93ccf46e Jean*0468      I                              iRec,
                0469      I                              myIter,
                0470      I                              myThid,
0a92c8c20d Patr*0471      I                              dummy
                0472      &                            )
                0473 #endif
2dcaa8b9a5 Patr*0474 
d151781088 Patr*0475 C     !DESCRIPTION: \bv
1c93ccf46e Jean*0476 C     ==================================================================
                0477 C     SUBROUTINE adactive_write_xy
                0478 C     ==================================================================
                0479 C     o Adjoint of active_write_xy.
                0480 C     started: Christian Eckert eckert@mit.edu 24-May-1999
                0481 C     ==================================================================
d151781088 Patr*0482 C     \ev
2dcaa8b9a5 Patr*0483 
d151781088 Patr*0484 C     !USES:
1c93ccf46e Jean*0485       IMPLICIT NONE
2dcaa8b9a5 Patr*0486 
1c93ccf46e Jean*0487 C     == global variables ==
2dcaa8b9a5 Patr*0488 #include "EEPARAMS.h"
                0489 #include "SIZE.h"
                0490 
1c93ccf46e Jean*0491 C     !INPUT/OUTPUT PARAMETERS:
04904a066e Timo*0492 C     active_var_file:: filename
                0493 C     adactive_var   :: array
                0494 C     iRec           :: record number
                0495 C     myIter         :: number of optimization iteration (default: 0)
                0496 C     myThid         :: thread number for this instance
1c93ccf46e Jean*0497       CHARACTER*(*) active_var_file
                0498       _RL     adactive_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0499       INTEGER iRec
04904a066e Timo*0500       INTEGER myIter, myThid
2dcaa8b9a5 Patr*0501       _RL     dummy
                0502 
d151781088 Patr*0503 C     !LOCAL VARIABLES:
1c93ccf46e Jean*0504       CHARACTER*(2) adpref
de57a2ec4b Mart*0505       CHARACTER*(MAX_LEN_FNAM) fname
1c93ccf46e Jean*0506       INTEGER myNr
                0507       LOGICAL globalFile
                0508       LOGICAL useCurrentDir
d151781088 Patr*0509 CEOP
2dcaa8b9a5 Patr*0510 
                0511       adpref = 'ad'
f9d7cbfb72 Ou W*0512       CALL ADD_PREFIX( adpref, active_var_file, fname )
1c93ccf46e Jean*0513       myNr = 1
                0514       globalFile = .FALSE.
                0515       useCurrentDir = .FALSE.
                0516 
                0517       CALL ACTIVE_WRITE_3D_RL(
                0518      &                 fname, adactive_var, globalFile,
                0519      &                 useCurrentDir, iRec, myNr,
                0520      &                 REVERSE_SIMULATION, myIter, myThid )
                0521 
                0522       RETURN
                0523       END
                0524 
                0525 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
d151781088 Patr*0526 CBOP
1c93ccf46e Jean*0527 C     !ROUTINE: adactive_write_xyz
d151781088 Patr*0528 C     !INTERFACE:
0a92c8c20d Patr*0529 #ifdef AUTODIFF_TAMC_COMPATIBILITY
2dcaa8b9a5 Patr*0530       subroutine adactive_write_xyz(
                0531      I                               active_var_file,
1c93ccf46e Jean*0532      I                               iRec,
                0533      I                               myIter,
                0534      I                               myThid,
2dcaa8b9a5 Patr*0535      U                               adactive_var,
                0536      I                               dummy
                0537      &                             )
0a92c8c20d Patr*0538 #else
                0539       subroutine adactive_write_xyz(
                0540      I                               active_var_file,
                0541      U                               adactive_var,
1c93ccf46e Jean*0542      I                               iRec,
                0543      I                               myIter,
                0544      I                               myThid,
0a92c8c20d Patr*0545      I                               dummy
                0546      &                             )
                0547 #endif
2dcaa8b9a5 Patr*0548 
d151781088 Patr*0549 C     !DESCRIPTION: \bv
1c93ccf46e Jean*0550 C     ==================================================================
                0551 C     SUBROUTINE adactive_write_xyz
                0552 C     ==================================================================
                0553 C     o Adjoint of active_write_xyz.
                0554 C     started: Christian Eckert eckert@mit.edu 24-May-1999
                0555 C     ==================================================================
d151781088 Patr*0556 C     \ev
2dcaa8b9a5 Patr*0557 
d151781088 Patr*0558 C     !USES:
1c93ccf46e Jean*0559       IMPLICIT NONE
2dcaa8b9a5 Patr*0560 
1c93ccf46e Jean*0561 C     == global variables ==
2dcaa8b9a5 Patr*0562 #include "EEPARAMS.h"
                0563 #include "SIZE.h"
                0564 
1c93ccf46e Jean*0565 C     !INPUT/OUTPUT PARAMETERS:
04904a066e Timo*0566 C     active_var_file:: filename
                0567 C     adactive_var   :: array
                0568 C     iRec           :: record number
                0569 C     myIter         :: number of optimization iteration (default: 0)
                0570 C     myThid         :: thread number for this instance
1c93ccf46e Jean*0571       CHARACTER*(*) active_var_file
                0572       _RL     adactive_var(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0573       INTEGER iRec
04904a066e Timo*0574       INTEGER myIter, myThid
2dcaa8b9a5 Patr*0575       _RL dummy
                0576 
d151781088 Patr*0577 C     !LOCAL VARIABLES:
1c93ccf46e Jean*0578       CHARACTER*(2) adpref
de57a2ec4b Mart*0579       CHARACTER*(MAX_LEN_FNAM) fname
1c93ccf46e Jean*0580       INTEGER myNr
                0581       LOGICAL globalFile
                0582       LOGICAL useCurrentDir
d151781088 Patr*0583 CEOP
2dcaa8b9a5 Patr*0584 
                0585       adpref = 'ad'
f9d7cbfb72 Ou W*0586       CALL ADD_PREFIX( adpref, active_var_file, fname )
1c93ccf46e Jean*0587       myNr = Nr
                0588       globalFile = .FALSE.
                0589       useCurrentDir = .FALSE.
                0590 
                0591       CALL ACTIVE_WRITE_3D_RL(
                0592      &                 fname, adactive_var, globalFile,
                0593      &                 useCurrentDir, iRec, myNr,
                0594      &                 REVERSE_SIMULATION, myIter, myThid )
                0595 
                0596       RETURN
                0597       END
                0598 
                0599 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
d1d6b963cf Patr*0600 CBOP
1c93ccf46e Jean*0601 C     !ROUTINE: adactive_write_xz
d1d6b963cf Patr*0602 C     !INTERFACE:
0a92c8c20d Patr*0603 #ifdef AUTODIFF_TAMC_COMPATIBILITY
d1d6b963cf Patr*0604       subroutine adactive_write_xz(
                0605      I                               active_var_file,
1c93ccf46e Jean*0606      I                               iRec,
                0607      I                               myIter,
                0608      I                               myThid,
d1d6b963cf Patr*0609      U                               adactive_var,
                0610      I                               dummy
                0611      &                             )
0a92c8c20d Patr*0612 #else
                0613       subroutine adactive_write_xz(
                0614      I                               active_var_file,
                0615      U                               adactive_var,
1c93ccf46e Jean*0616      I                               iRec,
                0617      I                               myIter,
                0618      I                               myThid,
0a92c8c20d Patr*0619      I                               dummy
                0620      &                             )
                0621 #endif
d1d6b963cf Patr*0622 
                0623 C     !DESCRIPTION: \bv
1c93ccf46e Jean*0624 C     ==================================================================
                0625 C     SUBROUTINE adactive_write_xz
                0626 C     ==================================================================
                0627 C     o Adjoint of active_write_xz.
                0628 C     started: heimbach@mit.edu 05-Mar-2001
                0629 C     ==================================================================
d1d6b963cf Patr*0630 C     \ev
                0631 
                0632 C     !USES:
1c93ccf46e Jean*0633       IMPLICIT NONE
d1d6b963cf Patr*0634 
1c93ccf46e Jean*0635 C     == global variables ==
d1d6b963cf Patr*0636 #include "EEPARAMS.h"
                0637 #include "SIZE.h"
                0638 
1c93ccf46e Jean*0639 C     !INPUT/OUTPUT PARAMETERS:
04904a066e Timo*0640 C     active_var_file:: filename
                0641 C     adactive_var   :: array
                0642 C     iRec           :: record number
                0643 C     myIter         :: number of optimization iteration (default: 0)
                0644 C     myThid         :: thread number for this instance
1c93ccf46e Jean*0645       CHARACTER*(*) active_var_file
                0646       _RL     adactive_var(1-OLx:sNx+OLx,Nr,nSx,nSy)
                0647       INTEGER iRec
04904a066e Timo*0648       INTEGER myIter, myThid
d1d6b963cf Patr*0649       _RL dummy
                0650 
                0651 C     !LOCAL VARIABLES:
1c93ccf46e Jean*0652       CHARACTER*(2) adpref
de57a2ec4b Mart*0653       CHARACTER*(MAX_LEN_FNAM) fname
1c93ccf46e Jean*0654       INTEGER myNr
                0655       LOGICAL globalFile
                0656       LOGICAL useCurrentDir
d1d6b963cf Patr*0657 CEOP
                0658 
                0659       adpref = 'ad'
f9d7cbfb72 Ou W*0660       CALL ADD_PREFIX( adpref, active_var_file, fname )
1c93ccf46e Jean*0661       myNr = Nr
                0662       globalFile = .FALSE.
                0663       useCurrentDir = .FALSE.
                0664 
                0665       CALL ACTIVE_WRITE_XZ_RL(
                0666      &                 fname, adactive_var, globalFile,
                0667      &                 useCurrentDir, iRec, myNr,
                0668      &                 REVERSE_SIMULATION, myIter, myThid )
                0669 
                0670       RETURN
                0671       END
                0672 
                0673 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
d1d6b963cf Patr*0674 CBOP
1c93ccf46e Jean*0675 C     !ROUTINE: adactive_write_yz
d1d6b963cf Patr*0676 C     !INTERFACE:
0a92c8c20d Patr*0677 #ifdef AUTODIFF_TAMC_COMPATIBILITY
d1d6b963cf Patr*0678       subroutine adactive_write_yz(
                0679      I                               active_var_file,
1c93ccf46e Jean*0680      I                               iRec,
                0681      I                               myIter,
                0682      I                               myThid,
d1d6b963cf Patr*0683      U                               adactive_var,
                0684      I                               dummy
                0685      &                             )
0a92c8c20d Patr*0686 #else
                0687       subroutine adactive_write_yz(
                0688      I                               active_var_file,
                0689      U                               adactive_var,
1c93ccf46e Jean*0690      I                               iRec,
                0691      I                               myIter,
                0692      I                               myThid,
0a92c8c20d Patr*0693      I                               dummy
                0694      &                             )
                0695 #endif
d1d6b963cf Patr*0696 
                0697 C     !DESCRIPTION: \bv
1c93ccf46e Jean*0698 C     ==================================================================
                0699 C     SUBROUTINE adactive_write_yz
                0700 C     ==================================================================
                0701 C     o Adjoint of active_write_yz.
                0702 C     started: heimbach@mit.edu 05-Mar-2001
                0703 C     ==================================================================
d1d6b963cf Patr*0704 C     \ev
                0705 
                0706 C     !USES:
1c93ccf46e Jean*0707       IMPLICIT NONE
d1d6b963cf Patr*0708 
1c93ccf46e Jean*0709 C     == global variables ==
d1d6b963cf Patr*0710 #include "EEPARAMS.h"
                0711 #include "SIZE.h"
                0712 
1c93ccf46e Jean*0713 C     !INPUT/OUTPUT PARAMETERS:
04904a066e Timo*0714 C     active_var_file:: filename
                0715 C     adactive_var   :: array
                0716 C     iRec           :: record number
                0717 C     myIter         :: number of optimization iteration (default: 0)
                0718 C     myThid         :: thread number for this instance
1c93ccf46e Jean*0719       CHARACTER*(*) active_var_file
                0720       _RL     adactive_var(1-OLy:sNy+OLy,Nr,nSx,nSy)
                0721       INTEGER iRec
04904a066e Timo*0722       INTEGER myIter, myThid
d1d6b963cf Patr*0723       _RL dummy
                0724 
                0725 C     !LOCAL VARIABLES:
1c93ccf46e Jean*0726       CHARACTER*(2) adpref
de57a2ec4b Mart*0727       CHARACTER*(MAX_LEN_FNAM) fname
1c93ccf46e Jean*0728       INTEGER myNr
                0729       LOGICAL globalFile
                0730       LOGICAL useCurrentDir
d1d6b963cf Patr*0731 CEOP
                0732 
                0733       adpref = 'ad'
f9d7cbfb72 Ou W*0734       CALL ADD_PREFIX( adpref, active_var_file, fname )
1c93ccf46e Jean*0735       myNr = Nr
                0736       globalFile = .FALSE.
                0737       useCurrentDir = .FALSE.
                0738 
                0739       CALL ACTIVE_WRITE_YZ_RL(
                0740      &                 fname, adactive_var, globalFile,
                0741      &                 useCurrentDir, iRec, myNr,
                0742      &                 REVERSE_SIMULATION, myIter, myThid )
                0743 
                0744       RETURN
                0745       END
04904a066e Timo*0746 
                0747 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0748 CBOP
                0749 C     !ROUTINE: adactive_write_1d
                0750 C     !INTERFACE:
                0751 #ifdef AUTODIFF_TAMC_COMPATIBILITY
                0752       subroutine adactive_write_1d(
                0753      I                               active_var_file,
                0754      I                               active_var_length,
                0755      I                               iRec,
                0756      I                               myIter,
                0757      I                               myThid,
                0758      U                               adactive_var,
                0759      I                               dummy
                0760      &                             )
                0761 #else
                0762       subroutine adactive_write_1d(
                0763      I                               active_var_file,
                0764      U                               adactive_var,
                0765      U                               active_var_length,
                0766      I                               iRec,
                0767      I                               myIter,
                0768      I                               myThid,
                0769      I                               dummy
                0770      &                             )
                0771 #endif
                0772 
                0773 C     !DESCRIPTION: \bv
                0774 C     ==================================================================
                0775 C     SUBROUTINE adactive_write_1d
                0776 C     ==================================================================
                0777 C     o Adjoint of active_write_1d.
                0778 C     started: tsmith@oden.utexas.edu 22-Oct-2019
                0779 C     ==================================================================
                0780 C     \ev
                0781 
                0782 C     !USES:
                0783       IMPLICIT NONE
                0784 
                0785 C     == global variables ==
                0786 #include "EEPARAMS.h"
                0787 #include "SIZE.h"
                0788 
                0789 C     !INPUT/OUTPUT PARAMETERS:
                0790 C     active_var_file:: filename
                0791 C     adactive_var   :: array
                0792 C     active_var_length :: length of array
                0793 C     iRec           :: record number
                0794 C     myIter         :: number of optimization iteration (default: 0)
                0795 C     myThid         :: thread number for this instance
                0796       CHARACTER*(*) active_var_file
                0797       _RL     adactive_var(*)
                0798       INTEGER active_var_length
                0799       INTEGER iRec
                0800       INTEGER myIter, myThid
                0801       _RL dummy
                0802 
                0803 C     !FUNCTIONS:
                0804       INTEGER  ILNBLNK
                0805       EXTERNAL ILNBLNK
                0806 
                0807 C     !LOCAL VARIABLES:
                0808       CHARACTER*(2) adpref
de57a2ec4b Mart*0809       CHARACTER*(MAX_LEN_FNAM) fname
04904a066e Timo*0810       INTEGER il
                0811 CEOP
                0812 
                0813       adpref = 'ad'
                0814       il   = ILNBLNK( active_var_file )
de57a2ec4b Mart*0815       WRITE(fname,'(2A)') adpref, active_var_file(1:il)
04904a066e Timo*0816 
                0817       CALL ACTIVE_WRITE_1D_RL(
                0818      &                 fname, adactive_var, active_var_length,
                0819      &                 iRec, REVERSE_SIMULATION, myIter, myThid )
                0820 
                0821       RETURN
                0822       END