3*************************************************** hernan g. arango ***
4** copyright(c) 2002-2025 the roms group **
5** licensed under a mit/x style license **
6** see license_roms.md **
7************************************************************************
9** assigns metadata indices for the sediment model variables that **
10** are used in input and
output netcdf files. the metadata **
11** information is
read from
"varinfo.yaml". **
13** this file is included in file
"mod_ncparam.F", routine **
14**
"initialize_ncparm". **
16************************************************************************
20** model state sediment tracers.
23 CASE (
'idSbed(ithck)')
25 CASE (
'idSbed(iaged)')
27 CASE (
'idSbed(iporo)')
29 CASE (
'idSbed(idiff)')
31#if defined COHESIVE_BED || defined SED_BIODIFF || defined MIXED_BED
32 CASE (
'idSbed(ibtcr)')
35 CASE (
'idBott(isd50)')
37 CASE (
'idBott(idens)')
39 CASE (
'idBott(iwsed)')
41 CASE (
'idBott(itauc)')
43 CASE (
'idBott(irlen)')
45 CASE (
'idBott(irhgt)')
47 CASE (
'idBott(ibwav)')
49 CASE (
'idBott(izdef)')
51 CASE (
'idBott(izapp)')
53 CASE (
'idBott(izNik)')
55 CASE (
'idBott(izbio)')
57 CASE (
'idBott(izbfm)')
59 CASE (
'idBott(izbld)')
61 CASE (
'idBott(izwbl)')
63 CASE (
'idBott(iactv)')
65 CASE (
'idBott(ishgt)')
67 CASE (
'idBott(idefx)')
69 CASE (
'idBott(idnet)')
71#if defined COHESIVE_BED || defined SED_BIODIFF || defined MIXED_BED
72 CASE (
'idBott(idoff)')
74 CASE (
'idBott(idslp)')
76 CASE (
'idBott(idtim)')
78 CASE (
'idBott(idbmx)')
80 CASE (
'idBott(idbmm)')
82 CASE (
'idBott(idbzs)')
84 CASE (
'idBott(idbzm)')
86 CASE (
'idBott(idbzp)')
90 CASE (
'idBott(idprp)')
93 CASE (
'idTvar(idmud(i))')
99 idtvar(idmud(i))=varid
101 fscale(varid,ng)=scale
102 iinfo(1,varid,ng)=gtype
104 WRITE (vname(1,varid),
'(a,i2.2)') &
105 & trim(adjustl(vinfo(1))), i
106 WRITE (vname(2,varid),
'(a,a,i2.2)') &
107 & trim(adjustl(vinfo(2))),
', size class ', i
108 WRITE (vname(3,varid),
'(a)') &
109 & trim(adjustl(vinfo(3)))
110 WRITE (vname(4,varid),
'(a,i2.2)') &
111 & trim(adjustl(vinfo(4))), i
112 WRITE (vname(5,varid),
'(a)') &
113 & trim(adjustl(vinfo(5)))
114 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
115 CALL standardname (vname(6,varid), string, &
116 & suffix=
'_in_sea_water')
120 CASE (
'idTvar(isand(i))')
126 idtvar(isand(i))=varid
128 fscale(varid,ng)=scale
129 iinfo(1,varid,ng)=gtype
131 WRITE (vname(1,varid),
'(a,i2.2)') &
132 & trim(adjustl(vinfo(1))), i
133 WRITE (vname(2,varid),
'(a,a,i2.2)') &
134 & trim(adjustl(vinfo(2))),
', size class ', i
135 WRITE (vname(3,varid),
'(a)') &
136 & trim(adjustl(vinfo(3)))
137 WRITE (vname(4,varid),
'(a,i2.2)') &
138 & trim(adjustl(vinfo(4))), i
139 WRITE (vname(5,varid),
'(a)') &
140 & trim(adjustl(vinfo(5)))
141 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
142 CALL standardname (vname(6,varid), string, &
143 & suffix=
'_in_sea_water')
149 IF ((ncs.gt.0).and. &
150 & (vinfo(1)(1:8).eq.
'mudfrac_'))
THEN
156 fscale(varid,ng)=scale
157 iinfo(1,varid,ng)=gtype
159 WRITE (vname(1,varid),
'(a,i2.2)') &
160 & trim(adjustl(vinfo(1))), i
161 WRITE (vname(2,varid),
'(a,a,i2.2)') &
162 & trim(adjustl(vinfo(2))),
', size class ', i
163 WRITE (vname(3,varid),
'(a)') &
164 & trim(adjustl(vinfo(3)))
165 WRITE (vname(4,varid),
'(a,i2.2)') &
166 & trim(adjustl(vinfo(4))), i
167 WRITE (vname(5,varid),
'(a)') &
168 & trim(adjustl(vinfo(5)))
169 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
170 CALL standardname (vname(6,varid), string, &
171 & suffix=
'_fraction')
175 IF ((nns.gt.0).and. &
176 & (vinfo(1)(1:9).eq.
'sandfrac_'))
THEN
182 fscale(varid,ng)=scale
183 iinfo(1,varid,ng)=gtype
185 WRITE (vname(1,varid),
'(a,i2.2)') &
186 & trim(adjustl(vinfo(1))), i
187 WRITE (vname(2,varid),
'(a,a,i2.2)') &
188 & trim(adjustl(vinfo(2))),
', size class ', i
189 WRITE (vname(3,varid),
'(a)') &
190 & trim(adjustl(vinfo(3)))
191 WRITE (vname(4,varid),
'(a,i2.2)') &
192 & trim(adjustl(vinfo(4))), i
193 WRITE (vname(5,varid),
'(a)') &
194 & trim(adjustl(vinfo(5)))
195 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
196 CALL standardname (vname(6,varid), string, &
197 & suffix=
'_fraction')
203 IF ((ncs.gt.0).and. &
204 & (vinfo(1)(1:8).eq.
'mudmass_'))
THEN
210 fscale(varid,ng)=scale
211 iinfo(1,varid,ng)=gtype
213 WRITE (vname(1,varid),
'(a,i2.2)') &
214 & trim(adjustl(vinfo(1))), i
215 WRITE (vname(2,varid),
'(a,a,i2.2)') &
216 & trim(adjustl(vinfo(2))),
', size class ', i
217 WRITE (vname(3,varid),
'(a)') &
218 & trim(adjustl(vinfo(3)))
219 WRITE (vname(4,varid),
'(a,i2.2)') &
220 & trim(adjustl(vinfo(4))), i
221 WRITE (vname(5,varid),
'(a)') &
222 & trim(adjustl(vinfo(5)))
223 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
224 CALL standardname (vname(6,varid), string, &
229 IF ((nns.gt.0).and. &
230 & (vinfo(1)(1:9).eq.
'sandmass_'))
THEN
236 fscale(varid,ng)=scale
237 iinfo(1,varid,ng)=gtype
239 WRITE (vname(1,varid),
'(a,i2.2)') &
240 & trim(adjustl(vinfo(1))), i
241 WRITE (vname(2,varid),
'(a,a,i2.2)') &
242 & trim(adjustl(vinfo(2))),
', size class ', i
243 WRITE (vname(3,varid),
'(a)') &
244 & trim(adjustl(vinfo(3)))
245 WRITE (vname(4,varid),
'(a,i2.2)') &
246 & trim(adjustl(vinfo(4))), i
247 WRITE (vname(5,varid),
'(a)') &
248 & trim(adjustl(vinfo(5)))
249 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
250 CALL standardname (vname(6,varid), string, &
258 IF ((ncs.gt.0).and. &
259 & (vinfo(1)(1:13).eq.
'bedload_Umud_'))
THEN
265 fscale(varid,ng)=scale
266 iinfo(1,varid,ng)=gtype
268 WRITE (vname(1,varid),
'(a,i2.2)') &
269 & trim(adjustl(vinfo(1))), i
270 WRITE (vname(2,varid),
'(a,a,i2.2)') &
271 & trim(adjustl(vinfo(2))),
', size class ', i
272 WRITE (vname(3,varid),
'(a)') &
273 & trim(adjustl(vinfo(3)))
274 WRITE (vname(4,varid),
'(a,i2.2)') &
275 & trim(adjustl(vinfo(4))), i
276 WRITE (vname(5,varid),
'(a)') &
277 & trim(adjustl(vinfo(5)))
278 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
279 CALL standardname (vname(6,varid), string)
283 IF ((nns.gt.0).and. &
284 & (vinfo(1)(1:14).eq.
'bedload_Usand_'))
THEN
290 fscale(varid,ng)=scale
291 iinfo(1,varid,ng)=gtype
293 WRITE (vname(1,varid),
'(a,i2.2)') &
294 & trim(adjustl(vinfo(1))), i
295 WRITE (vname(2,varid),
'(a,a,i2.2)') &
296 & trim(adjustl(vinfo(2))),
', size class ', i
297 WRITE (vname(3,varid),
'(a)') &
298 & trim(adjustl(vinfo(3)))
299 WRITE (vname(4,varid),
'(a,i2.2)') &
300 & trim(adjustl(vinfo(4))), i
301 WRITE (vname(5,varid),
'(a)') &
302 & trim(adjustl(vinfo(5)))
303 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
304 CALL standardname (vname(6,varid), string)
310 IF ((ncs.gt.0).and. &
311 & (vinfo(1)(1:13).eq.
'bedload_Vmud_'))
THEN
317 fscale(varid,ng)=scale
318 iinfo(1,varid,ng)=gtype
320 WRITE (vname(1,varid),
'(a,i2.2)') &
321 & trim(adjustl(vinfo(1))), i
322 WRITE (vname(2,varid),
'(a,a,i2.2)') &
323 & trim(adjustl(vinfo(2))),
', size class ', i
324 WRITE (vname(3,varid),
'(a)') &
325 & trim(adjustl(vinfo(3)))
326 WRITE (vname(4,varid),
'(a,i2.2)') &
327 & trim(adjustl(vinfo(4))), i
328 WRITE (vname(5,varid),
'(a)') &
329 & trim(adjustl(vinfo(5)))
330 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
331 CALL standardname (vname(6,varid), string)
335 IF ((nns.gt.0).and. &
336 & (vinfo(1)(1:14).eq.
'bedload_Vsand_'))
THEN
342 fscale(varid,ng)=scale
343 iinfo(1,varid,ng)=gtype
345 WRITE (vname(1,varid),
'(a,i2.2)') &
346 & trim(adjustl(vinfo(1))), i
347 WRITE (vname(2,varid),
'(a,a,i2.2)') &
348 & trim(adjustl(vinfo(2))),
', size class ', i
349 WRITE (vname(3,varid),
'(a)') &
350 & trim(adjustl(vinfo(3)))
351 WRITE (vname(4,varid),
'(a,i2.2)') &
352 & trim(adjustl(vinfo(4))), i
353 WRITE (vname(5,varid),
'(a)') &
354 & trim(adjustl(vinfo(5)))
355 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
356 CALL standardname (vname(6,varid), string)
363** sediment tracers
open boundary conditions.
366 CASE (
'idTbry(iwest,idmud(i))')
372 idtbry(iwest,idmud(i))=varid
374 fscale(varid,ng)=scale
375 iinfo(1,varid,ng)=gtype
377 WRITE (vname(1,varid),
'(a,i2.2)') &
378 & trim(adjustl(vinfo(1))), i
379 WRITE (vname(2,varid),
'(a,a,i2.2)') &
380 & trim(adjustl(vinfo(2))),
', size class ', i
381 WRITE (vname(3,varid),
'(a)') &
382 & trim(adjustl(vinfo(3)))
383 WRITE (vname(4,varid),
'(a,i2.2,a)') &
384 & trim(adjustl(vinfo(4))), i,
' western-boundary'
385 WRITE (vname(5,varid),
'(a)') &
386 & trim(adjustl(vinfo(5)))
387 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
388 CALL standardname (vname(6,varid), string, &
389 & suffix=
'_in_sea_water')
393 CASE (
'idTbry(ieast,idmud(i))')
399 idtbry(ieast,idmud(i))=varid
401 fscale(varid,ng)=scale
402 iinfo(1,varid,ng)=gtype
404 WRITE (vname(1,varid),
'(a,i2.2)') &
405 & trim(adjustl(vinfo(1))), i
406 WRITE (vname(2,varid),
'(a,a,i2.2)') &
407 & trim(adjustl(vinfo(2))),
', size class ', i
408 WRITE (vname(3,varid),
'(a)') &
409 & trim(adjustl(vinfo(3)))
410 WRITE (vname(4,varid),
'(a,i2.2,a)') &
411 & trim(adjustl(vinfo(4))), i,
' eastern-boundary'
412 WRITE (vname(5,varid),
'(a)') &
413 & trim(adjustl(vinfo(5)))
414 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
415 CALL standardname (vname(6,varid), string, &
416 & suffix=
'_in_sea_water')
420 CASE (
'idTbry(isouth,idmud(i))')
426 idtbry(isouth,idmud(i))=varid
428 fscale(varid,ng)=scale
429 iinfo(1,varid,ng)=gtype
431 WRITE (vname(1,varid),
'(a,i2.2)') &
432 & trim(adjustl(vinfo(1))), i
433 WRITE (vname(2,varid),
'(a,a,i2.2)') &
434 & trim(adjustl(vinfo(2))),
', size class ', i
435 WRITE (vname(3,varid),
'(a)') &
436 & trim(adjustl(vinfo(3)))
437 WRITE (vname(4,varid),
'(a,i2.2,a)') &
438 & trim(adjustl(vinfo(4))), i,
' southern-boundary'
439 WRITE (vname(5,varid),
'(a)') &
440 & trim(adjustl(vinfo(5)))
441 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
442 CALL standardname (vname(6,varid), string, &
443 & suffix=
'_in_sea_water')
447 CASE (
'idTbry(inorth,idmud(i))')
453 idtbry(inorth,idmud(i))=varid
455 fscale(varid,ng)=scale
456 iinfo(1,varid,ng)=gtype
458 WRITE (vname(1,varid),
'(a,i2.2)') &
459 & trim(adjustl(vinfo(1))), i
460 WRITE (vname(2,varid),
'(a,a,i2.2)') &
461 & trim(adjustl(vinfo(2))),
', size class ', i
462 WRITE (vname(3,varid),
'(a)') &
463 & trim(adjustl(vinfo(3)))
464 WRITE (vname(4,varid),
'(a,i2.2,a)') &
465 & trim(adjustl(vinfo(4))), i,
' northern-boundary'
466 WRITE (vname(5,varid),
'(a)') &
467 & trim(adjustl(vinfo(5)))
468 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
469 CALL standardname (vname(6,varid), string, &
470 & suffix=
'_in_sea_water')
474 CASE (
'idTbry(iwest,isand(i))')
480 idtbry(iwest,isand(i))=varid
482 fscale(varid,ng)=scale
483 iinfo(1,varid,ng)=gtype
485 WRITE (vname(1,varid),
'(a,i2.2)') &
486 & trim(adjustl(vinfo(1))), i
487 WRITE (vname(2,varid),
'(a,a,i2.2)') &
488 & trim(adjustl(vinfo(2))),
', size class ', i
489 WRITE (vname(3,varid),
'(a)') &
490 & trim(adjustl(vinfo(3)))
491 WRITE (vname(4,varid),
'(a,i2.2,a)') &
492 & trim(adjustl(vinfo(4))), i,
' western-boundary'
493 WRITE (vname(5,varid),
'(a)') &
494 & trim(adjustl(vinfo(5)))
495 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
496 CALL standardname (vname(6,varid), string, &
497 & suffix=
'_in_sea_water')
501 CASE (
'idTbry(ieast,isand(i))')
507 idtbry(ieast,isand(i))=varid
509 fscale(varid,ng)=scale
510 iinfo(1,varid,ng)=gtype
512 WRITE (vname(1,varid),
'(a,i2.2)') &
513 & trim(adjustl(vinfo(1))), i
514 WRITE (vname(2,varid),
'(a,a,i2.2)') &
515 & trim(adjustl(vinfo(2))),
', size class ', i
516 WRITE (vname(3,varid),
'(a)') &
517 & trim(adjustl(vinfo(3)))
518 WRITE (vname(4,varid),
'(a,i2.2,a)') &
519 & trim(adjustl(vinfo(4))), i,
' eastern-boundary'
520 WRITE (vname(5,varid),
'(a)') &
521 & trim(adjustl(vinfo(5)))
522 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
523 CALL standardname (vname(6,varid), string, &
524 & suffix=
'_in_sea_water')
528 CASE (
'idTbry(isouth,isand(i))')
534 idtbry(isouth,isand(i))=varid
536 fscale(varid,ng)=scale
537 iinfo(1,varid,ng)=gtype
539 WRITE (vname(1,varid),
'(a,i2.2)') &
540 & trim(adjustl(vinfo(1))), i
541 WRITE (vname(2,varid),
'(a,a,i2.2)') &
542 & trim(adjustl(vinfo(2))),
', size class ', i
543 WRITE (vname(3,varid),
'(a)') &
544 & trim(adjustl(vinfo(3)))
545 WRITE (vname(4,varid),
'(a,i2.2,a)') &
546 & trim(adjustl(vinfo(4))), i,
' southern-boundary'
547 WRITE (vname(5,varid),
'(a)') &
548 & trim(adjustl(vinfo(5)))
549 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
550 CALL standardname (vname(6,varid), string, &
551 & suffix=
'_in_sea_water')
555 CASE (
'idTbry(inorth,isand(i))')
561 idtbry(inorth,isand(i))=varid
563 fscale(varid,ng)=scale
564 iinfo(1,varid,ng)=gtype
566 WRITE (vname(1,varid),
'(a,i2.2)') &
567 & trim(adjustl(vinfo(1))), i
568 WRITE (vname(2,varid),
'(a,a,i2.2)') &
569 & trim(adjustl(vinfo(2))),
', size class ', i
570 WRITE (vname(3,varid),
'(a)') &
571 & trim(adjustl(vinfo(3)))
572 WRITE (vname(4,varid),
'(a,i2.2,a)') &
573 & trim(adjustl(vinfo(4))), i,
' northern-boundary'
574 WRITE (vname(5,varid),
'(a)') &
575 & trim(adjustl(vinfo(5)))
576 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
577 CALL standardname (vname(6,varid), string, &
578 & suffix=
'_in_sea_water')
584** sediment tracers point source/sinks(river runoff).
587 CASE (
'idRtrc(idmud)')
593 idrtrc(idmud(i))=varid
595 fscale(varid,ng)=scale
596 iinfo(1,varid,ng)=gtype
598 WRITE (vname(1,varid),
'(a,i2.2)') &
599 & trim(adjustl(vinfo(1))), i
600 WRITE (vname(2,varid),
'(a,a,i2.2)') &
601 & trim(adjustl(vinfo(2))),
', size class ', i
602 WRITE (vname(3,varid),
'(a)') &
603 & trim(adjustl(vinfo(3)))
604 WRITE (vname(4,varid),
'(a,i2.2)') &
605 & trim(adjustl(vinfo(4))), i
606 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
607 CALL standardname (vname(6,varid), string, &
608 & suffix=
'trasnport_into_sea_water_from_rivers')
612 CASE (
'idRtrc(isand)')
618 idrtrc(isand(i))=varid
620 fscale(varid,ng)=scale
621 iinfo(1,varid,ng)=gtype
623 WRITE (vname(1,varid),
'(a,i2.2)') &
624 & trim(adjustl(vinfo(1))), i
625 WRITE (vname(2,varid),
'(a,a,i2.2)') &
626 & trim(adjustl(vinfo(2))),
', size class ', i
627 WRITE (vname(3,varid),
'(a)') &
628 & trim(adjustl(vinfo(3)))
629 WRITE (vname(4,varid),
'(a,i2.2)') &
630 & trim(adjustl(vinfo(4))), i
631 WRITE (string,
'(a,i2.2)') trim(adjustl(vinfo(6))), i
632 CALL standardname (vname(6,varid), string, &
633 & suffix=
'trasnport_into_sea_water_from_rivers')