-
Notifications
You must be signed in to change notification settings - Fork 237
/
SHELFICE.h
256 lines (239 loc) · 11.9 KB
/
SHELFICE.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
#ifdef ALLOW_SHELFICE
CBOP
C !ROUTINE: SHELFICE.h
C !DESCRIPTION: \bv
C *==========================================================*
C | SHELFICE.h
C | o Basic header thermodnynamic shelf ice package.
C | Contains all SHELFICE field declarations.
C *==========================================================*
C-----------------------------------------------------------------------
C
C-- Constants that can be set in data.shelfice
C SHELFICEtopoFile :: File containing the topography of the
C shelfice draught (unit=m)
C SHELFICEmassFile :: name of shelfice Mass file
C SHELFICEloadAnomalyFile :: name of shelfice load anomaly file
C SHELFICEMassDynTendFile :: file name for other mass tendency
C (e.g. dynamics)
C useISOMIPTD :: use simple ISOMIP thermodynamics, def: F
C SHELFICEconserve :: use conservative form of H&O-thermodynamics
C following Jenkins et al. (2001, JPO), def: F
C SHELFICEMassStepping :: flag to step forward ice shelf mass/thickness
C accounts for melting/freezing & dynamics
C (from file or from coupling), def: F
C SHELFICEDynMassOnly :: step ice mass ONLY with Shelficemassdyntendency
C (not melting/freezing) def: F
C SHELFICEboundaryLayer :: turn on vertical merging of cells to for a
C boundary layer of drF thickness, def: F
C SHI_withBL_realFWflux :: with above BL, allow to use real-FW flux (and
C adjust advective flux at boundary accordingly)
C def: F
C SHI_withBL_uStarTopDz :: with SHELFICEboundaryLayer, compute uStar from
C uVel,vVel avergaged over top Dz thickness;
C def: F
C SHELFICEadvDiffHeatFlux :: use advective-diffusive heat flux into the
C shelf instead of default diffusive heat
C flux, see Holland and Jenkins (1999),
C eq.21,22,26,31; def: F
C SHELFICEsaltToHeatRatio :: constant ratio giving
C SHELFICEsaltTransCoeff/SHELFICEheatTransCoeff
C (def: 5.05e-3)
C SHELFICEheatTransCoeff :: constant heat transfer coefficient that
C determines heat flux into shelfice
C (def: 1e-4 m/s)
C SHELFICEsaltTransCoeff :: constant salinity transfer coefficient that
C determines salt flux into shelfice
C (def: SHELFICEsaltToHeatRatio * SHELFICEheatTransCoeff)
C -----------------------------------------------------------------------
C SHELFICEuseGammaFrict :: use velocity dependent exchange coefficients,
C see Holland and Jenkins (1999), eq.11-18,
C with the following parameters (def: F):
C SHELFICE_oldCalcUStar :: use old uStar averaging expression
C shiCdrag :: quadratic drag coefficient to compute uStar
C (def: 0.0015)
C shiZetaN :: ??? (def: 0.052)
C shiRc :: ??? (not used, def: 0.2)
C shiPrandtl, shiSchmidt :: constant Prandtl (13.8) and Schmidt (2432.0)
C numbers used to compute gammaTurb
C shiKinVisc :: constant kinetic viscosity used to compute
C gammaTurb (def: 1.95e-5)
C SHI_update_kTopC :: update lateral extension (kTopC) if ice-shelf
C retreats from or expands to model top level
C (requires to define ALLOW_SHELFICE_REMESHING)
C SHELFICEremeshFrequency :: Frequency (in seconds) of call to
C SHELFICE_REMESHING (def: 0. --> no remeshing)
C SHELFICEsplitThreshold :: Thickness fraction remeshing threshold above
C which top-cell splits (no unit)
C SHELFICEmergeThreshold :: Thickness fraction remeshing threshold below
C which top-cell merges with below (no unit)
C -----------------------------------------------------------------------
C SHELFICEDragLinear :: linear drag at bottom shelfice (1/s)
C SHELFICEDragQuadratic :: quadratic drag at bottom shelfice (default
C = shiCdrag or bottomDragQuadratic)
C no_slip_shelfice :: set slip conditions for shelfice separately,
C (by default the same as no_slip_bottom, but
C really should be false when there is linear
C or quadratic drag)
C SHELFICElatentHeat :: latent heat of fusion (def: 334000 J/kg)
C SHELFICEwriteState :: enable output
C SHELFICEHeatCapacity_Cp :: heat capacity of ice shelf (def: 2000 J/K/kg)
C rhoShelfIce :: density of ice shelf (def: 917.0 kg/m^3)
C
C SHELFICE_dump_mnc :: use netcdf for snapshot output
C SHELFICE_tave_mnc :: use netcdf for time-averaged output
C SHELFICE_dumpFreq :: analoguous to dumpFreq (= default)
C SHELFICE_taveFreq :: analoguous to taveFreq (= default)
C
C-- Fields
C kTopC :: index of the top "wet cell" (2D)
C R_shelfIce :: shelfice topography [m]
C shelficeMassInit :: ice-shelf mass (per unit area) (kg/m^2)
C shelficeMass :: ice-shelf mass (per unit area) (kg/m^2)
C shelfIceMassDynTendency :: other mass balance tendency (kg/m^2/s)
C :: (e.g., from dynamics)
C shelficeLoadAnomaly :: pressure load anomaly of shelfice (Pa)
C shelficeHeatFlux :: upward heat flux (W/m^2)
C shelficeFreshWaterFlux :: upward fresh water flux (virt. salt flux)
C (kg/m^2/s)
C shelficeForcingT :: analogue of surfaceForcingT
C units are r_unit.Kelvin/s (=Kelvin.m/s if r=z)
C shelficeForcingS :: analogue of surfaceForcingS
C units are r_unit.g/kg/s (=g/kg.m/s if r=z)
#ifdef ALLOW_DIAGNOSTICS
C shelficeDragU :: Ice-Shelf stress (for diagnostics), Zonal comp.
C Units are N/m^2 ; > 0 increase top uVel
C shelficeDragV :: Ice-Shelf stress (for diagnostics), Merid. comp.
C Units are N/m^2 ; > 0 increase top vVel
#endif /* ALLOW_DIAGNOSTICS */
#ifdef ALLOW_CTRL
C maskSHI :: Mask=1 where ice shelf is present on surface
C layer, showing full 2D ice shelf extent.
C =maskC for rest of k values
C Used with ice shelf fwflx
C or shiTransCoeffT/S ctrl.
#endif
C-----------------------------------------------------------------------
C \ev
CEOP
COMMON /SHELFICE_PARMS_L/
& SHELFICEisOn,
& useISOMIPTD,
& SHELFICEconserve,
& SHELFICEboundaryLayer,
& SHI_withBL_realFWflux,
& SHI_withBL_uStarTopDz,
& no_slip_shelfice,
& SHELFICEwriteState,
& SHELFICE_dump_mdsio,
& SHELFICE_tave_mdsio,
& SHELFICE_dump_mnc,
& SHELFICE_tave_mnc,
& SHELFICEadvDiffHeatFlux,
& SHELFICEuseGammaFrict,
& SHELFICE_oldCalcUStar,
& SHELFICEMassStepping,
& SHELFICEDynMassOnly,
& SHI_update_kTopC
LOGICAL SHELFICEisOn
LOGICAL useISOMIPTD
LOGICAL SHELFICEconserve
LOGICAL SHELFICEboundaryLayer
LOGICAL SHI_withBL_realFWflux
LOGICAL SHI_withBL_uStarTopDz
LOGICAL no_slip_shelfice
LOGICAL SHELFICEwriteState
LOGICAL SHELFICE_dump_mdsio
LOGICAL SHELFICE_tave_mdsio
LOGICAL SHELFICE_dump_mnc
LOGICAL SHELFICE_tave_mnc
LOGICAL SHELFICEadvDiffHeatFlux
LOGICAL SHELFICEuseGammaFrict
LOGICAL SHELFICE_oldCalcUStar
LOGICAL SHELFICEMassStepping
LOGICAL SHELFICEDynMassOnly
LOGICAL SHI_update_kTopC
COMMON /SHELFICE_PARMS_I/
& SHELFICEselectDragQuadr
INTEGER SHELFICEselectDragQuadr
COMMON /SHELFICE_PARMS_R/
& SHELFICE_dumpFreq, SHELFICE_taveFreq,
& SHELFICEsaltToHeatRatio,
& SHELFICEheatTransCoeff, SHELFICEsaltTransCoeff,
& rhoShelfice, SHELFICEkappa,
& SHELFICElatentHeat,
& SHELFICEheatCapacity_Cp,
& SHELFICEthetaSurface,
& SHELFICEsalinity,
& SHELFICEDragLinear, SHELFICEDragQuadratic,
& shiCdrag, shiZetaN, shiRc,
& shiPrandtl, shiSchmidt, shiKinVisc,
& SHELFICEremeshFrequency,
& SHELFICEsplitThreshold, SHELFICEmergeThreshold
_RL SHELFICE_dumpFreq, SHELFICE_taveFreq
_RL SHELFICEsaltToHeatRatio
_RL SHELFICEheatTransCoeff
_RL SHELFICEsaltTransCoeff
_RL SHELFICElatentHeat
_RL SHELFICEheatCapacity_Cp
_RL rhoShelfice
_RL SHELFICEkappa
_RL SHELFICEDragLinear
_RL SHELFICEDragQuadratic
_RL SHELFICEthetaSurface
_RL shiCdrag, shiZetaN, shiRc
_RL shiPrandtl, shiSchmidt, shiKinVisc
_RL SHELFICEremeshFrequency
_RL SHELFICEsplitThreshold
_RL SHELFICEmergeThreshold
_RL SHELFICEsalinity
COMMON /SHELFICE_PARM_C/
& SHELFICEloadAnomalyFile,
& SHELFICEmassFile,
& SHELFICEtopoFile,
& SHELFICEMassDynTendFile,
& SHELFICETransCoeffTFile
CHARACTER*(MAX_LEN_FNAM) SHELFICEloadAnomalyFile
CHARACTER*(MAX_LEN_FNAM) SHELFICEmassFile
CHARACTER*(MAX_LEN_FNAM) SHELFICEtopoFile
CHARACTER*(MAX_LEN_FNAM) SHELFICEMassDynTendFile
CHARACTER*(MAX_LEN_FNAM) SHELFICETransCoeffTFile
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
COMMON /SHELFICE_FIELDS_I/ kTopC
INTEGER kTopC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SHELFICE_FIELDS_RL/
& shelficeMass, shelficeMassInit,
& shelficeLoadAnomaly,
& shelficeForcingT, shelficeForcingS,
& shiCDragFld, shiDragQuadFld
_RL shelficeMass (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RL shelficeMassInit (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RL shelficeLoadAnomaly (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RL shelficeForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RL shelficeForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RL shiCDragFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RL shiDragQuadFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SHELFICE_GAMMA_RL/
& shiTransCoeffT, shiTransCoeffS
_RL shiTransCoeffT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RL shiTransCoeffS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SHELFICE_FIELDS_RS/
& R_shelfIce,
& shelficeHeatFlux,
& shelfIceFreshWaterFlux,
& shelfIceMassDynTendency
_RS R_shelfIce (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS shelficeHeatFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS shelficeFreshWaterFlux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS
& shelfIceMassDynTendency(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
#ifdef ALLOW_CTRL
COMMON /SHELFICE_MASKS_CTRL/ maskSHI
_RS maskSHI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
#endif /* ALLOW_CTRL */
#ifdef ALLOW_DIAGNOSTICS
COMMON /SHELFICE_DIAG_DRAG/ shelficeDragU, shelficeDragV
_RS shelficeDragU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS shelficeDragV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
#endif /* ALLOW_DIAGNOSTICS */
#endif /* ALLOW_SHELFICE */