| 1 | 
utke | 
1.1 | 
C $Header: /u/gcmpack/MITgcm/verification/OpenAD/code_ad/tamc.h,v 1.6 2007/05/10 16:58:28 heimbach Exp $ | 
| 2 | 
  | 
  | 
C $Name:  $ | 
| 3 | 
  | 
  | 
 | 
| 4 | 
  | 
  | 
#include "PACKAGES_CONFIG.h" | 
| 5 | 
  | 
  | 
 | 
| 6 | 
  | 
  | 
c     ================================================================ | 
| 7 | 
  | 
  | 
c     HEADER TAMC | 
| 8 | 
  | 
  | 
c     ================================================================ | 
| 9 | 
  | 
  | 
c | 
| 10 | 
  | 
  | 
c     o Header for the use of the Tangent Linear and Adjoint Model | 
| 11 | 
  | 
  | 
c       Compiler (TAMC). | 
| 12 | 
  | 
  | 
c | 
| 13 | 
  | 
  | 
c     started: Christian Eckert eckert@mit.edu  04-Feb-1999 | 
| 14 | 
  | 
  | 
c     changed: Patrick Heimbach heimbach@mit.edu 06-Jun-2000 | 
| 15 | 
  | 
  | 
c              - New parameter nlevchk_0 for dimensionalising | 
| 16 | 
  | 
  | 
c                common blocks in the undef ALLOW_TAMC_CHECKPOINTING case | 
| 17 | 
  | 
  | 
c              - nhreads_chkpt was declared at the wrong place | 
| 18 | 
  | 
  | 
c              - new keys, separate for different packages | 
| 19 | 
  | 
  | 
 | 
| 20 | 
  | 
  | 
c     ================================================================ | 
| 21 | 
  | 
  | 
c     HEADER TAMC | 
| 22 | 
  | 
  | 
c     ================================================================ | 
| 23 | 
  | 
  | 
 | 
| 24 | 
  | 
  | 
 | 
| 25 | 
  | 
  | 
c     TAMC checkpointing parameters: | 
| 26 | 
  | 
  | 
c     ============================== | 
| 27 | 
  | 
  | 
c | 
| 28 | 
  | 
  | 
c     The checkpointing parameters have to be consistent with other model | 
| 29 | 
  | 
  | 
c     parameters and variables. This has to be checked before the model is | 
| 30 | 
  | 
  | 
c     run. | 
| 31 | 
  | 
  | 
c | 
| 32 | 
  | 
  | 
c     nyears_chkpt   - Number of calendar years affected by the assimilation | 
| 33 | 
  | 
  | 
c                      experiment; nyears_chkpt has to be at least equal to | 
| 34 | 
  | 
  | 
c                      the result of cal_IntYears(mythid). | 
| 35 | 
  | 
  | 
c     nmonths_chkpt  - Number of months per year; nmonth_chkpt has to be at | 
| 36 | 
  | 
  | 
c                      least equal to nmonthyear. | 
| 37 | 
  | 
  | 
c     ndays_chkpt    - Number of days per month; nday_chkpt has to be at least | 
| 38 | 
  | 
  | 
c                      equal to nmaxdaymonth. | 
| 39 | 
  | 
  | 
c     nsteps_chkpt   - Number of steps per day; nsteps_chkpt has to be at | 
| 40 | 
  | 
  | 
c                      least equal to cal_nStepDay(mythid) | 
| 41 | 
  | 
  | 
c     ncheck_chkpt   - Number of innermost checkpoints. | 
| 42 | 
  | 
  | 
c | 
| 43 | 
  | 
  | 
c     ngeom_chkpt    - Geometry factor. | 
| 44 | 
  | 
  | 
c     nthreads_chkpt - Number of threads to be used; nth_chkpt .eq. nTx*nTy | 
| 45 | 
  | 
  | 
 | 
| 46 | 
  | 
  | 
      integer nyears_chkpt | 
| 47 | 
  | 
  | 
      integer nmonths_chkpt | 
| 48 | 
  | 
  | 
      integer ndays_chkpt | 
| 49 | 
  | 
  | 
      integer ngeom_chkpt | 
| 50 | 
  | 
  | 
      integer ncheck_chkpt | 
| 51 | 
  | 
  | 
      integer nthreads_chkpt | 
| 52 | 
  | 
  | 
 | 
| 53 | 
  | 
  | 
      parameter (nyears_chkpt   =          1 ) | 
| 54 | 
  | 
  | 
      parameter (nmonths_chkpt  =         12 ) | 
| 55 | 
  | 
  | 
      parameter (ndays_chkpt    =         31 ) | 
| 56 | 
  | 
  | 
      parameter (ngeom_chkpt    = nr*nsx*nsy ) | 
| 57 | 
  | 
  | 
      parameter (ncheck_chkpt   =          6 ) | 
| 58 | 
  | 
  | 
      parameter ( nthreads_chkpt = 1 ) | 
| 59 | 
  | 
  | 
 | 
| 60 | 
  | 
  | 
