C $Header: /u/gcmpack/MITgcm/verification/tutorial_dic_adjoffline/code_ad/tamc.h,v 1.1 2009/10/16 16:49:48 heimbach Exp $
C $Name:  $

#include "PACKAGES_CONFIG.h"

c     ================================================================
c     HEADER TAMC
c     ================================================================
c
c     o Header for the use of the Tangent Linear and Adjoint Model
c       Compiler (TAMC).
c
c     started: Christian Eckert eckert@mit.edu  04-Feb-1999
c     changed: Patrick Heimbach heimbach@mit.edu 06-Jun-2000
c              - New parameter nlevchk_0 for dimensionalising
c                common blocks in the undef ALLOW_TAMC_CHECKPOINTING case
c              - nhreads_chkpt was declared at the wrong place
c              - new keys, separate for different packages

c     ================================================================
c     HEADER TAMC
c     ================================================================


c     TAMC checkpointing parameters:
c     ==============================
c
c     The checkpointing parameters have to be consistent with other model
c     parameters and variables. This has to be checked before the model is
c     run.
c
c     nyears_chkpt   - Number of calendar years affected by the assimilation
c                      experiment; nyears_chkpt has to be at least equal to
c                      the result of cal_IntYears(mythid).
c     nmonths_chkpt  - Number of months per year; nmonth_chkpt has to be at
c                      least equal to nmonthyear.
c     ndays_chkpt    - Number of days per month; nday_chkpt has to be at least
c                      equal to nmaxdaymonth.
c     nsteps_chkpt   - Number of steps per day; nsteps_chkpt has to be at
c                      least equal to cal_nStepDay(mythid)
c     ncheck_chkpt   - Number of innermost checkpoints.
c
c     ngeom_chkpt    - Geometry factor.
c     nthreads_chkpt - Number of threads to be used; nth_chkpt .eq. nTx*nTy

      integer nyears_chkpt
      integer nmonths_chkpt
      integer ndays_chkpt
      integer ngeom_chkpt
      integer ncheck_chkpt
      integer nthreads_chkpt

      parameter (nyears_chkpt   =          1 )
      parameter (nmonths_chkpt  =         12 )
      parameter (ndays_chkpt    =         31 )
      parameter (ngeom_chkpt    = nr*nsx*nsy )
      parameter (ncheck_chkpt   =          6 )
      parameter ( nthreads_chkpt = 1 )

#ifdef ALLOW_TAMC_CHECKPOINTING

      integer    nchklev_1
      parameter( nchklev_1      =    1 )
      integer    nchklev_2
#ifdef AUTODIFF_2_LEVEL_CHECKPOINT
      parameter( nchklev_2      =   10 )
#else
      parameter( nchklev_2      =   10 )
#endif
      integer    nchklev_3
      parameter( nchklev_3      =   50 )

c--   Note always check for the correct sizes of the common blocks!

#else /* ALLOW_TAMC_CHECKPOINTING undefined */

      integer    nchklev_0
      parameter( nchklev_0      =  64800 )

#endif /* ALLOW_TAMC_CHECKPOINTING */

c     TAMC keys:
c     ==========
c
c     The keys are used for storing and reading data of the reference
c     trajectory.
c
c     The convention used here is:
c                                    ikey_
c
c     which means that this key is used in routine  for reading
c     and writing data.

      common /tamc_keys_i/
     &                     ikey_dynamics,
     &                     ikey_yearly,
     &                     ikey_daily_1,
     &                     ikey_daily_2,
     &                     iloop_daily

      integer ikey_dynamics
      integer ikey_yearly
      integer ikey_daily_1
      integer ikey_daily_2
      integer iloop_daily

      INTEGER    isbyte
#ifdef ALLOW_TAMC_SINGLEPREC_COMLEV
      PARAMETER( isbyte      = 4 )
#else
      PARAMETER( isbyte      = 8 )
#endif
      INTEGER    maximpl
      PARAMETER( maximpl     = 6 )
#ifdef ALLOW_PTRACERS
cph moved this to PTRACERS_SIZE.h
cph      INTEGER    maxpass
cph      PARAMETER( maxpass     = PTRACERS_num + 2 )
#else
      INTEGER    maxpass
      PARAMETER( maxpass     = 2 )
#endif
      INTEGER    maxcube
      PARAMETER( maxcube     = 1 )

      INTEGER act0, act1, act2, act3, act4
      INTEGER max0, max1, max2, max3
      INTEGER iikey, kkey, passkey, igadkey, 
     &        itdkey, idynkey, igmkey

c     ================================================================
c     END OF HEADER TAMC
c     ================================================================