Back to home page

MITgcm

 
 

    


File indexing completed on 2026-05-05 05:09:00 UTC

view on githubraw file Latest commit 3f0f10fc on 2026-05-04 14:55:37 UTC
fefe253d88 Dimi*0001 CBOP
                0002 C !ROUTINE: SEAICE.h
                0003 
                0004 C !DESCRIPTION: \bv
3c80412959 Jean*0005 C     *==========================================================*
                0006 C     | SEAICE.h
                0007 C     | o Basic header for sea ice model.
                0008 C     |   Contains most sea ice field declarations.
                0009 C     *==========================================================*
809c36b928 Patr*0010 C
3c80412959 Jean*0011 C     UICE  :: zonal ice velocity in m/s at South-West B-grid
                0012 C              (or C-grid #ifdef SEAICE_CGRID) U point
                0013 C              >0 from West to East
                0014 C     VICE  :: meridional ice velocity in m/s at South-West B-grid
                0015 C              (or C-grid #ifdef SEAICE_CGRID) V point
                0016 C              >0 from South to North
                0017 C              note: the South-West B-grid U and V points are on
460cb5f999 Dimi*0018 C                the lower, left-hand corner of each grid cell
3c80412959 Jean*0019 C     AREA  :: fractional ice-covered area in m^2/m^2
                0020 C              at center of grid, i.e., tracer point
                0021 C              0 is no cover, 1 is 100% cover
                0022 C     HEFF  :: effective ice thickness in m
                0023 C              at center of grid, i.e., tracer point
                0024 C              note: for non-zero AREA, actual ice thickness is HEFF / AREA
                0025 C     HSNOW :: effective snow thickness in m
                0026 C              at center of grid, i.e., tracer point
                0027 C              note: for non-zero AREA, actual snow thickness is HSNOW / AREA
fefe253d88 Dimi*0028 C \ev
                0029 CEOP
b61db21361 Mart*0030 
                0031 C--   Dynamical variables
45315406aa Mart*0032       COMMON/SEAICE_DYNVARS_1/
                0033      &     AREA, HEFF, HSNOW, UICE, VICE
                0034       _RL AREA       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0035       _RL HEFF       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0036       _RL HSNOW      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0037       _RL UICE       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0038       _RL VICE       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0039 C     DWATN         :: (linear) ice-ocean drag coefficient
                0040 C                      ( units of [rho|u|] = kg/m^2/s )
                0041 C     u/vIceNm1     :: sea ice drift velocities of previous timestep (m/s)
                0042       COMMON/SEAICE_DYNVARS_2/
                0043      &     DWATN,
                0044      &     uIceNm1, vIceNm1
                0045       _RL DWATN      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0046       _RL uIceNm1    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0047       _RL vIceNm1    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0048 
86b84a92fc Patr*0049 #ifdef SEAICE_ITD
45315406aa Mart*0050       COMMON/SEAICE_DYNVARS_ITD/
                0051      &     AREAITD, HEFFITD, HSNOWITD,
                0052      &     opnWtrFrac, fw2ObyRidge
8377b8ee87 Mart*0053 C     Fields for dynamic ice thickness distribution (ITD)
                0054 C     AREAITD     :: area classes
                0055 C     HEFFITD     :: ice thickenss classes (in meters)
                0056 C     HSNOWITD    :: snow thickness classes (in meters)
                0057 C     openWtrFrac :: fraction of open water (= 1-AREA) for ridging param.
                0058 C     fw2ObyRidge :: fresh water flux (kg/m^2/s) due to snow pushed into
                0059 C                    ocean during ridging
86b84a92fc Patr*0060       _RL AREAITD    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nITD,nSx,nSy)
                0061       _RL HEFFITD    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nITD,nSx,nSy)
                0062       _RL HSNOWITD   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nITD,nSx,nSy)
