Line data Source code
1 : !=========================================================================
2 : !
3 : ! flags for the column package
4 : !
5 : ! authors: Elizabeth C. Hunke, LANL
6 :
7 : module icepack_parameters
8 :
9 : use icepack_kinds
10 : use icepack_warnings, only: icepack_warnings_aborted
11 :
12 : implicit none
13 : private
14 :
15 : public :: icepack_init_parameters
16 : public :: icepack_query_parameters
17 : public :: icepack_write_parameters
18 : public :: icepack_recompute_constants
19 :
20 : !-----------------------------------------------------------------
21 : ! parameter constants
22 : !-----------------------------------------------------------------
23 :
24 : integer (kind=int_kind), parameter, public :: &
25 : nspint = 3 ! number of solar spectral intervals
26 :
27 : real (kind=dbl_kind), parameter, public :: &
28 : c0 = 0.0_dbl_kind, & ! LCOV_EXCL_LINE
29 : c1 = 1.0_dbl_kind, & ! LCOV_EXCL_LINE
30 : c1p5 = 1.5_dbl_kind, & ! LCOV_EXCL_LINE
31 : c2 = 2.0_dbl_kind, & ! LCOV_EXCL_LINE
32 : c3 = 3.0_dbl_kind, & ! LCOV_EXCL_LINE
33 : c4 = 4.0_dbl_kind, & ! LCOV_EXCL_LINE
34 : c5 = 5.0_dbl_kind, & ! LCOV_EXCL_LINE
35 : c6 = 6.0_dbl_kind, & ! LCOV_EXCL_LINE
36 : c8 = 8.0_dbl_kind, & ! LCOV_EXCL_LINE
37 : c10 = 10.0_dbl_kind, & ! LCOV_EXCL_LINE
38 : c15 = 15.0_dbl_kind, & ! LCOV_EXCL_LINE
39 : c16 = 16.0_dbl_kind, & ! LCOV_EXCL_LINE
40 : c20 = 20.0_dbl_kind, & ! LCOV_EXCL_LINE
41 : c25 = 25.0_dbl_kind, & ! LCOV_EXCL_LINE
42 : c100 = 100.0_dbl_kind, & ! LCOV_EXCL_LINE
43 : c180 = 180.0_dbl_kind, & ! LCOV_EXCL_LINE
44 : c1000= 1000.0_dbl_kind, & ! LCOV_EXCL_LINE
45 : p001 = 0.001_dbl_kind, & ! LCOV_EXCL_LINE
46 : p01 = 0.01_dbl_kind, & ! LCOV_EXCL_LINE
47 : p1 = 0.1_dbl_kind, & ! LCOV_EXCL_LINE
48 : p2 = 0.2_dbl_kind, & ! LCOV_EXCL_LINE
49 : p4 = 0.4_dbl_kind, & ! LCOV_EXCL_LINE
50 : p5 = 0.5_dbl_kind, & ! LCOV_EXCL_LINE
51 : p6 = 0.6_dbl_kind, & ! LCOV_EXCL_LINE
52 : p05 = 0.05_dbl_kind, & ! LCOV_EXCL_LINE
53 : p15 = 0.15_dbl_kind, & ! LCOV_EXCL_LINE
54 : p25 = 0.25_dbl_kind, & ! LCOV_EXCL_LINE
55 : p75 = 0.75_dbl_kind, & ! LCOV_EXCL_LINE
56 : p333 = c1/c3, & ! LCOV_EXCL_LINE
57 : p666 = c2/c3, & ! LCOV_EXCL_LINE
58 : spval_const= -1.0e36_dbl_kind
59 :
60 : real (kind=dbl_kind), public :: &
61 : secday = 86400.0_dbl_kind ,&! seconds in calendar day ! LCOV_EXCL_LINE
62 : puny = 1.0e-11_dbl_kind, & ! LCOV_EXCL_LINE
63 : bignum = 1.0e+30_dbl_kind, & ! LCOV_EXCL_LINE
64 : pi = 3.14159265358979323846_dbl_kind
65 :
66 : !-----------------------------------------------------------------
67 : ! derived physical constants
68 : ! Lfresh = Lsub-Lvap ,&! latent heat of melting of fresh ice (J/kg)
69 : ! cprho = cp_ocn*rhow ,&! for ocean mixed layer (J kg / K m^3) ! LCOV_EXCL_LINE
70 : ! Cp = 0.5_dbl_kind*gravit*(rhow-rhoi)*rhoi/rhow ,&! proport const for PE ! LCOV_EXCL_LINE
71 : !-----------------------------------------------------------------
72 :
73 : real (kind=dbl_kind), public :: &
74 : pih = spval_const ,&! 0.5 * pi ! LCOV_EXCL_LINE
75 : piq = spval_const ,&! 0.25 * pi ! LCOV_EXCL_LINE
76 : pi2 = spval_const ,&! 2 * pi ! LCOV_EXCL_LINE
77 : rad_to_deg = spval_const ,&! conversion factor, radians to degrees ! LCOV_EXCL_LINE
78 : Lfresh = spval_const ,&! latent heat of melting of fresh ice (J/kg) ! LCOV_EXCL_LINE
79 : cprho = spval_const ,&! for ocean mixed layer (J kg / K m^3) ! LCOV_EXCL_LINE
80 : Cp = spval_const ! proport const for PE
81 :
82 : !-----------------------------------------------------------------
83 : ! Densities
84 : !-----------------------------------------------------------------
85 :
86 : real (kind=dbl_kind), public :: &
87 : rhos = 330.0_dbl_kind ,&! density of snow (kg/m^3) ! LCOV_EXCL_LINE
88 : rhoi = 917.0_dbl_kind ,&! density of ice (kg/m^3) ! LCOV_EXCL_LINE
89 : rhosi = 940.0_dbl_kind ,&! average sea ice density ! LCOV_EXCL_LINE
90 : ! Cox and Weeks, 1982: 919-974 kg/m^2
91 : rhow = 1026.0_dbl_kind ,&! density of seawater (kg/m^3)
92 : rhofresh = 1000.0_dbl_kind ! density of fresh water (kg/m^3)
93 :
94 : !-----------------------------------------------------------------------
95 : ! Parameters for thermodynamics
96 : !-----------------------------------------------------------------------
97 :
98 : real (kind=dbl_kind), public :: &
99 : hfrazilmin = 0.05_dbl_kind ,&! min thickness of new frazil ice (m) ! LCOV_EXCL_LINE
100 : cp_ice = 2106._dbl_kind ,&! specific heat of fresh ice (J/kg/K) ! LCOV_EXCL_LINE
101 : cp_ocn = 4218._dbl_kind ,&! specific heat of ocn (J/kg/K) ! LCOV_EXCL_LINE
102 : ! freshwater value needed for enthalpy
103 : depressT = 0.054_dbl_kind ,&! Tf:brine salinity ratio (C/ppt)
104 : viscosity_dyn = 1.79e-3_dbl_kind, & ! dynamic viscosity of brine (kg/m/s) ! LCOV_EXCL_LINE
105 : Tocnfrz = -1.8_dbl_kind ,&! freezing temp of seawater (C), ! LCOV_EXCL_LINE
106 : ! used as Tsfcn for open water
107 : Tffresh = 273.15_dbl_kind ,&! freezing temp of fresh ice (K)
108 : Lsub = 2.835e6_dbl_kind ,&! latent heat, sublimation freshwater (J/kg) ! LCOV_EXCL_LINE
109 : Lvap = 2.501e6_dbl_kind ,&! latent heat, vaporization freshwater (J/kg) ! LCOV_EXCL_LINE
110 : Timelt = 0.0_dbl_kind ,&! melting temperature, ice top surface (C) ! LCOV_EXCL_LINE
111 : Tsmelt = 0.0_dbl_kind ,&! melting temperature, snow top surface (C) ! LCOV_EXCL_LINE
112 : ice_ref_salinity =4._dbl_kind,&! (ppt) ! LCOV_EXCL_LINE
113 : ! kice is not used for mushy thermo
114 : kice = 2.03_dbl_kind ,&! thermal conductivity of fresh ice(W/m/deg)
115 : ! kseaice is used only for zero-layer thermo
116 : kseaice = 2.00_dbl_kind ,&! thermal conductivity of sea ice (W/m/deg)
117 : ksno = 0.30_dbl_kind ,&! thermal conductivity of snow (W/m/deg) ! LCOV_EXCL_LINE
118 : hs_min = 1.e-4_dbl_kind ,&! min snow thickness for computing zTsn (m) ! LCOV_EXCL_LINE
119 : snowpatch = 0.02_dbl_kind ,&! parameter for fractional snow area (m) ! LCOV_EXCL_LINE
120 : saltmax = 3.2_dbl_kind ,&! max salinity at ice base for BL99 (ppt) ! LCOV_EXCL_LINE
121 : ! phi_init, dSin0_frazil are for mushy thermo
122 : phi_init = 0.75_dbl_kind ,&! initial liquid fraction of frazil
123 : min_salin = p1 ,&! threshold for brine pocket treatment ! LCOV_EXCL_LINE
124 : salt_loss = 0.4_dbl_kind ,&! fraction of salt retained in zsalinity ! LCOV_EXCL_LINE
125 : dSin0_frazil = c3 ,&! bulk salinity reduction of newly formed frazil ! LCOV_EXCL_LINE
126 : dts_b = 50._dbl_kind ,&! zsalinity timestep ! LCOV_EXCL_LINE
127 : ustar_min = 0.005_dbl_kind ,&! minimum friction velocity for ocean heat flux (m/s) ! LCOV_EXCL_LINE
128 : ! mushy thermo
129 : a_rapid_mode = 0.5e-3_dbl_kind,&! channel radius for rapid drainage mode (m)
130 : Rac_rapid_mode = 10.0_dbl_kind,&! critical Rayleigh number ! LCOV_EXCL_LINE
131 : aspect_rapid_mode = 1.0_dbl_kind,&! aspect ratio (larger is wider) ! LCOV_EXCL_LINE
132 : dSdt_slow_mode = -1.5e-7_dbl_kind,&! slow mode drainage strength (m s-1 K-1) ! LCOV_EXCL_LINE
133 : phi_c_slow_mode = 0.05_dbl_kind,&! critical liquid fraction porosity cutoff ! LCOV_EXCL_LINE
134 : phi_i_mushy = 0.85_dbl_kind ! liquid fraction of congelation ice
135 :
136 : integer (kind=int_kind), public :: &
137 : ktherm = 1 ! type of thermodynamics
138 : ! 0 = 0-layer approximation
139 : ! 1 = Bitz and Lipscomb 1999
140 : ! 2 = mushy layer theory
141 :
142 : character (char_len), public :: &
143 : conduct = 'bubbly', & ! 'MU71' or 'bubbly' ! LCOV_EXCL_LINE
144 : fbot_xfer_type = 'constant' ! transfer coefficient type for ice-ocean heat flux
145 :
146 : logical (kind=log_kind), public :: &
147 : heat_capacity = .true. ,&! if true, ice has nonzero heat capacity ! LCOV_EXCL_LINE
148 : ! if false, use zero-layer thermodynamics
149 : calc_Tsfc = .true. ,&! if true, calculate surface temperature
150 : ! if false, Tsfc is computed elsewhere and
151 : ! atmos-ice fluxes are provided to CICE
152 : update_ocn_f = .false. ,&! include fresh water and salt fluxes for frazil
153 : solve_zsal = .false. ,&! if true, update salinity profile from solve_S_dt ! LCOV_EXCL_LINE
154 : modal_aero = .false. ,&! if true, use modal aerosal optical properties ! LCOV_EXCL_LINE
155 : ! only for use with tr_aero or tr_zaero
156 : conserv_check = .false. ! if true, do conservations checks and abort
157 :
158 : character(len=char_len), public :: &
159 : tfrz_option = 'mushy' ! form of ocean freezing temperature
160 : ! 'minus1p8' = -1.8 C
161 : ! 'linear_salt' = -depressT * sss
162 : ! 'mushy' conforms with ktherm=2
163 :
164 : !-----------------------------------------------------------------------
165 : ! Parameters for radiation
166 : !-----------------------------------------------------------------------
167 :
168 : real (kind=dbl_kind), public :: &
169 : ! (Briegleb JGR 97 11475-11485 July 1992)
170 : emissivity = 0.985_dbl_kind,&! emissivity of snow and ice
171 : albocn = 0.06_dbl_kind ,&! ocean albedo ! LCOV_EXCL_LINE
172 : vonkar = 0.4_dbl_kind ,&! von Karman constant ! LCOV_EXCL_LINE
173 : stefan_boltzmann = 567.0e-10_dbl_kind,&! W/m^2/K^4 ! LCOV_EXCL_LINE
174 : ! (Ebert, Schramm and Curry JGR 100 15965-15975 Aug 1995)
175 : kappav = 1.4_dbl_kind ,&! vis extnctn coef in ice, wvlngth<700nm (1/m)
176 : hi_ssl = 0.050_dbl_kind,&! ice surface scattering layer thickness (m) ! LCOV_EXCL_LINE
177 : hs_ssl = 0.040_dbl_kind,&! snow surface scattering layer thickness (m) ! LCOV_EXCL_LINE
178 : ! baseline albedos for ccsm3 shortwave, set in namelist
179 : albicev = 0.78_dbl_kind ,&! visible ice albedo for h > ahmax
180 : albicei = 0.36_dbl_kind ,&! near-ir ice albedo for h > ahmax ! LCOV_EXCL_LINE
181 : albsnowv = 0.98_dbl_kind ,&! cold snow albedo, visible ! LCOV_EXCL_LINE
182 : albsnowi = 0.70_dbl_kind ,&! cold snow albedo, near IR ! LCOV_EXCL_LINE
183 : ahmax = 0.3_dbl_kind ,&! thickness above which ice albedo is constant (m) ! LCOV_EXCL_LINE
184 : ! dEdd tuning parameters, set in namelist
185 : R_ice = c0 ,&! sea ice tuning parameter; +1 > 1sig increase in albedo
186 : R_pnd = c0 ,&! ponded ice tuning parameter; +1 > 1sig increase in albedo ! LCOV_EXCL_LINE
187 : R_snw = c1p5 ,&! snow tuning parameter; +1 > ~.01 change in broadband albedo ! LCOV_EXCL_LINE
188 : dT_mlt = c1p5 ,&! change in temp for non-melt to melt snow grain ! LCOV_EXCL_LINE
189 : ! radius change (C)
190 : rsnw_mlt = 1500._dbl_kind,&! maximum melting snow grain radius (10^-6 m)
191 : kalg = 0.60_dbl_kind ! algae absorption coefficient for 0.5 m thick layer
192 : ! 0.5 m path of 75 mg Chl a / m2
193 : ! weights for albedos
194 : ! 4 Jan 2007 BPB Following are appropriate for complete cloud
195 : ! in a summer polar atmosphere with 1.5m bare sea ice surface:
196 : ! .636/.364 vis/nir with only 0.5% direct for each band.
197 : real (kind=dbl_kind), public :: & ! currently used only
198 : awtvdr = 0.00318_dbl_kind, &! visible, direct ! for history and ! LCOV_EXCL_LINE
199 : awtidr = 0.00182_dbl_kind, &! near IR, direct ! diagnostics ! LCOV_EXCL_LINE
200 : awtvdf = 0.63282_dbl_kind, &! visible, diffuse ! LCOV_EXCL_LINE
201 : awtidf = 0.36218_dbl_kind ! near IR, diffuse
202 :
203 : character (len=char_len), public :: &
204 : shortwave = 'dEdd', & ! shortwave method, 'ccsm3' or 'dEdd' ! LCOV_EXCL_LINE
205 : albedo_type = 'ccsm3' ! albedo parameterization, 'ccsm3' or 'constant'
206 : ! shortwave='dEdd' overrides this parameter
207 :
208 : !-----------------------------------------------------------------------
209 : ! Parameters for dynamics, including ridging and strength
210 : !-----------------------------------------------------------------------
211 :
212 : integer (kind=int_kind), public :: & ! defined in namelist
213 : kstrength = 1, & ! 0 for simple Hibler (1979) formulation ! LCOV_EXCL_LINE
214 : ! 1 for Rothrock (1975) pressure formulation
215 : krdg_partic = 1, & ! 0 for Thorndike et al. (1975) formulation
216 : ! 1 for exponential participation function
217 : krdg_redist = 1 ! 0 for Hibler (1980) formulation
218 : ! 1 for exponential redistribution function
219 :
220 : real (kind=dbl_kind), public :: &
221 : Cf = 17._dbl_kind ,&! ratio of ridging work to PE change in ridging ! LCOV_EXCL_LINE
222 : Pstar = 2.75e4_dbl_kind ,&! constant in Hibler strength formula ! LCOV_EXCL_LINE
223 : ! (kstrength = 0)
224 : Cstar = 20._dbl_kind ,&! constant in Hibler strength formula
225 : ! (kstrength = 0)
226 : dragio = 0.00536_dbl_kind ,&! ice-ocn drag coefficient
227 : thickness_ocn_layer1 = 2.0_dbl_kind,&! thickness of first ocean level (m) ! LCOV_EXCL_LINE
228 : iceruf_ocn = 0.03_dbl_kind ,&! under-ice roughness (m) ! LCOV_EXCL_LINE
229 : gravit = 9.80616_dbl_kind ,&! gravitational acceleration (m/s^2) ! LCOV_EXCL_LINE
230 : mu_rdg = 3.0_dbl_kind ! e-folding scale of ridged ice, krdg_partic=1 (m^0.5)
231 : ! (krdg_redist = 1)
232 :
233 : logical (kind=log_kind), public :: &
234 : calc_dragio = .false. ! if true, calculate dragio from iceruf_ocn and thickness_ocn_layer1
235 :
236 : !-----------------------------------------------------------------------
237 : ! Parameters for atmosphere
238 : !-----------------------------------------------------------------------
239 :
240 : real (kind=dbl_kind), public :: &
241 : cp_air = 1005.0_dbl_kind ,&! specific heat of air (J/kg/K) ! LCOV_EXCL_LINE
242 : cp_wv = 1.81e3_dbl_kind ,&! specific heat of water vapor (J/kg/K) ! LCOV_EXCL_LINE
243 : zvir = 0.606_dbl_kind ,&! rh2o/rair - 1.0 ! LCOV_EXCL_LINE
244 : zref = 10._dbl_kind ,&! reference height for stability (m) ! LCOV_EXCL_LINE
245 : iceruf = 0.0005_dbl_kind ,&! ice surface roughness (m) ! LCOV_EXCL_LINE
246 : qqqice = 11637800._dbl_kind ,&! for qsat over ice ! LCOV_EXCL_LINE
247 : TTTice = 5897.8_dbl_kind ,&! for qsat over ice ! LCOV_EXCL_LINE
248 : qqqocn = 627572.4_dbl_kind ,&! for qsat over ocn ! LCOV_EXCL_LINE
249 : TTTocn = 5107.4_dbl_kind ! for qsat over ocn
250 :
251 : character (len=char_len), public :: &
252 : atmbndy = 'default' ! atmo boundary method, 'default' ('ccsm3') or 'constant'
253 :
254 : logical (kind=log_kind), public :: &
255 : calc_strair = .true. , & ! if true, calculate wind stress ! LCOV_EXCL_LINE
256 : formdrag = .false. , & ! if true, calculate form drag ! LCOV_EXCL_LINE
257 : highfreq = .false. ! if true, calculate high frequency coupling
258 :
259 : integer (kind=int_kind), public :: &
260 : natmiter = 5 ! number of iterations for atm boundary layer calcs
261 :
262 : ! Flux convergence tolerance
263 : real (kind=dbl_kind), public :: atmiter_conv = c0
264 :
265 : !-----------------------------------------------------------------------
266 : ! Parameters for the ice thickness distribution
267 : !-----------------------------------------------------------------------
268 :
269 : integer (kind=int_kind), public :: &
270 : kitd = 1 ,&! type of itd conversions ! LCOV_EXCL_LINE
271 : ! 0 = delta function
272 : ! 1 = linear remap
273 : kcatbound = 1 ! 0 = old category boundary formula
274 : ! 1 = new formula giving round numbers
275 : ! 2 = WMO standard
276 : ! 3 = asymptotic formula
277 :
278 : !-----------------------------------------------------------------------
279 : ! Parameters for the floe size distribution
280 : !-----------------------------------------------------------------------
281 :
282 : integer (kind=int_kind), public :: &
283 : nfreq = 25 ! number of frequencies
284 :
285 : real (kind=dbl_kind), public :: &
286 : floeshape = 0.66_dbl_kind ! constant from Steele (unitless)
287 :
288 : real (kind=dbl_kind), public :: &
289 : floediam = 300.0_dbl_kind ! effective floe diameter for lateral melt (m)
290 :
291 : logical (kind=log_kind), public :: &
292 : wave_spec = .false. ! if true, use wave forcing
293 :
294 : character (len=char_len), public :: &
295 : wave_spec_type = 'constant' ! 'none', 'constant', or 'random'
296 :
297 : !-----------------------------------------------------------------------
298 : ! Parameters for melt ponds
299 : !-----------------------------------------------------------------------
300 :
301 : real (kind=dbl_kind), public :: &
302 : hs0 = 0.03_dbl_kind ! snow depth for transition to bare sea ice (m)
303 :
304 : ! level-ice ponds
305 : character (len=char_len), public :: &
306 : frzpnd = 'cesm' ! pond refreezing parameterization
307 :
308 : real (kind=dbl_kind), public :: &
309 : dpscale = c1, & ! alter e-folding time scale for flushing ! LCOV_EXCL_LINE
310 : rfracmin = 0.15_dbl_kind, & ! minimum retained fraction of meltwater ! LCOV_EXCL_LINE
311 : rfracmax = 0.85_dbl_kind, & ! maximum retained fraction of meltwater ! LCOV_EXCL_LINE
312 : pndaspect = 0.8_dbl_kind, & ! ratio of pond depth to area fraction ! LCOV_EXCL_LINE
313 : hs1 = 0.03_dbl_kind ! snow depth for transition to bare pond ice (m)
314 :
315 : ! topo ponds
316 : real (kind=dbl_kind), public :: &
317 : hp1 = 0.01_dbl_kind ! critical pond lid thickness for topo ponds
318 :
319 : !-----------------------------------------------------------------------
320 : ! Parameters for biogeochemistry
321 : !-----------------------------------------------------------------------
322 :
323 : character(char_len), public :: &
324 : ! skl biology parameters
325 : bgc_flux_type = 'Jin2006' ! type of ocean-ice poston velocity (or 'constant')
326 :
327 : logical (kind=log_kind), public :: &
328 : z_tracers = .false., & ! if .true., bgc or aerosol tracers are vertically resolved ! LCOV_EXCL_LINE
329 : scale_bgc = .false., & ! if .true., initialize bgc tracers proportionally with salinity ! LCOV_EXCL_LINE
330 : solve_zbgc = .false., & ! if .true., solve vertical biochemistry portion of code ! LCOV_EXCL_LINE
331 : dEdd_algae = .false., & ! if .true., algal absorption of shortwave is computed in the ! LCOV_EXCL_LINE
332 : skl_bgc = .false. ! if true, solve skeletal biochemistry
333 :
334 : real (kind=dbl_kind), public :: &
335 : phi_snow = p5 , & ! snow porosity ! LCOV_EXCL_LINE
336 : grid_o = c5 , & ! for bottom flux ! LCOV_EXCL_LINE
337 : initbio_frac = c1 , & ! fraction of ocean trcr concentration in bio trcrs ! LCOV_EXCL_LINE
338 : l_sk = 7.0_dbl_kind , & ! characteristic diffusive scale (m) ! LCOV_EXCL_LINE
339 : grid_oS = c5 , & ! for bottom flux ! LCOV_EXCL_LINE
340 : l_skS = 7.0_dbl_kind , & ! characteristic skeletal layer thickness (m) (zsalinity) ! LCOV_EXCL_LINE
341 : algal_vel = 1.11e-8_dbl_kind, & ! 0.5 cm/d(m/s) Lavoie 2005 1.5 cm/day ! LCOV_EXCL_LINE
342 : R_dFe2dust = 0.035_dbl_kind , & ! g/g (3.5% content) Tagliabue 2009 ! LCOV_EXCL_LINE
343 : dustFe_sol = 0.005_dbl_kind , & ! solubility fraction ! LCOV_EXCL_LINE
344 : frazil_scav = c1 , & ! fraction or multiple of bgc concentrated in frazil ice ! LCOV_EXCL_LINE
345 : sk_l = 0.03_dbl_kind , & ! skeletal layer thickness (m) ! LCOV_EXCL_LINE
346 : min_bgc = 0.01_dbl_kind , & ! fraction of ocean bgc concentration in surface melt ! LCOV_EXCL_LINE
347 : T_max = c0 , & ! maximum temperature (C) ! LCOV_EXCL_LINE
348 : fsal = c1 , & ! Salinity limitation (1) ! LCOV_EXCL_LINE
349 : op_dep_min = p1 , & ! light attenuates for optical depths exceeding min ! LCOV_EXCL_LINE
350 : fr_graze_s = p5 , & ! fraction of grazing spilled or slopped ! LCOV_EXCL_LINE
351 : fr_graze_e = p5 , & ! fraction of assimilation excreted ! LCOV_EXCL_LINE
352 : fr_mort2min = p5 , & ! fractionation of mortality to Am ! LCOV_EXCL_LINE
353 : fr_dFe = 0.3_dbl_kind , & ! fraction of remineralized nitrogen ! LCOV_EXCL_LINE
354 : ! (in units of algal iron)
355 : k_nitrif = c0 , & ! nitrification rate (1/day)
356 : t_iron_conv = 3065.0_dbl_kind , & ! desorption loss pFe to dFe (day) ! LCOV_EXCL_LINE
357 : max_loss = 0.9_dbl_kind , & ! restrict uptake to % of remaining value ! LCOV_EXCL_LINE
358 : max_dfe_doc1 = 0.2_dbl_kind , & ! max ratio of dFe to saccharides in the ice ! LCOV_EXCL_LINE
359 : ! (nM Fe/muM C)
360 : fr_resp = 0.05_dbl_kind , & ! fraction of algal growth lost due to respiration
361 : fr_resp_s = 0.75_dbl_kind , & ! DMSPd fraction of respiration loss as DMSPd ! LCOV_EXCL_LINE
362 : y_sk_DMS = p5 , & ! fraction conversion given high yield ! LCOV_EXCL_LINE
363 : t_sk_conv = 3.0_dbl_kind , & ! Stefels conversion time (d) ! LCOV_EXCL_LINE
364 : t_sk_ox = 10.0_dbl_kind ! DMS oxidation time (d)
365 :
366 :
367 : !-----------------------------------------------------------------------
368 : ! Parameters for shortwave redistribution
369 : !-----------------------------------------------------------------------
370 :
371 : logical (kind=log_kind), public :: &
372 : sw_redist = .false.
373 :
374 : real (kind=dbl_kind), public :: &
375 : sw_frac = 0.9_dbl_kind , & ! Fraction of internal shortwave moved to surface ! LCOV_EXCL_LINE
376 : sw_dtemp = 0.02_dbl_kind ! temperature difference from melting
377 :
378 : !=======================================================================
379 :
380 : contains
381 :
382 : !=======================================================================
383 :
384 : !autodocument_start icepack_init_parameters
385 : ! subroutine to set the column package internal parameters
386 :
387 17276 : subroutine icepack_init_parameters( &
388 : puny_in, bignum_in, pi_in, secday_in, & ! LCOV_EXCL_LINE
389 : rhos_in, rhoi_in, rhow_in, cp_air_in, emissivity_in, & ! LCOV_EXCL_LINE
390 : cp_ice_in, cp_ocn_in, hfrazilmin_in, floediam_in, & ! LCOV_EXCL_LINE
391 : depressT_in, dragio_in, thickness_ocn_layer1_in, iceruf_ocn_in, albocn_in, gravit_in, viscosity_dyn_in, & ! LCOV_EXCL_LINE
392 : Tocnfrz_in, rhofresh_in, zvir_in, vonkar_in, cp_wv_in, & ! LCOV_EXCL_LINE
393 : stefan_boltzmann_in, ice_ref_salinity_in, & ! LCOV_EXCL_LINE
394 : Tffresh_in, Lsub_in, Lvap_in, Timelt_in, Tsmelt_in, & ! LCOV_EXCL_LINE
395 : iceruf_in, Cf_in, Pstar_in, Cstar_in, kappav_in, & ! LCOV_EXCL_LINE
396 : kice_in, kseaice_in, ksno_in, & ! LCOV_EXCL_LINE
397 : zref_in, hs_min_in, snowpatch_in, rhosi_in, sk_l_in, & ! LCOV_EXCL_LINE
398 : saltmax_in, phi_init_in, min_salin_in, salt_loss_in, & ! LCOV_EXCL_LINE
399 : min_bgc_in, dSin0_frazil_in, hi_ssl_in, hs_ssl_in, & ! LCOV_EXCL_LINE
400 : awtvdr_in, awtidr_in, awtvdf_in, awtidf_in, & ! LCOV_EXCL_LINE
401 : qqqice_in, TTTice_in, qqqocn_in, TTTocn_in, & ! LCOV_EXCL_LINE
402 : ktherm_in, conduct_in, fbot_xfer_type_in, calc_Tsfc_in, dts_b_in, & ! LCOV_EXCL_LINE
403 : update_ocn_f_in, ustar_min_in, a_rapid_mode_in, & ! LCOV_EXCL_LINE
404 : Rac_rapid_mode_in, aspect_rapid_mode_in, & ! LCOV_EXCL_LINE
405 : dSdt_slow_mode_in, phi_c_slow_mode_in, & ! LCOV_EXCL_LINE
406 : phi_i_mushy_in, shortwave_in, albedo_type_in, albsnowi_in, & ! LCOV_EXCL_LINE
407 : albicev_in, albicei_in, albsnowv_in, & ! LCOV_EXCL_LINE
408 : ahmax_in, R_ice_in, R_pnd_in, R_snw_in, dT_mlt_in, rsnw_mlt_in, & ! LCOV_EXCL_LINE
409 : kalg_in, kstrength_in, krdg_partic_in, krdg_redist_in, mu_rdg_in, & ! LCOV_EXCL_LINE
410 : atmbndy_in, calc_strair_in, formdrag_in, highfreq_in, natmiter_in, & ! LCOV_EXCL_LINE
411 : atmiter_conv_in, calc_dragio_in, & ! LCOV_EXCL_LINE
412 : tfrz_option_in, kitd_in, kcatbound_in, hs0_in, frzpnd_in, & ! LCOV_EXCL_LINE
413 : floeshape_in, wave_spec_in, wave_spec_type_in, nfreq_in, & ! LCOV_EXCL_LINE
414 : dpscale_in, rfracmin_in, rfracmax_in, pndaspect_in, hs1_in, hp1_in, & ! LCOV_EXCL_LINE
415 : bgc_flux_type_in, z_tracers_in, scale_bgc_in, solve_zbgc_in, & ! LCOV_EXCL_LINE
416 : modal_aero_in, skl_bgc_in, solve_zsal_in, grid_o_in, l_sk_in, & ! LCOV_EXCL_LINE
417 : initbio_frac_in, grid_oS_in, l_skS_in, dEdd_algae_in, & ! LCOV_EXCL_LINE
418 : phi_snow_in, heat_capacity_in, T_max_in, fsal_in, & ! LCOV_EXCL_LINE
419 : fr_resp_in, algal_vel_in, R_dFe2dust_in, dustFe_sol_in, & ! LCOV_EXCL_LINE
420 : op_dep_min_in, fr_graze_s_in, fr_graze_e_in, fr_mort2min_in, & ! LCOV_EXCL_LINE
421 : fr_dFe_in, k_nitrif_in, t_iron_conv_in, max_loss_in, & ! LCOV_EXCL_LINE
422 : max_dfe_doc1_in, fr_resp_s_in, conserv_check_in, & ! LCOV_EXCL_LINE
423 : y_sk_DMS_in, t_sk_conv_in, t_sk_ox_in, frazil_scav_in, & ! LCOV_EXCL_LINE
424 : sw_redist_in, sw_frac_in, sw_dtemp_in)
425 :
426 : !-----------------------------------------------------------------
427 : ! parameter constants
428 : !-----------------------------------------------------------------
429 :
430 : real (kind=dbl_kind), intent(in), optional :: &
431 : secday_in, & ! ! LCOV_EXCL_LINE
432 : puny_in, & ! ! LCOV_EXCL_LINE
433 : bignum_in, & ! ! LCOV_EXCL_LINE
434 : pi_in !
435 :
436 : !-----------------------------------------------------------------
437 : ! densities
438 : !-----------------------------------------------------------------
439 :
440 : real (kind=dbl_kind), intent(in), optional :: &
441 : rhos_in, & ! density of snow (kg/m^3) ! LCOV_EXCL_LINE
442 : rhoi_in, & ! density of ice (kg/m^3) ! LCOV_EXCL_LINE
443 : rhosi_in, & ! average sea ice density (kg/m2) ! LCOV_EXCL_LINE
444 : rhow_in, & ! density of seawater (kg/m^3) ! LCOV_EXCL_LINE
445 : rhofresh_in ! density of fresh water (kg/m^3)
446 :
447 : !-----------------------------------------------------------------------
448 : ! Parameters for thermodynamics
449 : !-----------------------------------------------------------------------
450 :
451 : real (kind=dbl_kind), intent(in), optional :: &
452 : floediam_in, & ! effective floe diameter for lateral melt (m) ! LCOV_EXCL_LINE
453 : hfrazilmin_in, & ! min thickness of new frazil ice (m) ! LCOV_EXCL_LINE
454 : cp_ice_in, & ! specific heat of fresh ice (J/kg/K) ! LCOV_EXCL_LINE
455 : cp_ocn_in, & ! specific heat of ocn (J/kg/K) ! LCOV_EXCL_LINE
456 : depressT_in, & ! Tf:brine salinity ratio (C/ppt) ! LCOV_EXCL_LINE
457 : viscosity_dyn_in, & ! dynamic viscosity of brine (kg/m/s) ! LCOV_EXCL_LINE
458 : Tocnfrz_in, & ! freezing temp of seawater (C) ! LCOV_EXCL_LINE
459 : Tffresh_in, & ! freezing temp of fresh ice (K) ! LCOV_EXCL_LINE
460 : Lsub_in, & ! latent heat, sublimation freshwater (J/kg) ! LCOV_EXCL_LINE
461 : Lvap_in, & ! latent heat, vaporization freshwater (J/kg) ! LCOV_EXCL_LINE
462 : Timelt_in, & ! melting temperature, ice top surface (C) ! LCOV_EXCL_LINE
463 : Tsmelt_in, & ! melting temperature, snow top surface (C) ! LCOV_EXCL_LINE
464 : ice_ref_salinity_in, & ! (ppt) ! LCOV_EXCL_LINE
465 : kice_in, & ! thermal conductivity of fresh ice(W/m/deg) ! LCOV_EXCL_LINE
466 : kseaice_in, & ! thermal conductivity of sea ice (W/m/deg) ! LCOV_EXCL_LINE
467 : ksno_in, & ! thermal conductivity of snow (W/m/deg) ! LCOV_EXCL_LINE
468 : hs_min_in, & ! min snow thickness for computing zTsn (m) ! LCOV_EXCL_LINE
469 : snowpatch_in, & ! parameter for fractional snow area (m) ! LCOV_EXCL_LINE
470 : saltmax_in, & ! max salinity at ice base for BL99 (ppt) ! LCOV_EXCL_LINE
471 : phi_init_in, & ! initial liquid fraction of frazil ! LCOV_EXCL_LINE
472 : min_salin_in, & ! threshold for brine pocket treatment ! LCOV_EXCL_LINE
473 : salt_loss_in, & ! fraction of salt retained in zsalinity ! LCOV_EXCL_LINE
474 : dSin0_frazil_in ! bulk salinity reduction of newly formed frazil
475 :
476 : integer (kind=int_kind), intent(in), optional :: &
477 : ktherm_in ! type of thermodynamics
478 : ! 0 = 0-layer approximation
479 : ! 1 = Bitz and Lipscomb 1999
480 : ! 2 = mushy layer theory
481 :
482 : character (char_len), intent(in), optional :: &
483 : conduct_in, & ! 'MU71' or 'bubbly' ! LCOV_EXCL_LINE
484 : fbot_xfer_type_in ! transfer coefficient type for ice-ocean heat flux
485 :
486 : logical (kind=log_kind), intent(in), optional :: &
487 : heat_capacity_in, &! if true, ice has nonzero heat capacity ! LCOV_EXCL_LINE
488 : ! if false, use zero-layer thermodynamics
489 : calc_Tsfc_in , &! if true, calculate surface temperature
490 : ! if false, Tsfc is computed elsewhere and
491 : ! atmos-ice fluxes are provided to CICE
492 : update_ocn_f_in ! include fresh water and salt fluxes for frazil
493 :
494 : real (kind=dbl_kind), intent(in), optional :: &
495 : dts_b_in, & ! zsalinity timestep ! LCOV_EXCL_LINE
496 : ustar_min_in ! minimum friction velocity for ice-ocean heat flux
497 :
498 : ! mushy thermo
499 : real(kind=dbl_kind), intent(in), optional :: &
500 : a_rapid_mode_in , & ! channel radius for rapid drainage mode (m) ! LCOV_EXCL_LINE
501 : Rac_rapid_mode_in , & ! critical Rayleigh number for rapid drainage mode ! LCOV_EXCL_LINE
502 : aspect_rapid_mode_in , & ! aspect ratio for rapid drainage mode (larger=wider) ! LCOV_EXCL_LINE
503 : dSdt_slow_mode_in , & ! slow mode drainage strength (m s-1 K-1) ! LCOV_EXCL_LINE
504 : phi_c_slow_mode_in , & ! liquid fraction porosity cutoff for slow mode ! LCOV_EXCL_LINE
505 : phi_i_mushy_in ! liquid fraction of congelation ice
506 :
507 : character(len=char_len), intent(in), optional :: &
508 : tfrz_option_in ! form of ocean freezing temperature
509 : ! 'minus1p8' = -1.8 C
510 : ! 'linear_salt' = -depressT * sss
511 : ! 'mushy' conforms with ktherm=2
512 :
513 : !-----------------------------------------------------------------------
514 : ! Parameters for radiation
515 : !-----------------------------------------------------------------------
516 :
517 : real(kind=dbl_kind), intent(in), optional :: &
518 : emissivity_in, & ! emissivity of snow and ice ! LCOV_EXCL_LINE
519 : albocn_in, & ! ocean albedo ! LCOV_EXCL_LINE
520 : vonkar_in, & ! von Karman constant ! LCOV_EXCL_LINE
521 : stefan_boltzmann_in, & ! W/m^2/K^4 ! LCOV_EXCL_LINE
522 : kappav_in, & ! vis extnctn coef in ice, wvlngth<700nm (1/m) ! LCOV_EXCL_LINE
523 : hi_ssl_in, & ! ice surface scattering layer thickness (m) ! LCOV_EXCL_LINE
524 : hs_ssl_in, & ! visible, direct ! LCOV_EXCL_LINE
525 : awtvdr_in, & ! visible, direct ! for history and ! LCOV_EXCL_LINE
526 : awtidr_in, & ! near IR, direct ! diagnostics ! LCOV_EXCL_LINE
527 : awtvdf_in, & ! visible, diffuse ! LCOV_EXCL_LINE
528 : awtidf_in ! near IR, diffuse
529 :
530 : character (len=char_len), intent(in), optional :: &
531 : shortwave_in, & ! shortwave method, 'ccsm3' or 'dEdd' ! LCOV_EXCL_LINE
532 : albedo_type_in ! albedo parameterization, 'ccsm3' or 'constant'
533 : ! shortwave='dEdd' overrides this parameter
534 :
535 : ! baseline albedos for ccsm3 shortwave, set in namelist
536 : real (kind=dbl_kind), intent(in), optional :: &
537 : albicev_in , & ! visible ice albedo for h > ahmax ! LCOV_EXCL_LINE
538 : albicei_in , & ! near-ir ice albedo for h > ahmax ! LCOV_EXCL_LINE
539 : albsnowv_in , & ! cold snow albedo, visible ! LCOV_EXCL_LINE
540 : albsnowi_in , & ! cold snow albedo, near IR ! LCOV_EXCL_LINE
541 : ahmax_in ! thickness above which ice albedo is constant (m)
542 :
543 : ! dEdd tuning parameters, set in namelist
544 : real (kind=dbl_kind), intent(in), optional :: &
545 : R_ice_in , & ! sea ice tuning parameter; +1 > 1sig increase in albedo ! LCOV_EXCL_LINE
546 : R_pnd_in , & ! ponded ice tuning parameter; +1 > 1sig increase in albedo ! LCOV_EXCL_LINE
547 : R_snw_in , & ! snow tuning parameter; +1 > ~.01 change in broadband albedo ! LCOV_EXCL_LINE
548 : dT_mlt_in , & ! change in temp for non-melt to melt snow grain ! LCOV_EXCL_LINE
549 : ! radius change (C)
550 : rsnw_mlt_in , & ! maximum melting snow grain radius (10^-6 m)
551 : kalg_in ! algae absorption coefficient for 0.5 m thick layer
552 :
553 : logical (kind=log_kind), intent(in), optional :: &
554 : sw_redist_in ! redistribute shortwave
555 :
556 : real (kind=dbl_kind), intent(in), optional :: &
557 : sw_frac_in , & ! Fraction of internal shortwave moved to surface ! LCOV_EXCL_LINE
558 : sw_dtemp_in ! temperature difference from melting
559 :
560 : !-----------------------------------------------------------------------
561 : ! Parameters for dynamics
562 : !-----------------------------------------------------------------------
563 :
564 : real(kind=dbl_kind), intent(in), optional :: &
565 : Cf_in, & ! ratio of ridging work to PE change in ridging ! LCOV_EXCL_LINE
566 : Pstar_in, & ! constant in Hibler strength formula ! LCOV_EXCL_LINE
567 : Cstar_in, & ! constant in Hibler strength formula ! LCOV_EXCL_LINE
568 : dragio_in, & ! ice-ocn drag coefficient ! LCOV_EXCL_LINE
569 : thickness_ocn_layer1_in, & ! thickness of first ocean level (m) ! LCOV_EXCL_LINE
570 : iceruf_ocn_in, & ! under-ice roughness (m) ! LCOV_EXCL_LINE
571 : gravit_in, & ! gravitational acceleration (m/s^2) ! LCOV_EXCL_LINE
572 : iceruf_in ! ice surface roughness (m)
573 :
574 : integer (kind=int_kind), intent(in), optional :: & ! defined in namelist
575 : kstrength_in , & ! 0 for simple Hibler (1979) formulation ! LCOV_EXCL_LINE
576 : ! 1 for Rothrock (1975) pressure formulation
577 : krdg_partic_in, & ! 0 for Thorndike et al. (1975) formulation
578 : ! 1 for exponential participation function
579 : krdg_redist_in ! 0 for Hibler (1980) formulation
580 : ! 1 for exponential redistribution function
581 :
582 : real (kind=dbl_kind), intent(in), optional :: &
583 : mu_rdg_in ! gives e-folding scale of ridged ice (m^.5)
584 : ! (krdg_redist = 1)
585 :
586 : logical (kind=log_kind), intent(in), optional :: &
587 : calc_dragio_in ! if true, calculate dragio from iceruf_ocn and thickness_ocn_layer1
588 :
589 : !-----------------------------------------------------------------------
590 : ! Parameters for atmosphere
591 : !-----------------------------------------------------------------------
592 :
593 : real (kind=dbl_kind), intent(in), optional :: &
594 : cp_air_in, & ! specific heat of air (J/kg/K) ! LCOV_EXCL_LINE
595 : cp_wv_in, & ! specific heat of water vapor (J/kg/K) ! LCOV_EXCL_LINE
596 : zvir_in, & ! rh2o/rair - 1.0 ! LCOV_EXCL_LINE
597 : zref_in, & ! reference height for stability (m) ! LCOV_EXCL_LINE
598 : qqqice_in, & ! for qsat over ice ! LCOV_EXCL_LINE
599 : TTTice_in, & ! for qsat over ice ! LCOV_EXCL_LINE
600 : qqqocn_in, & ! for qsat over ocn ! LCOV_EXCL_LINE
601 : TTTocn_in ! for qsat over ocn
602 :
603 : character (len=char_len), intent(in), optional :: &
604 : atmbndy_in ! atmo boundary method, 'default' ('ccsm3') or 'constant'
605 :
606 : logical (kind=log_kind), intent(in), optional :: &
607 : calc_strair_in, & ! if true, calculate wind stress components ! LCOV_EXCL_LINE
608 : formdrag_in, & ! if true, calculate form drag ! LCOV_EXCL_LINE
609 : highfreq_in ! if true, use high frequency coupling
610 :
611 : integer (kind=int_kind), intent(in), optional :: &
612 : natmiter_in ! number of iterations for boundary layer calculations
613 :
614 : ! Flux convergence tolerance
615 : real (kind=dbl_kind), intent(in), optional :: atmiter_conv_in
616 :
617 : !-----------------------------------------------------------------------
618 : ! Parameters for the ice thickness distribution
619 : !-----------------------------------------------------------------------
620 :
621 : integer (kind=int_kind), intent(in), optional :: &
622 : kitd_in , & ! type of itd conversions ! LCOV_EXCL_LINE
623 : ! 0 = delta function
624 : ! 1 = linear remap
625 : kcatbound_in ! 0 = old category boundary formula
626 : ! 1 = new formula giving round numbers
627 : ! 2 = WMO standard
628 : ! 3 = asymptotic formula
629 :
630 : !-----------------------------------------------------------------------
631 : ! Parameters for the floe size distribution
632 : !-----------------------------------------------------------------------
633 :
634 : integer (kind=int_kind), intent(in), optional :: &
635 : nfreq_in ! number of frequencies
636 :
637 : real (kind=dbl_kind), intent(in), optional :: &
638 : floeshape_in ! constant from Steele (unitless)
639 :
640 : logical (kind=log_kind), intent(in), optional :: &
641 : wave_spec_in ! if true, use wave forcing
642 :
643 : character (len=char_len), intent(in), optional :: &
644 : wave_spec_type_in ! type of wave spectrum forcing
645 :
646 : !-----------------------------------------------------------------------
647 : ! Parameters for biogeochemistry
648 : !-----------------------------------------------------------------------
649 :
650 : character(char_len), intent(in), optional :: &
651 : bgc_flux_type_in ! type of ocean-ice piston velocity
652 : ! 'constant', 'Jin2006'
653 :
654 : logical (kind=log_kind), intent(in), optional :: &
655 : z_tracers_in, & ! if .true., bgc or aerosol tracers are vertically resolved ! LCOV_EXCL_LINE
656 : scale_bgc_in, & ! if .true., initialize bgc tracers proportionally with salinity ! LCOV_EXCL_LINE
657 : solve_zbgc_in, & ! if .true., solve vertical biochemistry portion of code ! LCOV_EXCL_LINE
658 : dEdd_algae_in, & ! if .true., algal absorptionof Shortwave is computed in the ! LCOV_EXCL_LINE
659 : modal_aero_in, & ! if .true., use modal aerosol formulation in shortwave ! LCOV_EXCL_LINE
660 : conserv_check_in ! if .true., run conservation checks and abort if checks fail
661 :
662 : logical (kind=log_kind), intent(in), optional :: &
663 : skl_bgc_in, & ! if true, solve skeletal biochemistry ! LCOV_EXCL_LINE
664 : solve_zsal_in ! if true, update salinity profile from solve_S_dt
665 :
666 : real (kind=dbl_kind), intent(in), optional :: &
667 : grid_o_in , & ! for bottom flux ! LCOV_EXCL_LINE
668 : l_sk_in , & ! characteristic diffusive scale (zsalinity) (m) ! LCOV_EXCL_LINE
669 : initbio_frac_in, & ! fraction of ocean tracer concentration used to initialize tracer ! LCOV_EXCL_LINE
670 : phi_snow_in ! snow porosity at the ice/snow interface
671 :
672 : real (kind=dbl_kind), intent(in), optional :: &
673 : grid_oS_in , & ! for bottom flux (zsalinity) ! LCOV_EXCL_LINE
674 : l_skS_in ! 0.02 characteristic skeletal layer thickness (m) (zsalinity)
675 : real (kind=dbl_kind), intent(in), optional :: &
676 : fr_resp_in , & ! fraction of algal growth lost due to respiration ! LCOV_EXCL_LINE
677 : algal_vel_in , & ! 0.5 cm/d(m/s) Lavoie 2005 1.5 cm/day ! LCOV_EXCL_LINE
678 : R_dFe2dust_in , & ! g/g (3.5% content) Tagliabue 2009 ! LCOV_EXCL_LINE
679 : dustFe_sol_in , & ! solubility fraction ! LCOV_EXCL_LINE
680 : T_max_in , & ! maximum temperature (C) ! LCOV_EXCL_LINE
681 : fsal_in , & ! Salinity limitation (ppt) ! LCOV_EXCL_LINE
682 : op_dep_min_in , & ! Light attenuates for optical depths exceeding min ! LCOV_EXCL_LINE
683 : fr_graze_s_in , & ! fraction of grazing spilled or slopped ! LCOV_EXCL_LINE
684 : fr_graze_e_in , & ! fraction of assimilation excreted ! LCOV_EXCL_LINE
685 : fr_mort2min_in , & ! fractionation of mortality to Am ! LCOV_EXCL_LINE
686 : fr_dFe_in , & ! fraction of remineralized nitrogen ! LCOV_EXCL_LINE
687 : ! (in units of algal iron)
688 : k_nitrif_in , & ! nitrification rate (1/day)
689 : t_iron_conv_in , & ! desorption loss pFe to dFe (day) ! LCOV_EXCL_LINE
690 : max_loss_in , & ! restrict uptake to % of remaining value ! LCOV_EXCL_LINE
691 : max_dfe_doc1_in , & ! max ratio of dFe to saccharides in the ice ! LCOV_EXCL_LINE
692 : ! (nM Fe/muM C)
693 : fr_resp_s_in , & ! DMSPd fraction of respiration loss as DMSPd
694 : y_sk_DMS_in , & ! fraction conversion given high yield ! LCOV_EXCL_LINE
695 : t_sk_conv_in , & ! Stefels conversion time (d) ! LCOV_EXCL_LINE
696 : t_sk_ox_in , & ! DMS oxidation time (d) ! LCOV_EXCL_LINE
697 : frazil_scav_in ! scavenging fraction or multiple in frazil ice
698 :
699 : real (kind=dbl_kind), intent(in), optional :: &
700 : sk_l_in, & ! skeletal layer thickness (m) ! LCOV_EXCL_LINE
701 : min_bgc_in ! fraction of ocean bgc concentration in surface melt
702 :
703 : !-----------------------------------------------------------------------
704 : ! Parameters for melt ponds
705 : !-----------------------------------------------------------------------
706 :
707 : real (kind=dbl_kind), intent(in), optional :: &
708 : hs0_in ! snow depth for transition to bare sea ice (m)
709 :
710 : ! level-ice ponds
711 : character (len=char_len), intent(in), optional :: &
712 : frzpnd_in ! pond refreezing parameterization
713 :
714 : real (kind=dbl_kind), intent(in), optional :: &
715 : dpscale_in, & ! alter e-folding time scale for flushing ! LCOV_EXCL_LINE
716 : rfracmin_in, & ! minimum retained fraction of meltwater ! LCOV_EXCL_LINE
717 : rfracmax_in, & ! maximum retained fraction of meltwater ! LCOV_EXCL_LINE
718 : pndaspect_in, & ! ratio of pond depth to pond fraction ! LCOV_EXCL_LINE
719 : hs1_in ! tapering parameter for snow on pond ice
720 :
721 : ! topo ponds
722 : real (kind=dbl_kind), intent(in), optional :: &
723 : hp1_in ! critical parameter for pond ice thickness
724 :
725 : !autodocument_end
726 :
727 : character(len=*),parameter :: subname='(icepack_init_parameters)'
728 :
729 17276 : if (present(rhos_in) ) rhos = rhos_in
730 17276 : if (present(rhoi_in) ) rhoi = rhoi_in
731 17276 : if (present(rhow_in) ) rhow = rhow_in
732 17276 : if (present(cp_air_in) ) cp_air = cp_air_in
733 17276 : if (present(emissivity_in) ) emissivity = emissivity_in
734 17276 : if (present(floediam_in) ) floediam = floediam_in
735 17276 : if (present(hfrazilmin_in) ) hfrazilmin = hfrazilmin_in
736 17276 : if (present(cp_ice_in) ) cp_ice = cp_ice_in
737 17276 : if (present(cp_ocn_in) ) cp_ocn = cp_ocn_in
738 17276 : if (present(depressT_in) ) depressT = depressT_in
739 17276 : if (present(dragio_in) ) dragio = dragio_in
740 17276 : if (present(iceruf_ocn_in) ) iceruf_ocn = iceruf_ocn_in
741 17276 : if (present(thickness_ocn_layer1_in) ) thickness_ocn_layer1 = thickness_ocn_layer1_in
742 17276 : if (present(calc_dragio_in) ) calc_dragio = calc_dragio_in
743 17276 : if (present(albocn_in) ) albocn = albocn_in
744 17276 : if (present(gravit_in) ) gravit = gravit_in
745 17276 : if (present(viscosity_dyn_in) ) viscosity_dyn = viscosity_dyn_in
746 17276 : if (present(Tocnfrz_in) ) Tocnfrz = Tocnfrz_in
747 17276 : if (present(rhofresh_in) ) rhofresh = rhofresh_in
748 17276 : if (present(zvir_in) ) zvir = zvir_in
749 17276 : if (present(vonkar_in) ) vonkar = vonkar_in
750 17276 : if (present(cp_wv_in) ) cp_wv = cp_wv_in
751 17276 : if (present(stefan_boltzmann_in) ) stefan_boltzmann = stefan_boltzmann_in
752 17276 : if (present(Tffresh_in) ) Tffresh = Tffresh_in
753 17276 : if (present(Lsub_in) ) Lsub = Lsub_in
754 17276 : if (present(Lvap_in) ) Lvap = Lvap_in
755 17276 : if (present(Timelt_in) ) Timelt = Timelt_in
756 17276 : if (present(Tsmelt_in) ) Tsmelt = Tsmelt_in
757 17276 : if (present(ice_ref_salinity_in) ) ice_ref_salinity = ice_ref_salinity_in
758 17276 : if (present(iceruf_in) ) iceruf = iceruf_in
759 17276 : if (present(Cf_in) ) Cf = Cf_in
760 17276 : if (present(Pstar_in) ) Pstar = Pstar_in
761 17276 : if (present(Cstar_in) ) Cstar = Cstar_in
762 17276 : if (present(kappav_in) ) kappav = kappav_in
763 17276 : if (present(kice_in) ) kice = kice_in
764 17276 : if (present(kseaice_in) ) kseaice = kseaice_in
765 17276 : if (present(ksno_in) ) ksno = ksno_in
766 17276 : if (present(zref_in) ) zref = zref_in
767 17276 : if (present(hs_min_in) ) hs_min = hs_min_in
768 17276 : if (present(snowpatch_in) ) snowpatch = snowpatch_in
769 17276 : if (present(rhosi_in) ) rhosi = rhosi_in
770 17276 : if (present(sk_l_in) ) sk_l = sk_l_in
771 17276 : if (present(saltmax_in) ) saltmax = saltmax_in
772 17276 : if (present(phi_init_in) ) phi_init = phi_init_in
773 17276 : if (present(min_salin_in) ) min_salin = min_salin_in
774 17276 : if (present(salt_loss_in) ) salt_loss = salt_loss_in
775 17276 : if (present(min_bgc_in) ) min_bgc = min_bgc_in
776 17276 : if (present(dSin0_frazil_in) ) dSin0_frazil = dSin0_frazil_in
777 17276 : if (present(hi_ssl_in) ) hi_ssl = hi_ssl_in
778 17276 : if (present(hs_ssl_in) ) hs_ssl = hs_ssl_in
779 17276 : if (present(awtvdr_in) ) awtvdr = awtvdr_in
780 17276 : if (present(awtidr_in) ) awtidr = awtidr_in
781 17276 : if (present(awtvdf_in) ) awtvdf = awtvdf_in
782 17276 : if (present(awtidf_in) ) awtidf = awtidf_in
783 17276 : if (present(qqqice_in) ) qqqice = qqqice_in
784 17276 : if (present(TTTice_in) ) TTTice = TTTice_in
785 17276 : if (present(qqqocn_in) ) qqqocn = qqqocn_in
786 17276 : if (present(TTTocn_in) ) TTTocn = TTTocn_in
787 17276 : if (present(puny_in) ) puny = puny_in
788 17276 : if (present(bignum_in) ) bignum = bignum_in
789 17276 : if (present(pi_in) ) pi = pi_in
790 17276 : if (present(secday_in) ) secday = secday_in
791 17276 : if (present(ktherm_in) ) ktherm = ktherm_in
792 17276 : if (present(conduct_in) ) conduct = conduct_in
793 17276 : if (present(fbot_xfer_type_in) ) fbot_xfer_type = fbot_xfer_type_in
794 17276 : if (present(heat_capacity_in) ) heat_capacity = heat_capacity_in
795 17276 : if (present(calc_Tsfc_in) ) calc_Tsfc = calc_Tsfc_in
796 17276 : if (present(update_ocn_f_in) ) update_ocn_f = update_ocn_f_in
797 17276 : if (present(dts_b_in) ) dts_b = dts_b_in
798 17276 : if (present(ustar_min_in) ) ustar_min = ustar_min_in
799 17276 : if (present(a_rapid_mode_in) ) a_rapid_mode = a_rapid_mode_in
800 17276 : if (present(Rac_rapid_mode_in) ) Rac_rapid_mode = Rac_rapid_mode_in
801 17276 : if (present(aspect_rapid_mode_in) ) aspect_rapid_mode= aspect_rapid_mode_in
802 17276 : if (present(dSdt_slow_mode_in) ) dSdt_slow_mode = dSdt_slow_mode_in
803 17276 : if (present(phi_c_slow_mode_in) ) phi_c_slow_mode = phi_c_slow_mode_in
804 17276 : if (present(phi_i_mushy_in) ) phi_i_mushy = phi_i_mushy_in
805 17276 : if (present(shortwave_in) ) shortwave = shortwave_in
806 17276 : if (present(albedo_type_in) ) albedo_type = albedo_type_in
807 17276 : if (present(albicev_in) ) albicev = albicev_in
808 17276 : if (present(albicei_in) ) albicei = albicei_in
809 17276 : if (present(albsnowv_in) ) albsnowv = albsnowv_in
810 17276 : if (present(albsnowi_in) ) albsnowi = albsnowi_in
811 17276 : if (present(ahmax_in) ) ahmax = ahmax_in
812 17276 : if (present(R_ice_in) ) R_ice = R_ice_in
813 17276 : if (present(R_pnd_in) ) R_pnd = R_pnd_in
814 17276 : if (present(R_snw_in) ) R_snw = R_snw_in
815 17276 : if (present(dT_mlt_in) ) dT_mlt = dT_mlt_in
816 17276 : if (present(rsnw_mlt_in) ) rsnw_mlt = rsnw_mlt_in
817 17276 : if (present(kalg_in) ) kalg = kalg_in
818 17276 : if (present(kstrength_in) ) kstrength = kstrength_in
819 17276 : if (present(krdg_partic_in) ) krdg_partic = krdg_partic_in
820 17276 : if (present(krdg_redist_in) ) krdg_redist = krdg_redist_in
821 17276 : if (present(mu_rdg_in) ) mu_rdg = mu_rdg_in
822 17276 : if (present(atmbndy_in) ) atmbndy = atmbndy_in
823 17276 : if (present(calc_strair_in) ) calc_strair = calc_strair_in
824 17276 : if (present(formdrag_in) ) formdrag = formdrag_in
825 17276 : if (present(highfreq_in) ) highfreq = highfreq_in
826 17276 : if (present(natmiter_in) ) natmiter = natmiter_in
827 17276 : if (present(atmiter_conv_in) ) atmiter_conv = atmiter_conv_in
828 17276 : if (present(tfrz_option_in) ) tfrz_option = tfrz_option_in
829 17276 : if (present(kitd_in) ) kitd = kitd_in
830 17276 : if (present(kcatbound_in) ) kcatbound = kcatbound_in
831 17276 : if (present(floeshape_in) ) floeshape = floeshape_in
832 17276 : if (present(wave_spec_in) ) wave_spec = wave_spec_in
833 17276 : if (present(wave_spec_type_in) ) wave_spec_type = wave_spec_type_in
834 17276 : if (present(nfreq_in) ) nfreq = nfreq_in
835 17276 : if (present(hs0_in) ) hs0 = hs0_in
836 17276 : if (present(frzpnd_in) ) frzpnd = frzpnd_in
837 17276 : if (present(dpscale_in) ) dpscale = dpscale_in
838 17276 : if (present(rfracmin_in) ) rfracmin = rfracmin_in
839 17276 : if (present(rfracmax_in) ) rfracmax = rfracmax_in
840 17276 : if (present(pndaspect_in) ) pndaspect = pndaspect_in
841 17276 : if (present(hs1_in) ) hs1 = hs1_in
842 17276 : if (present(hp1_in) ) hp1 = hp1_in
843 17276 : if (present(bgc_flux_type_in) ) bgc_flux_type = bgc_flux_type_in
844 17276 : if (present(z_tracers_in) ) z_tracers = z_tracers_in
845 17276 : if (present(scale_bgc_in) ) scale_bgc = scale_bgc_in
846 17276 : if (present(solve_zbgc_in) ) solve_zbgc = solve_zbgc_in
847 17276 : if (present(dEdd_algae_in) ) dEdd_algae = dEdd_algae_in
848 17276 : if (present(modal_aero_in) ) modal_aero = modal_aero_in
849 17276 : if (present(conserv_check_in) ) conserv_check = conserv_check_in
850 17276 : if (present(skl_bgc_in) ) skl_bgc = skl_bgc_in
851 17276 : if (present(solve_zsal_in) ) solve_zsal = solve_zsal_in
852 17276 : if (present(grid_o_in) ) grid_o = grid_o_in
853 17276 : if (present(l_sk_in) ) l_sk = l_sk_in
854 17276 : if (present(initbio_frac_in) ) initbio_frac = initbio_frac_in
855 17276 : if (present(grid_oS_in) ) grid_oS = grid_oS_in
856 17276 : if (present(l_skS_in) ) l_skS = l_skS_in
857 17276 : if (present(phi_snow_in) ) phi_snow = phi_snow_in
858 17276 : if (present(fr_resp_in) ) fr_resp = fr_resp_in
859 17276 : if (present(algal_vel_in) ) algal_vel = algal_vel_in
860 17276 : if (present(R_dFe2dust_in) ) R_dFe2dust = R_dFe2dust_in
861 17276 : if (present(dustFe_sol_in) ) dustFe_sol = dustFe_sol_in
862 17276 : if (present(T_max_in) ) T_max = T_max_in
863 17276 : if (present(fsal_in) ) fsal = fsal_in
864 17276 : if (present(op_dep_min_in) ) op_dep_min = op_dep_min_in
865 17276 : if (present(fr_graze_s_in) ) fr_graze_s = fr_graze_s_in
866 17276 : if (present(fr_graze_e_in) ) fr_graze_e = fr_graze_e_in
867 17276 : if (present(fr_mort2min_in) ) fr_mort2min = fr_mort2min_in
868 17276 : if (present(fr_dFe_in) ) fr_dFe = fr_dFe_in
869 17276 : if (present(k_nitrif_in) ) k_nitrif = k_nitrif_in
870 17276 : if (present(t_iron_conv_in) ) t_iron_conv = t_iron_conv_in
871 17276 : if (present(max_loss_in) ) max_loss = max_loss_in
872 17276 : if (present(max_dfe_doc1_in) ) max_dfe_doc1 = max_dfe_doc1_in
873 17276 : if (present(fr_resp_s_in) ) fr_resp_s = fr_resp_s_in
874 17276 : if (present(y_sk_DMS_in) ) y_sk_DMS = y_sk_DMS_in
875 17276 : if (present(t_sk_conv_in) ) t_sk_conv = t_sk_conv_in
876 17276 : if (present(t_sk_ox_in) ) t_sk_ox = t_sk_ox_in
877 17276 : if (present(frazil_scav_in) ) frazil_scav = frazil_scav_in
878 17276 : if (present(sw_redist_in) ) sw_redist = sw_redist_in
879 17276 : if (present(sw_frac_in) ) sw_frac = sw_frac_in
880 17276 : if (present(sw_dtemp_in) ) sw_dtemp = sw_dtemp_in
881 :
882 17276 : call icepack_recompute_constants()
883 17276 : if (icepack_warnings_aborted(subname)) return
884 :
885 : end subroutine icepack_init_parameters
886 :
887 : !=======================================================================
888 :
889 : !autodocument_start icepack_query_parameters
890 : ! subroutine to query the column package internal parameters
891 :
892 26278904993 : subroutine icepack_query_parameters( &
893 : puny_out, bignum_out, pi_out, rad_to_deg_out,& ! LCOV_EXCL_LINE
894 : secday_out, c0_out, c1_out, c1p5_out, c2_out, c3_out, c4_out, & ! LCOV_EXCL_LINE
895 : c5_out, c6_out, c8_out, c10_out, c15_out, c16_out, c20_out, & ! LCOV_EXCL_LINE
896 : c25_out, c100_out, c180_out, c1000_out, p001_out, p01_out, p1_out, & ! LCOV_EXCL_LINE
897 : p2_out, p4_out, p5_out, p6_out, p05_out, p15_out, p25_out, p75_out, & ! LCOV_EXCL_LINE
898 : p333_out, p666_out, spval_const_out, pih_out, piq_out, pi2_out, & ! LCOV_EXCL_LINE
899 : rhos_out, rhoi_out, rhow_out, cp_air_out, emissivity_out, & ! LCOV_EXCL_LINE
900 : cp_ice_out, cp_ocn_out, hfrazilmin_out, floediam_out, & ! LCOV_EXCL_LINE
901 : depressT_out, dragio_out, thickness_ocn_layer1_out, iceruf_ocn_out, albocn_out, gravit_out, viscosity_dyn_out, & ! LCOV_EXCL_LINE
902 : Tocnfrz_out, rhofresh_out, zvir_out, vonkar_out, cp_wv_out, & ! LCOV_EXCL_LINE
903 : stefan_boltzmann_out, ice_ref_salinity_out, & ! LCOV_EXCL_LINE
904 : Tffresh_out, Lsub_out, Lvap_out, Timelt_out, Tsmelt_out, & ! LCOV_EXCL_LINE
905 : iceruf_out, Cf_out, Pstar_out, Cstar_out, kappav_out, & ! LCOV_EXCL_LINE
906 : kice_out, kseaice_out, ksno_out, & ! LCOV_EXCL_LINE
907 : zref_out, hs_min_out, snowpatch_out, rhosi_out, sk_l_out, & ! LCOV_EXCL_LINE
908 : saltmax_out, phi_init_out, min_salin_out, salt_loss_out, & ! LCOV_EXCL_LINE
909 : min_bgc_out, dSin0_frazil_out, hi_ssl_out, hs_ssl_out, & ! LCOV_EXCL_LINE
910 : awtvdr_out, awtidr_out, awtvdf_out, awtidf_out, & ! LCOV_EXCL_LINE
911 : qqqice_out, TTTice_out, qqqocn_out, TTTocn_out, update_ocn_f_out, & ! LCOV_EXCL_LINE
912 : Lfresh_out, cprho_out, Cp_out, ustar_min_out, a_rapid_mode_out, & ! LCOV_EXCL_LINE
913 : ktherm_out, conduct_out, fbot_xfer_type_out, calc_Tsfc_out, dts_b_out, & ! LCOV_EXCL_LINE
914 : Rac_rapid_mode_out, aspect_rapid_mode_out, dSdt_slow_mode_out, & ! LCOV_EXCL_LINE
915 : phi_c_slow_mode_out, phi_i_mushy_out, shortwave_out, & ! LCOV_EXCL_LINE
916 : albedo_type_out, albicev_out, albicei_out, albsnowv_out, & ! LCOV_EXCL_LINE
917 : albsnowi_out, ahmax_out, R_ice_out, R_pnd_out, R_snw_out, dT_mlt_out, & ! LCOV_EXCL_LINE
918 : rsnw_mlt_out, dEdd_algae_out, & ! LCOV_EXCL_LINE
919 : kalg_out, kstrength_out, krdg_partic_out, krdg_redist_out, mu_rdg_out, & ! LCOV_EXCL_LINE
920 : atmbndy_out, calc_strair_out, formdrag_out, highfreq_out, natmiter_out, & ! LCOV_EXCL_LINE
921 : atmiter_conv_out, calc_dragio_out, & ! LCOV_EXCL_LINE
922 : tfrz_option_out, kitd_out, kcatbound_out, hs0_out, frzpnd_out, & ! LCOV_EXCL_LINE
923 : floeshape_out, wave_spec_out, wave_spec_type_out, nfreq_out, & ! LCOV_EXCL_LINE
924 : dpscale_out, rfracmin_out, rfracmax_out, pndaspect_out, hs1_out, hp1_out, & ! LCOV_EXCL_LINE
925 : bgc_flux_type_out, z_tracers_out, scale_bgc_out, solve_zbgc_out, & ! LCOV_EXCL_LINE
926 : modal_aero_out, skl_bgc_out, solve_zsal_out, grid_o_out, l_sk_out, & ! LCOV_EXCL_LINE
927 : initbio_frac_out, grid_oS_out, l_skS_out, & ! LCOV_EXCL_LINE
928 : phi_snow_out, heat_capacity_out, conserv_check_out, & ! LCOV_EXCL_LINE
929 : fr_resp_out, algal_vel_out, R_dFe2dust_out, dustFe_sol_out, & ! LCOV_EXCL_LINE
930 : T_max_out, fsal_out, op_dep_min_out, fr_graze_s_out, fr_graze_e_out, & ! LCOV_EXCL_LINE
931 : fr_mort2min_out, fr_resp_s_out, fr_dFe_out, & ! LCOV_EXCL_LINE
932 : k_nitrif_out, t_iron_conv_out, max_loss_out, max_dfe_doc1_out, & ! LCOV_EXCL_LINE
933 : y_sk_DMS_out, t_sk_conv_out, t_sk_ox_out, frazil_scav_out, & ! LCOV_EXCL_LINE
934 : sw_redist_out, sw_frac_out, sw_dtemp_out)
935 :
936 : !-----------------------------------------------------------------
937 : ! parameter constants
938 : !-----------------------------------------------------------------
939 :
940 : real (kind=dbl_kind), intent(out), optional :: &
941 : c0_out, c1_out, c1p5_out, c2_out, c3_out, c4_out, & ! LCOV_EXCL_LINE
942 : c5_out, c6_out, c8_out, c10_out, c15_out, c16_out, c20_out, & ! LCOV_EXCL_LINE
943 : c25_out, c180_out, c100_out, c1000_out, p001_out, p01_out, p1_out, & ! LCOV_EXCL_LINE
944 : p2_out, p4_out, p5_out, p6_out, p05_out, p15_out, p25_out, p75_out, & ! LCOV_EXCL_LINE
945 : p333_out, p666_out, spval_const_out, pih_out, piq_out, pi2_out, & ! LCOV_EXCL_LINE
946 : secday_out, & ! number of seconds per day ! LCOV_EXCL_LINE
947 : puny_out, & ! a small number ! LCOV_EXCL_LINE
948 : bignum_out, & ! a big number ! LCOV_EXCL_LINE
949 : pi_out, & ! pi ! LCOV_EXCL_LINE
950 : rad_to_deg_out, & ! conversion factor from radians to degrees ! LCOV_EXCL_LINE
951 : Lfresh_out, & ! latent heat of melting of fresh ice (J/kg) ! LCOV_EXCL_LINE
952 : cprho_out, & ! for ocean mixed layer (J kg / K m^3) ! LCOV_EXCL_LINE
953 : Cp_out ! proport const for PE
954 :
955 : !-----------------------------------------------------------------
956 : ! densities
957 : !-----------------------------------------------------------------
958 :
959 : real (kind=dbl_kind), intent(out), optional :: &
960 : rhos_out, & ! density of snow (kg/m^3) ! LCOV_EXCL_LINE
961 : rhoi_out, & ! density of ice (kg/m^3) ! LCOV_EXCL_LINE
962 : rhosi_out, & ! average sea ice density (kg/m2) ! LCOV_EXCL_LINE
963 : rhow_out, & ! density of seawater (kg/m^3) ! LCOV_EXCL_LINE
964 : rhofresh_out ! density of fresh water (kg/m^3)
965 :
966 : !-----------------------------------------------------------------------
967 : ! Parameters for thermodynamics
968 : !-----------------------------------------------------------------------
969 :
970 : real (kind=dbl_kind), intent(out), optional :: &
971 : floediam_out, & ! effective floe diameter for lateral melt (m) ! LCOV_EXCL_LINE
972 : hfrazilmin_out, & ! min thickness of new frazil ice (m) ! LCOV_EXCL_LINE
973 : cp_ice_out, & ! specific heat of fresh ice (J/kg/K) ! LCOV_EXCL_LINE
974 : cp_ocn_out, & ! specific heat of ocn (J/kg/K) ! LCOV_EXCL_LINE
975 : depressT_out, & ! Tf:brine salinity ratio (C/ppt) ! LCOV_EXCL_LINE
976 : viscosity_dyn_out, & ! dynamic viscosity of brine (kg/m/s) ! LCOV_EXCL_LINE
977 : Tocnfrz_out, & ! freezing temp of seawater (C) ! LCOV_EXCL_LINE
978 : Tffresh_out, & ! freezing temp of fresh ice (K) ! LCOV_EXCL_LINE
979 : Lsub_out, & ! latent heat, sublimation freshwater (J/kg) ! LCOV_EXCL_LINE
980 : Lvap_out, & ! latent heat, vaporization freshwater (J/kg) ! LCOV_EXCL_LINE
981 : Timelt_out, & ! melting temperature, ice top surface (C) ! LCOV_EXCL_LINE
982 : Tsmelt_out, & ! melting temperature, snow top surface (C) ! LCOV_EXCL_LINE
983 : ice_ref_salinity_out, & ! (ppt) ! LCOV_EXCL_LINE
984 : kice_out, & ! thermal conductivity of fresh ice(W/m/deg) ! LCOV_EXCL_LINE
985 : kseaice_out, & ! thermal conductivity of sea ice (W/m/deg) ! LCOV_EXCL_LINE
986 : ksno_out, & ! thermal conductivity of snow (W/m/deg) ! LCOV_EXCL_LINE
987 : hs_min_out, & ! min snow thickness for computing zTsn (m) ! LCOV_EXCL_LINE
988 : snowpatch_out, & ! parameter for fractional snow area (m) ! LCOV_EXCL_LINE
989 : saltmax_out, & ! max salinity at ice base for BL99 (ppt) ! LCOV_EXCL_LINE
990 : phi_init_out, & ! initial liquid fraction of frazil ! LCOV_EXCL_LINE
991 : min_salin_out, & ! threshold for brine pocket treatment ! LCOV_EXCL_LINE
992 : salt_loss_out, & ! fraction of salt retained in zsalinity ! LCOV_EXCL_LINE
993 : dSin0_frazil_out ! bulk salinity reduction of newly formed frazil
994 :
995 : integer (kind=int_kind), intent(out), optional :: &
996 : ktherm_out ! type of thermodynamics
997 : ! 0 = 0-layer approximation
998 : ! 1 = Bitz and Lipscomb 1999
999 : ! 2 = mushy layer theory
1000 :
1001 : character (char_len), intent(out), optional :: &
1002 : conduct_out, & ! 'MU71' or 'bubbly' ! LCOV_EXCL_LINE
1003 : fbot_xfer_type_out ! transfer coefficient type for ice-ocean heat flux
1004 :
1005 : logical (kind=log_kind), intent(out), optional :: &
1006 : heat_capacity_out,&! if true, ice has nonzero heat capacity ! LCOV_EXCL_LINE
1007 : ! if false, use zero-layer thermodynamics
1008 : calc_Tsfc_out ,&! if true, calculate surface temperature
1009 : ! if false, Tsfc is computed elsewhere and
1010 : ! atmos-ice fluxes are provided to CICE
1011 : update_ocn_f_out ! include fresh water and salt fluxes for frazil
1012 :
1013 : real (kind=dbl_kind), intent(out), optional :: &
1014 : dts_b_out, & ! zsalinity timestep ! LCOV_EXCL_LINE
1015 : ustar_min_out ! minimum friction velocity for ice-ocean heat flux
1016 :
1017 : ! mushy thermo
1018 : real(kind=dbl_kind), intent(out), optional :: &
1019 : a_rapid_mode_out , & ! channel radius for rapid drainage mode (m) ! LCOV_EXCL_LINE
1020 : Rac_rapid_mode_out , & ! critical Rayleigh number for rapid drainage mode ! LCOV_EXCL_LINE
1021 : aspect_rapid_mode_out , & ! aspect ratio for rapid drainage mode (larger=wider) ! LCOV_EXCL_LINE
1022 : dSdt_slow_mode_out , & ! slow mode drainage strength (m s-1 K-1) ! LCOV_EXCL_LINE
1023 : phi_c_slow_mode_out , & ! liquid fraction porosity cutoff for slow mode ! LCOV_EXCL_LINE
1024 : phi_i_mushy_out ! liquid fraction of congelation ice
1025 :
1026 : character(len=char_len), intent(out), optional :: &
1027 : tfrz_option_out ! form of ocean freezing temperature
1028 : ! 'minus1p8' = -1.8 C
1029 : ! 'linear_salt' = -depressT * sss
1030 : ! 'mushy' conforms with ktherm=2
1031 :
1032 : !-----------------------------------------------------------------------
1033 : ! Parameters for radiation
1034 : !-----------------------------------------------------------------------
1035 :
1036 : real(kind=dbl_kind), intent(out), optional :: &
1037 : emissivity_out, & ! emissivity of snow and ice ! LCOV_EXCL_LINE
1038 : albocn_out, & ! ocean albedo ! LCOV_EXCL_LINE
1039 : vonkar_out, & ! von Karman constant ! LCOV_EXCL_LINE
1040 : stefan_boltzmann_out, & ! W/m^2/K^4 ! LCOV_EXCL_LINE
1041 : kappav_out, & ! vis extnctn coef in ice, wvlngth<700nm (1/m) ! LCOV_EXCL_LINE
1042 : hi_ssl_out, & ! ice surface scattering layer thickness (m) ! LCOV_EXCL_LINE
1043 : hs_ssl_out, & ! visible, direct ! LCOV_EXCL_LINE
1044 : awtvdr_out, & ! visible, direct ! for history and ! LCOV_EXCL_LINE
1045 : awtidr_out, & ! near IR, direct ! diagnostics ! LCOV_EXCL_LINE
1046 : awtvdf_out, & ! visible, diffuse ! LCOV_EXCL_LINE
1047 : awtidf_out ! near IR, diffuse
1048 :
1049 : character (len=char_len), intent(out), optional :: &
1050 : shortwave_out, & ! shortwave method, 'ccsm3' or 'dEdd' ! LCOV_EXCL_LINE
1051 : albedo_type_out ! albedo parameterization, 'ccsm3' or 'constant'
1052 : ! shortwave='dEdd' overrides this parameter
1053 :
1054 : ! baseline albedos for ccsm3 shortwave, set in namelist
1055 : real (kind=dbl_kind), intent(out), optional :: &
1056 : albicev_out , & ! visible ice albedo for h > ahmax ! LCOV_EXCL_LINE
1057 : albicei_out , & ! near-ir ice albedo for h > ahmax ! LCOV_EXCL_LINE
1058 : albsnowv_out , & ! cold snow albedo, visible ! LCOV_EXCL_LINE
1059 : albsnowi_out , & ! cold snow albedo, near IR ! LCOV_EXCL_LINE
1060 : ahmax_out ! thickness above which ice albedo is constant (m)
1061 :
1062 : ! dEdd tuning parameters, set in namelist
1063 : real (kind=dbl_kind), intent(out), optional :: &
1064 : R_ice_out , & ! sea ice tuning parameter; +1 > 1sig increase in albedo ! LCOV_EXCL_LINE
1065 : R_pnd_out , & ! ponded ice tuning parameter; +1 > 1sig increase in albedo ! LCOV_EXCL_LINE
1066 : R_snw_out , & ! snow tuning parameter; +1 > ~.01 change in broadband albedo ! LCOV_EXCL_LINE
1067 : dT_mlt_out , & ! change in temp for non-melt to melt snow grain ! LCOV_EXCL_LINE
1068 : ! radius change (C)
1069 : rsnw_mlt_out , & ! maximum melting snow grain radius (10^-6 m)
1070 : kalg_out ! algae absorption coefficient for 0.5 m thick layer
1071 :
1072 : logical (kind=log_kind), intent(out), optional :: &
1073 : sw_redist_out ! redistribute shortwave
1074 :
1075 : real (kind=dbl_kind), intent(out), optional :: &
1076 : sw_frac_out , & ! Fraction of internal shortwave moved to surface ! LCOV_EXCL_LINE
1077 : sw_dtemp_out ! temperature difference from melting
1078 :
1079 : !-----------------------------------------------------------------------
1080 : ! Parameters for dynamics
1081 : !-----------------------------------------------------------------------
1082 :
1083 : real(kind=dbl_kind), intent(out), optional :: &
1084 : Cf_out, & ! ratio of ridging work to PE change in ridging ! LCOV_EXCL_LINE
1085 : Pstar_out, & ! constant in Hibler strength formula ! LCOV_EXCL_LINE
1086 : Cstar_out, & ! constant in Hibler strength formula ! LCOV_EXCL_LINE
1087 : dragio_out, & ! ice-ocn drag coefficient ! LCOV_EXCL_LINE
1088 : thickness_ocn_layer1_out, & ! thickness of first ocean level (m) ! LCOV_EXCL_LINE
1089 : iceruf_ocn_out, & ! under-ice roughness (m) ! LCOV_EXCL_LINE
1090 : gravit_out, & ! gravitational acceleration (m/s^2) ! LCOV_EXCL_LINE
1091 : iceruf_out ! ice surface roughness (m)
1092 :
1093 : integer (kind=int_kind), intent(out), optional :: & ! defined in namelist
1094 : kstrength_out , & ! 0 for simple Hibler (1979) formulation ! LCOV_EXCL_LINE
1095 : ! 1 for Rothrock (1975) pressure formulation
1096 : krdg_partic_out, & ! 0 for Thorndike et al. (1975) formulation
1097 : ! 1 for exponential participation function
1098 : krdg_redist_out ! 0 for Hibler (1980) formulation
1099 : ! 1 for exponential redistribution function
1100 :
1101 : real (kind=dbl_kind), intent(out), optional :: &
1102 : mu_rdg_out ! gives e-folding scale of ridged ice (m^.5)
1103 : ! (krdg_redist = 1)
1104 :
1105 : logical (kind=log_kind), intent(out), optional :: &
1106 : calc_dragio_out ! if true, compute dragio from iceruf_ocn and thickness_ocn_layer1
1107 :
1108 : !-----------------------------------------------------------------------
1109 : ! Parameters for atmosphere
1110 : !-----------------------------------------------------------------------
1111 :
1112 : real (kind=dbl_kind), intent(out), optional :: &
1113 : cp_air_out, & ! specific heat of air (J/kg/K) ! LCOV_EXCL_LINE
1114 : cp_wv_out, & ! specific heat of water vapor (J/kg/K) ! LCOV_EXCL_LINE
1115 : zvir_out, & ! rh2o/rair - 1.0 ! LCOV_EXCL_LINE
1116 : zref_out, & ! reference height for stability (m) ! LCOV_EXCL_LINE
1117 : qqqice_out, & ! for qsat over ice ! LCOV_EXCL_LINE
1118 : TTTice_out, & ! for qsat over ice ! LCOV_EXCL_LINE
1119 : qqqocn_out, & ! for qsat over ocn ! LCOV_EXCL_LINE
1120 : TTTocn_out ! for qsat over ocn
1121 :
1122 : character (len=char_len), intent(out), optional :: &
1123 : atmbndy_out ! atmo boundary method, 'default' ('ccsm3') or 'constant'
1124 :
1125 : logical (kind=log_kind), intent(out), optional :: &
1126 : calc_strair_out, & ! if true, calculate wind stress components ! LCOV_EXCL_LINE
1127 : formdrag_out, & ! if true, calculate form drag ! LCOV_EXCL_LINE
1128 : highfreq_out ! if true, use high frequency coupling
1129 :
1130 : integer (kind=int_kind), intent(out), optional :: &
1131 : natmiter_out ! number of iterations for boundary layer calculations
1132 :
1133 : ! Flux convergence tolerance
1134 : real (kind=dbl_kind), intent(out), optional :: atmiter_conv_out
1135 :
1136 : !-----------------------------------------------------------------------
1137 : ! Parameters for the ice thickness distribution
1138 : !-----------------------------------------------------------------------
1139 :
1140 : integer (kind=int_kind), intent(out), optional :: &
1141 : kitd_out , & ! type of itd conversions ! LCOV_EXCL_LINE
1142 : ! 0 = delta function
1143 : ! 1 = linear remap
1144 : kcatbound_out ! 0 = old category boundary formula
1145 : ! 1 = new formula giving round numbers
1146 : ! 2 = WMO standard
1147 : ! 3 = asymptotic formula
1148 :
1149 : !-----------------------------------------------------------------------
1150 : ! Parameters for the floe size distribution
1151 : !-----------------------------------------------------------------------
1152 :
1153 : integer (kind=int_kind), intent(out), optional :: &
1154 : nfreq_out ! number of frequencies
1155 :
1156 : real (kind=dbl_kind), intent(out), optional :: &
1157 : floeshape_out ! constant from Steele (unitless)
1158 :
1159 : logical (kind=log_kind), intent(out), optional :: &
1160 : wave_spec_out ! if true, use wave forcing
1161 :
1162 : character (len=char_len), intent(out), optional :: &
1163 : wave_spec_type_out ! type of wave spectrum forcing
1164 :
1165 : !-----------------------------------------------------------------------
1166 : ! Parameters for biogeochemistry
1167 : !-----------------------------------------------------------------------
1168 :
1169 : character(char_len), intent(out), optional :: &
1170 : bgc_flux_type_out ! type of ocean-ice piston velocity
1171 : ! 'constant', 'Jin2006'
1172 :
1173 : logical (kind=log_kind), intent(out), optional :: &
1174 : z_tracers_out, & ! if .true., bgc or aerosol tracers are vertically resolved ! LCOV_EXCL_LINE
1175 : scale_bgc_out, & ! if .true., initialize bgc tracers proportionally with salinity ! LCOV_EXCL_LINE
1176 : solve_zbgc_out, & ! if .true., solve vertical biochemistry portion of code ! LCOV_EXCL_LINE
1177 : dEdd_algae_out, & ! if .true., algal absorptionof Shortwave is computed in the ! LCOV_EXCL_LINE
1178 : modal_aero_out, & ! if .true., use modal aerosol formulation in shortwave ! LCOV_EXCL_LINE
1179 : conserv_check_out ! if .true., run conservation checks and abort if checks fail
1180 :
1181 : logical (kind=log_kind), intent(out), optional :: &
1182 : skl_bgc_out, & ! if true, solve skeletal biochemistry ! LCOV_EXCL_LINE
1183 : solve_zsal_out ! if true, update salinity profile from solve_S_dt
1184 :
1185 : real (kind=dbl_kind), intent(out), optional :: &
1186 : grid_o_out , & ! for bottom flux ! LCOV_EXCL_LINE
1187 : l_sk_out , & ! characteristic diffusive scale (zsalinity) (m) ! LCOV_EXCL_LINE
1188 : initbio_frac_out, & ! fraction of ocean tracer concentration used to initialize tracer ! LCOV_EXCL_LINE
1189 : phi_snow_out ! snow porosity at the ice/snow interface
1190 :
1191 : real (kind=dbl_kind), intent(out), optional :: &
1192 : grid_oS_out , & ! for bottom flux (zsalinity) ! LCOV_EXCL_LINE
1193 : l_skS_out ! 0.02 characteristic skeletal layer thickness (m) (zsalinity)
1194 : real (kind=dbl_kind), intent(out), optional :: &
1195 : fr_resp_out , & ! fraction of algal growth lost due to respiration ! LCOV_EXCL_LINE
1196 : algal_vel_out , & ! 0.5 cm/d(m/s) Lavoie 2005 1.5 cm/day ! LCOV_EXCL_LINE
1197 : R_dFe2dust_out , & ! g/g (3.5% content) Tagliabue 2009 ! LCOV_EXCL_LINE
1198 : dustFe_sol_out , & ! solubility fraction ! LCOV_EXCL_LINE
1199 : T_max_out , & ! maximum temperature (C) ! LCOV_EXCL_LINE
1200 : fsal_out , & ! Salinity limitation (ppt) ! LCOV_EXCL_LINE
1201 : op_dep_min_out , & ! Light attenuates for optical depths exceeding min ! LCOV_EXCL_LINE
1202 : fr_graze_s_out , & ! fraction of grazing spilled or slopped ! LCOV_EXCL_LINE
1203 : fr_graze_e_out , & ! fraction of assimilation excreted ! LCOV_EXCL_LINE
1204 : fr_mort2min_out , & ! fractionation of mortality to Am ! LCOV_EXCL_LINE
1205 : fr_dFe_out , & ! fraction of remineralized nitrogen ! LCOV_EXCL_LINE
1206 : ! (in units of algal iron)
1207 : k_nitrif_out , & ! nitrification rate (1/day)
1208 : t_iron_conv_out , & ! desorption loss pFe to dFe (day) ! LCOV_EXCL_LINE
1209 : max_loss_out , & ! restrict uptake to % of remaining value ! LCOV_EXCL_LINE
1210 : max_dfe_doc1_out , & ! max ratio of dFe to saccharides in the ice ! LCOV_EXCL_LINE
1211 : ! (nM Fe/muM C)
1212 : fr_resp_s_out , & ! DMSPd fraction of respiration loss as DMSPd
1213 : y_sk_DMS_out , & ! fraction conversion given high yield ! LCOV_EXCL_LINE
1214 : t_sk_conv_out , & ! Stefels conversion time (d) ! LCOV_EXCL_LINE
1215 : t_sk_ox_out , & ! DMS oxidation time (d) ! LCOV_EXCL_LINE
1216 : frazil_scav_out ! scavenging fraction or multiple in frazil ice
1217 :
1218 : real (kind=dbl_kind), intent(out), optional :: &
1219 : sk_l_out, & ! skeletal layer thickness (m) ! LCOV_EXCL_LINE
1220 : min_bgc_out ! fraction of ocean bgc concentration in surface melt
1221 :
1222 : !-----------------------------------------------------------------------
1223 : ! Parameters for melt ponds
1224 : !-----------------------------------------------------------------------
1225 :
1226 : real (kind=dbl_kind), intent(out), optional :: &
1227 : hs0_out ! snow depth for transition to bare sea ice (m)
1228 :
1229 : ! level-ice ponds
1230 : character (len=char_len), intent(out), optional :: &
1231 : frzpnd_out ! pond refreezing parameterization
1232 :
1233 : real (kind=dbl_kind), intent(out), optional :: &
1234 : dpscale_out, & ! alter e-folding time scale for flushing ! LCOV_EXCL_LINE
1235 : rfracmin_out, & ! minimum retained fraction of meltwater ! LCOV_EXCL_LINE
1236 : rfracmax_out, & ! maximum retained fraction of meltwater ! LCOV_EXCL_LINE
1237 : pndaspect_out, & ! ratio of pond depth to pond fraction ! LCOV_EXCL_LINE
1238 : hs1_out ! tapering parameter for snow on pond ice
1239 :
1240 : ! topo ponds
1241 : real (kind=dbl_kind), intent(out), optional :: &
1242 : hp1_out ! critical parameter for pond ice thickness
1243 :
1244 : !autodocument_end
1245 :
1246 : character(len=*),parameter :: subname='(icepack_query_parameters)'
1247 :
1248 26278904993 : if (present(puny_out) ) puny_out = puny
1249 26278904993 : if (present(bignum_out) ) bignum_out = bignum
1250 26278904993 : if (present(pi_out) ) pi_out = pi
1251 :
1252 26278904993 : if (present(c0_out) ) c0_out = c0
1253 26278904993 : if (present(c1_out) ) c1_out = c1
1254 26278904993 : if (present(c1p5_out) ) c1p5_out = c1p5
1255 26278904993 : if (present(c2_out) ) c2_out = c2
1256 26278904993 : if (present(c3_out) ) c3_out = c3
1257 26278904993 : if (present(c4_out) ) c4_out = c4
1258 26278904993 : if (present(c5_out) ) c5_out = c5
1259 26278904993 : if (present(c6_out) ) c6_out = c6
1260 26278904993 : if (present(c8_out) ) c8_out = c8
1261 26278904993 : if (present(c10_out) ) c10_out = c10
1262 26278904993 : if (present(c15_out) ) c15_out = c15
1263 26278904993 : if (present(c16_out) ) c16_out = c16
1264 26278904993 : if (present(c20_out) ) c20_out = c20
1265 26278904993 : if (present(c25_out) ) c25_out = c25
1266 26278904993 : if (present(c100_out) ) c100_out = c100
1267 26278904993 : if (present(c180_out) ) c180_out = c180
1268 26278904993 : if (present(c1000_out) ) c1000_out = c1000
1269 26278904993 : if (present(p001_out) ) p001_out = p001
1270 26278904993 : if (present(p01_out) ) p01_out = p01
1271 26278904993 : if (present(p1_out) ) p1_out = p1
1272 26278904993 : if (present(p2_out) ) p2_out = p2
1273 26278904993 : if (present(p4_out) ) p4_out = p4
1274 26278904993 : if (present(p5_out) ) p5_out = p5
1275 26278904993 : if (present(p6_out) ) p6_out = p6
1276 26278904993 : if (present(p05_out) ) p05_out = p05
1277 26278904993 : if (present(p15_out) ) p15_out = p15
1278 26278904993 : if (present(p25_out) ) p25_out = p25
1279 26278904993 : if (present(p75_out) ) p75_out = p75
1280 26278904993 : if (present(p333_out) ) p333_out = p333
1281 26278904993 : if (present(p666_out) ) p666_out = p666
1282 26278904993 : if (present(spval_const_out) ) spval_const_out = spval_const
1283 26278904993 : if (present(pih_out) ) pih_out = pih
1284 26278904993 : if (present(piq_out) ) piq_out = piq
1285 26278904993 : if (present(pi2_out) ) pi2_out = pi2
1286 26278904993 : if (present(secday_out) ) secday_out = secday
1287 26278904993 : if (present(rad_to_deg_out) ) rad_to_deg_out = rad_to_deg
1288 :
1289 26278904993 : if (present(rhos_out) ) rhos_out = rhos
1290 26278904993 : if (present(rhoi_out) ) rhoi_out = rhoi
1291 26278904993 : if (present(rhow_out) ) rhow_out = rhow
1292 26278904993 : if (present(cp_air_out) ) cp_air_out = cp_air
1293 26278904993 : if (present(emissivity_out) ) emissivity_out = emissivity
1294 26278904993 : if (present(floediam_out) ) floediam_out = floediam
1295 26278904993 : if (present(hfrazilmin_out) ) hfrazilmin_out = hfrazilmin
1296 26278904993 : if (present(cp_ice_out) ) cp_ice_out = cp_ice
1297 26278904993 : if (present(cp_ocn_out) ) cp_ocn_out = cp_ocn
1298 26278904993 : if (present(depressT_out) ) depressT_out = depressT
1299 26278904993 : if (present(dragio_out) ) dragio_out = dragio
1300 26278904993 : if (present(iceruf_ocn_out) ) iceruf_ocn_out = iceruf_ocn
1301 26278904993 : if (present(thickness_ocn_layer1_out) ) thickness_ocn_layer1_out = thickness_ocn_layer1
1302 26278904993 : if (present(calc_dragio_out) ) calc_dragio_out = calc_dragio
1303 26278904993 : if (present(albocn_out) ) albocn_out = albocn
1304 26278904993 : if (present(gravit_out) ) gravit_out = gravit
1305 26278904993 : if (present(viscosity_dyn_out) ) viscosity_dyn_out= viscosity_dyn
1306 26278904993 : if (present(Tocnfrz_out) ) Tocnfrz_out = Tocnfrz
1307 26278904993 : if (present(rhofresh_out) ) rhofresh_out = rhofresh
1308 26278904993 : if (present(zvir_out) ) zvir_out = zvir
1309 26278904993 : if (present(vonkar_out) ) vonkar_out = vonkar
1310 26278904993 : if (present(cp_wv_out) ) cp_wv_out = cp_wv
1311 26278904993 : if (present(stefan_boltzmann_out) ) stefan_boltzmann_out = stefan_boltzmann
1312 26278904993 : if (present(Tffresh_out) ) Tffresh_out = Tffresh
1313 26278904993 : if (present(Lsub_out) ) Lsub_out = Lsub
1314 26278904993 : if (present(Lvap_out) ) Lvap_out = Lvap
1315 26278904993 : if (present(Timelt_out) ) Timelt_out = Timelt
1316 26278904993 : if (present(Tsmelt_out) ) Tsmelt_out = Tsmelt
1317 26278904993 : if (present(ice_ref_salinity_out) ) ice_ref_salinity_out = ice_ref_salinity
1318 26278904993 : if (present(iceruf_out) ) iceruf_out = iceruf
1319 26278904993 : if (present(Cf_out) ) Cf_out = Cf
1320 26278904993 : if (present(Pstar_out) ) Pstar_out = Pstar
1321 26278904993 : if (present(Cstar_out) ) Cstar_out = Cstar
1322 26278904993 : if (present(kappav_out) ) kappav_out = kappav
1323 26278904993 : if (present(kice_out) ) kice_out = kice
1324 26278904993 : if (present(kseaice_out) ) kseaice_out = kseaice
1325 26278904993 : if (present(ksno_out) ) ksno_out = ksno
1326 26278904993 : if (present(zref_out) ) zref_out = zref
1327 26278904993 : if (present(hs_min_out) ) hs_min_out = hs_min
1328 26278904993 : if (present(snowpatch_out) ) snowpatch_out = snowpatch
1329 26278904993 : if (present(rhosi_out) ) rhosi_out = rhosi
1330 26278904993 : if (present(sk_l_out) ) sk_l_out = sk_l
1331 26278904993 : if (present(saltmax_out) ) saltmax_out = saltmax
1332 26278904993 : if (present(phi_init_out) ) phi_init_out = phi_init
1333 26278904993 : if (present(min_salin_out) ) min_salin_out = min_salin
1334 26278904993 : if (present(salt_loss_out) ) salt_loss_out = salt_loss
1335 26278904993 : if (present(min_bgc_out) ) min_bgc_out = min_bgc
1336 26278904993 : if (present(dSin0_frazil_out) ) dSin0_frazil_out = dSin0_frazil
1337 26278904993 : if (present(hi_ssl_out) ) hi_ssl_out = hi_ssl
1338 26278904993 : if (present(hs_ssl_out) ) hs_ssl_out = hs_ssl
1339 26278904993 : if (present(awtvdr_out) ) awtvdr_out = awtvdr
1340 26278904993 : if (present(awtidr_out) ) awtidr_out = awtidr
1341 26278904993 : if (present(awtvdf_out) ) awtvdf_out = awtvdf
1342 26278904993 : if (present(awtidf_out) ) awtidf_out = awtidf
1343 26278904993 : if (present(qqqice_out) ) qqqice_out = qqqice
1344 26278904993 : if (present(TTTice_out) ) TTTice_out = TTTice
1345 26278904993 : if (present(qqqocn_out) ) qqqocn_out = qqqocn
1346 26278904993 : if (present(TTTocn_out) ) TTTocn_out = TTTocn
1347 26278904993 : if (present(puny_out) ) puny_out = puny
1348 26278904993 : if (present(bignum_out) ) bignum_out = bignum
1349 26278904993 : if (present(pi_out) ) pi_out = pi
1350 26278904993 : if (present(secday_out) ) secday_out = secday
1351 26278904993 : if (present(ktherm_out) ) ktherm_out = ktherm
1352 26278904993 : if (present(conduct_out) ) conduct_out = conduct
1353 26278904993 : if (present(fbot_xfer_type_out) ) fbot_xfer_type_out = fbot_xfer_type
1354 26278904993 : if (present(heat_capacity_out) ) heat_capacity_out= heat_capacity
1355 26278904993 : if (present(calc_Tsfc_out) ) calc_Tsfc_out = calc_Tsfc
1356 26278904993 : if (present(update_ocn_f_out) ) update_ocn_f_out = update_ocn_f
1357 26278904993 : if (present(dts_b_out) ) dts_b_out = dts_b
1358 26278904993 : if (present(ustar_min_out) ) ustar_min_out = ustar_min
1359 26278904993 : if (present(a_rapid_mode_out) ) a_rapid_mode_out = a_rapid_mode
1360 26278904993 : if (present(Rac_rapid_mode_out) ) Rac_rapid_mode_out = Rac_rapid_mode
1361 26278904993 : if (present(aspect_rapid_mode_out) ) aspect_rapid_mode_out = aspect_rapid_mode
1362 26278904993 : if (present(dSdt_slow_mode_out) ) dSdt_slow_mode_out = dSdt_slow_mode
1363 26278904993 : if (present(phi_c_slow_mode_out) ) phi_c_slow_mode_out = phi_c_slow_mode
1364 26278904993 : if (present(phi_i_mushy_out) ) phi_i_mushy_out = phi_i_mushy
1365 26278904993 : if (present(shortwave_out) ) shortwave_out = shortwave
1366 26278904993 : if (present(albedo_type_out) ) albedo_type_out = albedo_type
1367 26278904993 : if (present(albicev_out) ) albicev_out = albicev
1368 26278904993 : if (present(albicei_out) ) albicei_out = albicei
1369 26278904993 : if (present(albsnowv_out) ) albsnowv_out = albsnowv
1370 26278904993 : if (present(albsnowi_out) ) albsnowi_out = albsnowi
1371 26278904993 : if (present(ahmax_out) ) ahmax_out = ahmax
1372 26278904993 : if (present(R_ice_out) ) R_ice_out = R_ice
1373 26278904993 : if (present(R_pnd_out) ) R_pnd_out = R_pnd
1374 26278904993 : if (present(R_snw_out) ) R_snw_out = R_snw
1375 26278904993 : if (present(dT_mlt_out) ) dT_mlt_out = dT_mlt
1376 26278904993 : if (present(rsnw_mlt_out) ) rsnw_mlt_out = rsnw_mlt
1377 26278904993 : if (present(kalg_out) ) kalg_out = kalg
1378 26278904993 : if (present(kstrength_out) ) kstrength_out = kstrength
1379 26278904993 : if (present(krdg_partic_out) ) krdg_partic_out = krdg_partic
1380 26278904993 : if (present(krdg_redist_out) ) krdg_redist_out = krdg_redist
1381 26278904993 : if (present(mu_rdg_out) ) mu_rdg_out = mu_rdg
1382 26278904993 : if (present(atmbndy_out) ) atmbndy_out = atmbndy
1383 26278904993 : if (present(calc_strair_out) ) calc_strair_out = calc_strair
1384 26278904993 : if (present(formdrag_out) ) formdrag_out = formdrag
1385 26278904993 : if (present(highfreq_out) ) highfreq_out = highfreq
1386 26278904993 : if (present(natmiter_out) ) natmiter_out = natmiter
1387 26278904993 : if (present(atmiter_conv_out) ) atmiter_conv_out = atmiter_conv
1388 26278904993 : if (present(tfrz_option_out) ) tfrz_option_out = tfrz_option
1389 26278904993 : if (present(kitd_out) ) kitd_out = kitd
1390 26278904993 : if (present(kcatbound_out) ) kcatbound_out = kcatbound
1391 26278904993 : if (present(floeshape_out) ) floeshape_out = floeshape
1392 26278904993 : if (present(wave_spec_out) ) wave_spec_out = wave_spec
1393 26278904993 : if (present(wave_spec_type_out) ) wave_spec_type_out = wave_spec_type
1394 26278904993 : if (present(nfreq_out) ) nfreq_out = nfreq
1395 26278904993 : if (present(hs0_out) ) hs0_out = hs0
1396 26278904993 : if (present(frzpnd_out) ) frzpnd_out = frzpnd
1397 26278904993 : if (present(dpscale_out) ) dpscale_out = dpscale
1398 26278904993 : if (present(rfracmin_out) ) rfracmin_out = rfracmin
1399 26278904993 : if (present(rfracmax_out) ) rfracmax_out = rfracmax
1400 26278904993 : if (present(pndaspect_out) ) pndaspect_out = pndaspect
1401 26278904993 : if (present(hs1_out) ) hs1_out = hs1
1402 26278904993 : if (present(hp1_out) ) hp1_out = hp1
1403 26278904993 : if (present(bgc_flux_type_out) ) bgc_flux_type_out= bgc_flux_type
1404 26278904993 : if (present(z_tracers_out) ) z_tracers_out = z_tracers
1405 26278904993 : if (present(scale_bgc_out) ) scale_bgc_out = scale_bgc
1406 26278904993 : if (present(solve_zbgc_out) ) solve_zbgc_out = solve_zbgc
1407 26278904993 : if (present(dEdd_algae_out) ) dEdd_algae_out = dEdd_algae
1408 26278904993 : if (present(modal_aero_out) ) modal_aero_out = modal_aero
1409 26278904993 : if (present(conserv_check_out) ) conserv_check_out= conserv_check
1410 26278904993 : if (present(skl_bgc_out) ) skl_bgc_out = skl_bgc
1411 26278904993 : if (present(solve_zsal_out) ) solve_zsal_out = solve_zsal
1412 26278904993 : if (present(grid_o_out) ) grid_o_out = grid_o
1413 26278904993 : if (present(l_sk_out) ) l_sk_out = l_sk
1414 26278904993 : if (present(initbio_frac_out) ) initbio_frac_out = initbio_frac
1415 26278904993 : if (present(grid_oS_out) ) grid_oS_out = grid_oS
1416 26278904993 : if (present(l_skS_out) ) l_skS_out = l_skS
1417 26278904993 : if (present(phi_snow_out) ) phi_snow_out = phi_snow
1418 26278904993 : if (present(fr_resp_out) ) fr_resp_out = fr_resp
1419 26278904993 : if (present(algal_vel_out) ) algal_vel_out = algal_vel
1420 26278904993 : if (present(R_dFe2dust_out) ) R_dFe2dust_out = R_dFe2dust
1421 26278904993 : if (present(dustFe_sol_out) ) dustFe_sol_out = dustFe_sol
1422 26278904993 : if (present(T_max_out) ) T_max_out = T_max
1423 26278904993 : if (present(fsal_out) ) fsal_out = fsal
1424 26278904993 : if (present(op_dep_min_out) ) op_dep_min_out = op_dep_min
1425 26278904993 : if (present(fr_graze_s_out) ) fr_graze_s_out = fr_graze_s
1426 26278904993 : if (present(fr_graze_e_out) ) fr_graze_e_out = fr_graze_e
1427 26278904993 : if (present(fr_mort2min_out) ) fr_mort2min_out = fr_mort2min
1428 26278904993 : if (present(fr_dFe_out) ) fr_dFe_out = fr_dFe
1429 26278904993 : if (present(k_nitrif_out) ) k_nitrif_out = k_nitrif
1430 26278904993 : if (present(t_iron_conv_out) ) t_iron_conv_out = t_iron_conv
1431 26278904993 : if (present(max_loss_out) ) max_loss_out = max_loss
1432 26278904993 : if (present(max_dfe_doc1_out) ) max_dfe_doc1_out = max_dfe_doc1
1433 26278904993 : if (present(fr_resp_s_out) ) fr_resp_s_out = fr_resp_s
1434 26278904993 : if (present(y_sk_DMS_out) ) y_sk_DMS_out = y_sk_DMS
1435 26278904993 : if (present(t_sk_conv_out) ) t_sk_conv_out = t_sk_conv
1436 26278904993 : if (present(t_sk_ox_out) ) t_sk_ox_out = t_sk_ox
1437 26278904993 : if (present(frazil_scav_out) ) frazil_scav_out = frazil_scav
1438 26278904993 : if (present(Lfresh_out) ) Lfresh_out = Lfresh
1439 26278904993 : if (present(cprho_out) ) cprho_out = cprho
1440 26278904993 : if (present(Cp_out) ) Cp_out = Cp
1441 26278904993 : if (present(sw_redist_out) ) sw_redist_out = sw_redist
1442 26278904993 : if (present(sw_frac_out) ) sw_frac_out = sw_frac
1443 26278904993 : if (present(sw_dtemp_out) ) sw_dtemp_out = sw_dtemp
1444 :
1445 26278904993 : call icepack_recompute_constants()
1446 26278904993 : if (icepack_warnings_aborted(subname)) return
1447 :
1448 2916 : end subroutine icepack_query_parameters
1449 :
1450 : !=======================================================================
1451 :
1452 : !autodocument_start icepack_write_parameters
1453 : ! subroutine to write the column package internal parameters
1454 :
1455 0 : subroutine icepack_write_parameters(iounit)
1456 :
1457 : integer (kind=int_kind), intent(in) :: &
1458 : iounit ! unit number for output
1459 :
1460 : !autodocument_end
1461 :
1462 : character(len=*),parameter :: subname='(icepack_write_parameters)'
1463 :
1464 0 : write(iounit,*) subname
1465 0 : write(iounit,*) " rhos = ",rhos
1466 0 : write(iounit,*) " rhoi = ",rhoi
1467 0 : write(iounit,*) " rhow = ",rhow
1468 0 : write(iounit,*) " cp_air = ",cp_air
1469 0 : write(iounit,*) " emissivity = ",emissivity
1470 0 : write(iounit,*) " floediam = ",floediam
1471 0 : write(iounit,*) " hfrazilmin = ",hfrazilmin
1472 0 : write(iounit,*) " cp_ice = ",cp_ice
1473 0 : write(iounit,*) " cp_ocn = ",cp_ocn
1474 0 : write(iounit,*) " depressT = ",depressT
1475 0 : write(iounit,*) " dragio = ",dragio
1476 0 : write(iounit,*) " calc_dragio = ",calc_dragio
1477 0 : write(iounit,*) " iceruf_ocn = ",iceruf_ocn
1478 0 : write(iounit,*) " thickness_ocn_layer1 = ",thickness_ocn_layer1
1479 0 : write(iounit,*) " albocn = ",albocn
1480 0 : write(iounit,*) " gravit = ",gravit
1481 0 : write(iounit,*) " viscosity_dyn = ",viscosity_dyn
1482 0 : write(iounit,*) " Tocnfrz = ",Tocnfrz
1483 0 : write(iounit,*) " rhofresh = ",rhofresh
1484 0 : write(iounit,*) " zvir = ",zvir
1485 0 : write(iounit,*) " vonkar = ",vonkar
1486 0 : write(iounit,*) " cp_wv = ",cp_wv
1487 0 : write(iounit,*) " stefan_boltzmann = ",stefan_boltzmann
1488 0 : write(iounit,*) " Tffresh = ",Tffresh
1489 0 : write(iounit,*) " Lsub = ",Lsub
1490 0 : write(iounit,*) " Lvap = ",Lvap
1491 0 : write(iounit,*) " Timelt = ",Timelt
1492 0 : write(iounit,*) " Tsmelt = ",Tsmelt
1493 0 : write(iounit,*) " ice_ref_salinity = ",ice_ref_salinity
1494 0 : write(iounit,*) " iceruf = ",iceruf
1495 0 : write(iounit,*) " Cf = ",Cf
1496 0 : write(iounit,*) " Pstar = ",Pstar
1497 0 : write(iounit,*) " Cstar = ",Cstar
1498 0 : write(iounit,*) " kappav = ",kappav
1499 0 : write(iounit,*) " kice = ",kice
1500 0 : write(iounit,*) " kseaice = ",kseaice
1501 0 : write(iounit,*) " ksno = ",ksno
1502 0 : write(iounit,*) " zref = ",zref
1503 0 : write(iounit,*) " hs_min = ",hs_min
1504 0 : write(iounit,*) " snowpatch = ",snowpatch
1505 0 : write(iounit,*) " rhosi = ",rhosi
1506 0 : write(iounit,*) " sk_l = ",sk_l
1507 0 : write(iounit,*) " saltmax = ",saltmax
1508 0 : write(iounit,*) " phi_init = ",phi_init
1509 0 : write(iounit,*) " min_salin = ",min_salin
1510 0 : write(iounit,*) " salt_loss = ",salt_loss
1511 0 : write(iounit,*) " min_bgc = ",min_bgc
1512 0 : write(iounit,*) " dSin0_frazil = ",dSin0_frazil
1513 0 : write(iounit,*) " hi_ssl = ",hi_ssl
1514 0 : write(iounit,*) " hs_ssl = ",hs_ssl
1515 0 : write(iounit,*) " awtvdr = ",awtvdr
1516 0 : write(iounit,*) " awtidr = ",awtidr
1517 0 : write(iounit,*) " awtvdf = ",awtvdf
1518 0 : write(iounit,*) " awtidf = ",awtidf
1519 0 : write(iounit,*) " qqqice = ",qqqice
1520 0 : write(iounit,*) " TTTice = ",TTTice
1521 0 : write(iounit,*) " qqqocn = ",qqqocn
1522 0 : write(iounit,*) " TTTocn = ",TTTocn
1523 0 : write(iounit,*) " puny = ",puny
1524 0 : write(iounit,*) " bignum = ",bignum
1525 0 : write(iounit,*) " secday = ",secday
1526 0 : write(iounit,*) " pi = ",pi
1527 0 : write(iounit,*) " pih = ",pih
1528 0 : write(iounit,*) " piq = ",piq
1529 0 : write(iounit,*) " pi2 = ",pi2
1530 0 : write(iounit,*) " rad_to_deg = ",rad_to_deg
1531 0 : write(iounit,*) " Lfresh = ",Lfresh
1532 0 : write(iounit,*) " cprho = ",cprho
1533 0 : write(iounit,*) " Cp = ",Cp
1534 0 : write(iounit,*) " ktherm = ", ktherm
1535 0 : write(iounit,*) " conduct = ", conduct
1536 0 : write(iounit,*) " fbot_xfer_type = ", fbot_xfer_type
1537 0 : write(iounit,*) " heat_capacity = ", heat_capacity
1538 0 : write(iounit,*) " calc_Tsfc = ", calc_Tsfc
1539 0 : write(iounit,*) " update_ocn_f = ", update_ocn_f
1540 0 : write(iounit,*) " dts_b = ", dts_b
1541 0 : write(iounit,*) " ustar_min = ", ustar_min
1542 0 : write(iounit,*) " a_rapid_mode = ", a_rapid_mode
1543 0 : write(iounit,*) " Rac_rapid_mode = ", Rac_rapid_mode
1544 0 : write(iounit,*) " aspect_rapid_mode = ", aspect_rapid_mode
1545 0 : write(iounit,*) " dSdt_slow_mode = ", dSdt_slow_mode
1546 0 : write(iounit,*) " phi_c_slow_mode = ", phi_c_slow_mode
1547 0 : write(iounit,*) " phi_i_mushy = ", phi_i_mushy
1548 0 : write(iounit,*) " shortwave = ", shortwave
1549 0 : write(iounit,*) " albedo_type = ", albedo_type
1550 0 : write(iounit,*) " albicev = ", albicev
1551 0 : write(iounit,*) " albicei = ", albicei
1552 0 : write(iounit,*) " albsnowv = ", albsnowv
1553 0 : write(iounit,*) " albsnowi = ", albsnowi
1554 0 : write(iounit,*) " ahmax = ", ahmax
1555 0 : write(iounit,*) " R_ice = ", R_ice
1556 0 : write(iounit,*) " R_pnd = ", R_pnd
1557 0 : write(iounit,*) " R_snw = ", R_snw
1558 0 : write(iounit,*) " dT_mlt = ", dT_mlt
1559 0 : write(iounit,*) " rsnw_mlt = ", rsnw_mlt
1560 0 : write(iounit,*) " kalg = ", kalg
1561 0 : write(iounit,*) " kstrength = ", kstrength
1562 0 : write(iounit,*) " krdg_partic = ", krdg_partic
1563 0 : write(iounit,*) " krdg_redist = ", krdg_redist
1564 0 : write(iounit,*) " mu_rdg = ", mu_rdg
1565 0 : write(iounit,*) " atmbndy = ", atmbndy
1566 0 : write(iounit,*) " calc_strair = ", calc_strair
1567 0 : write(iounit,*) " formdrag = ", formdrag
1568 0 : write(iounit,*) " highfreq = ", highfreq
1569 0 : write(iounit,*) " natmiter = ", natmiter
1570 0 : write(iounit,*) " atmiter_conv = ", atmiter_conv
1571 0 : write(iounit,*) " tfrz_option = ", tfrz_option
1572 0 : write(iounit,*) " kitd = ", kitd
1573 0 : write(iounit,*) " kcatbound = ", kcatbound
1574 0 : write(iounit,*) " floeshape = ", floeshape
1575 0 : write(iounit,*) " wave_spec = ", wave_spec
1576 0 : write(iounit,*) " wave_spec_type= ", wave_spec_type
1577 0 : write(iounit,*) " nfreq = ", nfreq
1578 0 : write(iounit,*) " hs0 = ", hs0
1579 0 : write(iounit,*) " frzpnd = ", frzpnd
1580 0 : write(iounit,*) " dpscale = ", dpscale
1581 0 : write(iounit,*) " rfracmin = ", rfracmin
1582 0 : write(iounit,*) " rfracmax = ", rfracmax
1583 0 : write(iounit,*) " pndaspect = ", pndaspect
1584 0 : write(iounit,*) " hs1 = ", hs1
1585 0 : write(iounit,*) " hp1 = ", hp1
1586 0 : write(iounit,*) " bgc_flux_type = ", bgc_flux_type
1587 0 : write(iounit,*) " z_tracers = ", z_tracers
1588 0 : write(iounit,*) " scale_bgc = ", scale_bgc
1589 0 : write(iounit,*) " solve_zbgc = ", solve_zbgc
1590 0 : write(iounit,*) " dEdd_algae = ", dEdd_algae
1591 0 : write(iounit,*) " modal_aero = ", modal_aero
1592 0 : write(iounit,*) " conserv_check = ", conserv_check
1593 0 : write(iounit,*) " skl_bgc = ", skl_bgc
1594 0 : write(iounit,*) " solve_zsal = ", solve_zsal
1595 0 : write(iounit,*) " grid_o = ", grid_o
1596 0 : write(iounit,*) " l_sk = ", l_sk
1597 0 : write(iounit,*) " initbio_frac = ", initbio_frac
1598 0 : write(iounit,*) " grid_oS = ", grid_oS
1599 0 : write(iounit,*) " l_skS = ", l_skS
1600 0 : write(iounit,*) " phi_snow = ", phi_snow
1601 0 : write(iounit,*) " fr_resp = ", fr_resp
1602 0 : write(iounit,*) " algal_vel = ", algal_vel
1603 0 : write(iounit,*) " R_dFe2dust = ", R_dFe2dust
1604 0 : write(iounit,*) " dustFe_sol = ", dustFe_sol
1605 0 : write(iounit,*) " T_max = ", T_max
1606 0 : write(iounit,*) " fsal = ", fsal
1607 0 : write(iounit,*) " op_dep_min = ", op_dep_min
1608 0 : write(iounit,*) " fr_graze_s = ", fr_graze_s
1609 0 : write(iounit,*) " fr_graze_e = ", fr_graze_e
1610 0 : write(iounit,*) " fr_mort2min = ", fr_mort2min
1611 0 : write(iounit,*) " fr_dFe = ", fr_dFe
1612 0 : write(iounit,*) " k_nitrif = ", k_nitrif
1613 0 : write(iounit,*) " t_iron_conv = ", t_iron_conv
1614 0 : write(iounit,*) " max_loss = ", max_loss
1615 0 : write(iounit,*) " max_dfe_doc1 = ", max_dfe_doc1
1616 0 : write(iounit,*) " fr_resp_s = ", fr_resp_s
1617 0 : write(iounit,*) " y_sk_DMS = ", y_sk_DMS
1618 0 : write(iounit,*) " t_sk_conv = ", t_sk_conv
1619 0 : write(iounit,*) " t_sk_ox = ", t_sk_ox
1620 0 : write(iounit,*) " frazil_scav = ", frazil_scav
1621 0 : write(iounit,*) " sw_redist = ", sw_redist
1622 0 : write(iounit,*) " sw_frac = ", sw_frac
1623 0 : write(iounit,*) " sw_dtemp = ", sw_dtemp
1624 :
1625 2362607484 : end subroutine icepack_write_parameters
1626 :
1627 : !=======================================================================
1628 :
1629 : !autodocument_start icepack_recompute_constants
1630 : ! subroutine to reinitialize some derived constants
1631 :
1632 26278926407 : subroutine icepack_recompute_constants()
1633 :
1634 : !autodocument_end
1635 :
1636 2362611123 : real (kind=dbl_kind) :: lambda
1637 :
1638 : character(len=*),parameter :: subname='(icepack_recompute_constants)'
1639 :
1640 26278926407 : cprho = cp_ocn*rhow
1641 26278926407 : Lfresh = Lsub-Lvap
1642 26278926407 : Cp = 0.5_dbl_kind*gravit*(rhow-rhoi)*rhoi/rhow
1643 26278926407 : pih = p5*pi
1644 26278926407 : piq = p5*p5*pi
1645 26278926407 : pi2 = c2*pi
1646 26278926407 : rad_to_deg = c180/pi
1647 :
1648 26278926407 : if (calc_dragio) then
1649 156308 : dragio = (vonkar/log(p5 * thickness_ocn_layer1/iceruf_ocn))**2 ! dragio at half first layer
1650 : lambda = (thickness_ocn_layer1 - iceruf_ocn) / &
1651 156308 : (thickness_ocn_layer1*(sqrt(dragio)/vonkar*(log(c2) - c1 + iceruf_ocn/thickness_ocn_layer1) + c1))
1652 156308 : dragio = dragio*lambda**2
1653 : endif
1654 :
1655 26278926407 : end subroutine icepack_recompute_constants
1656 :
1657 : !=======================================================================
1658 :
1659 : end module icepack_parameters
1660 :
1661 : !=======================================================================
|