2
3
4
5
6
7
8
9
10
16
18
19 implicit none
20
21
22
23 logical, intent(in) :: Lwrite
24 integer, intent(in) :: model, inp, out
25
26
27
28 integer :: Npts, Nval
29 integer :: iTrcStr, iTrcEnd
30 integer :: i, ifield, igrid, itracer, itrc, ng, nline, status
31
32 logical, dimension(Ngrids) :: Lbed
33 logical, dimension(Ngrids) :: Lbottom
34 logical, dimension(NCS,Ngrids) :: Lmud
35 logical, dimension(NNS,Ngrids) :: Lsand
36
37 real(r8), dimension(Ngrids) :: Rbed
38 real(r8), dimension(NCS,Ngrids) :: Rmud
39 real(r8), dimension(NNS,Ngrids) :: Rsand
40
41 real(dp), dimension(nRval) :: Rval
42
43 character (len=40 ) :: KeyWord
44 character (len=256) :: line
45 character (len=256), dimension(nCval) :: Cval
46
47
48
49
50
51 igrid=1
52 itracer=0
53 itrcstr=1
55 nline=0
56
57
58
59
60
61 DO WHILE (.true.)
62 READ (inp,'(a)',err=10,END=20) line
64 IF (status.gt.0) THEN
65 SELECT CASE (trim(keyword))
66 CASE ('Lsediment')
68 CASE ('NEWLAYER_THICK')
72 END DO
73 CASE ('MINLAYER_THICK')
77 END DO
78#ifdef MIXED_BED
79 CASE ('TRANSC')
83 END DO
84 CASE ('TRANSN')
88 END DO
89#endif
90 CASE ('BEDLOAD_COEFF')
94 END DO
95 CASE ('Hadvection')
96 IF (itracer.lt.
nst)
THEN
97 itracer=itracer+1
98 ELSE
99 itracer=1
100 END IF
102 npts=
load_tadv(nval, cval, line, nline, itrc, igrid, &
106 CASE ('Vadvection')
107 IF (itracer.lt.
nst)
THEN
108 itracer=itracer+1
109 ELSE
110 itracer=1
111 END IF
113 npts=
load_tadv(nval, cval, line, nline, itrc, igrid, &
117#if defined ADJOINT || defined TANGENT || defined TL_IOMS
118 CASE ('ad_Hadvection')
119 IF (itracer.lt.
nst)
THEN
120 itracer=itracer+1
121 ELSE
122 itracer=1
123 END IF
125 npts=
load_tadv(nval, cval, line, nline, itrc, igrid, &
129 CASE ('Vadvection')
130 IF (itracer.lt.(
nst)
THEN
131 itracer=itracer+1
132 ELSE
133 itracer=1
134 END IF
136 npts=
load_tadv(nval, cval, line, nline, itrc, igrid, &
140#endif
141 CASE ('LBC(isTvar)')
142 IF (itracer.lt.
nst)
THEN
143 itracer=itracer+1
144 ELSE
145 itracer=1
146 END IF
148 npts=
load_lbc(nval, cval, line, nline, ifield, igrid, &
151#if defined ADJOINT || defined TANGENT || defined TL_IOMS
152 CASE ('ad_LBC(isTvar)')
153 IF (itracer.lt.
nst)
THEN
154 itracer=itracer+1
155 ELSE
156 itracer=1
157 END IF
159 npts=
load_lbc(nval, cval, line, nline, ifield, igrid, &
162#endif
163 CASE ('MUD_SD50')
168 sd50(itrc,ng)=rmud(itrc,ng)
169 END DO
170 END DO
171 CASE ('MUD_CSED')
176 csed(itrc,ng)=rmud(itrc,ng)
177 END DO
178 END DO
179 CASE ('MUD_SRHO')
184 srho(itrc,ng)=rmud(itrc,ng)
185 END DO
186 END DO
187 CASE ('MUD_WSED')
192 wsed(itrc,ng)=rmud(itrc,ng)
193 END DO
194 END DO
195 CASE ('MUD_ERATE')
200 erate(itrc,ng)=rmud(itrc,ng)
201 END DO
202 END DO
203 CASE ('MUD_TAU_CE')
208 tau_ce(itrc,ng)=rmud(itrc,ng)
209 END DO
210 END DO
211 CASE ('MUD_TAU_CD')
216 tau_cd(itrc,ng)=rmud(itrc,ng)
217 END DO
218 END DO
219 CASE ('MUD_POROS')
224 poros(itrc,ng)=rmud(itrc,ng)
225 END DO
226 END DO
227 CASE ('MUD_TNU2')
233 END DO
234 END DO
235 CASE ('MUD_TNU4')
241 END DO
242 END DO
243 CASE ('ad_MUD_TNU2')
250 END DO
251 END DO
252 CASE ('ad_MUD_TNU4')
259 END DO
260 END DO
261 CASE ('MUD_Sponge')
267 END DO
268 END DO
269 CASE ('MUD_AKT_BAK')
275 END DO
276 END DO
277 CASE ('MUD_AKT_fac')
284 END DO
285 END DO
286 CASE ('MUD_TNUDG')
291 tnudg(i,ng)=rmud(itrc,ng)
292 END DO
293 END DO
294 CASE ('MUD_MORPH_FAC')
297 END IF
302 END DO
303 END DO
304#if defined COHESIVE_BED || defined MIXED_BED
305 CASE ('MUD_TAUCR_MIN')
309 END DO
310 CASE ('MUD_TAUCR_MAX')
314 END DO
315 CASE ('MUD_TAUCR_SLOPE')
319 END DO
320 CASE ('MUD_TAUCR_OFF')
324 END DO
325 CASE ('MUD_TAUCR_TIME')
329 END DO
330#endif
331 CASE ('MUD_Ltsrc', 'MUD_Ltracer')
337 END DO
338 END DO
339 CASE ('MUD_Ltclm')
345 END DO
346 END DO
347 CASE ('MUD_Tnudge')
353 END DO
354 END DO
355 CASE ('Hout(idmud)')
360 hout(i,ng)=lmud(itrc,ng)
361 END DO
362 END DO
363 CASE ('Hout(iMfrac)')
368 hout(i,ng)=lmud(itrc,ng)
369 END DO
370 END DO
371 CASE ('Hout(iMmass)')
376 hout(i,ng)=lmud(itrc,ng)
377 END DO
378 END DO
379#ifdef BEDLOAD
380 CASE ('Hout(iMUbld)')
383 IF (
idubld(itrc).eq.0)
THEN
384 IF (
master)
WRITE (out,30)
'idUbld'
386 RETURN
387 END IF
388 END DO
389 END DO
394 hout(i,ng)=lmud(itrc,ng)
395 END DO
396 END DO
397 CASE ('Hout(iMVbld)')
400 IF (
idvbld(itrc).eq.0)
THEN
401 IF (
master)
WRITE (out,30)
'idVbld'
403 RETURN
404 END IF
405 END DO
406 END DO
411 hout(i,ng)=lmud(itrc,ng)
412 END DO
413 END DO
414#endif
415 CASE ('Qout(idmud)')
420 qout(i,ng)=lmud(itrc,ng)
421 END DO
422 END DO
423 CASE ('Qout(iSmud)')
428 qout(i,ng)=lmud(itrc,ng)
429 END DO
430 END DO
431 CASE ('Qout(iMfrac)')
436 qout(i,ng)=lmud(itrc,ng)
437 END DO
438 END DO
439 CASE ('Qout(iMmass)')
444 qout(i,ng)=lmud(itrc,ng)
445 END DO
446 END DO
447#ifdef BEDLOAD
448 CASE ('Qout(iMUbld)')
453 qout(i,ng)=lmud(itrc,ng)
454 END DO
455 END DO
456 CASE ('Qout(iMVbld)')
461 qout(i,ng)=lmud(itrc,ng)
462 END DO
463 END DO
464#endif
465#if defined AVERAGES || \
466 (defined ad_averages && defined adjoint) || \
467 (defined rp_averages && defined tl_ioms) || \
468 (defined tl_averages && defined tangent)
469 CASE ('Aout(idmud)')
474 aout(i,ng)=lmud(itrc,ng)
475 END DO
476 END DO
477 CASE ('Aout(iMTTav)')
482 aout(i,ng)=lmud(itrc,ng)
483 END DO
484 END DO
485 CASE ('Aout(iMUTav)')
490 aout(i,ng)=lmud(itrc,ng)
491 END DO
492 END DO
493 CASE ('Aout(iMVTav)')
498 aout(i,ng)=lmud(itrc,ng)
499 END DO
500 END DO
501 CASE ('Aout(MHUTav)')
506 aout(i,ng)=lmud(itrc,ng)
507 END DO
508 END DO
509 CASE ('Aout(MHVTav)')
514 aout(i,ng)=lmud(itrc,ng)
515 END DO
516 END DO
517# ifdef BEDLOAD
518 CASE ('Aout(iMUbld)')
523 aout(i,ng)=lmud(itrc,ng)
524 END DO
525 END DO
526 CASE ('Aout(iMVbld)')
531 aout(i,ng)=lmud(itrc,ng)
532 END DO
533 END DO
534# endif
535#endif
536#ifdef DIAGNOSTICS_TS
537 CASE ('Dout(MTrate)')
543 END DO
544 END DO
545 CASE ('Dout(MThadv)')
551 END DO
552 END DO
553 CASE ('Dout(MTxadv)')
559 END DO
560 END DO
561 CASE ('Dout(MTyadv)')
567 END DO
568 END DO
569 CASE ('Dout(MTvadv)')
575 END DO
576 END DO
577# if defined TS_DIF2 || defined TS_DIF4
578 CASE ('Dout(MThdif)')
584 END DO
585 END DO
586 CASE ('Dout(MTxdif)')
592 END DO
593 END DO
594 CASE ('Dout(MTydif)')
600 END DO
601 END DO
602# if defined MIX_GEO_TS || defined MIX_ISO_TS
603 CASE ('Dout(MTsdif)')
609 END DO
610 END DO
611# endif
612# endif
613 CASE ('Dout(MTvdif)')
619 END DO
620 END DO
621#endif
622 CASE ('SAND_SD50')
628 sd50(i,ng)=rsand(itrc,ng)
629 END DO
630 END DO
631 CASE ('SAND_CSED')
637 csed(i,ng)=rsand(itrc,ng)
638 END DO
639 END DO
640 CASE ('SAND_SRHO')
646 srho(i,ng)=rsand(itrc,ng)
647 END DO
648 END DO
649 CASE ('SAND_WSED')
655 wsed(i,ng)=rsand(itrc,ng)
656 END DO
657 END DO
658 CASE ('SAND_ERATE')
664 erate(i,ng)=rsand(itrc,ng)
665 END DO
666 END DO
667 CASE ('SAND_TAU_CE')
673 tau_ce(i,ng)=rsand(itrc,ng)
674 END DO
675 END DO
676 CASE ('SAND_TAU_CD')
682 tau_cd(i,ng)=rsand(itrc,ng)
683 END DO
684 END DO
685 CASE ('SAND_POROS')
691 poros(i,ng)=rsand(itrc,ng)
692 END DO
693 END DO
694 CASE ('SAND_TNU2')
700 END DO
701 END DO
702 CASE ('SAND_TNU4')
708 END DO
709 END DO
710 CASE ('ad_SAND_TNU2')
717 END DO
718 END DO
719 CASE ('ad_SAND_TNU4')
726 END DO
727 END DO
728 CASE ('SAND_Sponge')
734 END DO
735 END DO
736 CASE ('SAND_AKT_BAK')
742 END DO
743 END DO
744 CASE ('SAND_AKT_fac')
751 END DO
752 END DO
753 CASE ('SAND_TNUDG')
758 tnudg(i,ng)=rsand(itrc,ng)
759 END DO
760 END DO
761 CASE ('SAND_MORPH_FAC')
764 END IF
770 END DO
771 END DO
772 CASE ('SAND_Ltsrc', 'SAND_Ltracer')
778 END DO
779 END DO
780 CASE ('SAND_Ltclm')
786 END DO
787 END DO
788 CASE ('SAND_Tnudge')
794 END DO
795 END DO
796 CASE ('Hout(idsand)')
801 hout(i,ng)=lsand(itrc,ng)
802 END DO
803 END DO
804 CASE ('Hout(iSfrac)')
809 hout(i,ng)=lsand(itrc,ng)
810 END DO
811 END DO
812 CASE ('Hout(iSmass)')
817 hout(i,ng)=lsand(itrc,ng)
818 END DO
819 END DO
820#ifdef BEDLOAD
821 CASE ('Hout(iSUbld)')
824 IF (
idubld(itrc).eq.0)
THEN
825 IF (
master)
WRITE (out,30)
'idUbld'
827 RETURN
828 END IF
829 END DO
830 END DO
835 hout(i,ng)=lsand(itrc,ng)
836 END DO
837 END DO
838 CASE ('Hout(iSVbld)')
841 IF (
idvbld(itrc).eq.0)
THEN
842 IF (
master)
WRITE (out,30)
'idVbld'
844 RETURN
845 END IF
846 END DO
847 END DO
852 hout(i,ng)=lsand(itrc,ng)
853 END DO
854 END DO
855#endif
856 CASE ('Qout(idsand)')
861 qout(i,ng)=lsand(itrc,ng)
862 END DO
863 END DO
864 CASE ('Qout(iSsand)')
869 qout(i,ng)=lsand(itrc,ng)
870 END DO
871 END DO
872 CASE ('Qout(iSfrac)')
877 qout(i,ng)=lsand(itrc,ng)
878 END DO
879 END DO
880 CASE ('Qout(iSmass)')
885 qout(i,ng)=lsand(itrc,ng)
886 END DO
887 END DO
888#ifdef BEDLOAD
889 CASE ('Qout(iSUbld)')
894 qout(i,ng)=lsand(itrc,ng)
895 END DO
896 END DO
897 CASE ('Qout(iSVbld)')
902 qout(i,ng)=lsand(itrc,ng)
903 END DO
904 END DO
905#endif
906#if defined AVERAGES || \
907 (defined ad_averages && defined adjoint) || \
908 (defined rp_averages && defined tl_ioms) || \
909 (defined tl_averages && defined tangent)
910 CASE ('Aout(idsand)')
915 aout(i,ng)=lsand(itrc,ng)
916 END DO
917 END DO
918 CASE ('Aout(iSTTav)')
923 aout(i,ng)=lsand(itrc,ng)
924 END DO
925 END DO
926 CASE ('Aout(iSUTav)')
931 aout(i,ng)=lsand(itrc,ng)
932 END DO
933 END DO
934 CASE ('Aout(iSVTav)')
939 aout(i,ng)=lsand(itrc,ng)
940 END DO
941 END DO
942 CASE ('Aout(SHUTav)')
947 aout(i,ng)=lsand(itrc,ng)
948 END DO
949 END DO
950 CASE ('Aout(SHVTav)')
955 aout(i,ng)=lsand(itrc,ng)
956 END DO
957 END DO
958# ifdef BEDLOAD
959 CASE ('Aout(iSUbld)')
964 aout(i,ng)=lsand(itrc,ng)
965 END DO
966 END DO
967 CASE ('Aout(iSVbld)')
972 aout(i,ng)=lsand(itrc,ng)
973 END DO
974 END DO
975# endif
976#endif
977#ifdef DIAGNOSTICS_TS
978 CASE ('Dout(STrate)')
984 END DO
985 END DO
986 CASE ('Dout(SThadv)')
992 END DO
993 END DO
994 CASE ('Dout(STxadv)')
1000 END DO
1001 END DO
1002 CASE ('Dout(STyadv)')
1008 END DO
1009 END DO
1010 CASE ('Dout(STvadv)')
1016 END DO
1017 END DO
1018# if defined TS_DIF2 || defined TS_DIF4
1019 CASE ('Dout(SThdif)')
1025 END DO
1026 END DO
1027 CASE ('Dout(STxdif)')
1033 END DO
1034 END DO
1035 CASE ('Dout(STydif)')
1041 END DO
1042 END DO
1043# if defined MIX_GEO_TS || defined MIX_ISO_TS
1044 CASE ('Dout(STsdif)')
1050 END DO
1051 END DO
1052# endif
1053# endif
1054 CASE ('Dout(STvdif)')
1060 END DO
1061 END DO
1062#endif
1063 CASE ('Hout(ithck)')
1068 END DO
1069 CASE ('Hout(iaged)')
1074 END DO
1075 CASE ('Hout(iporo)')
1080 END DO
1081#if defined COHESIVE_BED || defined SED_BIODIFF || defined MIXED_BED
1082 CASE ('Hout(ibtcr)')
1087 END DO
1088#endif
1089 CASE ('Hout(idiff)')
1094 END DO
1095 CASE ('Hout(isd50)')
1099 hout(i,ng)=lbottom(ng)
1100 END DO
1101 CASE ('Hout(idens)')
1105 hout(i,ng)=lbottom(ng)
1106 END DO
1107 CASE ('Hout(iwsed)')
1111 hout(i,ng)=lbottom(ng)
1112 END DO
1113 CASE ('Hout(itauc)')
1117 hout(i,ng)=lbottom(ng)
1118 END DO
1119 CASE ('Hout(irlen)')
1123 hout(i,ng)=lbottom(ng)
1124 END DO
1125 CASE ('Hout(irhgt)')
1129 hout(i,ng)=lbottom(ng)
1130 END DO
1131 CASE ('Hout(ibwav)')
1135 hout(i,ng)=lbottom(ng)
1136 END DO
1137 CASE ('Hout(izdef)')
1141 hout(i,ng)=lbottom(ng)
1142 END DO
1143 CASE ('Hout(izapp)')
1147 hout(i,ng)=lbottom(ng)
1148 END DO
1149 CASE ('Hout(izNik)')
1153 hout(i,ng)=lbottom(ng)
1154 END DO
1155 CASE ('Hout(izbio)')
1159 hout(i,ng)=lbottom(ng)
1160 END DO
1161 CASE ('Hout(izbfm)')
1165 hout(i,ng)=lbottom(ng)
1166 END DO
1167 CASE ('Hout(izbld)')
1171 hout(i,ng)=lbottom(ng)
1172 END DO
1173 CASE ('Hout(izwbl)')
1177 hout(i,ng)=lbottom(ng)
1178 END DO
1179 CASE ('Hout(iactv)')
1183 hout(i,ng)=lbottom(ng)
1184 END DO
1185 CASE ('Hout(ishgt)')
1189 hout(i,ng)=lbottom(ng)
1190 END DO
1191 CASE ('Qout(ithck)')
1196 END DO
1197 CASE ('Qout(iaged)')
1202 END DO
1203 CASE ('Qout(iporo)')
1208 END DO
1209#if defined COHESIVE_BED || defined SED_BIODIFF || defined MIXED_BED
1210 CASE ('Qout(ibtcr)')
1215 END DO
1216#endif
1217 CASE ('Qout(idiff)')
1222 END DO
1223 CASE ('Qout(isd50)')
1227 qout(i,ng)=lbottom(ng)
1228 END DO
1229 CASE ('Qout(idens)')
1233 qout(i,ng)=lbottom(ng)
1234 END DO
1235 CASE ('Qout(iwsed)')
1239 qout(i,ng)=lbottom(ng)
1240 END DO
1241 CASE ('Qout(itauc)')
1245 qout(i,ng)=lbottom(ng)
1246 END DO
1247 CASE ('Qout(irlen)')
1251 qout(i,ng)=lbottom(ng)
1252 END DO
1253 CASE ('Qout(irhgt)')
1257 qout(i,ng)=lbottom(ng)
1258 END DO
1259 CASE ('Qout(ibwav)')
1263 qout(i,ng)=lbottom(ng)
1264 END DO
1265 CASE ('Qout(izdef)')
1269 qout(i,ng)=lbottom(ng)
1270 END DO
1271 CASE ('Qout(izapp)')
1275 qout(i,ng)=lbottom(ng)
1276 END DO
1277 CASE ('Qout(izNik)')
1281 qout(i,ng)=lbottom(ng)
1282 END DO
1283 CASE ('Qout(izbio)')
1287 qout(i,ng)=lbottom(ng)
1288 END DO
1289 CASE ('Qout(izbfm)')
1293 qout(i,ng)=lbottom(ng)
1294 END DO
1295 CASE ('Qout(izbld)')
1299 qout(i,ng)=lbottom(ng)
1300 END DO
1301 CASE ('Qout(izwbl)')
1305 qout(i,ng)=lbottom(ng)
1306 END DO
1307 CASE ('Qout(iactv)')
1311 qout(i,ng)=lbottom(ng)
1312 END DO
1313 CASE ('Qout(ishgt)')
1317 qout(i,ng)=lbottom(ng)
1318 END DO
1319 END SELECT
1320 END IF
1321 END DO
1322 10
IF (
master)
WRITE (out,40) line
1324 RETURN
1325 20 CONTINUE
1326
1327
1328
1329
1330
1331 IF (
master.and.lwrite)
THEN
1334 WRITE (out,50) ng
1335 WRITE (out,60)
1337 WRITE (out,70) itrc,
sd50(itrc,ng),
csed(itrc,ng), &
1340 END DO
1341 WRITE (out,80)
1344 WRITE (out,70) itrc,
tau_ce(itrc,ng),
tau_cd(itrc,ng), &
1347 END DO
1348 WRITE (out,90)
1351 END DO
1355#ifdef MIXED_BED
1356 WRITE (out,130)
transc(ng)
1357 WRITE (out,140)
transn(ng)
1358#endif
1363 & i, 'Turning ON sponge on tracer ', i, &
1365 ELSE
1367 & i, 'Turning OFF sponge on tracer ', i, &
1369 END IF
1370 END DO
1374 WRITE (out,150)
ltracersrc(i,ng),
'LtracerSrc', i, &
1375 & 'Turning ON point sources/Sink on tracer ', i, &
1377 ELSE
1378 WRITE (out,150)
ltracersrc(i,ng),
'LtracerSrc', i, &
1379 & 'Turning OFF point sources/Sink on tracer ', i, &
1381 END IF
1382 END DO
1386 WRITE (out,150)
ltracerclm(i,ng),
'LtracerCLM', i, &
1387 & 'Turning ON processing of climatology tracer ', i, &
1389 ELSE
1390 WRITE (out,150)
ltracerclm(i,ng),
'LtracerCLM', i, &
1391 & 'Turning OFF processing of climatology tracer ', i, &
1393 END IF
1394 END DO
1398 WRITE (out,150)
lnudgetclm(i,ng),
'LnudgeTCLM', i, &
1399 & 'Turning ON nudging of climatology tracer ', i, &
1401 ELSE
1402 WRITE (out,150)
lnudgetclm(i,ng),
'LnudgeTCLM', i, &
1403 & 'Turning OFF nudging of climatology tracer ', i, &
1405 END IF
1406 END DO
1407 IF ((
nhis(ng).gt.0).and.any(
hout(:,ng)))
THEN
1408 WRITE (out,'(1x)')
1411 IF (
hout(i,ng))
WRITE (out,160)
hout(i,ng), &
1412 & 'Hout(idTvar)', &
1413 &
'Write out sediment', itrc, trim(
vname(1,i))
1414 END DO
1417 IF (
hout(i,ng))
WRITE (out,160)
hout(i,ng), &
1418 & 'Hout(idfrac)', &
1419 & 'Write out bed fraction, sediment ', itrc, &
1421 END DO
1424 IF (
hout(i,ng))
WRITE (out,160)
hout(i,ng), &
1425 & 'Hout(idfrac)', &
1426 & 'Write out mass, sediment ', itrc, &
1428 END DO
1429#ifdef BEDLOAD
1432 IF (
hout(i,ng))
WRITE (out,160)
hout(i,ng), &
1433 & 'Hout(idUbld)', &
1434 & 'Write out bed load at U-points, sediment ', itrc, &
1437 IF (
hout(i,ng))
WRITE (out,160)
hout(i,ng), &
1438 & 'Hout(idVbld)', &
1439 & 'Write out bed load at V-points, sediment ', itrc, &
1441 END DO
1442#endif
1445 IF (
hout(i,ng))
WRITE (out,160)
hout(i,ng), &
1446 & 'Hout(idSbed)', &
1447 &
'Write out BED property ', itrc, trim(
vname(1,i))
1448 END DO
1451 IF (
hout(i,ng))
WRITE (out,160)
hout(i,ng), &
1452 & 'Hout(idBott)', &
1453 &
'Write out BOTTOM property ', itrc, trim(
vname(1,i))
1454 END DO
1455 END IF
1456 IF ((
nqck(ng).gt.0).and.any(
qout(:,ng)))
THEN
1457 WRITE (out,'(1x)')
1460 IF (
qout(i,ng))
WRITE (out,160)
qout(i,ng), &
1461 & 'Qout(idTvar)', &
1462 &
'Write out sediment', itrc, trim(
vname(1,i))
1463 END DO
1466 IF (
qout(i,ng))
WRITE (out,160)
qout(i,ng), &
1467 & 'Qout(idTvar)', &
1468 &
'Write out surface sediment', itrc, trim(
vname(1,i))
1469 END DO
1472 IF (
qout(i,ng))
WRITE (out,160)
qout(i,ng), &
1473 & 'Qout(idfrac)', &
1474 & 'Write out bed fraction, sediment ', itrc, &
1476 END DO
1479 IF (
qout(i,ng))
WRITE (out,160)
qout(i,ng), &
1480 & 'Qout(idfrac)', &
1481 & 'Write out mass, sediment ', itrc, &
1483 END DO
1484#ifdef BEDLOAD
1487 IF (
qout(i,ng))
WRITE (out,160)
qout(i,ng), &
1488 & 'Qout(idUbld)', &
1489 & 'Write out bed load at U-points, sediment ', itrc, &
1492 IF (
qout(i,ng))
WRITE (out,160)
qout(i,ng), &
1493 & 'Qout(idVbld)', &
1494 & 'Write out bed load at V-points, sediment ', itrc, &
1496 END DO
1497#endif
1500 IF (
qout(i,ng))
WRITE (out,160)
qout(i,ng), &
1501 & 'Qout(idSbed)', &
1502 &
'Write out BED property ', itrc, trim(
vname(1,i))
1503 END DO
1506 IF (
qout(i,ng))
WRITE (out,160)
qout(i,ng), &
1507 & 'Qout(idBott)', &
1508 &
'Write out BOTTOM property ', itrc, trim(
vname(1,i))
1509 END DO
1510 END IF
1511#if defined AVERAGES || \
1512 (defined ad_averages && defined adjoint) || \
1513 (defined rp_averages && defined tl_ioms) || \
1514 (defined tl_averages && defined tangent)
1515 IF ((
navg(ng).gt.0).and.any(
aout(:,ng)))
THEN
1516 WRITE (out,'(1x)')
1519 IF (
aout(i,ng))
WRITE (out,160)
aout(i,ng), &
1520 & 'Aout(idTvar)', &
1521 & 'Write out averaged sediment', itrc, &
1523 END DO
1528 & 'Write out averaged <t*t> for tracer ', i, &
1530 END DO
1535 & 'Write out averaged <u*t> for tracer ', i, &
1537 END DO
1542 & 'Write out averaged <v*t> for tracer ', i, &
1544 END DO
1549 & 'Write out averaged <Huon*t> for tracer ', i, &
1551 END DO
1556 & 'Write out averaged <Hvom*t> for tracer ', i, &
1558 END DO
1559# ifdef BEDLOAD
1562 IF (
aout(i,ng))
WRITE (out,160)
aout(i,ng), &
1563 & 'Aout(idUbld)', &
1564 & 'Write out U-bedload, sediment ', itrc, &
1567 IF (
aout(i,ng))
WRITE (out,160)
aout(i,ng), &
1568 & 'Aout(idVbld)', &
1569 & 'Write out V-bedload, sediment ', itrc, &
1571 END DO
1572# endif
1573 END IF
1574#endif
1575#ifdef DIAGNOSTICS_TS
1576 IF ((
ndia(ng).gt.0).and.any(
dout(:,ng)))
THEN
1577 WRITE (out,'(1x)')
1581 & WRITE (out,160) .true., 'Dout(iTrate)', &
1582 & 'Write out rate of change of tracer ', itrc, &
1584 END DO
1588 & WRITE (out,160) .true., 'Dout(iThadv)', &
1589 & 'Write out horizontal advection, tracer ', itrc, &
1591 END DO
1595 & WRITE (out,160) .true., 'Dout(iTxadv)', &
1596 & 'Write out horizontal X-advection, tracer ', itrc, &
1598 END DO
1602 & WRITE (out,160) .true., 'Dout(iTyadv)', &
1603 & 'Write out horizontal Y-advection, tracer ', itrc, &
1605 END DO
1609 & WRITE (out,160) .true., 'Dout(iTvadv)', &
1610 & 'Write out vertical advection, tracer ', itrc, &
1612 END DO
1613# if defined TS_DIF2 || defined TS_DIF4
1617 & WRITE (out,160) .true., 'Dout(iThdif)', &
1618 & 'Write out horizontal diffusion, tracer ', itrc, &
1620 END DO
1624 & WRITE (out,160) .true., 'Dout(iTxdif)', &
1625 & 'Write out horizontal X-diffusion, tracer ', itrc, &
1627 END DO
1631 & WRITE (out,160) .true., 'Dout(iTydif)', &
1632 & 'Write out horizontal Y-diffusion, tracer ', itrc, &
1634 END DO
1635# if defined MIX_GEO_TS || defined MIX_ISO_TS
1639 & WRITE (out,160) .true., 'Dout(iTsdif)', &
1640 & 'Write out horizontal S-diffusion, tracer ', itrc, &
1642 END DO
1643# endif
1644# endif
1648 & WRITE (out,160) .true., 'Dout(iTvdif)', &
1649 & 'Write out vertical diffusion, tracer ', itrc, &
1651 END DO
1652 END IF
1653#endif
1654 END IF
1655 END DO
1656 END IF
1657
1658
1659
1660
1661
1669#ifdef ADJOINT
1671#endif
1672#if defined TANGENT || defined TL_IOMS
1674#endif
1677 ELSE
1679 END IF
1680 END DO
1681 END DO
1682
1683 30 FORMAT (/,' READ_SedPar - variable info not yet loaded, ', a)
1684 40 FORMAT (/,' READ_SedPar - Error while processing line: ',/,a)
1685 50 FORMAT (/,/,' Sediment Parameters, Grid: ',i2.2, &
1686 & /, ' =============================',/)
1687 60 FORMAT (/,1x,'Size',5x,'Sd50',8x,'Csed',8x,'Srho',8x,'Wsed', &
1688 & 8x,'Erate',7x,'poros',/,1x,'Class',4x,'(mm)',7x, &
1689 & '(kg/m3)',5x,'(kg/m3)',5x,'(mm/s)',5x,'(kg/m2/s)',4x, &
1690 & '(nondim)',/)
1691 70 FORMAT (2x,i2,2x,6(1x,1p,e11.4))
1692 80 FORMAT (/,9x,'tau_ce',6x,'tau_cd',6x,'nl_tnu2',5x,'nl_tnu4',5x, &
1693 & 'Akt_bak',6x,'Tnudg',/,9x,'(N/m2)',6x,'(N/m2)',6x, &
1694 & '(m2/s)',6x,'(m4/s)',7x,'(m2/s)',6x,'(day)',/)
1695 90 FORMAT (/,9x,'morph_fac',/,9x,'(nondim)',/)
1696 100 FORMAT (/,' New bed layer formed when deposition exceeds ',e12.5, &
1697 & ' (m).')
1698 110 FORMAT (' Two first layers are combined when 2nd layer smaller ', &
1699 & 'than ',e12.5,' (m).')
1700 120 FORMAT (' Rate coefficient for bed load transport = ',e12.5,/)
1701 130 FORMAT (' Transition for mixed sediment =',e12.5,/)
1702 140 FORMAT (' Transition for cohesive sediment =',e12.5,/)
1703 150 FORMAT (10x,l1,2x,a,'(',i2.2,')',t30,a,i2.2,':',1x,a)
1704 160 FORMAT (10x,l1,2x,a,t29,a,i2.2,':',1x,a)
1705
1706 RETURN
integer function decode_line(line_text, keyword, nval, cval, rval)
integer function load_lbc(ninp, vinp, line, nline, ifield, igrid, itrcstr, itrcend, svname, s)
integer function load_tadv(ninp, vinp, line, nline, itrc, igrid, itracer, itrcstr, itrcend, svname, s)
integer, dimension(:), allocatable idttav
logical, dimension(:,:), allocatable hout
integer, dimension(:), allocatable ihvtav
integer, dimension(:), allocatable ihutav
integer, dimension(:), allocatable idutav
integer, dimension(:), allocatable idsurt
integer, dimension(:), allocatable idtvar
integer, dimension(:), allocatable istvar
logical, dimension(:,:), allocatable qout
character(len=maxlen), dimension(6, 0:nv) vname
integer, dimension(:), allocatable idvtav
logical, dimension(:,:), allocatable dout
logical, dimension(:,:), allocatable aout
integer, dimension(:,:), allocatable iddtrc
type(t_adv), dimension(:,:), allocatable hadvection
type(t_lbc), dimension(:,:,:), allocatable ad_lbc
type(t_adv), dimension(:,:), allocatable ad_hadvection
type(t_lbc), dimension(:,:,:), allocatable lbc
type(t_adv), dimension(:,:), allocatable vadvection
type(t_adv), dimension(:,:), allocatable ad_vadvection
real(r8), dimension(:,:), allocatable tl_tnu2
logical, dimension(:,:), allocatable ltracersrc
real(r8), dimension(:,:), allocatable nl_tnu2
integer, dimension(:), allocatable nqck
real(dp), dimension(:,:), allocatable tnudg
logical, dimension(:,:), allocatable ltracersponge
real(r8), dimension(:,:), allocatable tl_tnu4
integer, dimension(:), allocatable navg
real(r8), dimension(:,:), allocatable ad_akt_fac
logical, dimension(:), allocatable lsediment
real(r8), dimension(:,:), allocatable ad_tnu2
real(r8), dimension(:,:), allocatable akt_bak
integer, dimension(:), allocatable nhis
real(r8), dimension(:,:), allocatable ad_tnu4
real(r8), dimension(:,:), allocatable nl_tnu4
logical, dimension(:,:), allocatable ltracerclm
integer, dimension(:), allocatable ndia
logical, dimension(:,:), allocatable lnudgetclm
real(r8), dimension(:,:), allocatable tl_akt_fac
integer, dimension(:), allocatable idubld
real(r8), dimension(:), allocatable bedload_coeff
real(r8), dimension(:,:), allocatable erate
integer, dimension(mbedp) idsbed
real(r8), dimension(:,:), allocatable tau_cd
real(r8), dimension(:,:), allocatable srho
integer, dimension(:), allocatable idsed
real(r8), dimension(:), allocatable tcr_max
integer, dimension(:), allocatable idfrac
real(r8), dimension(:,:), allocatable poros
integer, dimension(mbotp) idbott
real(r8), dimension(:), allocatable transn
real(r8), dimension(:,:), allocatable morph_fac
real(r8), dimension(:), allocatable newlayer_thick
real(r8), dimension(:), allocatable minlayer_thick
real(r8), dimension(:,:), allocatable sd50
real(r8), dimension(:), allocatable transc
real(r8), dimension(:), allocatable tcr_tim
real(r8), dimension(:), allocatable tcr_off
real(r8), dimension(:,:), allocatable wsed
integer, dimension(:), allocatable idvbld
integer, dimension(:), allocatable idbmas
real(r8), dimension(:), allocatable tcr_min
real(r8), dimension(:,:), allocatable tau_ce
real(r8), dimension(:), allocatable tcr_slp
real(r8), dimension(:,:), allocatable csed