Back to home page

MITgcm

 
 

    


File indexing completed on 2024-02-07 06:10:17 UTC

view on githubraw file Latest commit 35c4fdc7 on 2024-02-06 21:05:47 UTC
13d362b8c1 Ou W*0001 CBOP
                0002 C    !ROUTINE: ECCO.h
                0003 C    !INTERFACE:
                0004 C #include ECCO.h
                0005 
                0006 C    !DESCRIPTION: \bv
                0007 C     ==================================================================
                0008 C     ECCO.h
                0009 C     o Main header file for the ECCO pkg.
                0010 C       started: Christian Eckert eckert@mit.edu  23-Feb-1999
                0011 C     ==================================================================
                0012 C     \ev
                0013 CEOP
                0014 
                0015 C     Version of the release and versions of used packages:
                0016 C     =====================================================
                0017 C
                0018 C     eccoVersion                - ecco release version.
                0019 C     usesCalendarVersion        - version of the calendar that has to
                0020 C                                  be used.
                0021 C     usesExternalForcingVersion - version of the external forcing that
                0022 C                                  has to be used.
                0023 C     usesAdjointSupportVersion  - version of the adjoint support routines
                0024 C                                  that have to be used.
                0025 C     usesOptimizationVersion    - version of the oof-line optimization
                0026 C                                  that has to be used.
                0027 
                0028       CHARACTER*(5) eccoVersion
                0029       CHARACTER*(5) eccoUsesCalVersion
                0030       CHARACTER*(5) eccoUsesExfVersion
                0031       CHARACTER*(5) eccoUsesAdsuppVersion
                0032       CHARACTER*(5) eccoUsesOptimVersion
                0033 
                0034       PARAMETER(    eccoVersion           = '0.1.0' )
                0035       PARAMETER(    eccoUsesCalVersion    = '0.1.4' )
                0036       PARAMETER(    eccoUsesExfVersion    = '0.1.1' )
                0037       PARAMETER(    eccoUsesAdsuppVersion = '0.1.0' )
                0038       PARAMETER(    eccoUsesOptimVersion  = '2.1.0' )
                0039 
                0040 C     Experiment name:
                0041 C     ================
                0042 
                0043       COMMON /ECCO_C/
                0044      &                expId
                0045       CHARACTER*(10)  expId
                0046 
                0047 C     Integration information:
                0048 C     ========================
                0049 C
                0050 C     nyears - number of calendar years that are affected by the
                0051 C              current integration.
                0052 
                0053       COMMON /ECCO_I/
                0054      &                nyears, nmonths, ndays, numsteps,
                0055      &                eccoiter, ecco_prevcall
                0056       INTEGER nyears
                0057       INTEGER nmonths
                0058       INTEGER ndays
                0059       INTEGER numsteps
                0060       INTEGER eccoiter
                0061       INTEGER ecco_prevcall
                0062 
                0063 C     Averaging counters:
                0064 C     ===================
                0065 C
                0066 C     sum1day :: counter for the daily averaging
                0067 C     sum1mon :: counter for the monthly averaging
                0068 C     dayrec  :: number of averaged surface pressure records.
                0069 C     monrec  :: number of averaged theta and salinity records.
                0070 
                0071       COMMON /AVERAGE_I/
                0072      &                   sum1day,sum1mon,sum1year,
                0073      &                   dayrec,monrec,yearrec
                0074       INTEGER sum1day
                0075       INTEGER sum1mon
                0076       INTEGER sum1year
                0077       INTEGER dayrec
                0078       INTEGER monrec
                0079       INTEGER yearrec
                0080 
                0081 C     Flags used in the model-data comparison:
                0082 C     ========================================
                0083 C
                0084 C     using_ers :: flag that indicates the use of ERS data
                0085 
                0086       COMMON /ECCO_COST_DATA_FLAGS/
                0087      &                         using_mdt,
                0088      &                         using_tpj,
                0089      &                         using_topex,
                0090      &                         using_ers,
                0091      &                         using_gfo,
                0092      &                         using_cost_altim,
                0093      &                         using_cost_sst,
cda1c18f72 Jean*0094      &                         using_cost_seaice,
                0095      &                         using_cost_transp
13d362b8c1 Ou W*0096       LOGICAL using_mdt
                0097       LOGICAL using_tpj
                0098       LOGICAL using_topex
                0099       LOGICAL using_ers
                0100       LOGICAL using_gfo
                0101       LOGICAL using_cost_altim
                0102       LOGICAL using_cost_sst
                0103       LOGICAL using_cost_seaice
                0104       LOGICAL using_cost_transp
                0105 
                0106 C     Record counters relevant for the cost function evaluation.
                0107 C     ==========================================================
                0108 C
                0109 C     nyearsrec:: number of yearly records that will be generated by
                0110 C                 the current model integration.
                0111 C     nmonsrec :: number of monthly records that will be generated by
                0112 C                 the current model integration.
                0113 C     ndaysrec :: number of  daily  records that will be generated by
                0114 C                 the current model integration.
                0115 
                0116       COMMON /ECCO_I/
                0117      &                nyearsrec,
                0118      &                nmonsrec,
                0119      &                ndaysrec
                0120       INTEGER nyearsrec
                0121       INTEGER nmonsrec
                0122       INTEGER ndaysrec
                0123 
                0124       COMMON /ECCO_R/
