1 | MODULE ice |
---|
2 | !!====================================================================== |
---|
3 | !! *** MODULE ice *** |
---|
4 | !! sea-ice: ice variables defined in memory |
---|
5 | !!====================================================================== |
---|
6 | !! History : 3.0 ! 2008-03 (M. Vancoppenolle) Original code |
---|
7 | !! 4.0 ! 2018 (many people) SI3 [aka Sea Ice cube] |
---|
8 | !!---------------------------------------------------------------------- |
---|
9 | #if defined key_si3 |
---|
10 | !!---------------------------------------------------------------------- |
---|
11 | !! 'key_si3' SI3 sea-ice model |
---|
12 | !!---------------------------------------------------------------------- |
---|
13 | USE in_out_manager ! I/O manager |
---|
14 | USE lib_mpp ! MPP library |
---|
15 | |
---|
16 | IMPLICIT NONE |
---|
17 | PRIVATE |
---|
18 | |
---|
19 | PUBLIC ice_alloc ! called by icestp.F90 |
---|
20 | |
---|
21 | !!====================================================================== |
---|
22 | !! | |
---|
23 | !! I C E S T A T E V A R I A B L E S | |
---|
24 | !! | |
---|
25 | !! Introduction : | |
---|
26 | !! -------------- | |
---|
27 | !! Every ice-covered grid cell is characterized by a series of state | |
---|
28 | !! variables. To account for unresolved spatial variability in ice | |
---|
29 | !! thickness, the ice cover in divided in ice thickness categories. | |
---|
30 | !! | |
---|
31 | !! Sea ice state variables depend on the ice thickness category | |
---|
32 | !! | |
---|
33 | !! Those variables are divided into two groups | |
---|
34 | !! * Extensive (or global) variables. | |
---|
35 | !! These are the variables that are transported by all means | |
---|
36 | !! * Intensive (or equivalent) variables. | |
---|
37 | !! These are the variables that are either physically more | |
---|
38 | !! meaningful and/or used in ice thermodynamics | |
---|
39 | !! | |
---|
40 | !! List of ice state variables : | |
---|
41 | !! ----------------------------- | |
---|
42 | !! | |
---|
43 | !!-------------|-------------|---------------------------------|-------| |
---|
44 | !! name in | name in | meaning | units | |
---|
45 | !! 2D routines | 1D routines | | | |
---|
46 | !!-------------|-------------|---------------------------------|-------| |
---|
47 | !! | |
---|
48 | !! ******************************************************************* | |
---|
49 | !! *** Dynamical variables (prognostic) *** | |
---|
50 | !! ******************************************************************* | |
---|
51 | !! | |
---|
52 | !! u_ice | - | ice velocity in i-direction | m/s | |
---|
53 | !! v_ice | - | ice velocity in j-direction | m/s | |
---|
54 | !! | |
---|
55 | !! ******************************************************************* | |
---|
56 | !! *** Category dependent state variables (prognostic) *** | |
---|
57 | !! ******************************************************************* | |
---|
58 | !! | |
---|
59 | !! ** Global variables | |
---|
60 | !!-------------|-------------|---------------------------------|-------| |
---|
61 | !! a_i | a_i_1d | Ice concentration | | |
---|
62 | !! v_i | - | Ice volume per unit area | m | |
---|
63 | !! v_s | - | Snow volume per unit area | m | |
---|
64 | !! sv_i | - | Sea ice salt content | pss.m | |
---|
65 | !! oa_i | - | Sea ice areal age content | s | |
---|
66 | !! e_i | | Ice enthalpy | J/m2 | |
---|
67 | !! | e_i_1d | Ice enthalpy per unit vol. | J/m3 | |
---|
68 | !! e_s | | Snow enthalpy | J/m2 | |
---|
69 | !! | e_s_1d | Snow enthalpy per unit vol. | J/m3 | |
---|
70 | !! a_ip | - | Ice pond concentration | | |
---|
71 | !! v_ip | - | Ice pond volume per unit area| m | |
---|
72 | !! v_il | v_il_1d | Ice pond lid volume per area | m | |
---|
73 | !! | |
---|
74 | !!-------------|-------------|---------------------------------|-------| |
---|
75 | !! | |
---|
76 | !! ** Equivalent variables | |
---|
77 | !!-------------|-------------|---------------------------------|-------| |
---|
78 | !! | |
---|
79 | !! h_i | h_i_1d | Ice thickness | m | |
---|
80 | !! h_s ! h_s_1d | Snow depth | m | |
---|
81 | !! s_i ! s_i_1d | Sea ice bulk salinity ! pss | |
---|
82 | !! sz_i ! sz_i_1d | Sea ice salinity profile ! pss | |
---|
83 | !! o_i ! - | Sea ice Age ! s | |
---|
84 | !! t_i ! t_i_1d | Sea ice temperature ! K | |
---|
85 | !! t_s ! t_s_1d | Snow temperature ! K | |
---|
86 | !! t_su ! t_su_1d | Sea ice surface temperature ! K | |
---|
87 | !! h_ip | h_ip_1d | Ice pond thickness | m | |
---|
88 | !! h_il | h_il_1d | Ice pond lid thickness | m | |
---|
89 | !! | |
---|
90 | !! notes: the ice model only sees a bulk (i.e., vertically averaged) | |
---|
91 | !! salinity, except in thermodynamic computations, for which | |
---|
92 | !! the salinity profile is computed as a function of bulk | |
---|
93 | !! salinity | |
---|
94 | !! | |
---|
95 | !! the sea ice surface temperature is not associated to any | |
---|
96 | !! heat content. Therefore, it is not a state variable and | |
---|
97 | !! does not have to be advected. Nevertheless, it has to be | |
---|
98 | !! computed to determine whether the ice is melting or not | |
---|
99 | !! | |
---|
100 | !! ******************************************************************* | |
---|
101 | !! *** Category-summed state variables (diagnostic) *** | |
---|
102 | !! ******************************************************************* | |
---|
103 | !! at_i | at_i_1d | Total ice concentration | | |
---|
104 | !! vt_i | - | Total ice vol. per unit area | m | |
---|
105 | !! vt_s | - | Total snow vol. per unit ar. | m | |
---|
106 | !! st_i | - | Total Sea ice salt content | pss.m | |
---|
107 | !! sm_i | - | Mean sea ice salinity | pss | |
---|
108 | !! tm_i | - | Mean sea ice temperature | K | |
---|
109 | !! tm_s | - | Mean snow temperature | K | |
---|
110 | !! et_i | - | Total ice enthalpy | J/m2 | |
---|
111 | !! et_s | - | Total snow enthalpy | J/m2 | |
---|
112 | !! bv_i | - | relative brine volume | ??? | |
---|
113 | !! at_ip | - | Total ice pond concentration | | |
---|
114 | !! hm_ip | - | Mean ice pond depth | m | |
---|
115 | !! vt_ip | - | Total ice pond vol. per unit area| m | |
---|
116 | !! hm_il | - | Mean ice pond lid depth | m | |
---|
117 | !! vt_il | - | Total ice pond lid vol. per area | m | |
---|
118 | !!===================================================================== |
---|
119 | |
---|
120 | !!---------------------------------------------------------------------- |
---|
121 | !! * Share Module variables |
---|
122 | !!---------------------------------------------------------------------- |
---|
123 | ! !!** ice-generic parameters namelist (nampar) ** |
---|
124 | INTEGER , PUBLIC :: jpl !: number of ice categories |
---|
125 | INTEGER , PUBLIC :: nlay_i !: number of ice layers |
---|
126 | INTEGER , PUBLIC :: nlay_s !: number of snow layers |
---|
127 | LOGICAL , PUBLIC :: ln_virtual_itd !: virtual ITD mono-category parameterization (T) or not (F) |
---|
128 | LOGICAL , PUBLIC :: ln_icedyn !: flag for ice dynamics (T) or not (F) |
---|
129 | LOGICAL , PUBLIC :: ln_icethd !: flag for ice thermo (T) or not (F) |
---|
130 | REAL(wp) , PUBLIC :: rn_amax_n !: maximum ice concentration Northern hemisphere |
---|
131 | REAL(wp) , PUBLIC :: rn_amax_s !: maximum ice concentration Southern hemisphere |
---|
132 | CHARACTER(len=256), PUBLIC :: cn_icerst_in !: suffix of ice restart name (input) |
---|
133 | CHARACTER(len=256), PUBLIC :: cn_icerst_out !: suffix of ice restart name (output) |
---|
134 | CHARACTER(len=256), PUBLIC :: cn_icerst_indir !: ice restart input directory |
---|
135 | CHARACTER(len=256), PUBLIC :: cn_icerst_outdir !: ice restart output directory |
---|
136 | |
---|
137 | ! !!** ice-itd namelist (namitd) ** |
---|
138 | REAL(wp), PUBLIC :: rn_himin !: minimum ice thickness |
---|
139 | |
---|
140 | ! !!** ice-dynamics namelist (namdyn) ** |
---|
141 | REAL(wp), PUBLIC :: rn_ishlat !: lateral boundary condition for sea-ice |
---|
142 | LOGICAL , PUBLIC :: ln_landfast_L16 !: landfast ice parameterizationfrom lemieux2016 |
---|
143 | REAL(wp), PUBLIC :: rn_lf_depfra !: fraction of ocean depth that ice must reach to initiate landfast ice |
---|
144 | REAL(wp), PUBLIC :: rn_lf_bfr !: maximum bottom stress per unit area of contact (lemieux2016) or per unit volume (home) |
---|
145 | REAL(wp), PUBLIC :: rn_lf_relax !: relaxation time scale (s-1) to reach static friction |
---|
146 | REAL(wp), PUBLIC :: rn_lf_tensile !: isotropic tensile strength |
---|
147 | ! |
---|
148 | ! !!** ice-ridging/rafting namelist (namdyn_rdgrft) ** |
---|
149 | LOGICAL, PUBLIC :: ln_str_H79 !: ice strength parameterization (Hibler79) (may be used in rheology) |
---|
150 | REAL(wp), PUBLIC :: rn_crhg !: determines changes in ice strength (also used for landfast param) |
---|
151 | REAL(wp), PUBLIC :: rn_pstar !: determines ice strength, Hibler JPO79 (may be used in rheology) |
---|
152 | ! |
---|
153 | ! !!** ice-rheology namelist (namdyn_rhg) ** |
---|
154 | ! -- evp |
---|
155 | LOGICAL , PUBLIC :: ln_rhg_EVP ! EVP rheology switch, used for rdgrft and rheology |
---|
156 | LOGICAL , PUBLIC :: ln_rhg_EAP ! EAP rheology switch, used for rdgrft and rheology |
---|
157 | LOGICAL , PUBLIC :: ln_aEVP !: using adaptive EVP (T or F) |
---|
158 | REAL(wp), PUBLIC :: rn_creepl !: creep limit (has to be low enough, circa 10-9 m/s, depending on rheology) |
---|
159 | REAL(wp), PUBLIC :: rn_ecc !: eccentricity of the elliptical yield curve |
---|
160 | INTEGER , PUBLIC :: nn_nevp !: number of iterations for subcycling |
---|
161 | REAL(wp), PUBLIC :: rn_relast !: ratio => telast/rDt_ice (1/3 or 1/9 depending on nb of subcycling nevp) |
---|
162 | INTEGER , PUBLIC :: nn_rhg_chkcvg !: check ice rheology convergence |
---|
163 | ! -- vp |
---|
164 | LOGICAL , PUBLIC :: ln_rhg_VP !: VP rheology |
---|
165 | INTEGER , PUBLIC :: nn_vp_nout !: Number of outer iterations |
---|
166 | INTEGER , PUBLIC :: nn_vp_ninn !: Number of inner iterations (linear system solver) |
---|
167 | INTEGER , PUBLIC :: nn_vp_chkcvg !: Number of iterations every each convergence is checked |
---|
168 | ! |
---|
169 | ! !!** ice-advection namelist (namdyn_adv) ** |
---|
170 | LOGICAL , PUBLIC :: ln_adv_Pra !: Prather advection scheme |
---|
171 | LOGICAL , PUBLIC :: ln_adv_UMx !: Ultimate-Macho advection scheme |
---|
172 | ! |
---|
173 | ! !!** ice-surface boundary conditions namelist (namsbc) ** |
---|
174 | ! -- icethd_dh -- ! |
---|
175 | REAL(wp), PUBLIC :: rn_snwblow !: coef. for partitioning of snowfall between leads and sea ice |
---|
176 | ! -- icethd_zdf and icealb -- ! |
---|
177 | INTEGER , PUBLIC :: nn_snwfra !: calculate the fraction of ice covered by snow |
---|
178 | ! ! = 0 fraction = 1 (if snow) or 0 (if no snow) |
---|
179 | ! ! = 1 fraction = 1-exp(-0.2*rhos*hsnw) [MetO formulation] |
---|
180 | ! ! = 2 fraction = hsnw / (hsnw+0.02) [CICE formulation] |
---|
181 | ! -- icethd -- ! |
---|
182 | REAL(wp), PUBLIC :: rn_cio !: drag coefficient for oceanic stress |
---|
183 | INTEGER , PUBLIC :: nn_flxdist !: Redistribute heat flux over ice categories |
---|
184 | ! ! =-1 Do nothing (needs N(cat) fluxes) |
---|
185 | ! ! = 0 Average N(cat) fluxes then apply the average over the N(cat) ice |
---|
186 | ! ! = 1 Average N(cat) fluxes then redistribute over the N(cat) ice using T-ice and albedo sensitivity |
---|
187 | ! ! = 2 Redistribute a single flux over categories |
---|
188 | ! -- icethd_zdf -- ! |
---|
189 | LOGICAL , PUBLIC :: ln_cndflx !: use conduction flux as surface boundary condition (instead of qsr and qns) |
---|
190 | LOGICAL , PUBLIC :: ln_cndemulate !: emulate conduction flux (if not provided) |
---|
191 | ! ! Conduction flux as surface forcing or not |
---|
192 | INTEGER, PUBLIC, PARAMETER :: np_cnd_OFF = 0 !: no forcing from conduction flux (ice thermodynamics forced via qsr and qns) |
---|
193 | INTEGER, PUBLIC, PARAMETER :: np_cnd_ON = 1 !: forcing from conduction flux (SM0L) (compute qcn and qsr_tr via sbcblk.F90 or sbccpl.F90) |
---|
194 | INTEGER, PUBLIC, PARAMETER :: np_cnd_EMU = 2 !: emulate conduction flux via icethd_zdf.F90 (BL99) (1st round compute qcn and qsr_tr, 2nd round use it) |
---|
195 | INTEGER, PUBLIC :: nn_qtrice !: Solar flux transmitted thru the surface scattering layer: |
---|
196 | ! ! = 0 Grenfell and Maykut 1977 (depends on cloudiness and is 0 when there is snow) |
---|
197 | ! ! = 1 Lebrun 2019 (equals 0.3 anytime with different melting/dry snw conductivities) |
---|
198 | ! |
---|
199 | ! !!** ice-vertical diffusion namelist (namthd_zdf) ** |
---|
200 | LOGICAL , PUBLIC :: ln_cndi_U64 !: thermal conductivity: Untersteiner (1964) |
---|
201 | LOGICAL , PUBLIC :: ln_cndi_P07 !: thermal conductivity: Pringle et al (2007) |
---|
202 | REAL(wp), PUBLIC :: rn_cnd_s !: thermal conductivity of the snow [W/m/K] |
---|
203 | REAL(wp), PUBLIC :: rn_kappa_i !: coef. for the extinction of radiation in sea ice, Grenfell et al. (2006) [1/m] |
---|
204 | REAL(wp), PUBLIC :: rn_kappa_s !: coef. for the extinction of radiation in snw (nn_qtrice=0) [1/m] |
---|
205 | REAL(wp), PUBLIC :: rn_kappa_smlt !: coef. for the extinction of radiation in melt snw (nn_qtrice=1) [1/m] |
---|
206 | REAL(wp), PUBLIC :: rn_kappa_sdry !: coef. for the extinction of radiation in dry snw (nn_qtrice=1) [1/m] |
---|
207 | LOGICAL , PUBLIC :: ln_zdf_chkcvg !: check convergence of heat diffusion scheme |
---|
208 | |
---|
209 | ! !!** ice-salinity namelist (namthd_sal) ** |
---|
210 | INTEGER , PUBLIC :: nn_icesal !: salinity configuration used in the model |
---|
211 | ! ! 1 - constant salinity in both space and time |
---|
212 | ! ! 2 - prognostic salinity (s(z,t)) |
---|
213 | ! ! 3 - salinity profile, constant in time |
---|
214 | REAL(wp), PUBLIC :: rn_icesal !: bulk salinity (ppt) in case of constant salinity |
---|
215 | REAL(wp), PUBLIC :: rn_simax !: maximum ice salinity [PSU] |
---|
216 | REAL(wp), PUBLIC :: rn_simin !: minimum ice salinity [PSU] |
---|
217 | |
---|
218 | ! !!** ice-ponds namelist (namthd_pnd) |
---|
219 | LOGICAL , PUBLIC :: ln_pnd !: Melt ponds (T) or not (F) |
---|
220 | LOGICAL , PUBLIC :: ln_pnd_TOPO !: Topographic Melt ponds scheme (Flocco et al 2007, 2010) |
---|
221 | LOGICAL , PUBLIC :: ln_pnd_LEV !: Simple melt pond scheme |
---|
222 | REAL(wp), PUBLIC :: rn_apnd_min !: Minimum fraction of melt water contributing to ponds |
---|
223 | REAL(wp), PUBLIC :: rn_apnd_max !: Maximum fraction of melt water contributing to ponds |
---|
224 | REAL(wp), PUBLIC :: rn_pnd_flush !: Pond flushing efficiency (tuning parameter) |
---|
225 | LOGICAL , PUBLIC :: ln_pnd_CST !: Melt ponds scheme with constant fraction and depth |
---|
226 | REAL(wp), PUBLIC :: rn_apnd !: prescribed pond fraction (0<rn_apnd<1) |
---|
227 | REAL(wp), PUBLIC :: rn_hpnd !: prescribed pond depth (0<rn_hpnd<1) |
---|
228 | LOGICAL, PUBLIC :: ln_pnd_lids !: Allow ponds to have frozen lids |
---|
229 | LOGICAL , PUBLIC :: ln_pnd_alb !: melt ponds affect albedo |
---|
230 | |
---|
231 | ! !!** ice-diagnostics namelist (namdia) ** |
---|
232 | LOGICAL , PUBLIC :: ln_icediachk !: flag for ice diag (T) or not (F) |
---|
233 | REAL(wp), PUBLIC :: rn_icechk_cel !: rate of ice spuriously gained/lost (at any gridcell) |
---|
234 | REAL(wp), PUBLIC :: rn_icechk_glo !: rate of ice spuriously gained/lost (globally) |
---|
235 | LOGICAL , PUBLIC :: ln_icediahsb !: flag for ice diag (T) or not (F) |
---|
236 | LOGICAL , PUBLIC :: ln_icectl !: flag for sea-ice points output (T) or not (F) |
---|
237 | INTEGER , PUBLIC :: iiceprt !: debug i-point |
---|
238 | INTEGER , PUBLIC :: jiceprt !: debug j-point |
---|
239 | |
---|
240 | ! !!** some other parameters |
---|
241 | INTEGER , PUBLIC :: kt_ice !: iteration number |
---|
242 | REAL(wp), PUBLIC :: rDt_ice !: ice time step |
---|
243 | REAL(wp), PUBLIC :: r1_Dt_ice !: = 1. / rDt_ice |
---|
244 | REAL(wp), PUBLIC :: r1_nlay_i !: 1 / nlay_i |
---|
245 | REAL(wp), PUBLIC :: r1_nlay_s !: 1 / nlay_s |
---|
246 | REAL(wp), PUBLIC :: rswitch !: switch for the presence of ice (1) or not (0) |
---|
247 | REAL(wp), PUBLIC :: rdiag_v, rdiag_s, rdiag_t, rdiag_fv, rdiag_fs, rdiag_ft !: conservation diagnostics |
---|
248 | REAL(wp), PUBLIC, PARAMETER :: epsi06 = 1.e-06_wp !: small number |
---|
249 | REAL(wp), PUBLIC, PARAMETER :: epsi10 = 1.e-10_wp !: small number |
---|
250 | REAL(wp), PUBLIC, PARAMETER :: epsi20 = 1.e-20_wp !: small number |
---|
251 | |
---|
252 | ! !!** define arrays |
---|
253 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: u_oce,v_oce !: surface ocean velocity used in ice dynamics |
---|
254 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ht_i_new !: ice collection thickness accreted in leads |
---|
255 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fraz_frac !: fraction of frazil ice accreted at the ice bottom |
---|
256 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: strength !: ice strength |
---|
257 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: stress1_i, stress2_i, stress12_i !: 1st, 2nd & diagonal stress tensor element |
---|
258 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: delta_i !: ice rheology elta factor (Flato & Hibler 95) [s-1] |
---|
259 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: divu_i !: Divergence of the velocity field [s-1] |
---|
260 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: shear_i !: Shear of the velocity field [s-1] |
---|
261 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: aniso_11, aniso_12 !: structure tensor elements |
---|
262 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rdg_conv |
---|
263 | ! |
---|
264 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: t_bo !: Sea-Ice bottom temperature [Kelvin] |
---|
265 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qlead !: heat balance of the lead (or of the open ocean) |
---|
266 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qsb_ice_bot !: net downward heat flux from the ice to the ocean |
---|
267 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fhld !: heat flux from the lead used for bottom melting |
---|
268 | |
---|
269 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_snw !: mass flux from snow-ocean mass exchange [kg.m-2.s-1] |
---|
270 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_snw_sni !: mass flux from snow ice growth component of wfx_snw [kg.m-2.s-1] |
---|
271 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_snw_sum !: mass flux from surface melt component of wfx_snw [kg.m-2.s-1] |
---|
272 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_pnd !: mass flux from melt pond-ocean mass exchange [kg.m-2.s-1] |
---|
273 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_spr !: mass flux from snow precipitation on ice [kg.m-2.s-1] |
---|
274 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_sub !: mass flux from sublimation of snow/ice [kg.m-2.s-1] |
---|
275 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_snw_sub !: mass flux from snow sublimation [kg.m-2.s-1] |
---|
276 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_ice_sub !: mass flux from ice sublimation [kg.m-2.s-1] |
---|
277 | |
---|
278 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_snw_dyn !: mass flux from dynamical component of wfx_snw [kg.m-2.s-1] |
---|
279 | |
---|
280 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_ice !: mass flux from ice-ocean mass exchange [kg.m-2.s-1] |
---|
281 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_sni !: mass flux from snow ice growth component of wfx_ice [kg.m-2.s-1] |
---|
282 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_opw !: mass flux from lateral ice growth component of wfx_ice [kg.m-2.s-1] |
---|
283 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_bog !: mass flux from bottom ice growth component of wfx_ice [kg.m-2.s-1] |
---|
284 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_dyn !: mass flux from dynamical ice growth component of wfx_ice [kg.m-2.s-1] |
---|
285 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_bom !: mass flux from bottom melt component of wfx_ice [kg.m-2.s-1] |
---|
286 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_sum !: mass flux from surface melt component of wfx_ice [kg.m-2.s-1] |
---|
287 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_lam !: mass flux from lateral melt component of wfx_ice [kg.m-2.s-1] |
---|
288 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_res !: mass flux from residual component of wfx_ice [kg.m-2.s-1] |
---|
289 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_err_sub !: mass flux error after sublimation [kg.m-2.s-1] |
---|
290 | |
---|
291 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sfx_bog !: salt flux due to ice bottom growth [pss.kg.m-2.s-1 => g.m-2.s-1] |
---|
292 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sfx_bom !: salt flux due to ice bottom melt [pss.kg.m-2.s-1 => g.m-2.s-1] |
---|
293 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sfx_lam !: salt flux due to ice lateral melt [pss.kg.m-2.s-1 => g.m-2.s-1] |
---|
294 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sfx_sum !: salt flux due to ice surface melt [pss.kg.m-2.s-1 => g.m-2.s-1] |
---|
295 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sfx_sni !: salt flux due to snow-ice growth [pss.kg.m-2.s-1 => g.m-2.s-1] |
---|
296 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sfx_opw !: salt flux due to growth in open water [pss.kg.m-2.s-1 => g.m-2.s-1] |
---|
297 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sfx_bri !: salt flux due to brine rejection [pss.kg.m-2.s-1 => g.m-2.s-1] |
---|
298 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sfx_dyn !: salt flux due to porous ridged ice formation [pss.kg.m-2.s-1 => g.m-2.s-1] |
---|
299 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sfx_res !: salt flux due to correction on ice thick. (residual) [pss.kg.m-2.s-1 => g.m-2.s-1] |
---|
300 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sfx_sub !: salt flux due to ice sublimation [pss.kg.m-2.s-1 => g.m-2.s-1] |
---|
301 | |
---|
302 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_bog !: total heat flux causing bottom ice growth [W.m-2] |
---|
303 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_bom !: total heat flux causing bottom ice melt [W.m-2] |
---|
304 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_sum !: total heat flux causing surface ice melt [W.m-2] |
---|
305 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_opw !: total heat flux causing open water ice formation [W.m-2] |
---|
306 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_dif !: total heat flux causing Temp change in the ice [W.m-2] |
---|
307 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_snw !: heat flux for snow melt [W.m-2] |
---|
308 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_err_dif !: heat flux remaining due to change in non-solar flux [W.m-2] |
---|
309 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qt_atm_oi !: heat flux at the interface atm-[oce+ice] [W.m-2] |
---|
310 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qt_oce_ai !: heat flux at the interface oce-[atm+ice] [W.m-2] |
---|
311 | |
---|
312 | ! heat flux associated with ice-atmosphere mass exchange |
---|
313 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_sub !: heat flux for sublimation [W.m-2] |
---|
314 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_spr !: heat flux of the snow precipitation [W.m-2] |
---|
315 | |
---|
316 | ! heat flux associated with ice-ocean mass exchange |
---|
317 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_thd !: ice-ocean heat flux from thermo processes (icethd_dh) [W.m-2] |
---|
318 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_dyn !: ice-ocean heat flux from ridging [W.m-2] |
---|
319 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_res !: heat flux due to correction on ice thick. (residual) [W.m-2] |
---|
320 | |
---|
321 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rn_amax_2d !: maximum ice concentration 2d array |
---|
322 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qtr_ice_bot !: transmitted solar radiation under ice |
---|
323 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: t1_ice !: temperature of the first layer (ln_cndflx=T) [K] |
---|
324 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: cnd_ice !: effective conductivity of the 1st layer (ln_cndflx=T) [W.m-2.K-1] |
---|
325 | |
---|
326 | !!---------------------------------------------------------------------- |
---|
327 | !! * Ice global state variables |
---|
328 | !!---------------------------------------------------------------------- |
---|
329 | !! Variables defined for each ice category |
---|
330 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: h_i !: Ice thickness (m) |
---|
331 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_i !: Ice fractional areas (concentration) |
---|
332 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: v_i !: Ice volume per unit area (m) |
---|
333 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: v_s !: Snow volume per unit area (m) |
---|
334 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: h_s !: Snow thickness (m) |
---|
335 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: t_su !: Sea-Ice Surface Temperature (K) |
---|
336 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: s_i !: Sea-Ice Bulk salinity (pss) |
---|
337 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sv_i !: Sea-Ice Bulk salinity * volume per area (pss.m) |
---|
338 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: o_i !: Sea-Ice Age (s) |
---|
339 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: oa_i !: Sea-Ice Age times ice area (s) |
---|
340 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: bv_i !: brine volume |
---|
341 | |
---|
342 | !! Variables summed over all categories, or associated to all the ice in a single grid cell |
---|
343 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: u_ice, v_ice !: components of the ice velocity (m/s) |
---|
344 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: vt_i , vt_s !: ice and snow total volume per unit area (m) |
---|
345 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: st_i !: Total ice salinity content (pss.m) |
---|
346 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: at_i !: ice total fractional area (ice concentration) |
---|
347 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ato_i !: =1-at_i ; total open water fractional area |
---|
348 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: et_i , et_s !: ice and snow total heat content (J/m2) |
---|
349 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tm_i !: mean ice temperature over all categories (K) |
---|
350 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tm_s !: mean snw temperature over all categories (K) |
---|
351 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: bvm_i !: brine volume averaged over all categories |
---|
352 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sm_i !: mean sea ice salinity averaged over all categories (pss) |
---|
353 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tm_su !: mean surface temperature over all categories (K) |
---|
354 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hm_i !: mean ice thickness over all categories (m) |
---|
355 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hm_s !: mean snow thickness over all categories (m) |
---|
356 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: om_i !: mean ice age over all categories (s) |
---|
357 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tau_icebfr !: ice friction on ocean bottom (landfast param activated) |
---|
358 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: icb_mask !: mask of grounded icebergs if landfast [0-1] |
---|
359 | |
---|
360 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: t_s !: Snow temperatures [K] |
---|
361 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: e_s !: Snow enthalpy [J/m2] |
---|
362 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: t_i !: ice temperatures [K] |
---|
363 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: e_i !: ice enthalpy [J/m2] |
---|
364 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: sz_i !: ice salinity [PSS] |
---|
365 | |
---|
366 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_ip !: melt pond concentration |
---|
367 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: v_ip !: melt pond volume per grid cell area [m] |
---|
368 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_ip_frac !: melt pond fraction (a_ip/a_i) |
---|
369 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_ip_eff !: melt pond effective fraction (not covered up by lid) (a_ip/a_i) |
---|
370 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: h_ip !: melt pond depth [m] |
---|
371 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: v_il !: melt pond lid volume [m] |
---|
372 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: h_il !: melt pond lid thickness [m] |
---|
373 | |
---|
374 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: at_ip !: total melt pond concentration |
---|
375 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hm_ip !: mean melt pond depth [m] |
---|
376 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: vt_ip !: total melt pond volume per gridcell area [m] |
---|
377 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hm_il !: mean melt pond lid depth [m] |
---|
378 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: vt_il !: total melt pond lid volume per gridcell area [m] |
---|
379 | |
---|
380 | ! meltwater arrays to save for melt ponds (mv - could be grouped in a single meltwater volume array) |
---|
381 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dh_i_sum_2d !: surface melt (2d arrays for ponds) [m] |
---|
382 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dh_s_mlt_2d !: snow surf melt (2d arrays for ponds) [m] |
---|
383 | |
---|
384 | !!---------------------------------------------------------------------- |
---|
385 | !! * Global variables at before time step |
---|
386 | !!---------------------------------------------------------------------- |
---|
387 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: v_s_b, v_i_b, h_s_b, h_i_b !: snow and ice volumes/thickness |
---|
388 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: v_ip_b, v_il_b !: ponds and lids volumes |
---|
389 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_i_b, sv_i_b !: |
---|
390 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: e_s_b !: snow heat content |
---|
391 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: e_i_b !: ice temperatures |
---|
392 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: u_ice_b, v_ice_b !: ice velocity |
---|
393 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: at_i_b !: ice concentration (total) |
---|
394 | |
---|
395 | !!---------------------------------------------------------------------- |
---|
396 | !! * Ice thickness distribution variables |
---|
397 | !!---------------------------------------------------------------------- |
---|
398 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: hi_max !: Boundary of ice thickness categories in thickness space |
---|
399 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: hi_mean !: Mean ice thickness in catgories |
---|
400 | ! |
---|
401 | !!---------------------------------------------------------------------- |
---|
402 | !! * Ice diagnostics |
---|
403 | !!---------------------------------------------------------------------- |
---|
404 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_trp_vi !: transport of ice volume |
---|
405 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_trp_vs !: transport of snw volume |
---|
406 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_trp_ei !: transport of ice enthalpy [W/m2] |
---|
407 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_trp_es !: transport of snw enthalpy [W/m2] |
---|
408 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_trp_sv !: transport of salt content |
---|
409 | ! |
---|
410 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_heat !: snw/ice heat content variation [W/m2] |
---|
411 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_sice !: ice salt content variation [] |
---|
412 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_vice !: ice volume variation [m/s] |
---|
413 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_vsnw !: snw volume variation [m/s] |
---|
414 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_aice !: ice conc. variation [s-1] |
---|
415 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_vpnd !: pond volume variation [m/s] |
---|
416 | ! |
---|
417 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_adv_mass !: advection of mass (kg/m2/s) |
---|
418 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_adv_salt !: advection of salt (g/m2/s) |
---|
419 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_adv_heat !: advection of heat (W/m2) |
---|
420 | ! |
---|
421 | !!---------------------------------------------------------------------- |
---|
422 | !! * Ice conservation |
---|
423 | !!---------------------------------------------------------------------- |
---|
424 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_v !: conservation of ice volume |
---|
425 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_s !: conservation of ice salt |
---|
426 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_t !: conservation of ice heat |
---|
427 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_fv !: conservation of ice volume |
---|
428 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_fs !: conservation of ice salt |
---|
429 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_ft !: conservation of ice heat |
---|
430 | ! |
---|
431 | !!---------------------------------------------------------------------- |
---|
432 | !! * SIMIP extra diagnostics |
---|
433 | !!---------------------------------------------------------------------- |
---|
434 | ! Extra sea ice diagnostics to address the data request |
---|
435 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: t_si !: Temperature at Snow-ice interface (K) |
---|
436 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tm_si !: mean temperature at the snow-ice interface (K) |
---|
437 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qcn_ice_bot !: Bottom conduction flux (W/m2) |
---|
438 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qcn_ice_top !: Surface conduction flux (W/m2) |
---|
439 | ! |
---|
440 | !!---------------------------------------------------------------------- |
---|
441 | !! NEMO/ICE 4.0 , NEMO Consortium (2018) |
---|
442 | !! $Id$ |
---|
443 | !! Software governed by the CeCILL license (see ./LICENSE) |
---|
444 | !!---------------------------------------------------------------------- |
---|
445 | CONTAINS |
---|
446 | |
---|
447 | FUNCTION ice_alloc() |
---|
448 | !!----------------------------------------------------------------- |
---|
449 | !! *** Routine ice_alloc *** |
---|
450 | !!----------------------------------------------------------------- |
---|
451 | INTEGER :: ice_alloc |
---|
452 | ! |
---|
453 | INTEGER :: ierr(16), ii |
---|
454 | !!----------------------------------------------------------------- |
---|
455 | ierr(:) = 0 |
---|
456 | |
---|
457 | ii = 1 |
---|
458 | ALLOCATE( u_oce (jpi,jpj) , v_oce (jpi,jpj) , ht_i_new (jpi,jpj) , fraz_frac (jpi,jpj) , & |
---|
459 | & strength (jpi,jpj) , stress1_i(jpi,jpj) , stress2_i(jpi,jpj) , stress12_i(jpi,jpj) , & |
---|
460 | & delta_i (jpi,jpj) , divu_i (jpi,jpj) , shear_i (jpi,jpj) , & |
---|
461 | & aniso_11 (jpi,jpj) , aniso_12 (jpi,jpj) , rdg_conv (jpi,jpj) , STAT=ierr(ii) ) |
---|
462 | |
---|
463 | ii = ii + 1 |
---|
464 | ALLOCATE( t_bo (jpi,jpj) , wfx_snw_sni(jpi,jpj) , & |
---|
465 | & wfx_snw (jpi,jpj) , wfx_snw_dyn(jpi,jpj) , wfx_snw_sum(jpi,jpj) , wfx_snw_sub(jpi,jpj) , & |
---|
466 | & wfx_ice (jpi,jpj) , wfx_sub (jpi,jpj) , wfx_ice_sub(jpi,jpj) , wfx_lam (jpi,jpj) , & |
---|
467 | & wfx_pnd (jpi,jpj) , & |
---|
468 | & wfx_bog (jpi,jpj) , wfx_dyn (jpi,jpj) , wfx_bom(jpi,jpj) , wfx_sum(jpi,jpj) , & |
---|
469 | & wfx_res (jpi,jpj) , wfx_sni (jpi,jpj) , wfx_opw(jpi,jpj) , wfx_spr(jpi,jpj) , & |
---|
470 | & rn_amax_2d (jpi,jpj) , & |
---|
471 | & qsb_ice_bot(jpi,jpj) , qlead (jpi,jpj) , & |
---|
472 | & sfx_res (jpi,jpj) , sfx_bri (jpi,jpj) , sfx_dyn(jpi,jpj) , sfx_sub(jpi,jpj) , sfx_lam(jpi,jpj) , & |
---|
473 | & sfx_bog (jpi,jpj) , sfx_bom (jpi,jpj) , sfx_sum(jpi,jpj) , sfx_sni(jpi,jpj) , sfx_opw(jpi,jpj) , & |
---|
474 | & hfx_res (jpi,jpj) , hfx_snw (jpi,jpj) , hfx_sub(jpi,jpj) , & |
---|
475 | & qt_atm_oi (jpi,jpj) , qt_oce_ai (jpi,jpj) , fhld (jpi,jpj) , & |
---|
476 | & hfx_sum (jpi,jpj) , hfx_bom (jpi,jpj) , hfx_bog(jpi,jpj) , hfx_dif(jpi,jpj) , & |
---|
477 | & hfx_opw (jpi,jpj) , hfx_thd (jpi,jpj) , hfx_dyn(jpi,jpj) , hfx_spr(jpi,jpj) , & |
---|
478 | & hfx_err_dif(jpi,jpj) , wfx_err_sub(jpi,jpj) , STAT=ierr(ii) ) |
---|
479 | |
---|
480 | ! * Ice global state variables |
---|
481 | ii = ii + 1 |
---|
482 | ALLOCATE( qtr_ice_bot(jpi,jpj,jpl) , cnd_ice(jpi,jpj,jpl) , t1_ice(jpi,jpj,jpl) , & |
---|
483 | & h_i (jpi,jpj,jpl) , a_i (jpi,jpj,jpl) , v_i (jpi,jpj,jpl) , & |
---|
484 | & v_s (jpi,jpj,jpl) , h_s (jpi,jpj,jpl) , t_su (jpi,jpj,jpl) , & |
---|
485 | & s_i (jpi,jpj,jpl) , sv_i (jpi,jpj,jpl) , o_i (jpi,jpj,jpl) , & |
---|
486 | & oa_i (jpi,jpj,jpl) , bv_i (jpi,jpj,jpl) , STAT=ierr(ii) ) |
---|
487 | |
---|
488 | ii = ii + 1 |
---|
489 | ALLOCATE( u_ice(jpi,jpj) , v_ice(jpi,jpj) , & |
---|
490 | & vt_i (jpi,jpj) , vt_s (jpi,jpj) , st_i(jpi,jpj) , at_i(jpi,jpj) , ato_i(jpi,jpj) , & |
---|
491 | & et_i (jpi,jpj) , et_s (jpi,jpj) , tm_i(jpi,jpj) , tm_s(jpi,jpj) , & |
---|
492 | & sm_i (jpi,jpj) , tm_su(jpi,jpj) , hm_i(jpi,jpj) , hm_s(jpi,jpj) , & |
---|
493 | & om_i (jpi,jpj) , bvm_i(jpi,jpj) , tau_icebfr(jpi,jpj), icb_mask(jpi,jpj), STAT=ierr(ii) ) |
---|
494 | |
---|
495 | ii = ii + 1 |
---|
496 | ALLOCATE( t_s(jpi,jpj,nlay_s,jpl) , e_s(jpi,jpj,nlay_s,jpl) , STAT=ierr(ii) ) |
---|
497 | |
---|
498 | ii = ii + 1 |
---|
499 | ALLOCATE( t_i(jpi,jpj,nlay_i,jpl) , e_i(jpi,jpj,nlay_i,jpl) , sz_i(jpi,jpj,nlay_i,jpl) , STAT=ierr(ii) ) |
---|
500 | |
---|
501 | ii = ii + 1 |
---|
502 | ALLOCATE( a_ip(jpi,jpj,jpl) , v_ip(jpi,jpj,jpl) , a_ip_frac(jpi,jpj,jpl) , h_ip(jpi,jpj,jpl), & |
---|
503 | & v_il(jpi,jpj,jpl) , h_il(jpi,jpj,jpl) , a_ip_eff (jpi,jpj,jpl) , & |
---|
504 | & dh_i_sum_2d(jpi,jpj,jpl) , dh_s_mlt_2d(jpi,jpj,jpl) , STAT = ierr(ii) ) |
---|
505 | |
---|
506 | ii = ii + 1 |
---|
507 | ALLOCATE( at_ip(jpi,jpj) , hm_ip(jpi,jpj) , vt_ip(jpi,jpj) , hm_il(jpi,jpj) , vt_il(jpi,jpj) , STAT = ierr(ii) ) |
---|
508 | |
---|
509 | ! * Old values of global variables |
---|
510 | ii = ii + 1 |
---|
511 | ALLOCATE( v_s_b (jpi,jpj,jpl) , v_i_b (jpi,jpj,jpl) , h_s_b(jpi,jpj,jpl) , h_i_b(jpi,jpj,jpl), & |
---|
512 | & v_ip_b(jpi,jpj,jpl) , v_il_b(jpi,jpj,jpl) , & |
---|
513 | & a_i_b (jpi,jpj,jpl) , sv_i_b(jpi,jpj,jpl) , e_i_b(jpi,jpj,nlay_i,jpl) , e_s_b(jpi,jpj,nlay_s,jpl) , & |
---|
514 | & STAT=ierr(ii) ) |
---|
515 | |
---|
516 | ii = ii + 1 |
---|
517 | ALLOCATE( u_ice_b(jpi,jpj) , v_ice_b(jpi,jpj) , at_i_b(jpi,jpj) , STAT=ierr(ii) ) |
---|
518 | |
---|
519 | ! * Ice thickness distribution variables |
---|
520 | ii = ii + 1 |
---|
521 | ALLOCATE( hi_max(0:jpl), hi_mean(jpl), STAT=ierr(ii) ) |
---|
522 | |
---|
523 | ! * Ice diagnostics |
---|
524 | ii = ii + 1 |
---|
525 | ALLOCATE( diag_trp_vi(jpi,jpj) , diag_trp_vs (jpi,jpj) , diag_trp_ei(jpi,jpj), & |
---|
526 | & diag_trp_es(jpi,jpj) , diag_trp_sv (jpi,jpj) , diag_heat (jpi,jpj), & |
---|
527 | & diag_sice (jpi,jpj) , diag_vice (jpi,jpj) , diag_vsnw (jpi,jpj), diag_aice(jpi,jpj), diag_vpnd(jpi,jpj), & |
---|
528 | & diag_adv_mass(jpi,jpj), diag_adv_salt(jpi,jpj), diag_adv_heat(jpi,jpj), STAT=ierr(ii) ) |
---|
529 | |
---|
530 | ! * Ice conservation |
---|
531 | ii = ii + 1 |
---|
532 | ALLOCATE( diag_v (jpi,jpj) , diag_s (jpi,jpj) , diag_t (jpi,jpj), & |
---|
533 | & diag_fv(jpi,jpj) , diag_fs(jpi,jpj) , diag_ft(jpi,jpj), STAT=ierr(ii) ) |
---|
534 | |
---|
535 | ! * SIMIP diagnostics |
---|
536 | ii = ii + 1 |
---|
537 | ALLOCATE( t_si(jpi,jpj,jpl) , tm_si(jpi,jpj) , qcn_ice_bot(jpi,jpj,jpl) , qcn_ice_top(jpi,jpj,jpl) , STAT = ierr(ii) ) |
---|
538 | |
---|
539 | ice_alloc = MAXVAL( ierr(:) ) |
---|
540 | IF( ice_alloc /= 0 ) CALL ctl_stop( 'STOP', 'ice_alloc: failed to allocate arrays.' ) |
---|
541 | ! |
---|
542 | |
---|
543 | END FUNCTION ice_alloc |
---|
544 | |
---|
545 | #else |
---|
546 | !!---------------------------------------------------------------------- |
---|
547 | !! Default option Empty module NO SI3 sea-ice model |
---|
548 | !!---------------------------------------------------------------------- |
---|
549 | #endif |
---|
550 | |
---|
551 | !!====================================================================== |
---|
552 | END MODULE ice |
---|