b1ac83383d Mart*0063       _RL opnWtrFrac (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
d445b0e4a7 Mart*0064       _RL fw2ObyRidge(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
f913c5a485 Mart*0065 #endif /* SEAICE_ITD */
4b1ace36e3 Mart*0066 
45315406aa Mart*0067 #ifdef SEAICE_CGRID
                0068 C     stressDivergenceX/Y :: div of (vert. integr.) stress tensor (N/m^2)
                0069       COMMON /SEAICE_STRESSDIV/
                0070      &     stressDivergenceX, stressDivergenceY
                0071       _RL stressDivergenceX(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0072       _RL stressDivergenceY(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0073 # ifdef SEAICE_ALLOW_EVP
                0074 C--   Additional fields needed by the EVP solver:
                0075 C     (vertically integrated) stress tensor, with diagonal terms sigma11/22
                0076 C     seaice_sigma1  :: sigma11+sigma22, defined at C-points   (N/m)
                0077 C     seaice_sigma2  :: sigma11-sigma22, defined at C-points   (N/m)
                0078 C     seaice_sigma12 :: off-diagonal term, defined at Z-points (N/m)
                0079       COMMON /SEAICE_EVP_FIELDS/
                0080      &     seaice_sigma1, seaice_sigma2, seaice_sigma12
                0081       _RL seaice_sigma1    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0082       _RL seaice_sigma2    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0083       _RL seaice_sigma12   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0084 # endif /* SEAICE_ALLOW_EVP */
                0085 #endif
                0086 
                0087 #if ( defined SEAICE_CGRID || defined SEAICE_BGRID_DYNAMICS )
8377b8ee87 Mart*0088 C     ETA,  etaZ    :: shear viscosity as C-points, at Z-points (N s/m = kg/s)
                0089 C     ZETA, zetaA   :: bulk viscosity at C-points, at Z-points
                0090 C     PRESS         :: maximum vertically integrated ice strength/pressure (N/m)
                0091 C     e11, e22, e12 :: components strain rate tensor (1/s)
                0092 C     deltaC        :: deformation rate tensor invariant, for VP sea ice
                0093 C                      = sqrt( (e11+e22)**2 + (1/e)*(e11-e22)**2 + 4*e12**2) )
                0094 C     FORCEX/Y      :: momentum forcing
                0095 C                      ( units of [rho * h * u / deltaT] = kg/m/s^2 )
45315406aa Mart*0096 C     tensileStrFac :: factor k to compute the maximal tensile stress k*PRESS0
065b1424ce Patr*0097       COMMON/SEAICE_DYNVARS_3/
45315406aa Mart*0098      &     ETA, etaZ, ZETA, zetaZ, PRESS, tensileStrFac,
                0099      &     e11, e22, e12, deltaC,
                0100      &     FORCEX,FORCEY
                0101 
772590b63c Mart*0102       _RL ETA        (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
5ee9d8ba4b Mart*0103       _RL etaZ       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
772590b63c Mart*0104       _RL ZETA       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
1459e8fe5a Mart*0105       _RL zetaZ      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
7bdcfa8e6c Mart*0106 C     ice strength/pressure term
772590b63c Mart*0107       _RL PRESS      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
45315406aa Mart*0108       _RL tensileStrFac(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
7bdcfa8e6c Mart*0109 C     strain rate tensor
772590b63c Mart*0110       _RL e11        (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0111       _RL e22        (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0112       _RL e12        (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
36fa289698 Mart*0113       _RL deltaC     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
7bdcfa8e6c Mart*0114 C
772590b63c Mart*0115       _RL FORCEX     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0116       _RL FORCEY     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
2f88b60189 Mart*0117 
8377b8ee87 Mart*0118 C     PRESS0        :: maximal compressive stress/strength (N/m)
                0119 C     FORCEX/Y0     :: external momentum forcing fields (part of FORCEX/Y)
8e32c48b8f Mart*0120 C     SEAICE_zMax/zMin :: maximum/minimum bulk viscosities
8377b8ee87 Mart*0121       COMMON/SEAICE_DYNVARS_4/
45315406aa Mart*0122      &     PRESS0, FORCEX0, FORCEY0, SEAICE_zMax, SEAICE_zMin
                0123       _RL PRESS0     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0124       _RL FORCEX0    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0125       _RL FORCEY0    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0126       _RL SEAICE_zMax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0127       _RL SEAICE_zMin(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0128 #endif
8377b8ee87 Mart*0129 
                0130 #ifdef SEAICE_CGRID
                0131 C     seaiceMassC/U/V :: mass (ice+snow) at C/U/V-points ( kg/m^2 )
2f88b60189 Mart*0132       COMMON/SEAICE_DYNVARS_CGRID/
2f5e8addfd Mart*0133      &     seaiceMassC, seaiceMassU, seaiceMassV
                0134       _RL seaiceMassC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0135       _RL seaiceMassU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0136       _RL seaiceMassV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
8377b8ee87 Mart*0137 # ifdef SEAICE_ALLOW_FREEDRIFT
                0138 C     u/vice_fd :: free drift velocities (m/s)
                0139       COMMON /SEAICE_FD_FIELDS/
                0140      &     uice_fd, vice_fd
                0141       _RL uice_fd   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0142       _RL vice_fd   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0143 # endif
809c36b928 Patr*0144 
8377b8ee87 Mart*0145 # ifdef SEAICE_ALLOW_BOTTOMDRAG
                0146 C     CbobC :: (linear) bottom drag coefficient for basals stress param.
abb637800a Mart*0147       COMMON/SEAICE_BOTTOMDRAG/ CbotC
                0148       _RL CbotC      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
8377b8ee87 Mart*0149 # endif /* SEAICE_ALLOW_BOTTOMDRAG */
                0150 
5bb179ddc2 Mart*0151 # ifdef SEAICE_ALLOW_SIDEDRAG
                0152 C     coastRoughU/V :: coast line roughness (w/out units) in U and V direction,
                0153 C                      computed from the coastline length at corner points,
                0154 C                      interpolated to U/V points, and scaled by the grid cell
                0155 C                      width
                0156 C     sideDragU/V   :: drag coefficients for lateral drag a parameterisation
                0157       COMMON/SEAICE_SIDEDRAG/ sideDragU, sideDragV,
                0158      &     coastRoughU, coastRoughV
                0159       _RL sideDragU  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0160       _RL sideDragV  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0161       _RL coastRoughU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0162       _RL coastRoughV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0163 # endif /* SEAICE_ALLOW_SIDEDRAG */
                0164 
45315406aa Mart*0165 # if ( defined SEAICE_ALLOW_JFNK ||  defined SEAICE_ALLOW_KRYLOV )
8377b8ee87 Mart*0166 C     diagnostics for the JFNK and Krylov solver
                0167       INTEGER totalNewtonIters
                0168       INTEGER totalNewtonFails
                0169       INTEGER totalKrylovIters
                0170       INTEGER totalKrylovFails
                0171       INTEGER totalJFNKtimeSteps
                0172       COMMON /SEAICE_SOLVER_I/
                0173      &     totalNewtonIters, totalNewtonFails,
                0174      &     totalKrylovIters, totalKrylovFails,
                0175      &     totalJFNKtimeSteps
45315406aa Mart*0176 C     Scalar product used in FGMRES needs a metric
8377b8ee87 Mart*0177       INTEGER nVec
                0178       PARAMETER ( nVec=2*sNx*sNy )
                0179       _RL scalarProductMetric( nVec, 1, nSx, nSy )
                0180       COMMON /SEAICE_KRYLOV_RL/ scalarProductMetric
                0181 # endif /* SEAICE_ALLOW_JFNK or SEAICE_ALLOW_KRYLOV */
                0182 
45315406aa Mart*0183 #endif /* SEAICE_CGRID */
                0184 
                0185 #ifdef SEAICE_BGRID_DYNAMICS
8377b8ee87 Mart*0186 C     AMASS :: sea ice mass
                0187 C     DAIRN :: (linear) atmosphere-ice drag coefficient
45315406aa Mart*0188 C     u/vIceC has been renamed to u/vIceC to avoid conficts with C-grid code
                0189 C     uIceB :: average of UICE between last two time steps
                0190 C     vIceB :: average of VICE between last two time steps
                0191       COMMON/SEAICE_DYNVARS_BGRID/ AMASS, DAIRN, uIceB, vIceB
8377b8ee87 Mart*0192       _RL AMASS      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0193       _RL DAIRN      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
45315406aa Mart*0194       _RL uIceB      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0195       _RL vIceB      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
8377b8ee87 Mart*0196 
                0197       COMMON/WIND_STRESS_OCE/WINDX,WINDY
                0198 C     WINDX  - zonal      wind stress over water at C points
                0199 C     WINDY  - meridional wind stress over water at C points
                0200       _RL WINDX      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0201       _RL WINDY      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0202 
                0203 C     GWATX/Y :: geostrophic ocean velocities
                0204       COMMON/GWATXY/GWATX,GWATY
                0205       _RL GWATX      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0206       _RL GWATY      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0207 
                0208 C--   KGEO    Level used as a proxy for geostrophic velocity.
                0209       COMMON/SEAICE_KGEO/KGEO
                0210       INTEGER KGEO   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
45315406aa Mart*0211 #endif /* SEAICE_BGRID_DYNAMICS */
53092bcb42 Mart*0212 
1cf549c217 Mart*0213       COMMON/SEAICE_REG_NEG/d_HEFFbyNEG,d_HSNWbyNEG
                0214 C     The change of mean ice thickness due to out-of-bounds values following
                0215 C     sea ice dynamics and advection
                0216       _RL d_HEFFbyNEG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0217       _RL d_HSNWbyNEG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
ccbdcd2957 Jean*0218 C
1cf549c217 Mart*0219 #ifdef EXF_SEAICE_FRACTION
                0220       COMMON/SEAICE_RELAX/d_AREAbyRLX,d_HEFFbyRLX
                0221 C     ICE/SNOW stocks tendency associated with relaxation towards observation
                0222       _RL d_AREAbyRLX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0223 C     The change of mean ice thickness due to relaxation
                0224       _RL d_HEFFbyRLX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0225 #endif /* EXF_SEAICE_FRACTION */
8377b8ee87 Mart*0226 
a98c4b8072 Ian *0227 #ifdef SEAICE_VARIABLE_SALINITY
8377b8ee87 Mart*0228 C     HSALT          :: effective sea ice salinity in g/m^2
                0229 C                       at center of grid, i.e., tracer point
                0230 C     saltFluxAdjust :: adjust salt flux, if HSALT < 0 (e.g. due to advection)
1cf549c217 Mart*0231       COMMON/SEAICE_SALINITY_R/HSALT, saltFluxAdjust
                0232       _RL HSALT         (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0233       _RL saltFluxAdjust(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0234 #endif /* SEAICE_VARIABLE_SALINITY */
fdfa8e151f Dimi*0235 
8377b8ee87 Mart*0236 C     saltWtrIce :: contains m of salty ice melted (<0) or created (>0)
                0237 C     frWtrIce   :: contains m of freshwater ice melted (<0) or created (>0)
                0238 C                   that is, ice due to precipitation or snow
14ff2fe9e4 Dimi*0239       COMMON/ICEFLUX/ saltWtrIce, frWtrIce
772590b63c Mart*0240       _RL saltWtrIce (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0241       _RL frWtrIce   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
1cfef3b6ad Patr*0242 
5e0369b6fa Mart*0243 C     TICES :: Seaice/snow surface temperature for each category
89a0cb7c99 Mart*0244       COMMON/MULTICATEGORY/TICES
f913c5a485 Mart*0245       _RL TICES      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nITD,nSx,nSy)
6c847351e2 Patr*0246 
9a87ea5e43 Ed H*0247 CEH3 ;;; Local Variables: ***
                0248 CEH3 ;;; mode:fortran ***
                0249 CEH3 ;;; End: ***