b0b45f2373 Ou W*0125      &                    m_eta, m_UE, m_VN, m_bp,
                0126      &                    trVol, trHeat, trSalt,
35c4fdc74b Emma*0127      &                    frame
b0b45f2373 Ou W*0128       _RL m_eta    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,   nSx,nSy)
                0129       _RL m_UE     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0130       _RL m_VN     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0131       _RL m_bp     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,   nSx,nSy)
                0132       _RL trVol    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0133       _RL trHeat   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0134       _RL trSalt   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0135       _RL frame    (1-OLx:sNx+OLx,1-OLy:sNy+OLy           )
                0136 
13d362b8c1 Ou W*0137 #ifdef ALLOW_PSBAR_STERIC
b0b45f2373 Ou W*0138       COMMON /ECCO_R2/
13d362b8c1 Ou W*0139      &                    sterGloH,
                0140      &                    VOLsumGlob_0, VOLsumGlob,
b0b45f2373 Ou W*0141      &                    RHOsumGlob_0, RHOsumGlob
13d362b8c1 Ou W*0142       _RL sterGloH
b0b45f2373 Ou W*0143       _RL VOLsumGlob_0, VOLsumGlob, RHOsumGlob_0, RHOsumGlob
                0144 
35c4fdc74b Emma*0145 #endif
13d362b8c1 Ou W*0146 #ifdef ATMOSPHERIC_LOADING
                0147 #ifdef ALLOW_IB_CORR
b0b45f2373 Ou W*0148       COMMON /ECCO_R3/
                0149      &                    m_bp_nopabar,
                0150      &                    m_eta_dyn
13d362b8c1 Ou W*0151       _RL m_bp_nopabar(1-OLx:sNx+OLx,1-OLy:sNy+OLy,   nSx,nSy)
b0b45f2373 Ou W*0152       _RL m_eta_dyn   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,   nSx,nSy)
35c4fdc74b Emma*0153 
                0154 #endif
13d362b8c1 Ou W*0155 #endif
35c4fdc74b Emma*0156 #ifndef ECCO_VARIABLE_AREAVOLGLOB
                0157       COMMON /ECCO_R4/ eccoVol_0
                0158       _RL eccoVol_0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
13d362b8c1 Ou W*0159 #endif
                0160 
                0161 C     Two runtime parameters related to outputting sterGloH
                0162 C     ecco_output_sterGloH :: output sterGloH at each time step if true
                0163 C     ecco_keepTSeriesOutp_open :: keep the sterGloH file open if true
                0164       COMMON /ECCO_L/
                0165      &                ecco_output_sterGloH, ecco_keepTSeriesOutp_open
                0166       LOGICAL ecco_output_sterGloH, ecco_keepTSeriesOutp_open
                0167 
                0168 C     file precision
                0169       COMMON /PREC_TYPE_COST/
                0170      &                        cost_iprec
                0171       INTEGER cost_iprec
                0172 
                0173 C     empty pre/post-processing :
                0174 C     =========================
                0175       COMMON /ECCO_NOGENCOST_C/
                0176      &       no_preproc,
                0177      &       no_preproc_c,
                0178      &       no_posproc,
                0179      &       no_posproc_c,
                0180      &       clim_preproc,
                0181      &       anom_preproc
                0182       CHARACTER*(MAX_LEN_FNAM) no_preproc(NGENPPROC)
                0183       CHARACTER*(MAX_LEN_FNAM) no_preproc_c(NGENPPROC)
                0184       CHARACTER*(MAX_LEN_FNAM) no_posproc(NGENPPROC)
                0185       CHARACTER*(MAX_LEN_FNAM) no_posproc_c(NGENPPROC)
                0186       CHARACTER*(MAX_LEN_FNAM) clim_preproc(NGENPPROC)
                0187       CHARACTER*(MAX_LEN_FNAM) anom_preproc(NGENPPROC)
                0188 
                0189       COMMON /ECCO_NOGENCOST_R/
                0190      &       no_preproc_r, no_posproc_r
                0191       _RL no_preproc_r(NGENPPROC)
                0192       _RL no_posproc_r(NGENPPROC)
                0193 
                0194       COMMON /ECCO_NOGENCOST_I/
                0195      &       no_preproc_i, no_posproc_i, clim_preproc_i
                0196       INTEGER no_preproc_i(NGENPPROC)
                0197       INTEGER no_posproc_i(NGENPPROC)
                0198       INTEGER clim_preproc_i(NGENPPROC)
                0199 
                0200 C     gencost common blocs:
                0201 C     =====================
                0202 
                0203 #ifdef ALLOW_GENCOST_CONTRIBUTION
                0204 C     objf_gencost :: gencost user defined contribution
                0205       COMMON /ECCO_GENCOST_CTRL/
                0206      &       gencost_dummy
                0207       _RL  gencost_dummy(NGENCOST)
                0208 
                0209       COMMON /ECCO_GENCOST_R_1/
                0210      &       objf_gencost, num_gencost, mult_gencost, gencost_storefld,
                0211      &       gencost_barfld, gencost_modfld, gencost_weight,
                0212      &       gencost_mskCsurf, gencost_mskWsurf, gencost_mskSsurf,
                0213      &       gencost_mskVertical,
                0214 #ifdef ALLOW_GENCOST3D
                0215      &       gencost_bar3d, gencost_mod3d, gencost_wei3d,
                0216      &       gencost_mskC, gencost_mskW, gencost_mskS,
                0217 #endif
