ROMS
Loading...
Searching...
No Matches
ice_inp.h File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine read_icepar (model, inp, out, lwrite)
 

Function/Subroutine Documentation

◆ read_icepar()

subroutine read_icepar ( integer, intent(in) model,
integer, intent(in) inp,
integer, intent(in) out,
logical, intent(in) lwrite )

Definition at line 1 of file ice_inp.h.

2!
3!git $Id$
4!================================================== Hernan G. Arango ===
5! Copyright (c) 2002-2025 The ROMS Group !
6! Licensed under a MIT/X style license !
7! See License_ROMS.md !
8!=======================================================================
9! !
10! This routine reads and reports ice model input parameters. !
11! !
12!=======================================================================
13!
14 USE mod_param
15 USE mod_parallel
16 USE mod_ice
17 USE mod_ncparam
18 USE mod_scalars
20!
21 implicit none
22!
23! Imported variable declarations
24!
25 logical, intent(in) :: Lwrite
26!
27 integer, intent(in) :: model, inp, out
28!
29! Local variable declarations.
30!
31 integer :: Npts, Nval, ng, status
32#ifdef AVERAGES
33 integer :: nf, ns
34#endif
35 integer :: tile, LBi, UBi, LBj, UBj
36!
37 real(r8) :: Rvalue(1)
38 real(r8), dimension(200) :: Rval
39!
40 character (len=40) :: KeyWord
41 character (len=256) :: line
42 character (len=256), dimension(200) :: Cval
43
44 character (len=*), parameter :: MyFile = &
45 & __FILE__
46!
47!-----------------------------------------------------------------------
48! Allocate ice model parameters that depend on Ngrids/
49!-----------------------------------------------------------------------
50!
51#ifdef DISTRIBUTE
52 tile=myrank
53#else
54 tile=0
55#endif
56 DO ng=1,ngrids
57 lbi=bounds(ng)%LBi(tile)
58 ubi=bounds(ng)%UBi(tile)
59 lbj=bounds(ng)%LBj(tile)
60 ubj=bounds(ng)%UBj(tile)
61 END DO
62!
63 CALL allocate_ice (ng, lbi, ubi, lbj, ubj, .false.)
64!
65!-----------------------------------------------------------------------
66! Read in ice model parameters.
67!-----------------------------------------------------------------------
68!
69 DO WHILE (.true.)
70 READ (inp,'(a)',err=10,END=20) line
71 status=decode_line(line, keyword, nval, cval, rval)
72 IF (status.gt.0) THEN
73 SELECT CASE (trim(keyword))
74 CASE ('nEVP')
75 npts=load_i(nval, rval, ngrids, nevp)
76 CASE ('AirRho')
77 npts=load_r(nval, rval, ngrids, airrho)
78 CASE ('IceRho')
79 npts=load_r(nval, rval, ngrids, icerho)
80 CASE ('SnowDryRho')
81 npts=load_r(nval, rval, ngrids, snowdryrho)
82 CASE ('SnowWetRho')
83 npts=load_r(nval, rval, ngrids, snowwetrho)
84 CASE ('Cd_ai')
85 npts=load_r(nval, rval, ngrids, cd_ai)
86 CASE ('Cd_io')
87 npts=load_r(nval, rval, ngrids, cd_io)
88 CASE ('Astrength')
89 npts=load_r(nval, rval, ngrids, astrength)
90 CASE ('zetaMin')
91 npts=load_r(nval, rval, ngrids, zetamin)
92 CASE ('zetaMax')
93 npts=load_r(nval, rval, ngrids, zetamax)
94 CASE ('ellip_sq')
95 npts=load_r(nval, rval, ngrids, ellip_sq)
96 CASE ('min_ai')
97 npts=load_r(nval, rval, ngrids, min_ai)
98 CASE ('max_ai')
99 npts=load_r(nval, rval, ngrids, max_ai)
100 CASE ('min_hi')
101 npts=load_r(nval, rval, ngrids, min_hi)
102 CASE ('max_hmelt')
103 npts=load_r(nval, rval, ngrids, max_hmelt)
104 CASE ('stressAng')
105 npts=load_r(nval, rval, ngrids, stressang)
106 DO ng=1,ngrids
107 stressang(ng) = stressang(ng)*deg2rad
108 END DO
109 CASE ('ice_emiss')
110 npts=load_r(nval, rval, 1, rvalue)
111 ice_emiss=rvalue(1)
112 CASE ('spec_heat_air')
113 npts=load_r(nval, rval, 1, rvalue)
114 spec_heat_air=rvalue(1)
115 CASE ('trans_coeff')
116 npts=load_r(nval, rval, 1, rvalue)
117 trans_coeff=rvalue(1)
118 CASE ('sublimation')
119 npts=load_r(nval, rval, 1, rvalue)
120 sublimation=rvalue(1)
121 CASE ('Hout(idUice)')
122 IF (iduice.eq.0) THEN
123 IF (master) WRITE (out,80) 'idUice'
124 exit_flag=5
125 RETURN
126 END IF
127 npts=load_l(nval, cval, ngrids, hout(iduice,:))
128 CASE ('Hout(idVice)')
129 IF (idvice.eq.0) THEN
130 IF (master) WRITE (out,80) 'idVice'
131 exit_flag=5
132 RETURN
133 END IF
134 npts=load_l(nval, cval, ngrids, hout(idvice,:))
135 CASE ('Hout(idUiER)')
136 IF (iduier.eq.0) THEN
137 IF (master) WRITE (out,80) 'idUiER'
138 exit_flag=5
139 RETURN
140 END IF
141 npts=load_l(nval, cval, ngrids, hout(iduier,:))
142 CASE ('Hout(idViNR)')
143 IF (idvinr.eq.0) THEN
144 IF (master) WRITE (out,80) 'idViNR'
145 exit_flag=5
146 RETURN
147 END IF
148 npts=load_l(nval, cval, ngrids, hout(idvinr,:))
149 CASE ('Hout(idAice)')
150 IF (idaice.eq.0) THEN
151 IF (master) WRITE (out,80) 'idAice'
152 exit_flag=5
153 RETURN
154 END IF
155 npts=load_l(nval, cval, ngrids, hout(idaice,:))
156 CASE ('Hout(idIage)')
157 IF (idiage.eq.0) THEN
158 IF (master) WRITE (out,80) 'idIage'
159 exit_flag=5
160 RETURN
161 END IF
162 npts=load_l(nval, cval, ngrids, hout(idiage,:))
163 CASE ('Hout(idHice)')
164 IF (idhice.eq.0) THEN
165 IF (master) WRITE (out,80) 'idHice'
166 exit_flag=5
167 RETURN
168 END IF
169 npts=load_l(nval, cval, ngrids, hout(idhice,:))
170 CASE ('Hout(idHmel)')
171 IF (idhmel.eq.0) THEN
172 IF (master) WRITE (out,80) 'idHmel'
173 exit_flag=5
174 RETURN
175 END IF
176 npts=load_l(nval, cval, ngrids, hout(idhmel,:))
177 CASE ('Hout(idHsno)')
178 IF (idhsno.eq.0) THEN
179 IF (master) WRITE (out,80) 'idHsno'
180 exit_flag=5
181 RETURN
182 END IF
183 npts=load_l(nval, cval, ngrids, hout(idhsno,:))
184 CASE ('Hout(idTice)')
185 IF (idtice.eq.0) THEN
186 IF (master) WRITE (out,80) 'idTice'
187 exit_flag=5
188 RETURN
189 END IF
190 npts=load_l(nval, cval, ngrids, hout(idtice,:))
191 CASE ('Hout(idISxx)')
192 IF (idisxx.eq.0) THEN
193 IF (master) WRITE (out,80) 'idISxx'
194 exit_flag=5
195 RETURN
196 END IF
197 npts=load_l(nval, cval, ngrids, hout(idisxx,:))
198 CASE ('Hout(idISxy)')
199 IF (idisxy.eq.0) THEN
200 IF (master) WRITE (out,80) 'idISxy'
201 exit_flag=5
202 RETURN
203 END IF
204 npts=load_l(nval, cval, ngrids, hout(idisxy,:))
205 CASE ('Hout(idISyy)')
206 IF (idisyy.eq.0) THEN
207 IF (master) WRITE (out,80) 'idISyy'
208 exit_flag=5
209 RETURN
210 END IF
211 npts=load_l(nval, cval, ngrids, hout(idisyy,:))
212 CASE ('Hout(idIsst)')
213 IF (idisst.eq.0) THEN
214 IF (master) WRITE (out,80) 'idIsst'
215 exit_flag=5
216 RETURN
217 END IF
218 npts=load_l(nval, cval, ngrids, hout(idisst,:))
219 CASE ('Hout(idIOmf)')
220 IF (idiomf.eq.0) THEN
221 IF (master) WRITE (out,80) 'idIOmf'
222 exit_flag=5
223 RETURN
224 END IF
225 npts=load_l(nval, cval, ngrids, hout(idiomf,:))
226 CASE ('Hout(idIOfv)')
227 IF (idiofv.eq.0) THEN
228 IF (master) WRITE (out,80) 'idIOfv'
229 exit_flag=5
230 RETURN
231 END IF
232 npts=load_l(nval, cval, ngrids, hout(idiofv,:))
233 CASE ('Hout(idIOmt)')
234 IF (idiomt.eq.0) THEN
235 IF (master) WRITE (out,80) 'idIOmt'
236 exit_flag=5
237 RETURN
238 END IF
239 npts=load_l(nval, cval, ngrids, hout(idiomt,:))
240 CASE ('Hout(idS0mk)')
241 IF (ids0mk.eq.0) THEN
242 IF (master) WRITE (out,80) 'idS0mk'
243 exit_flag=5
244 RETURN
245 END IF
246 npts=load_l(nval, cval, ngrids, hout(ids0mk,:))
247 CASE ('Hout(idT0mk)')
248 IF (idt0mk.eq.0) THEN
249 IF (master) WRITE (out,80) 'idT0mk'
250 exit_flag=5
251 RETURN
252 END IF
253 npts=load_l(nval, cval, ngrids, hout(idt0mk,:))
254 CASE ('Hout(idWdiv)')
255 IF (idwdiv.eq.0) THEN
256 IF (master) WRITE (out,80) 'idWdiv'
257 exit_flag=5
258 RETURN
259 END IF
260 npts=load_l(nval, cval, ngrids, hout(idwdiv,:))
261 CASE ('Hout(idW_fr)')
262 IF (idw_fr.eq.0) THEN
263 IF (master) WRITE (out,80) 'idW_fr'
264 exit_flag=5
265 RETURN
266 END IF
267 npts=load_l(nval, cval, ngrids, hout(idw_fr,:))
268 CASE ('Hout(idW_ai)')
269 IF (idw_ai.eq.0) THEN
270 IF (master) WRITE (out,80) 'idW_ai'
271 exit_flag=5
272 RETURN
273 END IF
274 npts=load_l(nval, cval, ngrids, hout(idw_ai,:))
275 CASE ('Hout(idW_ao)')
276 IF (idw_ao.eq.0) THEN
277 IF (master) WRITE (out,80) 'idW_ao'
278 exit_flag=5
279 RETURN
280 END IF
281 npts=load_l(nval, cval, ngrids, hout(idw_ao,:))
282 CASE ('Hout(idW_io)')
283 IF (idw_io.eq.0) THEN
284 IF (master) WRITE (out,80) 'idW_io'
285 exit_flag=5
286 RETURN
287 END IF
288 npts=load_l(nval, cval, ngrids, hout(idw_io,:))
289 CASE ('Hout(idW_ro)')
290 IF (idw_ro.eq.0) THEN
291 IF (master) WRITE (out,80) 'idW_ro'
292 exit_flag=5
293 RETURN
294 END IF
295 npts=load_l(nval, cval, ngrids, hout(idw_ro,:))
296 CASE ('Qout(idUice)')
297 npts=load_l(nval, cval, ngrids, qout(iduice,:))
298 CASE ('Qout(idVice)')
299 npts=load_l(nval, cval, ngrids, qout(idvice,:))
300 CASE ('Qout(idUiER)')
301 npts=load_l(nval, cval, ngrids, qout(iduier,:))
302 CASE ('Qout(idViNR)')
303 npts=load_l(nval, cval, ngrids, qout(idvinr,:))
304 CASE ('Qout(idAice)')
305 npts=load_l(nval, cval, ngrids, qout(idaice,:))
306 CASE ('Qout(idIage)')
307 npts=load_l(nval, cval, ngrids, qout(idiage,:))
308 CASE ('Qout(idHice)')
309 npts=load_l(nval, cval, ngrids, qout(idhice,:))
310 CASE ('Qout(idHmel)')
311 npts=load_l(nval, cval, ngrids, qout(idhmel,:))
312 CASE ('Qout(idHsno)')
313 npts=load_l(nval, cval, ngrids, qout(idhsno,:))
314 CASE ('Qout(idTice)')
315 npts=load_l(nval, cval, ngrids, qout(idtice,:))
316 CASE ('Qout(idISxx)')
317 npts=load_l(nval, cval, ngrids, qout(idisxx,:))
318 CASE ('Qout(idISxy)')
319 npts=load_l(nval, cval, ngrids, qout(idisxy,:))
320 CASE ('Qout(idISyy)')
321 npts=load_l(nval, cval, ngrids, qout(idisyy,:))
322 CASE ('Qout(idIsst)')
323 npts=load_l(nval, cval, ngrids, qout(idisst,:))
324 CASE ('Qout(idIOmf)')
325 npts=load_l(nval, cval, ngrids, qout(idiomf,:))
326 CASE ('Qout(idIOfv)')
327 npts=load_l(nval, cval, ngrids, qout(idiofv,:))
328 CASE ('Qout(idIOmt)')
329 npts=load_l(nval, cval, ngrids, qout(idiomt,:))
330 CASE ('Qout(idS0mk)')
331 npts=load_l(nval, cval, ngrids, qout(ids0mk,:))
332 CASE ('Qout(idT0mk)')
333 npts=load_l(nval, cval, ngrids, qout(idt0mk,:))
334 CASE ('Qout(idWdiv)')
335 npts=load_l(nval, cval, ngrids, qout(idwdiv,:))
336 CASE ('Qout(idW_fr)')
337 npts=load_l(nval, cval, ngrids, qout(idw_fr,:))
338 CASE ('Qout(idW_ai)')
339 npts=load_l(nval, cval, ngrids, qout(idw_ai,:))
340 CASE ('Qout(idW_ao)')
341 npts=load_l(nval, cval, ngrids, qout(idw_ao,:))
342 CASE ('Qout(idW_io)')
343 npts=load_l(nval, cval, ngrids, qout(idw_io,:))
344 CASE ('Qout(idW_ro)')
345 npts=load_l(nval, cval, ngrids, qout(idw_ro,:))
346#ifdef AVERAGES
347 CASE ('Aout(idUice)')
348 npts=load_l(nval, cval, ngrids, aout(iduice,:))
349 CASE ('Aout(idVice)')
350 npts=load_l(nval, cval, ngrids, aout(idvice,:))
351 CASE ('Aout(idUiER)')
352 npts=load_l(nval, cval, ngrids, aout(iduier,:))
353 CASE ('Aout(idViNR)')
354 npts=load_l(nval, cval, ngrids, aout(idvinr,:))
355 CASE ('Aout(idAice)')
356 npts=load_l(nval, cval, ngrids, aout(idaice,:))
357 CASE ('Aout(idHice)')
358 npts=load_l(nval, cval, ngrids, aout(idhice,:))
359 CASE ('Aout(idHmel)')
360 npts=load_l(nval, cval, ngrids, aout(idhmel,:))
361 CASE ('Aout(idHsno)')
362 npts=load_l(nval, cval, ngrids, aout(idhsno,:))
363 CASE ('Aout(idTice)')
364 npts=load_l(nval, cval, ngrids, aout(idtice,:))
365 CASE ('Aout(idISxx)')
366 npts=load_l(nval, cval, ngrids, aout(idisxx,:))
367 CASE ('Aout(idISxy)')
368 npts=load_l(nval, cval, ngrids, aout(idisxy,:))
369 CASE ('Aout(idISyy)')
370 npts=load_l(nval, cval, ngrids, aout(idisyy,:))
371 CASE ('Aout(idIsst)')
372 npts=load_l(nval, cval, ngrids, aout(idisst,:))
373 CASE ('Aout(idIOmf)')
374 npts=load_l(nval, cval, ngrids, aout(idiomf,:))
375 CASE ('Aout(idIOfv)')
376 npts=load_l(nval, cval, ngrids, aout(idiofv,:))
377 CASE ('Aout(idIOmt)')
378 npts=load_l(nval, cval, ngrids, aout(idiomt,:))
379 CASE ('Aout(idIage)')
380 npts=load_l(nval, cval, ngrids, aout(idiage,:))
381 CASE ('Aout(idS0mk)')
382 npts=load_l(nval, cval, ngrids, aout(ids0mk,:))
383 CASE ('Aout(idT0mk)')
384 npts=load_l(nval, cval, ngrids, aout(idt0mk,:))
385 CASE ('Aout(idWdiv)')
386 npts=load_l(nval, cval, ngrids, aout(idwdiv,:))
387 CASE ('Aout(idW_fr)')
388 npts=load_l(nval, cval, ngrids, aout(idw_fr,:))
389 CASE ('Aout(idW_ai)')
390 npts=load_l(nval, cval, ngrids, aout(idw_ai,:))
391 CASE ('Aout(idW_ao)')
392 npts=load_l(nval, cval, ngrids, aout(idw_ao,:))
393 CASE ('Aout(idW_io)')
394 npts=load_l(nval, cval, ngrids, aout(idw_io,:))
395 CASE ('Aout(idW_ro)')
396 npts=load_l(nval, cval, ngrids, aout(idw_ro,:))
397#endif
398 END SELECT
399 END IF
400 END DO
401 10 IF (master) WRITE (out,30) line
402 exit_flag=4
403 RETURN
404 20 CLOSE (inp)
405
406! Set ice time step to ocean time step
407
408 DO ng = 1,ngrids
409 dtice(ng) = dt(ng)
410 END DO
411!
412!-----------------------------------------------------------------------
413! Report input parameters.
414!-----------------------------------------------------------------------
415!
416 IF (lwrite) THEN
417 DO ng=1,ngrids
418 WRITE (out,40) ng
419 WRITE (out,50) nevp(ng), 'nEVP', &
420 & 'Number of elastic steps per plastic step in EVP.'
421 WRITE (out,60) airrho(ng), 'AirRho', &
422 & 'Air density (kg/m3).'
423 WRITE (out,60) icerho(ng), 'IceRho', &
424 & 'Density of sea ice (kg/m3).'
425 WRITE (out,60) snowdryrho(ng), 'SnowDryRho', &
426 & 'Dry snow density (kg/m3).'
427 WRITE (out,60) snowwetrho(ng), 'SnowWetRho', &
428 & 'Wet snow density (kg/m3).'
429 WRITE (out,60) cd_ai(ng), 'Cd_ai', &
430 & 'Air-Ice drag coefficient (nondimensional).'
431 WRITE (out,60) cd_io(ng), 'Cd_io', &
432 & 'Ice-Ocean drag coefficient (nondimensional).'
433 WRITE (out,60) astrength(ng), 'Astrength', &
434 & 'Ice strength exponential weighting (nondimensional).'
435 WRITE (out,60) zetamin(ng), 'zetaMin', &
436 & 'Minimum ice shear strength (N/m2) limiter.'
437 WRITE (out,60) zetamax(ng), 'zetaMax', &
438 & 'Maximum ice shear strength (N/m2) limiter.'
439 WRITE (out,60) ellip_sq(ng), 'ellip_sq', &
440 & 'Ellipticity squared of yield curve (nondimensional).'
441 WRITE (out,60) min_ai(ng), 'min_ai', &
442 & 'Minimum ice concentration (nondimensional) limiter.'
443 WRITE (out,60) max_ai(ng), 'max_ai', &
444 & 'Maximum ice concentration (nondimensional) limiter.'
445 WRITE (out,60) min_hi(ng), 'min_hi', &
446 & 'Minimum average ice thickness (m) limiter.'
447 WRITE (out,60) max_hmelt(ng), 'max_hmelt', &
448 & 'Maximum surface melt water thickness (m) limiter.'
449 WRITE (out,60) stressang(ng)*rad2deg, 'stressAng', &
450 & 'Turning angle for ice-water drag (degrees).'
451 WRITE (out,60) ice_emiss, 'ice_emiss', &
452 & 'Ice emissivity (nondimensional).'
453 WRITE (out,60) spec_heat_air, 'spec_heat_air', &
454 & 'Specific heat of air (J/kg/K).'
455 WRITE (out,60) trans_coeff, 'trans_coeff', &
456 & 'Heat transfer coefficient (nondimensional).'
457 WRITE (out,60) sublimation, 'sublimation', &
458 & 'Latent heat of sublimation (J/kg).'
459!
460 IF (hout(iduice,ng)) WRITE (out,70) hout(iduice,ng), &
461 & 'Hout(idUice)', &
462 & 'Write out ice U-velocity component.'
463 IF (hout(idvice,ng)) WRITE (out,70) hout(idvice,ng), &
464 & 'Hout(idVice)', &
465 & 'Write out ice V-velocity component.'
466 IF (hout(iduier,ng)) WRITE (out,70) hout(iduier,ng), &
467 & 'Hout(idUiER)', &
468 & 'Write out ice Eastward velocity component at RHO-points.'
469 IF (hout(idvinr,ng)) WRITE (out,70) hout(idvinr,ng), &
470 & 'Hout(idViNR)', &
471 & 'Write out ice Northward velocity component at RHO-points.'
472 IF (hout(idaice,ng)) WRITE (out,70) hout(idaice,ng), &
473 & 'Hout(idAice)', &
474 & 'Write out ice concentration (fractional area coverage).'
475 IF (hout(idiage,ng)) WRITE (out,70) hout(idiage,ng), &
476 & 'Hout(idIage)', &
477 & 'Write out age of ice.'
478 IF (hout(idhice,ng)) WRITE (out,70) hout(idhice,ng), &
479 & 'Hout(idHice)', &
480 & 'Write out average ice thickness (ice mass per area).'
481 IF (hout(idhmel,ng)) WRITE (out,70) hout(idhmel,ng), &
482 & 'Hout(idHmel)', &
483 & 'Write out melt pond water thickness on ice.'
484 IF (hout(idhsno,ng)) WRITE (out,70) hout(idhsno,ng), &
485 & 'Hout(idHsno)', &
486 & 'Write out average snow coverage thickness.'
487 IF (hout(idtice,ng)) WRITE (out,70) hout(idtice,ng), &
488 & 'Hout(idTice)', &
489 & 'Write out interior ice temperature.'
490 IF (hout(idisxx,ng)) WRITE (out,70) hout(idisxx,ng), &
491 & 'Hout(idISxx)', &
492 & 'Write out internal ice stress tensor, xx-component.'
493 IF (hout(idisxy,ng)) WRITE (out,70) hout(idisxy,ng), &
494 & 'Hout(idISxy)', &
495 & 'Write out internal ice stress tensor, xy-component.'
496 IF (hout(idisyy,ng)) WRITE (out,70) hout(idisyy,ng), &
497 & 'Hout(idISyy)', &
498 & 'Write out internal ice stress tensor, yy-component.'
499 IF (hout(idisst,ng)) WRITE (out,70) hout(idisst,ng), &
500 & 'Hout(idIsst)', &
501 & 'Write out ice/snow surface temperature.'
502 IF (hout(idiomf,ng)) WRITE (out,70) hout(idiomf,ng), &
503 & 'Hout(idIOmf)', &
504 & 'Write out ice-ocean mass flux.'
505 IF (hout(idiofv,ng)) WRITE (out,70) hout(idiofv,ng), &
506 & 'Hout(idIOfv)', &
507 & 'Write out ice-ocean friction velocity.'
508 IF (hout(idiomt,ng)) WRITE (out,70) hout(idiomt,ng), &
509 & 'Hout(idIOmt)', &
510 & 'Write out ice-ocean momentum transfer coefficient.'
511 IF (hout(ids0mk,ng)) WRITE (out,70) hout(ids0mk,ng), &
512 & 'Hout(idS0mk)', &
513 & 'Write out salinity of molecular sublayer under ice.'
514 IF (hout(idt0mk,ng)) WRITE (out,70) hout(idt0mk,ng), &
515 & 'Hout(idT0mk)', &
516 & 'Write out temperature of molecular sublayer under ice.'
517 IF (hout(idwdiv,ng)) WRITE (out,70) hout(idwdiv,ng), &
518 & 'Hout(idWdiv)', &
519 & 'Write out rate of ice divergence.'
520 IF (hout(idw_fr,ng)) WRITE (out,70) hout(idw_fr,ng), &
521 & 'Hout(idW_fr)', &
522 & 'Write out rate of ice accretion by frazil ice growth.'
523 IF (hout(idw_ai,ng)) WRITE (out,70) hout(idw_ai,ng), &
524 & 'Hout(idW_ai)', &
525 & 'Write out rate of melt/freeze at air/ice interface.'
526 IF (hout(idw_ao,ng)) WRITE (out,70) hout(idw_ao,ng), &
527 & 'Hout(idW_ao)', &
528 & 'Write out rate of melt/freeze at air/ocean interface.'
529 IF (hout(idw_io,ng)) WRITE (out,70) hout(idw_io,ng), &
530 & 'Hout(idW_io)', &
531 & 'Write out rate of melt/freeze at ice/ocean interface.'
532 IF (hout(idw_ro,ng)) WRITE (out,70) hout(idw_ro,ng), &
533 & 'Hout(idW_ro)', &
534 & 'Write out rate of melt/freeze runoff into ocean.'
535!
536 IF (qout(iduice,ng)) WRITE (out,70) qout(iduice,ng), &
537 & 'Qout(idUice)', &
538 & 'Write out ice U-velocity component.'
539 IF (qout(idvice,ng)) WRITE (out,70) qout(idvice,ng), &
540 & 'Qout(idVice)', &
541 & 'Write out ice V-velocity component.'
542 IF (qout(iduier,ng)) WRITE (out,70) qout(iduier,ng), &
543 & 'Qout(idUiER)', &
544 & 'Write out ice Eastward velocity component at RHO-points.'
545 IF (qout(idvinr,ng)) WRITE (out,70) qout(idvinr,ng), &
546 & 'Qout(idViNR)', &
547 & 'Write out ice Northward velocity component at RHO-points.'
548 IF (qout(idaice,ng)) WRITE (out,70) qout(idaice,ng), &
549 & 'Qout(idAice)', &
550 & 'Write out ice concentration (fractional area coverage).'
551 IF (qout(idiage,ng)) WRITE (out,70) qout(idiage,ng), &
552 & 'Qout(idIage)', &
553 & 'Write out age of ice.'
554 IF (qout(idhice,ng)) WRITE (out,70) qout(idhice,ng), &
555 & 'Qout(idHice)', &
556 & 'Write out average ice thickness (ice mass per area).'
557 IF (qout(idhmel,ng)) WRITE (out,70) qout(idhmel,ng), &
558 & 'Qout(idHmel)', &
559 & 'Write out surface melt water thickness on ice.'
560 IF (qout(idhsno,ng)) WRITE (out,70) qout(idhsno,ng), &
561 & 'Qout(idHsno)', &
562 & 'Write out average snow coverage thickness.'
563 IF (qout(idtice,ng)) WRITE (out,70) qout(idtice,ng), &
564 & 'Qout(idTice)', &
565 & 'Write out interior ice temperature.'
566 IF (qout(idisxx,ng)) WRITE (out,70) qout(idisxx,ng), &
567 & 'Qout(idISxx)', &
568 & 'Write out internal ice stress tensor, xx-component.'
569 IF (qout(idisxy,ng)) WRITE (out,70) qout(idisxy,ng), &
570 & 'Qout(idISxy)', &
571 & 'Write out internal ice stress tensor, xy-component.'
572 IF (qout(idisyy,ng)) WRITE (out,70) qout(idisyy,ng), &
573 & 'Qout(idISyy)', &
574 & 'Write out internal ice stress tensor, yy-component.'
575 IF (qout(idisst,ng)) WRITE (out,70) qout(idisst,ng), &
576 & 'Qout(idIsst)', &
577 & 'Write out ice/snow surface temperature.'
578 IF (qout(idiomf,ng)) WRITE (out,70) qout(idiomf,ng), &
579 & 'Qout(idIOmf)', &
580 & 'Write out ice-ocean mass flux.'
581 IF (qout(idiofv,ng)) WRITE (out,70) qout(idiofv,ng), &
582 & 'Qout(idIOfv)', &
583 & 'Write out ice-ocean friction velocity.'
584 IF (qout(idiomt,ng)) WRITE (out,70) qout(idiomt,ng), &
585 & 'Qout(idIOmt)', &
586 & 'Write out ice-ocean momentum transfer coefficient.'
587 IF (qout(ids0mk,ng)) WRITE (out,70) qout(ids0mk,ng), &
588 & 'Qout(idS0mk)', &
589 & 'Write out salinity of molecular sublayer under ice.'
590 IF (qout(idt0mk,ng)) WRITE (out,70) qout(idt0mk,ng), &
591 & 'Qout(idT0mk)', &
592 & 'Write out temperature of molecular sublayer under ice.'
593 IF (qout(idwdiv,ng)) WRITE (out,70) qout(idwdiv,ng), &
594 & 'Qout(idWdiv)', &
595 & 'Write out rate of ice divergence.'
596 IF (qout(idw_fr,ng)) WRITE (out,70) qout(idw_fr,ng), &
597 & 'Qout(idW_fr)', &
598 & 'Write out rate of ice accretion by frazil ice growth.'
599 IF (qout(idw_ai,ng)) WRITE (out,70) qout(idw_ai,ng), &
600 & 'Qout(idW_ai)', &
601 & 'Write out rate of melt/freeze at air/ice interface.'
602 IF (qout(idw_ao,ng)) WRITE (out,70) qout(idw_ao,ng), &
603 & 'Qout(idW_ao)', &
604 & 'Write out rate of melt/freeze at air/ocean interface.'
605 IF (qout(idw_io,ng)) WRITE (out,70) qout(idw_io,ng), &
606 & 'Qout(idW_io)', &
607 & 'Write out rate of melt/freeze at ice/ocean interface.'
608 IF (qout(idw_ro,ng)) WRITE (out,70) qout(idw_ro,ng), &
609 & 'Qout(idW_ro)', &
610 & 'Write out rate of melt/freeze runoff into ocean.'
611#ifdef AVERAGES
612!
613 IF (aout(iduice,ng)) WRITE (out,70) aout(iduice,ng), &
614 & 'Aout(idUice)', &
615 & 'Write out ice U-velocity component.'
616 IF (aout(idvice,ng)) WRITE (out,70) aout(idvice,ng), &
617 & 'Aout(idVice)', &
618 & 'Write out ice V-velocity component.'
619 IF (aout(iduier,ng)) WRITE (out,70) aout(iduier,ng), &
620 & 'Aout(idUiER)', &
621 & 'Write out ice Eastward velocity component at RHO-points.'
622 IF (aout(idvinr,ng)) WRITE (out,70) aout(idvinr,ng), &
623 & 'Aout(idViNR)', &
624 & 'Write out ice Northward velocity component at RHO-points.'
625 IF (aout(idaice,ng)) WRITE (out,70) aout(idaice,ng), &
626 & 'Aout(idAice)', &
627 & 'Write out ice concentration (fractional area coverage).'
628 IF (aout(idiage,ng)) WRITE (out,70) aout(idiage,ng), &
629 & 'Aout(idIage)', &
630 & 'Write out age of ice.'
631 IF (aout(idhice,ng)) WRITE (out,70) aout(idhice,ng), &
632 & 'Aout(idHice)', &
633 & 'Write out average ice thickness (ice mass per area).'
634 IF (aout(idhmel,ng)) WRITE (out,70) aout(idhmel,ng), &
635 & 'Aout(idHmel)', &
636 & 'Write out surface melt water thickness on ice.'
637 IF (aout(idhsno,ng)) WRITE (out,70) aout(idhsno,ng), &
638 & 'Aout(idHsno)', &
639 & 'Write out average snow coverage thickness.'
640 IF (aout(idtice,ng)) WRITE (out,70) aout(idtice,ng), &
641 & 'Aout(idTice)', &
642 & 'Write out interior ice temperature.'
643 IF (aout(idisxx,ng)) WRITE (out,70) aout(idisxx,ng), &
644 & 'Aout(idISxx)', &
645 & 'Write out internal ice stress tensor, xx-component.'
646 IF (aout(idisxy,ng)) WRITE (out,70) aout(idisxy,ng), &
647 & 'Aout(idISxy)', &
648 & 'Write out internal ice stress tensor, xy-component.'
649 IF (aout(idisyy,ng)) WRITE (out,70) aout(idisyy,ng), &
650 & 'Aout(idISyy)', &
651 & 'Write out internal ice stress tensor, yy-component.'
652 IF (aout(idisst,ng)) WRITE (out,70) aout(idisst,ng), &
653 & 'Aout(idIsst)', &
654 & 'Write out ice/snow surface temperature.'
655 IF (aout(idiomf,ng)) WRITE (out,70) aout(idiomf,ng), &
656 & 'Aout(idIOmf)', &
657 & 'Write out ice-ocean mass flux.'
658 IF (aout(idiofv,ng)) WRITE (out,70) aout(idiofv,ng), &
659 & 'Aout(idIOfv)', &
660 & 'Write out ice-ocean friction velocity.'
661 IF (aout(idiomt,ng)) WRITE (out,70) aout(idiomt,ng), &
662 & 'Aout(idIOmt)', &
663 & 'Write out ice-ocean momentum transfer coefficient.'
664 IF (aout(ids0mk,ng)) WRITE (out,70) aout(ids0mk,ng), &
665 & 'Aout(idS0mk)', &
666 & 'Write out salinity of molecular sublayer under ice.'
667 IF (aout(idt0mk,ng)) WRITE (out,70) aout(idt0mk,ng), &
668 & 'Aout(idT0mk)', &
669 & 'Write out temperature of molecular sublayer under ice.'
670 IF (aout(idwdiv,ng)) WRITE (out,70) aout(idwdiv,ng), &
671 & 'Aout(idWdiv)', &
672 & 'Write out rate of ice divergence.'
673 IF (aout(idw_fr,ng)) WRITE (out,70) aout(idw_fr,ng), &
674 & 'Aout(idW_fr)', &
675 & 'Write out rate of ice accretion by frazil ice growth.'
676 IF (aout(idw_ai,ng)) WRITE (out,70) aout(idw_ai,ng), &
677 & 'Aout(idW_ai)', &
678 & 'Write out rate of melt/freeze at air/ice interface.'
679 IF (aout(idw_ao,ng)) WRITE (out,70) aout(idw_ao,ng), &
680 & 'Aout(idW_ao)', &
681 & 'Write out rate of melt/freeze at air/ocean interface.'
682 IF (aout(idw_io,ng)) WRITE (out,70) aout(idw_io,ng), &
683 & 'Aout(idW_io)', &
684 & 'Write out rate of melt/freeze at ice/ocean interface.'
685 IF (aout(idw_ro,ng)) WRITE (out,70) aout(idw_ro,ng), &
686 & 'Aout(idW_ro)', &
687 & 'Write out rate of melt/freeze runoff into ocean.'
688#endif
689 END DO
690 END IF
691
692#ifdef AVERAGES
693!
694! Turn out switches to process time-averaged ice model state and
695! internal variables. It is necessary to avoid recursive dependency
696! between "mod_ncparam" and "mod_ice".
697!
698 licefavg=.false.
699 licesavg=.false.
700!
701 DO ng=1,ngrids
702 DO nf=1,nicef
703 IF (ifice(nf).gt.0) THEN
704 IF (aout(ifice(nf),ng)) THEN
705 licefavg(nf,ng)=.true.
706 END IF
707 END IF
708 END DO
709!
710 DO ns=1,nices
711 IF (isice(ns).gt.0) THEN
712 IF (aout(isice(ns),ng)) THEN
713 licesavg(ns,ng)=.true.
714 END IF
715 END IF
716 END DO
717 END DO
718#endif
719!
720 30 FORMAT (/,' READ_IcePar - Error while processing line: ',/,a)
721 40 FORMAT (/,/,' Ice Parameters, Grid: ',i2.2, &
722 & /, ' ========================',/)
723 50 FORMAT (1x,i10,2x,a,t32,a)
724 60 FORMAT (1p,e11.4,2x,a,t32,a)
725 70 FORMAT (10x,l1,2x,a,t32,a)
726 80 FORMAT (/,' READ_IcePar - variable index not yet loaded, ', a)
727!
728 RETURN
integer function decode_line(line_text, keyword, nval, cval, rval)
Definition inp_decode.F:97
integer, dimension(:), allocatable dtice
Definition ice_mod.h:217
real(r8), dimension(:), allocatable min_hi
Definition ice_mod.h:246
integer idisxy
Definition ice_mod.h:109
integer idvinr
Definition ice_mod.h:119
integer idhmel
Definition ice_mod.h:101
integer idw_ai
Definition ice_mod.h:121
real(r8), dimension(:), allocatable ellip_sq
Definition ice_mod.h:263
integer, dimension(nicef) ifice
Definition ice_mod.h:169
integer idw_ro
Definition ice_mod.h:125
integer idiomf
Definition ice_mod.h:105
integer idvice
Definition ice_mod.h:117
real(r8), dimension(:), allocatable airrho
Definition ice_mod.h:222
integer ids0mk
Definition ice_mod.h:111
integer idiofv
Definition ice_mod.h:104
real(r8), dimension(:), allocatable icerho
Definition ice_mod.h:223
integer idwdiv
Definition ice_mod.h:120
real(r8) ice_emiss
Definition ice_mod.h:267
real(r8), dimension(:), allocatable zetamax
Definition ice_mod.h:255
integer idt0mk
Definition ice_mod.h:112
real(r8), dimension(:), allocatable zetamin
Definition ice_mod.h:254
real(r8), dimension(:), allocatable snowwetrho
Definition ice_mod.h:225
integer, dimension(:), allocatable nevp
Definition ice_mod.h:213
real(r8), dimension(:), allocatable snowdryrho
Definition ice_mod.h:224
integer idw_ao
Definition ice_mod.h:122
integer, parameter nicef
Definition ice_mod.h:167
real(r8), dimension(:), allocatable max_hmelt
Definition ice_mod.h:250
integer idw_fr
Definition ice_mod.h:123
integer idisst
Definition ice_mod.h:107
integer idiage
Definition ice_mod.h:103
integer idiomt
Definition ice_mod.h:106
real(r8), dimension(:), allocatable min_ai
Definition ice_mod.h:241
integer idhice
Definition ice_mod.h:99
integer idisxx
Definition ice_mod.h:108
real(r8) spec_heat_air
Definition ice_mod.h:268
real(r8) trans_coeff
Definition ice_mod.h:269
integer, dimension(nices) isice
Definition ice_mod.h:135
integer idisyy
Definition ice_mod.h:110
integer idhsno
Definition ice_mod.h:102
real(r8), dimension(:), allocatable max_ai
Definition ice_mod.h:242
integer idaice
Definition ice_mod.h:96
real(r8) sublimation
Definition ice_mod.h:270
integer idw_io
Definition ice_mod.h:124
real(r8), dimension(:), allocatable cd_io
Definition ice_mod.h:230
real(r8), dimension(:), allocatable astrength
Definition ice_mod.h:235
subroutine, public allocate_ice(ng, lbi, ubi, lbj, ubj, ice_kernel)
Definition ice_mod.h:326
integer iduice
Definition ice_mod.h:114
integer, parameter nices
Definition ice_mod.h:130
logical, dimension(:,:), allocatable licesavg
Definition ice_mod.h:206
logical, dimension(:,:), allocatable licefavg
Definition ice_mod.h:205
real(r8), dimension(:), allocatable stressang
Definition ice_mod.h:259
integer idtice
Definition ice_mod.h:113
integer iduier
Definition ice_mod.h:116
real(r8), dimension(:), allocatable cd_ai
Definition ice_mod.h:229
logical, dimension(:,:), allocatable hout
logical, dimension(:,:), allocatable qout
logical, dimension(:,:), allocatable aout
logical master
type(t_bounds), dimension(:), allocatable bounds
Definition mod_param.F:232
integer ngrids
Definition mod_param.F:113
real(dp), dimension(:), allocatable dt
real(dp), parameter deg2rad
integer exit_flag
real(dp), parameter rad2deg

References mod_ice::allocate_ice(), mod_param::bounds, mod_parallel::myrank, and mod_param::ngrids.

Referenced by inp_par_mod::inp_par().

Here is the call graph for this function:
Here is the caller graph for this function: