Back to home page

MITgcm

 
 

    


File indexing completed on 2025-11-07 06:08:38 UTC

view on githubraw file Latest commit b7411f1a on 2025-11-06 19:05:26 UTC
108a00eab9 Ryan*0001 #ifdef ALLOW_LAYERS
                0002 
                0003 C--   Header for LAYERS package. By Ryan Abernathey.
                0004 C--   For computing volume fluxes in isopyncal layers
                0005 
2c2df907b2 Jean*0006 C --  Parameters:
                0007 C     layers_num      ::
                0008 C     layers_krho     ::
                0009 C     layers_name     ::
                0010 C     layers_bolus    ::
                0011 C     layers_MNC      ::
                0012 C     layers_MDSIO    ::
                0013 C     layers_diagFreq ::
                0014 
406891c1a3 Gael*0015       INTEGER layers_num(layers_maxNum), layers_krho(layers_maxNum)
2c2df907b2 Jean*0016       COMMON /LAYERS_PARM_I/ layers_num, layers_krho
406891c1a3 Gael*0017 
                0018       CHARACTER*(3) layers_name(layers_maxNum)
                0019       COMMON /LAYERS_PARM_C/ layers_name
                0020 
2c2df907b2 Jean*0021       LOGICAL layers_MNC, layers_MDSIO
406891c1a3 Gael*0022       LOGICAL layers_bolus(layers_maxNum)
ed1e75b3e4 Jean*0023       COMMON /LAYERS_PARM_L/ layers_MNC, layers_MDSIO,
2c2df907b2 Jean*0024      &                       layers_bolus
                0025 
b7411f1a84 Jean*0026       _RL layers_diagFreq
                0027       COMMON /LAYERS_PARM_RL/ layers_diagFreq
406891c1a3 Gael*0028 
ed1e75b3e4 Jean*0029 C --  Isopycnal grid parameters:
                0030 C      layers_bounds :: boundaries of tracer layers
                0031 C      dZZf     :: height of fine grid cells
                0032 C      NZZ      :: the number of levels to use in the fine grid
                0033 C      MapIndex :: indices for mapping ZZ to Z
                0034 C      MapFact  :: factors for interpolating T(Z) to T(ZZ)
108a00eab9 Ryan*0035 
2c2df907b2 Jean*0036       _RL layers_bounds(Nlayers+1,layers_maxNum)
ed1e75b3e4 Jean*0037       _RL dZZf(FineGridMax)
                0038       INTEGER MapIndex(FineGridMax), CellIndex(FineGridMax)
                0039       _RL MapFact(FineGridMax)
                0040       INTEGER NZZ
                0041       COMMON /LAYERS_VERT_GRID_I/
                0042      &      NZZ, MapIndex, CellIndex
                0043       COMMON /LAYERS_VERT_GRID_R/
2c2df907b2 Jean*0044      &      MapFact, dZZf, layers_bounds
ed1e75b3e4 Jean*0045 
cf336ab6c5 Ryan*0046 C -- Thermodynamics fields
                0047 C    Right-hand-side tendency terms times thickness
                0048 C
963f76462f chri*0049 C      layers_TtendSurf  :: Layer thickness tendency due to THETA surf. forc. (m/s)
                0050 C      layers_TtendDiffh :: Layer thickness tendency due to THETA horiz. diff. (m/s)
                0051 C      layers_TtendDiffr :: Layer thickness tendency due to THETA vert. diff. (m/s)
                0052 C      layers_TtendAdvh  :: Layer thickness tendency due to THETA horiz. adv. (m/s)
                0053 C      layers_TtendAdvr  :: Layer thickness tendency due to THETA vert. adv. (m/s)
                0054 C      layers_StendSurf  :: Layer thickness tendency due to SALT surf. forc. (m/s)
                0055 C      layers_StendDiffh :: Layer thickness tendency due to SALT horiz. diff. (m/s)
                0056 C      layers_StendDiffr :: Layer thickness tendency due to SALT vert. diff. (m/s)
                0057 C      layers_StendAdvh  :: Layer thickness tendency due to SALT horiz. adv. (m/s)
                0058 C      layers_StendAdvr  :: Layer thickness tendency due to SALT vert. adv. (m/s)
cf336ab6c5 Ryan*0059 C  -- The following are temporary arrays that need to be stored.
                0060 C  -- They are in regular vertical coordinates.
                0061 C  -- The fourth index is tracer id: 1 for T and 2 for S
                0062 C      layers_surfflux   :: surface temperature flux (same as diagnostics TFLUX and SFLUX)
                0063 C      layers_dfx        :: zonal diffusive flux of T / S
                0064 C      layers_dfy        :: meridional diffusive flux of T / S
                0065 C      layers_dfr        :: vertical diffusive flux of T / S
50d8304171 Ryan*0066 C      layers_afx        :: zonal advective flux of T / S
                0067 C      layers_afy        :: meridional advective flux of T / S
                0068 C      layers_afr        :: vertical advective flux of T / S