aa93ca8e85 Ciar*0218      &       gencost_refPressure, gencost_sigmaLow, gencost_sigmaHigh,
                0219      &       gencost_tanhScale,
13d362b8c1 Ou W*0220      &       gencost_spmin, gencost_spmax, gencost_spzero,
                0221      &       gencost_period, gencost_preproc_r, gencost_posproc_r,
                0222      &       gencost_wei1d, gencost_1ddata
                0223 
                0224       _RL  objf_gencost(nSx,nSy,NGENCOST)
                0225       _RL  num_gencost(nSx,nSy,NGENCOST)
                0226       _RL  mult_gencost(NGENCOST)
                0227       _RL  gencost_spmin(NGENCOST)
                0228       _RL  gencost_spmax(NGENCOST)
                0229       _RL  gencost_spzero(NGENCOST)
                0230       _RL  gencost_period(NGENCOST)
                0231       _RL  gencost_storefld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
                0232      &       nSx,nSy,NGENCOST)
                0233       _RL  gencost_barfld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
                0234      &       nSx,nSy,NGENCOST)
                0235       _RL  gencost_modfld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
                0236      &       nSx,nSy,NGENCOST)
                0237       _RL  gencost_weight(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
                0238      &       nSx,nSy,NGENCOST)
                0239       _RL  gencost_mskCsurf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
                0240      &       nSx,nSy,NGENCOST)
                0241       _RL  gencost_mskWsurf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
                0242      &       nSx,nSy,NGENCOST)
                0243       _RL  gencost_mskSsurf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
                0244      &       nSx,nSy,NGENCOST)
0cd0083da8 Ou W*0245       _RL  gencost_mskVertical(Nr,NGENCOST)
aa93ca8e85 Ciar*0246       _RL  gencost_sigmaLow(NGENCOST)
                0247       _RL  gencost_sigmaHigh(NGENCOST)
                0248       _RL  gencost_refPressure(NGENCOST)
                0249       _RL  gencost_tanhScale(NGENCOST)
