23 logical,
intent(in) :: Lwrite
24 integer,
intent(in) :: model, inp, out
29 integer :: iTrcStr, iTrcEnd
30 integer :: i, ifield, igrid, itracer, itrc, ng, nline, status
32 logical,
dimension(Ngrids) :: Lbed
33 logical,
dimension(Ngrids) :: Lbottom
34 logical,
dimension(NCS,Ngrids) :: Lmud
35 logical,
dimension(NNS,Ngrids) :: Lsand
37 real(r8),
dimension(Ngrids) :: Rbed
38 real(r8),
dimension(NCS,Ngrids) :: Rmud
39 real(r8),
dimension(NNS,Ngrids) :: Rsand
41 real(dp),
dimension(nRval) :: Rval
43 character (len=40 ) :: KeyWord
44 character (len=256) :: line
45 character (len=256),
dimension(nCval) :: Cval
62 READ (inp,
'(a)',err=10,
END=20) line
63 status=decode_line(line, keyword, nval, cval, rval)
65 SELECT CASE (trim(keyword))
67 npts=load_l(nval, cval, ngrids, lsediment)
68 CASE (
'NEWLAYER_THICK')
69 npts=load_r(nval, rval, ngrids, rbed)
71 newlayer_thick(ng)=rbed(ng)
73 CASE (
'MINLAYER_THICK')
74 npts=load_r(nval, rval, ngrids, rbed)
76 minlayer_thick(ng)=rbed(ng)
80 npts=load_r(nval, rval, ngrids, rbed)
85 npts=load_r(nval, rval, ngrids, rbed)
90 CASE (
'BEDLOAD_COEFF')
91 npts=load_r(nval, rval, ngrids, rbed)
93 bedload_coeff(ng)=rbed(ng)
96 IF (itracer.lt.nst)
THEN
102 npts=load_tadv(nval, cval, line, nline, itrc, igrid, &
103 & itracer, idsed(itrcstr), idsed(itrcend), &
104 & vname(1,idtvar(itrc)), &
107 IF (itracer.lt.nst)
THEN
113 npts=load_tadv(nval, cval, line, nline, itrc, igrid, &
114 & itracer, idsed(itrcstr), idsed(itrcend), &
115 & vname(1,idtvar(itrc)), &
117#if defined ADJOINT || defined TANGENT || defined TL_IOMS
118 CASE (
'ad_Hadvection')
119 IF (itracer.lt.nst)
THEN
125 npts=load_tadv(nval, cval, line, nline, itrc, igrid, &
126 & itracer, idsed(itrcstr), idsed(itrcend), &
127 & vname(1,idtvar(itrc)), &
130 IF (itracer.lt.(nst)
THEN
136 npts=load_tadv(nval, cval, line, nline, itrc, igrid, &
137 & itracer, idsed(itrcstr), idsed(itrcend), &
138 & vname(1,idtvar(itrc)), &
142 IF (itracer.lt.nst)
THEN
147 ifield=istvar(idsed(itracer))
148 npts=load_lbc(nval, cval, line, nline, ifield, igrid, &
149 & idsed(itrcstr), idsed(itrcend), &
150 & vname(1,idtvar(idsed(itracer))), lbc)
151#if defined ADJOINT || defined TANGENT || defined TL_IOMS
152 CASE (
'ad_LBC(isTvar)')
153 IF (itracer.lt.nst)
THEN
158 ifield=istvar(idsed(itracer))
159 npts=load_lbc(nval, cval, line, nline, ifield, igrid, &
160 & idsed(itrcstr), idsed(itrcend), &
161 & vname(1,idtvar(idsed(itracer))), ad_lbc)
164 IF (.not.
allocated(sd50))
allocate (sd50(nst,ngrids))
165 npts=load_r(nval, rval, ncs, ngrids, rmud)
168 sd50(itrc,ng)=rmud(itrc,ng)
172 IF (.not.
allocated(csed))
allocate (csed(nst,ngrids))
173 npts=load_r(nval, rval, ncs, ngrids, rmud )
176 csed(itrc,ng)=rmud(itrc,ng)
180 IF (.not.
allocated(srho))
allocate (srho(nst,ngrids))
181 npts=load_r(nval, rval, ncs, ngrids, rmud)
184 srho(itrc,ng)=rmud(itrc,ng)
188 IF (.not.
allocated(wsed))
allocate (wsed(nst,ngrids))
189 npts=load_r(nval, rval, ncs, ngrids, rmud)
192 wsed(itrc,ng)=rmud(itrc,ng)
196 IF (.not.
allocated(erate))
allocate (erate(nst,ngrids))
197 npts=load_r(nval, rval, ncs, ngrids, rmud)
200 erate(itrc,ng)=rmud(itrc,ng)
204 IF (.not.
allocated(tau_ce))
allocate (tau_ce(nst,ngrids))
205 npts=load_r(nval, rval, ncs, ngrids, rmud)
208 tau_ce(itrc,ng)=rmud(itrc,ng)
212 IF (.not.
allocated(tau_cd))
allocate (tau_cd(nst,ngrids))
213 npts=load_r(nval, rval, ncs, ngrids, rmud)
216 tau_cd(itrc,ng)=rmud(itrc,ng)
220 IF (.not.
allocated(poros))
allocate (poros(nst,ngrids))
221 npts=load_r(nval, rval, ncs, ngrids, rmud)
224 poros(itrc,ng)=rmud(itrc,ng)
228 npts=load_r(nval, rval, ncs, ngrids, rmud)
232 nl_tnu2(i,ng)=rmud(itrc,ng)
236 npts=load_r(nval, rval, ncs, ngrids, rmud)
240 nl_tnu4(i,ng)=rmud(itrc,ng)
244 npts=load_r(nval, rval, ncs, ngrids, rmud)
248 ad_tnu2(i,ng)=rmud(itrc,ng)
249 tl_tnu2(i,ng)=rmud(itrc,ng)
253 npts=load_r(nval, rval, ncs, ngrids, rmud)
257 ad_tnu4(i,ng)=rmud(itrc,ng)
258 tl_tnu4(i,ng)=rmud(itrc,ng)
262 npts=load_l(nval, cval, ncs, ngrids, lmud)
266 ltracersponge(i,ng)=lmud(itrc,ng)
270 npts=load_r(nval, rval, ncs, ngrids, rmud)
274 akt_bak(i,ng)=rmud(itrc,ng)
278 npts=load_r(nval, rval, ncs, ngrids, rmud)
282 ad_akt_fac(i,ng)=rmud(itrc,ng)
283 tl_akt_fac(i,ng)=rmud(itrc,ng)
287 npts=load_r(nval, rval, ncs, ngrids, rmud)
291 tnudg(i,ng)=rmud(itrc,ng)
294 CASE (
'MUD_MORPH_FAC')
295 IF (.not.
allocated(morph_fac))
THEN
296 allocate (morph_fac(nst,ngrids))
298 npts=load_r(nval, rval, ncs, ngrids, rmud)
301 morph_fac(itrc,ng)=rmud(itrc,ng)
304#if defined COHESIVE_BED || defined MIXED_BED
305 CASE (
'MUD_TAUCR_MIN')
306 npts=load_r(nval, rval, ngrids, rbed)
310 CASE (
'MUD_TAUCR_MAX')
311 npts=load_r(nval, rval, ngrids, rbed)
315 CASE (
'MUD_TAUCR_SLOPE')
316 npts=load_r(nval, rval, ngrids, rbed)
320 CASE (
'MUD_TAUCR_OFF')
321 npts=load_r(nval, rval, ngrids, rbed)
325 CASE (
'MUD_TAUCR_TIME')
326 npts=load_r(nval, rval, ngrids, rbed)
331 CASE (
'MUD_Ltsrc',
'MUD_Ltracer')
332 npts=load_l(nval, cval, ncs, ngrids, lmud)
336 ltracersrc(i,ng)=lmud(itrc,ng)
340 npts=load_l(nval, cval, ncs, ngrids, lmud)
344 ltracerclm(i,ng)=lmud(itrc,ng)
348 npts=load_l(nval, cval, ncs, ngrids, lmud)
352 lnudgetclm(i,ng)=lmud(itrc,ng)
356 npts=load_l(nval, cval, ncs, ngrids, lmud)
359 i=idtvar(idsed(itrc))
360 hout(i,ng)=lmud(itrc,ng)
363 CASE (
'Hout(iMfrac)')
364 npts=load_l(nval, cval, ncs, ngrids, lmud)
368 hout(i,ng)=lmud(itrc,ng)
371 CASE (
'Hout(iMmass)')
372 npts=load_l(nval, cval, ncs, ngrids, lmud)
376 hout(i,ng)=lmud(itrc,ng)
380 CASE (
'Hout(iMUbld)')
383 IF (idubld(itrc).eq.0)
THEN
384 IF (master)
WRITE (out,30)
'idUbld'
390 npts=load_l(nval, cval, ncs, ngrids, lmud)
394 hout(i,ng)=lmud(itrc,ng)
397 CASE (
'Hout(iMVbld)')
400 IF (idvbld(itrc).eq.0)
THEN
401 IF (master)
WRITE (out,30)
'idVbld'
407 npts=load_l(nval, cval, ncs, ngrids, lmud)
411 hout(i,ng)=lmud(itrc,ng)
416 npts=load_l(nval, cval, ncs, ngrids, lmud)
419 i=idtvar(idsed(itrc))
420 qout(i,ng)=lmud(itrc,ng)
424 npts=load_l(nval, cval, ncs, ngrids, lmud)
427 i=idsurt(idsed(itrc))
428 qout(i,ng)=lmud(itrc,ng)
431 CASE (
'Qout(iMfrac)')
432 npts=load_l(nval, cval, ncs, ngrids, lmud)
436 qout(i,ng)=lmud(itrc,ng)
439 CASE (
'Qout(iMmass)')
440 npts=load_l(nval, cval, ncs, ngrids, lmud)
444 qout(i,ng)=lmud(itrc,ng)
448 CASE (
'Qout(iMUbld)')
449 npts=load_l(nval, cval, ncs, ngrids, lmud)
453 qout(i,ng)=lmud(itrc,ng)
456 CASE (
'Qout(iMVbld)')
457 npts=load_l(nval, cval, ncs, ngrids, lmud)
461 qout(i,ng)=lmud(itrc,ng)
465#if defined AVERAGES || \
466 (defined ad_averages && defined adjoint) || \
467 (defined rp_averages && defined tl_ioms) || \
468 (defined tl_averages && defined tangent)
470 npts=load_l(nval, cval, ncs, ngrids, lmud)
473 i=idtvar(idsed(itrc))
474 aout(i,ng)=lmud(itrc,ng)
477 CASE (
'Aout(iMTTav)')
478 npts=load_l(nval, cval, ncs, ngrids, lmud)
481 i=idttav(idsed(itrc))
482 aout(i,ng)=lmud(itrc,ng)
485 CASE (
'Aout(iMUTav)')
486 npts=load_l(nval, cval, ncs, ngrids, lmud)
489 i=idutav(idsed(itrc))
490 aout(i,ng)=lmud(itrc,ng)
493 CASE (
'Aout(iMVTav)')
494 npts=load_l(nval, cval, ncs, ngrids, lmud)
497 i=idvtav(idsed(itrc))
498 aout(i,ng)=lmud(itrc,ng)
501 CASE (
'Aout(MHUTav)')
502 npts=load_l(nval, cval, ncs, ngrids, lmud)
505 i=ihutav(idsed(itrc))
506 aout(i,ng)=lmud(itrc,ng)
509 CASE (
'Aout(MHVTav)')
510 npts=load_l(nval, cval, ncs, ngrids, lmud)
513 i=ihvtav(idsed(itrc))
514 aout(i,ng)=lmud(itrc,ng)
518 CASE (
'Aout(iMUbld)')
519 npts=load_l(nval, cval, ncs, ngrids, lmud)
523 aout(i,ng)=lmud(itrc,ng)
526 CASE (
'Aout(iMVbld)')
527 npts=load_l(nval, cval, ncs, ngrids, lmud)
531 aout(i,ng)=lmud(itrc,ng)
537 CASE (
'Dout(MTrate)')
538 npts=load_l(nval, cval, ncs, ngrids, lmud)
542 dout(iddtrc(itrc,itrate),ng)=lmud(i,ng)
545 CASE (
'Dout(MThadv)')
546 npts=load_l(nval, cval, ncs, ngrids, lmud)
550 dout(iddtrc(itrc,ithadv),ng)=lmud(i,ng)
553 CASE (
'Dout(MTxadv)')
554 npts=load_l(nval, cval, ncs, ngrids, lmud)
558 dout(iddtrc(itrc,itxadv),ng)=lmud(i,ng)
561 CASE (
'Dout(MTyadv)')
562 npts=load_l(nval, cval, ncs, ngrids, lmud)
566 dout(iddtrc(itrc,ityadv),ng)=lmud(i,ng)
569 CASE (
'Dout(MTvadv)')
570 npts=load_l(nval, cval, ncs, ngrids, lmud)
574 dout(iddtrc(itrc,itvadv),ng)=lmud(i,ng)
577# if defined TS_DIF2 || defined TS_DIF4
578 CASE (
'Dout(MThdif)')
579 npts=load_l(nval, cval, ncs, ngrids, lmud)
583 dout(iddtrc(itrc,ithdif),ng)=lmud(i,ng)
586 CASE (
'Dout(MTxdif)')
587 npts=load_l(nval, cval, ncs, ngrids, lmud)
591 dout(iddtrc(itrc,itxdif),ng)=lmud(i,ng)
594 CASE (
'Dout(MTydif)')
595 npts=load_l(nval, cval, ncs, ngrids, lmud)
599 dout(iddtrc(itrc,itydif),ng)=lmud(i,ng)
602# if defined MIX_GEO_TS || defined MIX_ISO_TS
603 CASE (
'Dout(MTsdif)')
604 npts=load_l(nval, cval, ncs, ngrids, lmud)
608 dout(iddtrc(itrc,itsdif),ng)=lmud(i,ng)
613 CASE (
'Dout(MTvdif)')
614 npts=load_l(nval, cval, ncs, ngrids, lmud)
618 dout(iddtrc(itrc,itvdif),ng)=lmud(i,ng)
623 IF (.not.
allocated(sd50))
allocate (sd50(nst,ngrids))
624 npts=load_r(nval, rval, nns, ngrids, rsand)
628 sd50(i,ng)=rsand(itrc,ng)
632 IF (.not.
allocated(csed))
allocate (csed(nst,ngrids))
633 npts=load_r(nval, rval, nns, ngrids, rsand )
637 csed(i,ng)=rsand(itrc,ng)
641 IF (.not.
allocated(srho))
allocate (srho(nst,ngrids))
642 npts=load_r(nval, rval, nns, ngrids, rsand)
646 srho(i,ng)=rsand(itrc,ng)
650 IF (.not.
allocated(wsed))
allocate (wsed(nst,ngrids))
651 npts=load_r(nval, rval, nns, ngrids, rsand)
655 wsed(i,ng)=rsand(itrc,ng)
659 IF (.not.
allocated(erate))
allocate (erate(nst,ngrids))
660 npts=load_r(nval, rval, nns, ngrids, rsand)
664 erate(i,ng)=rsand(itrc,ng)
668 IF (.not.
allocated(tau_ce))
allocate (tau_ce(nst,ngrids))
669 npts=load_r(nval, rval, nns, ngrids, rsand)
673 tau_ce(i,ng)=rsand(itrc,ng)
677 IF (.not.
allocated(tau_cd))
allocate (tau_cd(nst,ngrids))
678 npts=load_r(nval, rval, nns, ngrids, rsand)
682 tau_cd(i,ng)=rsand(itrc,ng)
686 IF (.not.
allocated(poros))
allocate (poros(nst,ngrids))
687 npts=load_r(nval, rval, nns, ngrids, rsand)
691 poros(i,ng)=rsand(itrc,ng)
695 npts=load_r(nval, rval, nns, ngrids, rsand)
699 nl_tnu2(i,ng)=rsand(itrc,ng)
703 npts=load_r(nval, rval, nns, ngrids, rsand)
707 nl_tnu4(i,ng)=rsand(itrc,ng)
710 CASE (
'ad_SAND_TNU2')
711 npts=load_r(nval, rval, nns, ngrids, rsand)
715 ad_tnu2(i,ng)=rsand(itrc,ng)
716 tl_tnu2(i,ng)=rsand(itrc,ng)
719 CASE (
'ad_SAND_TNU4')
720 npts=load_r(nval, rval, nns, ngrids, rsand)
724 ad_tnu4(i,ng)=rsand(itrc,ng)
725 tl_tnu4(i,ng)=rsand(itrc,ng)
729 npts=load_l(nval, cval, nns, ngrids, lsand)
733 ltracersponge(i,ng)=lsand(itrc,ng)
736 CASE (
'SAND_AKT_BAK')
737 npts=load_r(nval, rval, nns, ngrids, rsand)
741 akt_bak(i,ng)=rsand(itrc,ng)
744 CASE (
'SAND_AKT_fac')
745 npts=load_r(nval, rval, nns, ngrids, rsand)
749 ad_akt_fac(i,ng)=rsand(itrc,ng)
750 tl_akt_fac(i,ng)=rsand(itrc,ng)
754 npts=load_r(nval, rval, nns, ngrids, rsand)
758 tnudg(i,ng)=rsand(itrc,ng)
761 CASE (
'SAND_MORPH_FAC')
762 IF (.not.
allocated(morph_fac))
THEN
763 allocate (morph_fac(nst,ngrids))
765 npts=load_r(nval, rval, nns, ngrids, rsand)
769 morph_fac(i,ng)=rsand(itrc,ng)
772 CASE (
'SAND_Ltsrc',
'SAND_Ltracer')
773 npts=load_l(nval, cval, nns, ngrids, lsand)
777 ltracersrc(i,ng)=lsand(itrc,ng)
781 npts=load_l(nval, cval, nns, ngrids, lsand)
785 ltracerclm(i,ng)=lsand(itrc,ng)
789 npts=load_l(nval, cval, nns, ngrids, lsand)
793 lnudgetclm(i,ng)=lsand(itrc,ng)
796 CASE (
'Hout(idsand)')
797 npts=load_l(nval, cval, nns, ngrids, lsand)
800 i=idtvar(idsed(ncs+itrc))
801 hout(i,ng)=lsand(itrc,ng)
804 CASE (
'Hout(iSfrac)')
805 npts=load_l(nval, cval, nns, ngrids, lsand)
809 hout(i,ng)=lsand(itrc,ng)
812 CASE (
'Hout(iSmass)')
813 npts=load_l(nval, cval, nns, ngrids, lsand)
817 hout(i,ng)=lsand(itrc,ng)
821 CASE (
'Hout(iSUbld)')
824 IF (idubld(itrc).eq.0)
THEN
825 IF (master)
WRITE (out,30)
'idUbld'
831 npts=load_l(nval, cval, nns, ngrids, lsand)
835 hout(i,ng)=lsand(itrc,ng)
838 CASE (
'Hout(iSVbld)')
841 IF (idvbld(itrc).eq.0)
THEN
842 IF (master)
WRITE (out,30)
'idVbld'
848 npts=load_l(nval, cval, nns, ngrids, lsand)
852 hout(i,ng)=lsand(itrc,ng)
856 CASE (
'Qout(idsand)')
857 npts=load_l(nval, cval, nns, ngrids, lsand)
860 i=idtvar(idsed(ncs+itrc))
861 qout(i,ng)=lsand(itrc,ng)
864 CASE (
'Qout(iSsand)')
865 npts=load_l(nval, cval, nns, ngrids, lsand)
868 i=idsurt(idsed(ncs+itrc))
869 qout(i,ng)=lsand(itrc,ng)
872 CASE (
'Qout(iSfrac)')
873 npts=load_l(nval, cval, nns, ngrids, lsand)
877 qout(i,ng)=lsand(itrc,ng)
880 CASE (
'Qout(iSmass)')
881 npts=load_l(nval, cval, nns, ngrids, lsand)
885 qout(i,ng)=lsand(itrc,ng)
889 CASE (
'Qout(iSUbld)')
890 npts=load_l(nval, cval, nns, ngrids, lsand)
894 qout(i,ng)=lsand(itrc,ng)
897 CASE (
'Qout(iSVbld)')
898 npts=load_l(nval, cval, nns, ngrids, lsand)
902 qout(i,ng)=lsand(itrc,ng)
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)')
911 npts=load_l(nval, cval, nns, ngrids, lsand)
914 i=idtvar(idsed(ncs+itrc))
915 aout(i,ng)=lsand(itrc,ng)
918 CASE (
'Aout(iSTTav)')
919 npts=load_l(nval, cval, nns, ngrids, lsand)
922 i=idttav(idsed(ncs+itrc))
923 aout(i,ng)=lsand(itrc,ng)
926 CASE (
'Aout(iSUTav)')
927 npts=load_l(nval, cval, nns, ngrids, lsand)
930 i=idutav(idsed(ncs+itrc))
931 aout(i,ng)=lsand(itrc,ng)
934 CASE (
'Aout(iSVTav)')
935 npts=load_l(nval, cval, nns, ngrids, lsand)
938 i=idvtav(idsed(ncs+itrc))
939 aout(i,ng)=lsand(itrc,ng)
942 CASE (
'Aout(SHUTav)')
943 npts=load_l(nval, cval, nns, ngrids, lsand)
946 i=ihutav(idsed(ncs+itrc))
947 aout(i,ng)=lsand(itrc,ng)
950 CASE (
'Aout(SHVTav)')
951 npts=load_l(nval, cval, nns, ngrids, lsand)
954 i=ihvtav(idsed(ncs+itrc))
955 aout(i,ng)=lsand(itrc,ng)
959 CASE (
'Aout(iSUbld)')
960 npts=load_l(nval, cval, nns, ngrids, lsand)
964 aout(i,ng)=lsand(itrc,ng)
967 CASE (
'Aout(iSVbld)')
968 npts=load_l(nval, cval, nns, ngrids, lsand)
972 aout(i,ng)=lsand(itrc,ng)
978 CASE (
'Dout(STrate)')
979 npts=load_l(nval, cval, nns, ngrids, lsand)
983 dout(iddtrc(itrc,itrate),ng)=lsand(i,ng)
986 CASE (
'Dout(SThadv)')
987 npts=load_l(nval, cval, nns, ngrids, lsand)
991 dout(iddtrc(itrc,ithadv),ng)=lsand(i,ng)
994 CASE (
'Dout(STxadv)')
995 npts=load_l(nval, cval, nns, ngrids, lsand)
999 dout(iddtrc(itrc,itxadv),ng)=lsand(i,ng)
1002 CASE (
'Dout(STyadv)')
1003 npts=load_l(nval, cval, nns, ngrids, lsand)
1007 dout(iddtrc(itrc,ityadv),ng)=lsand(i,ng)
1010 CASE (
'Dout(STvadv)')
1011 npts=load_l(nval, cval, nns, ngrids, lsand)
1015 dout(iddtrc(itrc,itvadv),ng)=lsand(i,ng)
1018# if defined TS_DIF2 || defined TS_DIF4
1019 CASE (
'Dout(SThdif)')
1020 npts=load_l(nval, cval, nns, ngrids, lsand)
1024 dout(iddtrc(itrc,ithdif),ng)=lsand(i,ng)
1027 CASE (
'Dout(STxdif)')
1028 npts=load_l(nval, cval, nns, ngrids, lsand)
1032 dout(iddtrc(itrc,itxdif),ng)=lsand(i,ng)
1035 CASE (
'Dout(STydif)')
1036 npts=load_l(nval, cval, nns, ngrids, lsand)
1040 dout(iddtrc(itrc,itydif),ng)=lsand(i,ng)
1043# if defined MIX_GEO_TS || defined MIX_ISO_TS
1044 CASE (
'Dout(STsdif)')
1045 npts=load_l(nval, cval, nns, ngrids, lsand)
1049 dout(iddtrc(itrc,itsdif),ng)=lsand(i,ng)
1054 CASE (
'Dout(STvdif)')
1055 npts=load_l(nval, cval, nns, ngrids, lsand)
1059 dout(iddtrc(itrc,itvdif),ng)=lsand(i,ng)
1063 CASE (
'Hout(ithck)')
1064 npts=load_l(nval, cval, ngrids, lbed)
1069 CASE (
'Hout(iaged)')
1070 npts=load_l(nval, cval, ngrids, lbed)
1075 CASE (
'Hout(iporo)')
1076 npts=load_l(nval, cval, ngrids, lbed)
1081#if defined COHESIVE_BED || defined SED_BIODIFF || defined MIXED_BED
1082 CASE (
'Hout(ibtcr)')
1083 npts=load_l(nval, cval, ngrids, lbed)
1089 CASE (
'Hout(idiff)')
1090 npts=load_l(nval, cval, ngrids, lbed)
1095 CASE (
'Hout(isd50)')
1096 npts=load_l(nval, cval, ngrids, lbottom)
1099 hout(i,ng)=lbottom(ng)
1101 CASE (
'Hout(idens)')
1102 npts=load_l(nval, cval, ngrids, lbottom)
1105 hout(i,ng)=lbottom(ng)
1107 CASE (
'Hout(iwsed)')
1108 npts=load_l(nval, cval, ngrids, lbottom)
1111 hout(i,ng)=lbottom(ng)
1113 CASE (
'Hout(itauc)')
1114 npts=load_l(nval, cval, ngrids, lbottom)
1117 hout(i,ng)=lbottom(ng)
1119 CASE (
'Hout(irlen)')
1120 npts=load_l(nval, cval, ngrids, lbottom)
1123 hout(i,ng)=lbottom(ng)
1125 CASE (
'Hout(irhgt)')
1126 npts=load_l(nval, cval, ngrids, lbottom)
1129 hout(i,ng)=lbottom(ng)
1131 CASE (
'Hout(ibwav)')
1132 npts=load_l(nval, cval, ngrids, lbottom)
1135 hout(i,ng)=lbottom(ng)
1137 CASE (
'Hout(izdef)')
1138 npts=load_l(nval, cval, ngrids, lbottom)
1141 hout(i,ng)=lbottom(ng)
1143 CASE (
'Hout(izapp)')
1144 npts=load_l(nval, cval, ngrids, lbottom)
1147 hout(i,ng)=lbottom(ng)
1149 CASE (
'Hout(izNik)')
1150 npts=load_l(nval, cval, ngrids, lbottom)
1153 hout(i,ng)=lbottom(ng)
1155 CASE (
'Hout(izbio)')
1156 npts=load_l(nval, cval, ngrids, lbottom)
1159 hout(i,ng)=lbottom(ng)
1161 CASE (
'Hout(izbfm)')
1162 npts=load_l(nval, cval, ngrids, lbottom)
1165 hout(i,ng)=lbottom(ng)
1167 CASE (
'Hout(izbld)')
1168 npts=load_l(nval, cval, ngrids, lbottom)
1171 hout(i,ng)=lbottom(ng)
1173 CASE (
'Hout(izwbl)')
1174 npts=load_l(nval, cval, ngrids, lbottom)
1177 hout(i,ng)=lbottom(ng)
1179 CASE (
'Hout(iactv)')
1180 npts=load_l(nval, cval, ngrids, lbottom)
1183 hout(i,ng)=lbottom(ng)
1185 CASE (
'Hout(ishgt)')
1186 npts=load_l(nval, cval, ngrids, lbottom)
1189 hout(i,ng)=lbottom(ng)
1191 CASE (
'Qout(ithck)')
1192 npts=load_l(nval, cval, ngrids, lbed)
1197 CASE (
'Qout(iaged)')
1198 npts=load_l(nval, cval, ngrids, lbed)
1203 CASE (
'Qout(iporo)')
1204 npts=load_l(nval, cval, ngrids, lbed)
1209#if defined COHESIVE_BED || defined SED_BIODIFF || defined MIXED_BED
1210 CASE (
'Qout(ibtcr)')
1211 npts=load_l(nval, cval, ngrids, lbed)
1217 CASE (
'Qout(idiff)')
1218 npts=load_l(nval, cval, ngrids, lbed)
1223 CASE (
'Qout(isd50)')
1224 npts=load_l(nval, cval, ngrids, lbottom)
1227 qout(i,ng)=lbottom(ng)
1229 CASE (
'Qout(idens)')
1230 npts=load_l(nval, cval, ngrids, lbottom)
1233 qout(i,ng)=lbottom(ng)
1235 CASE (
'Qout(iwsed)')
1236 npts=load_l(nval, cval, ngrids, lbottom)
1239 qout(i,ng)=lbottom(ng)
1241 CASE (
'Qout(itauc)')
1242 npts=load_l(nval, cval, ngrids, lbottom)
1245 qout(i,ng)=lbottom(ng)
1247 CASE (
'Qout(irlen)')
1248 npts=load_l(nval, cval, ngrids, lbottom)
1251 qout(i,ng)=lbottom(ng)
1253 CASE (
'Qout(irhgt)')
1254 npts=load_l(nval, cval, ngrids, lbottom)
1257 qout(i,ng)=lbottom(ng)
1259 CASE (
'Qout(ibwav)')
1260 npts=load_l(nval, cval, ngrids, lbottom)
1263 qout(i,ng)=lbottom(ng)
1265 CASE (
'Qout(izdef)')
1266 npts=load_l(nval, cval, ngrids, lbottom)
1269 qout(i,ng)=lbottom(ng)
1271 CASE (
'Qout(izapp)')
1272 npts=load_l(nval, cval, ngrids, lbottom)
1275 qout(i,ng)=lbottom(ng)
1277 CASE (
'Qout(izNik)')
1278 npts=load_l(nval, cval, ngrids, lbottom)
1281 qout(i,ng)=lbottom(ng)
1283 CASE (
'Qout(izbio)')
1284 npts=load_l(nval, cval, ngrids, lbottom)
1287 qout(i,ng)=lbottom(ng)
1289 CASE (
'Qout(izbfm)')
1290 npts=load_l(nval, cval, ngrids, lbottom)
1293 qout(i,ng)=lbottom(ng)
1295 CASE (
'Qout(izbld)')
1296 npts=load_l(nval, cval, ngrids, lbottom)
1299 qout(i,ng)=lbottom(ng)
1301 CASE (
'Qout(izwbl)')
1302 npts=load_l(nval, cval, ngrids, lbottom)
1305 qout(i,ng)=lbottom(ng)
1307 CASE (
'Qout(iactv)')
1308 npts=load_l(nval, cval, ngrids, lbottom)
1311 qout(i,ng)=lbottom(ng)
1313 CASE (
'Qout(ishgt)')
1314 npts=load_l(nval, cval, ngrids, lbottom)
1317 qout(i,ng)=lbottom(ng)
1322 10
IF (master)
WRITE (out,40) line
1331 IF (master.and.lwrite)
THEN
1333 IF (lsediment(ng))
THEN
1337 WRITE (out,70) itrc, sd50(itrc,ng), csed(itrc,ng), &
1338 & srho(itrc,ng), wsed(itrc,ng), &
1339 & erate(itrc,ng), poros(itrc,ng)
1344 WRITE (out,70) itrc, tau_ce(itrc,ng), tau_cd(itrc,ng), &
1345 & nl_tnu2(i,ng), nl_tnu4(i,ng), &
1346 & akt_bak(i,ng), tnudg(i,ng)
1350 WRITE (out,70) itrc, morph_fac(itrc,ng)
1352 WRITE (out,100) newlayer_thick(ng)
1353 WRITE (out,110) minlayer_thick(ng)
1354 WRITE (out,120) bedload_coeff(ng)
1356 WRITE (out,130) transc(ng)
1357 WRITE (out,140) transn(ng)
1361 IF (ltracersponge(i,ng))
THEN
1362 WRITE (out,150) ltracersponge(i,ng),
'LtracerSponge', &
1363 & i,
'Turning ON sponge on tracer ', i, &
1364 & trim(vname(1,idtvar(i)))
1366 WRITE (out,150) ltracersponge(i,ng),
'LtracerSponge', &
1367 & i,
'Turning OFF sponge on tracer ', i, &
1368 & trim(vname(1,idtvar(i)))
1373 IF (ltracersrc(i,ng))
THEN
1374 WRITE (out,150) ltracersrc(i,ng),
'LtracerSrc', i, &
1375 &
'Turning ON point sources/Sink on tracer ', i, &
1376 & trim(vname(1,idtvar(i)))
1378 WRITE (out,150) ltracersrc(i,ng),
'LtracerSrc', i, &
1379 &
'Turning OFF point sources/Sink on tracer ', i, &
1380 & trim(vname(1,idtvar(i)))
1385 IF (ltracerclm(i,ng))
THEN
1386 WRITE (out,150) ltracerclm(i,ng),
'LtracerCLM', i, &
1387 &
'Turning ON processing of climatology tracer ', i, &
1388 & trim(vname(1,idtvar(i)))
1390 WRITE (out,150) ltracerclm(i,ng),
'LtracerCLM', i, &
1391 &
'Turning OFF processing of climatology tracer ', i, &
1392 & trim(vname(1,idtvar(i)))
1397 IF (lnudgetclm(i,ng))
THEN
1398 WRITE (out,150) lnudgetclm(i,ng),
'LnudgeTCLM', i, &
1399 &
'Turning ON nudging of climatology tracer ', i, &
1400 & trim(vname(1,idtvar(i)))
1402 WRITE (out,150) lnudgetclm(i,ng),
'LnudgeTCLM', i, &
1403 &
'Turning OFF nudging of climatology tracer ', i, &
1404 & trim(vname(1,idtvar(i)))
1407 IF ((nhis(ng).gt.0).and.any(hout(:,ng)))
THEN
1410 i=idtvar(idsed(itrc))
1411 IF (hout(i,ng))
WRITE (out,160) hout(i,ng), &
1413 &
'Write out sediment', itrc, trim(vname(1,i))
1417 IF (hout(i,ng))
WRITE (out,160) hout(i,ng), &
1419 &
'Write out bed fraction, sediment ', itrc, &
1424 IF (hout(i,ng))
WRITE (out,160) hout(i,ng), &
1426 &
'Write out mass, sediment ', itrc, &
1432 IF (hout(i,ng))
WRITE (out,160) hout(i,ng), &
1434 &
'Write out bed load at U-points, sediment ', itrc, &
1437 IF (hout(i,ng))
WRITE (out,160) hout(i,ng), &
1439 &
'Write out bed load at V-points, sediment ', itrc, &
1445 IF (hout(i,ng))
WRITE (out,160) hout(i,ng), &
1447 &
'Write out BED property ', itrc, trim(vname(1,i))
1451 IF (hout(i,ng))
WRITE (out,160) hout(i,ng), &
1453 &
'Write out BOTTOM property ', itrc, trim(vname(1,i))
1456 IF ((nqck(ng).gt.0).and.any(qout(:,ng)))
THEN
1459 i=idtvar(idsed(itrc))
1460 IF (qout(i,ng))
WRITE (out,160) qout(i,ng), &
1462 &
'Write out sediment', itrc, trim(vname(1,i))
1465 i=idsurt(idsed(itrc))
1466 IF (qout(i,ng))
WRITE (out,160) qout(i,ng), &
1468 &
'Write out surface sediment', itrc, trim(vname(1,i))
1472 IF (qout(i,ng))
WRITE (out,160) qout(i,ng), &
1474 &
'Write out bed fraction, sediment ', itrc, &
1479 IF (qout(i,ng))
WRITE (out,160) qout(i,ng), &
1481 &
'Write out mass, sediment ', itrc, &
1487 IF (qout(i,ng))
WRITE (out,160) qout(i,ng), &
1489 &
'Write out bed load at U-points, sediment ', itrc, &
1492 IF (qout(i,ng))
WRITE (out,160) qout(i,ng), &
1494 &
'Write out bed load at V-points, sediment ', itrc, &
1500 IF (qout(i,ng))
WRITE (out,160) qout(i,ng), &
1502 &
'Write out BED property ', itrc, trim(vname(1,i))
1506 IF (qout(i,ng))
WRITE (out,160) qout(i,ng), &
1508 &
'Write out BOTTOM property ', itrc, trim(vname(1,i))
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
1518 i=idtvar(idsed(itrc))
1519 IF (aout(i,ng))
WRITE (out,160) aout(i,ng), &
1521 &
'Write out averaged sediment', itrc, &
1526 IF (aout(idttav(i),ng))
WRITE (out,160) &
1527 & aout(idttav(i),ng),
'Aout(idTTav)', &
1528 &
'Write out averaged <t*t> for tracer ', i, &
1529 & trim(vname(1,idtvar(i)))
1533 IF (aout(idutav(i),ng))
WRITE (out,160) &
1534 & aout(idutav(i),ng),
'Aout(idUTav)', &
1535 &
'Write out averaged <u*t> for tracer ', i, &
1536 & trim(vname(1,idtvar(i)))
1540 IF (aout(idvtav(i),ng))
WRITE (out,160) &
1541 & aout(idvtav(i),ng),
'Aout(idVTav)', &
1542 &
'Write out averaged <v*t> for tracer ', i, &
1543 & trim(vname(1,idtvar(i)))
1547 IF (aout(ihutav(i),ng))
WRITE (out,160) &
1548 & aout(ihutav(i),ng),
'Aout(iHUTav)', &
1549 &
'Write out averaged <Huon*t> for tracer ', i, &
1550 & trim(vname(1,idtvar(i)))
1554 IF (aout(ihvtav(i),ng))
WRITE (out,160) &
1555 & aout(ihvtav(i),ng),
'Aout(iHVTav)', &
1556 &
'Write out averaged <Hvom*t> for tracer ', i, &
1557 & trim(vname(1,idtvar(i)))
1562 IF (aout(i,ng))
WRITE (out,160) aout(i,ng), &
1564 &
'Write out U-bedload, sediment ', itrc, &
1567 IF (aout(i,ng))
WRITE (out,160) aout(i,ng), &
1569 &
'Write out V-bedload, sediment ', itrc, &
1575#ifdef DIAGNOSTICS_TS
1576 IF ((ndia(ng).gt.0).and.any(dout(:,ng)))
THEN
1580 IF (dout(iddtrc(itrc,itrate),ng)) &
1581 &
WRITE (out,160) .true.,
'Dout(iTrate)', &
1582 &
'Write out rate of change of tracer ', itrc, &
1583 & trim(vname(1,idtvar(itrc)))
1587 IF (dout(iddtrc(itrc,ithadv),ng)) &
1588 &
WRITE (out,160) .true.,
'Dout(iThadv)', &
1589 &
'Write out horizontal advection, tracer ', itrc, &
1590 & trim(vname(1,idtvar(itrc)))
1594 IF (dout(iddtrc(itrc,itxadv),ng)) &
1595 &
WRITE (out,160) .true.,
'Dout(iTxadv)', &
1596 &
'Write out horizontal X-advection, tracer ', itrc, &
1597 & trim(vname(1,idtvar(itrc)))
1601 IF (dout(iddtrc(itrc,ityadv),ng)) &
1602 &
WRITE (out,160) .true.,
'Dout(iTyadv)', &
1603 &
'Write out horizontal Y-advection, tracer ', itrc, &
1604 & trim(vname(1,idtvar(itrc)))
1608 IF (dout(iddtrc(itrc,itvadv),ng)) &
1609 &
WRITE (out,160) .true.,
'Dout(iTvadv)', &
1610 &
'Write out vertical advection, tracer ', itrc, &
1611 & trim(vname(1,idtvar(itrc)))
1613# if defined TS_DIF2 || defined TS_DIF4
1616 IF (dout(iddtrc(itrc,ithdif),ng)) &
1617 &
WRITE (out,160) .true.,
'Dout(iThdif)', &
1618 &
'Write out horizontal diffusion, tracer ', itrc, &
1619 & trim(vname(1,idtvar(itrc)))
1623 IF (dout(iddtrc(i,itxdif),ng)) &
1624 &
WRITE (out,160) .true.,
'Dout(iTxdif)', &
1625 &
'Write out horizontal X-diffusion, tracer ', itrc, &
1626 & trim(vname(1,idtvar(itrc)))
1630 IF (dout(iddtrc(itrc,itydif),ng)) &
1631 &
WRITE (out,160) .true.,
'Dout(iTydif)', &
1632 &
'Write out horizontal Y-diffusion, tracer ', itrc, &
1633 & trim(vname(1,idtvar(itrc)))
1635# if defined MIX_GEO_TS || defined MIX_ISO_TS
1638 IF (dout(iddtrc(itrc,itsdif),ng)) &
1639 &
WRITE (out,160) .true.,
'Dout(iTsdif)', &
1640 &
'Write out horizontal S-diffusion, tracer ', itrc, &
1641 & trim(vname(1,idtvar(itrc)))
1647 IF (dout(iddtrc(itrc,itvdif),ng)) &
1648 &
WRITE (out,160) .true.,
'Dout(iTvdif)', &
1649 &
'Write out vertical diffusion, tracer ', itrc, &
1650 & trim(vname(1,idtvar(itrc)))
1664 sd50(i,ng)=sd50(i,ng)*0.001_r8
1665 wsed(i,ng)=wsed(i,ng)*0.001_r8
1666 tau_ce(i,ng)=tau_ce(i,ng)/rho0
1667 tau_cd(i,ng)=tau_cd(i,ng)/rho0
1668 nl_tnu4(idsed(i),ng)=sqrt(abs(nl_tnu4(idsed(i),ng)))
1670 ad_tnu4(idsed(i),ng)=sqrt(abs(ad_tnu4(idsed(i),ng)))
1672#if defined TANGENT || defined TL_IOMS
1673 tl_tnu4(idsed(i),ng)=sqrt(abs(tl_tnu4(idsed(i),ng)))
1675 IF (tnudg(idsed(i),ng).gt.0.0_r8)
THEN
1676 tnudg(idsed(i),ng)=1.0_r8/(tnudg(idsed(i),ng)*86400.0_r8)
1678 tnudg(idsed(i),ng)=0.0_r8
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, &
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, &
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)