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