13d362b8c1 Ou W*0250 #ifdef ALLOW_GENCOST3D
                0251       _RL  gencost_bar3d(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
0cd0083da8 Ou W*0252      &       Nr,nSx,nSy,NGENCOST3D)
13d362b8c1 Ou W*0253       _RL  gencost_mod3d(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
0cd0083da8 Ou W*0254      &       Nr,nSx,nSy,NGENCOST3D)
13d362b8c1 Ou W*0255       _RL  gencost_wei3d(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
0cd0083da8 Ou W*0256      &       Nr,nSx,nSy,NGENCOST3D)
13d362b8c1 Ou W*0257       _RL  gencost_mskC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
0cd0083da8 Ou W*0258      &       Nr,nSx,nSy,NGENCOST3D)
13d362b8c1 Ou W*0259       _RL  gencost_mskW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
0cd0083da8 Ou W*0260      &       Nr,nSx,nSy,NGENCOST3D)
13d362b8c1 Ou W*0261       _RL  gencost_mskS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
0cd0083da8 Ou W*0262      &       Nr,nSx,nSy,NGENCOST3D)
13d362b8c1 Ou W*0263 #endif
                0264       _RL gencost_preproc_r(NGENPPROC,NGENCOST)
                0265       _RL gencost_posproc_r(NGENPPROC,NGENCOST)
                0266       _RL gencost_wei1d(NGENCOST)
                0267       _RL gencost_1ddata(N1DDATA, NGENCOST)
                0268 
                0269 C     gencost_kLev_select :: selected vertical level of a 3D model field to use
                0270 C                            to compute a cost term contribution (default = 1).
                0271 C                            Note: currently only used in drifter velocity cost
                0272 
                0273       COMMON /ECCO_GENCOST_I_1/
                0274      &       gencost_nrec, gencost_nrecperiod,
                0275      &       gencost_flag, gencost_outputlevel,
                0276      &       gencost_startdate1, gencost_startdate2,
                0277      &       gencost_enddate1, gencost_enddate2,
                0278      &       gencost_startdate, gencost_enddate,
                0279      &       gencost_pointer3d, gencost_smooth2Ddiffnbt,
                0280      &       gencost_preproc_i, gencost_posproc_i,
                0281      &       gencost_msk_pointer3d, gencost_itracer,
                0282      &       gencost_kLev_select
                0283 
                0284       INTEGER gencost_nrec(NGENCOST)
                0285       INTEGER gencost_nrecperiod(NGENCOST)
                0286       INTEGER gencost_flag(NGENCOST)
                0287       INTEGER gencost_outputlevel(NGENCOST)
                0288       INTEGER gencost_startdate1(NGENCOST)
                0289       INTEGER gencost_startdate2(NGENCOST)
                0290       INTEGER gencost_startdate(4,NGENCOST)
                0291       INTEGER gencost_enddate1(NGENCOST)
                0292       INTEGER gencost_enddate2(NGENCOST)
                0293       INTEGER gencost_enddate(4,NGENCOST)
                0294       INTEGER gencost_pointer3d(NGENCOST)
                0295       INTEGER  gencost_smooth2Ddiffnbt(NGENCOST)
                0296       INTEGER gencost_preproc_i(NGENPPROC,NGENCOST)
                0297       INTEGER gencost_posproc_i(NGENPPROC,NGENCOST)
                0298       INTEGER gencost_msk_pointer3d(NGENCOST)
                0299       INTEGER gencost_itracer(NGENCOST)
                0300       INTEGER gencost_kLev_select(NGENCOST)
                0301 
                0302       COMMON /ECCO_GENCOST_L_1/
                0303      &       gencost_timevaryweight, gencost_barskip,
                0304      &       using_gencost, gencost_is3d, gencost_msk_is3d,
aa93ca8e85 Ciar*0305      &       gencost_is1d, gencost_useDensityMask
13d362b8c1 Ou W*0306       LOGICAL using_gencost(NGENCOST)
                0307       LOGICAL gencost_is3d(NGENCOST)
                0308       LOGICAL gencost_is1d(NGENCOST)
                0309       LOGICAL gencost_msk_is3d(NGENCOST)
aa93ca8e85 Ciar*0310       LOGICAL gencost_useDensityMask(NGENCOST)
13d362b8c1 Ou W*0311       LOGICAL gencost_timevaryweight(NGENCOST)
                0312       LOGICAL gencost_barskip(NGENCOST)
                0313 
                0314       COMMON /ECCO_GENCOST_C/
                0315      &       gencost_name,
                0316      &       gencost_scalefile,
                0317      &       gencost_errfile,
                0318      &       gencost_datafile,
                0319      &       gencost_barfile,
                0320      &       gencost_avgperiod,
                0321      &       gencost_preproc,
                0322      &       gencost_preproc_c,
                0323      &       gencost_posproc,
                0324      &       gencost_posproc_c,
                0325      &       gencost_mask
                0326       CHARACTER*(MAX_LEN_FNAM) gencost_name(NGENCOST)
                0327       CHARACTER*(MAX_LEN_FNAM) gencost_scalefile(NGENCOST)
                0328       CHARACTER*(MAX_LEN_FNAM) gencost_errfile(NGENCOST)
                0329       CHARACTER*(MAX_LEN_FNAM) gencost_datafile(NGENCOST)
                0330       CHARACTER*(MAX_LEN_FNAM) gencost_barfile(NGENCOST)
                0331       CHARACTER*(5)            gencost_avgperiod(NGENCOST)
                0332       CHARACTER*(MAX_LEN_FNAM) gencost_preproc(NGENPPROC,NGENCOST)
                0333       CHARACTER*(MAX_LEN_FNAM) gencost_posproc_c(NGENPPROC,NGENCOST)
                0334       CHARACTER*(MAX_LEN_FNAM) gencost_posproc(NGENPPROC,NGENCOST)
                0335       CHARACTER*(MAX_LEN_FNAM) gencost_preproc_c(NGENPPROC,NGENCOST)
                0336       CHARACTER*(MAX_LEN_FNAM) gencost_mask(NGENCOST)
                0337 
                0338 #endif /* ALLOW_GENCOST_CONTRIBUTION */
                0339 
                0340 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|