#ifdef ALLOW_TAMC_CHECKPOINTING | 
| 61 | 
  | 
  | 
 | 
| 62 | 
  | 
  | 
      integer    nchklev_1 | 
| 63 | 
  | 
  | 
      parameter( nchklev_1      = 30 ) | 
| 64 | 
  | 
  | 
      integer    nchklev_2 | 
| 65 | 
  | 
  | 
      parameter( nchklev_2      = 136 ) | 
| 66 | 
  | 
  | 
      integer    nchklev_3 | 
| 67 | 
  | 
  | 
      parameter( nchklev_3      = 136 ) | 
| 68 | 
  | 
  | 
 | 
| 69 | 
  | 
  | 
c--   Note always check for the correct sizes of the common blocks! | 
| 70 | 
  | 
  | 
 | 
| 71 | 
  | 
  | 
#else /* ALLOW_TAMC_CHECKPOINTING undefined */ | 
| 72 | 
  | 
  | 
 | 
| 73 | 
  | 
  | 
      integer    nchklev_0 | 
| 74 | 
  | 
  | 
      parameter( nchklev_0      =  64800 ) | 
| 75 | 
  | 
  | 
 | 
| 76 | 
  | 
  | 
#endif /* ALLOW_TAMC_CHECKPOINTING */ | 
| 77 | 
  | 
  | 
 | 
| 78 | 
  | 
  | 
c     TAMC keys: | 
| 79 | 
  | 
  | 
c     ========== | 
| 80 | 
  | 
  | 
c | 
| 81 | 
  | 
  | 
c     The keys are used for storing and reading data of the reference | 
| 82 | 
  | 
  | 
c     trajectory. | 
| 83 | 
  | 
  | 
c | 
| 84 | 
  | 
  | 
c     The convention used here is: | 
| 85 | 
  | 
  | 
c                                    ikey_<name> | 
| 86 | 
  | 
  | 
c | 
| 87 | 
  | 
  | 
c     which means that this key is used in routine <name> for reading | 
| 88 | 
  | 
  | 
c     and writing data. | 
| 89 | 
  | 
  | 
 | 
| 90 | 
  | 
  | 
      common /tamc_keys_i/ | 
| 91 | 
  | 
  | 
     &                     ikey_dynamics, | 
| 92 | 
  | 
  | 
     &                     ikey_yearly, | 
| 93 | 
  | 
  | 
     &                     ikey_daily_1, | 
| 94 | 
  | 
  | 
     &                     ikey_daily_2, | 
| 95 | 
  | 
  | 
     &                     iloop_daily | 
| 96 | 
  | 
  | 
 | 
| 97 | 
  | 
  | 
      integer ikey_dynamics | 
| 98 | 
  | 
  | 
      integer ikey_yearly | 
| 99 | 
  | 
  | 
      integer ikey_daily_1 | 
| 100 | 
  | 
  | 
      integer ikey_daily_2 | 
| 101 | 
  | 
  | 
      integer iloop_daily | 
| 102 | 
  | 
  | 
 | 
| 103 | 
  | 
  | 
      INTEGER    isbyte | 
| 104 | 
  | 
  | 
      PARAMETER( isbyte      = 8 ) | 
| 105 | 
  | 
  | 
      INTEGER    maximpl | 
| 106 | 
  | 
  | 
      PARAMETER( maximpl     = 6 ) | 
| 107 | 
  | 
  | 
#ifdef ALLOW_PTRACERS | 
| 108 | 
  | 
  | 
cph moved this to PTRACERS_SIZE.h | 
| 109 | 
  | 
  | 
cph      INTEGER    maxpass | 
| 110 | 
  | 
  | 
cph      PARAMETER( maxpass     = PTRACERS_num + 2 ) | 
| 111 | 
  | 
  | 
#else | 
| 112 | 
  | 
  | 
      INTEGER    maxpass | 
| 113 | 
  | 
  | 
      PARAMETER( maxpass     = 2 ) | 
| 114 | 
  | 
  | 
#endif | 
| 115 | 
  | 
  | 
      INTEGER    maxcube | 
| 116 | 
  | 
  | 
      PARAMETER( maxcube     = 1 ) | 
| 117 | 
  | 
  | 
 | 
| 118 | 
  | 
  | 
      INTEGER act0, act1, act2, act3, act4 | 
| 119 | 
  | 
  | 
      INTEGER max0, max1, max2, max3 | 
| 120 | 
  | 
  | 
      INTEGER iikey, kkey, passkey, igadkey,  | 
| 121 | 
  | 
  | 
     &        itdkey, idynkey, igmkey, ikppkey, iptrkey | 
| 122 | 
  | 
  | 
 | 
| 123 | 
  | 
  | 
c     ================================================================ | 
| 124 | 
  | 
  | 
c     END OF HEADER TAMC | 
| 125 | 
  | 
  | 
c     ================================================================ | 
| 126 | 
  | 
  | 
 | 
| 127 | 
  | 
  | 
 |