cf336ab6c5 Ryan*0069 C  -- to save memory, the same arrays are converted in place to divergences
50d8304171 Ryan*0070 C
                0071 C  -- We also need the thermal / saline expansion coefficients for diapycnal fluxes
                0072 C      layers_alpha      :: alpha factor for density eqn (-drhodT/rho)
                0073 C      layers_beta       :: alpha factor for density eqn (-drhodS/rho)
cf336ab6c5 Ryan*0074 
                0075 # ifdef LAYERS_THERMODYNAMICS
                0076       COMMON /LAYERS_VAR_THERMODYNAMICS/
50d8304171 Ryan*0077      &    layers_bounds_w, layers_recip_delta,
cf336ab6c5 Ryan*0078      &    layers_TtendSurf, layers_TtendDiffh, layers_TtendDiffr,
50d8304171 Ryan*0079      &    layers_TtendAdvh, layers_TtendAdvr, layers_Ttendtot,
cf336ab6c5 Ryan*0080      &    layers_StendSurf, layers_StendDiffh, layers_StendDiffr,
50d8304171 Ryan*0081      &    layers_StendAdvh, layers_StendAdvr, layers_Stendtot,
cf336ab6c5 Ryan*0082      &    layers_Hc, layers_PIc,
50d8304171 Ryan*0083      &    layers_Hcw,
                0084      &    layers_surfflux, layers_dfx, layers_dfy, layers_dfr,
                0085      &    layers_afx, layers_afy, layers_afr, layers_tottend
2c2df907b2 Jean*0086       _RL layers_bounds_w(Nlayers, layers_maxNum)
                0087       _RL layers_recip_delta(Nlayers-1, layers_maxNum)
cf336ab6c5 Ryan*0088       _RL layers_TtendSurf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,
50d8304171 Ryan*0089      &                                         Nlayers-1,nSx,nSy)
                0090       _RL layers_Ttendtot(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
                0091      &                                         Nlayers-1,nSx,nSy)
cf336ab6c5 Ryan*0092       _RL layers_TtendDiffh(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
50d8304171 Ryan*0093      &                                         Nlayers-1,nSx,nSy)
cf336ab6c5 Ryan*0094       _RL layers_TtendDiffr(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
50d8304171 Ryan*0095      &                                         Nlayers-1,nSx,nSy)
                0096       _RL layers_TtendAdvh(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
                0097      &                                         Nlayers-1,nSx,nSy)
                0098       _RL layers_TtendAdvr(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
                0099      &                                         Nlayers-1,nSx,nSy)
cf336ab6c5 Ryan*0100       _RL layers_StendSurf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,
50d8304171 Ryan*0101      &                                         Nlayers-1,nSx,nSy)
                0102       _RL layers_Stendtot(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
                0103      &                                         Nlayers-1,nSx,nSy)
cf336ab6c5 Ryan*0104       _RL layers_StendDiffh(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
50d8304171 Ryan*0105      &                                         Nlayers-1,nSx,nSy)
cf336ab6c5 Ryan*0106       _RL layers_StendDiffr(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
2c2df907b2 Jean*0107      &                                         Nlayers-1,nSx,nSy)
50d8304171 Ryan*0108       _RL layers_StendAdvh(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
                0109      &                                         Nlayers-1,nSx,nSy)
                0110       _RL layers_StendAdvr(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
2c2df907b2 Jean*0111      &                                         Nlayers-1,nSx,nSy)
50d8304171 Ryan*0112       _RL layers_Hcw(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
2c2df907b2 Jean*0113      &                                         Nlayers-1,nSx,nSy)
cf336ab6c5 Ryan*0114       _RL layers_Hc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
2c2df907b2 Jean*0115      &                                         Nlayers,nSx,nSy)
cf336ab6c5 Ryan*0116       _RL layers_PIc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,
2c2df907b2 Jean*0117      &                                         Nlayers,nSx,nSy)
cf336ab6c5 Ryan*0118       _RL layers_surfflux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,1,2,nSx,nSy)
                0119       _RL layers_dfx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,2,nSx,nSy)
                0120       _RL layers_dfy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,2,nSx,nSy)
                0121       _RL layers_dfr(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,2,nSx,nSy)
50d8304171 Ryan*0122       _RL layers_afx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,2,nSx,nSy)
                0123       _RL layers_afy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,2,nSx,nSy)
                0124       _RL layers_afr(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,2,nSx,nSy)
                0125       _RL layers_tottend(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,2,nSx,nSy)
                0126 
                0127 #ifdef SHORTWAVE_HEATING
                0128       COMMON /LAYERS_SW/ layers_sw
                0129       _RL layers_sw(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,1,nSx,nSy)
                0130 #endif /* LAYERS_SHORTWAVE */
                0131 
                0132 #ifdef LAYERS_PRHO_REF
                0133       COMMON /LAYERS_VAR_THERMODYNAMICS_PRHO/
                0134      & layers_alpha, layers_beta
                0135       _RL layers_alpha(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0136       _RL layers_beta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0137 #endif
                0138 
cf336ab6c5 Ryan*0139 # endif /* LAYERS_THERMODYAMICS */
                0140 
108a00eab9 Ryan*0141 #endif /* ALLOW_LAYERS */