27 logical,
intent(in) :: Lwrite
28 integer,
intent(in) :: model, inp, out
33 integer :: iTrcStr, iTrcEnd
34 integer :: i, ifield, igrid, itracer, itrc, ng, nline, status
36 logical,
dimension(NBT,Ngrids) :: Ltrc
38 real(r8),
dimension(NBT,Ngrids) :: Rbio
40 real(dp),
dimension(nRval) :: Rval
42 character (len=40 ) :: KeyWord
43 character (len=256) :: line
44 character (len=256),
dimension(nCval) :: Cval
61 READ (inp,
'(a)',err=10,
END=20) line
62 status=decode_line(line, keyword, nval, cval, rval)
64 SELECT CASE (trim(keyword))
66 npts=load_l(nval, cval, ngrids, lbiology)
68 npts=load_i(nval, rval, ngrids, bioiter)
70 npts=load_r(nval, rval, ngrids, attsw)
72 npts=load_r(nval, rval, ngrids, attps)
74 npts=load_r(nval, rval, ngrids, attpl)
76 npts=load_r(nval, rval, ngrids, parfrac)
78 npts=load_r(nval, rval, ngrids, alphaps)
80 npts=load_r(nval, rval, ngrids, alphapl)
82 npts=load_r(nval, rval, ngrids, betaps)
84 npts=load_r(nval, rval, ngrids, betapl)
86 npts=load_r(nval, rval, ngrids, vmaxs)
88 npts=load_r(nval, rval, ngrids, vmaxl)
90 npts=load_r(nval, rval, ngrids, kno3s)
92 npts=load_r(nval, rval, ngrids, kno3l)
94 npts=load_r(nval, rval, ngrids, knh4s)
96 npts=load_r(nval, rval, ngrids, knh4l)
98 npts=load_r(nval, rval, ngrids, ksil)
100 npts=load_r(nval, rval, ngrids, pusais)
102 npts=load_r(nval, rval, ngrids, pusail)
104 npts=load_r(nval, rval, ngrids, kgpps)
106 npts=load_r(nval, rval, ngrids, kgppl)
108 npts=load_r(nval, rval, ngrids, resps0)
110 npts=load_r(nval, rval, ngrids, respl0)
112 npts=load_r(nval, rval, ngrids, kresps)
114 npts=load_r(nval, rval, ngrids, krespl)
116 npts=load_r(nval, rval, ngrids, gammas)
118 npts=load_r(nval, rval, ngrids, gammal)
120 npts=load_r(nval, rval, ngrids, morps0)
122 npts=load_r(nval, rval, ngrids, morpl0)
124 npts=load_r(nval, rval, ngrids, kmorps)
126 npts=load_r(nval, rval, ngrids, kmorpl)
128 npts=load_r(nval, rval, ngrids, grmaxsps)
130 npts=load_r(nval, rval, ngrids, grmaxlps)
132 npts=load_r(nval, rval, ngrids, grmaxlpl)
134 npts=load_r(nval, rval, ngrids, grmaxlzs)
136 npts=load_r(nval, rval, ngrids, grmaxppl)
138 npts=load_r(nval, rval, ngrids, grmaxpzs)
140 npts=load_r(nval, rval, ngrids, grmaxpzl)
142 npts=load_r(nval, rval, ngrids, kgras)
144 npts=load_r(nval, rval, ngrids, kgral)
146 npts=load_r(nval, rval, ngrids, kgrap)
148 npts=load_r(nval, rval, ngrids, lams)
150 npts=load_r(nval, rval, ngrids, laml)
152 npts=load_r(nval, rval, ngrids, lamp)
154 npts=load_r(nval, rval, ngrids, kps2zs)
156 npts=load_r(nval, rval, ngrids, kps2zl)
158 npts=load_r(nval, rval, ngrids, kpl2zl)
160 npts=load_r(nval, rval, ngrids, kzs2zl)
162 npts=load_r(nval, rval, ngrids, kpl2zp)
164 npts=load_r(nval, rval, ngrids, kzs2zp)
166 npts=load_r(nval, rval, ngrids, kzl2zp)
168 npts=load_r(nval, rval, ngrids, ps2zsstar)
170 npts=load_r(nval, rval, ngrids, ps2zlstar)
172 npts=load_r(nval, rval, ngrids, pl2zlstar)
174 npts=load_r(nval, rval, ngrids, zs2zlstar)
176 npts=load_r(nval, rval, ngrids, pl2zpstar)
178 npts=load_r(nval, rval, ngrids, zs2zpstar)
180 npts=load_r(nval, rval, ngrids, zl2zpstar)
182 npts=load_r(nval, rval, ngrids, pusaipl)
184 npts=load_r(nval, rval, ngrids, pusaizs)
186 npts=load_r(nval, rval, ngrids, morzs0)
188 npts=load_r(nval, rval, ngrids, morzl0)
190 npts=load_r(nval, rval, ngrids, morzp0)
192 npts=load_r(nval, rval, ngrids, kmorzs)
194 npts=load_r(nval, rval, ngrids, kmorzl)
196 npts=load_r(nval, rval, ngrids, kmorzp)
198 npts=load_r(nval, rval, ngrids, alphazs)
200 npts=load_r(nval, rval, ngrids, alphazl)
202 npts=load_r(nval, rval, ngrids, alphazp)
204 npts=load_r(nval, rval, ngrids, betazs)
206 npts=load_r(nval, rval, ngrids, betazl)
208 npts=load_r(nval, rval, ngrids, betazp)
210 npts=load_r(nval, rval, ngrids, nit0)
212 npts=load_r(nval, rval, ngrids, vp2n0)
214 npts=load_r(nval, rval, ngrids, vp2d0)
216 npts=load_r(nval, rval, ngrids, vd2n0)
218 npts=load_r(nval, rval, ngrids, vo2s0)
220 npts=load_r(nval, rval, ngrids, knit)
222 npts=load_r(nval, rval, ngrids, kp2d)
224 npts=load_r(nval, rval, ngrids, kp2n)
226 npts=load_r(nval, rval, ngrids, kd2n)
228 npts=load_r(nval, rval, ngrids, ko2s)
230 npts=load_r(nval, rval, ngrids, rsin)
232 npts=load_r(nval, rval, ngrids, setvpon)
234 npts=load_r(nval, rval, ngrids, setvopal)
236 npts=load_r(nval, rval, nbt, ngrids, rbio)
240 nl_tnu2(i,ng)=rbio(itrc,ng)
244 npts=load_r(nval, rval, nbt, ngrids, rbio)
248 nl_tnu4(i,ng)=rbio(itrc,ng)
252 npts=load_r(nval, rval, nbt, ngrids, rbio)
256 ad_tnu2(i,ng)=rbio(itrc,ng)
257 tl_tnu2(i,ng)=rbio(itrc,ng)
261 npts=load_r(nval, rval, nbt, ngrids, rbio)
265 ad_tnu4(i,ng)=rbio(itrc,ng)
266 tl_tnu4(i,ng)=rbio(itrc,ng)
269 CASE (
'LtracerSponge')
270 npts=load_l(nval, cval, nbt, ngrids, ltrc)
274 ltracersponge(i,ng)=ltrc(itrc,ng)
278 npts=load_r(nval, rval, nbt, ngrids, rbio)
282 akt_bak(i,ng)=rbio(itrc,ng)
286 npts=load_r(nval, rval, nbt, ngrids, rbio)
290 ad_akt_fac(i,ng)=rbio(itrc,ng)
291 tl_akt_fac(i,ng)=rbio(itrc,ng)
295 npts=load_r(nval, rval, nbt, ngrids, rbio)
299 tnudg(i,ng)=rbio(itrc,ng)
303 IF (itracer.lt.nbt)
THEN
309 npts=load_tadv(nval, cval, line, nline, itrc, igrid, &
310 & itracer, idbio(itrcstr), idbio(itrcend), &
311 & vname(1,idtvar(itrc)), &
314 IF (itracer.lt.nbt)
THEN
320 npts=load_tadv(nval, cval, line, nline, itrc, igrid, &
321 & itracer, idbio(itrcstr), idbio(itrcend), &
322 & vname(1,idtvar(itrc)), &
324#if defined ADJOINT || defined TANGENT || defined TL_IOMS
325 CASE (
'ad_Hadvection')
326 IF (itracer.lt.nbt)
THEN
332 npts=load_tadv(nval, cval, line, nline, itrc, igrid, &
333 & itracer, idbio(itrcstr), idbio(itrcend), &
334 & vname(1,idtvar(itrc)), &
337 IF (itracer.lt.(nbt)
THEN
343 npts=load_tadv(nval, cval, line, nline, itrc, igrid, &
344 & itracer, idbio(itrcstr), idbio(itrcend), &
345 & vname(1,idtvar(itrc)), &
349 IF (itracer.lt.nbt)
THEN
354 ifield=istvar(idbio(itracer))
355 npts=load_lbc(nval, cval, line, nline, ifield, igrid, &
356 & idbio(itrcstr), idbio(itrcend), &
357 & vname(1,idtvar(idbio(itracer))), lbc)
358#if defined ADJOINT || defined TANGENT || defined TL_IOMS
359 CASE (
'ad_LBC(isTvar)')
360 IF (itracer.lt.nbt)
THEN
365 ifield=istvar(idbio(itracer))
366 npts=load_lbc(nval, cval, line, nline, ifield, igrid, &
367 & idbio(itrcstr), idbio(itrcend), &
368 & vname(1,idtvar(idbio(itracer))), ad_lbc)
371 npts=load_l(nval, cval, nbt, ngrids, ltrc)
375 ltracersrc(i,ng)=ltrc(itrc,ng)
379 npts=load_l(nval, cval, nbt, ngrids, ltrc)
383 ltracerclm(i,ng)=ltrc(itrc,ng)
387 npts=load_l(nval, cval, nbt, ngrids, ltrc)
391 lnudgetclm(i,ng)=ltrc(itrc,ng)
394 CASE (
'Hout(idTvar)')
395 npts=load_l(nval, cval, nbt, ngrids, ltrc)
398 i=idtvar(idbio(itrc))
400 IF (master)
WRITE (out,30) &
401 &
'idTvar(idbio(', itrc,
'))'
405 hout(i,ng)=ltrc(itrc,ng)
408 CASE (
'Hout(idTsur)')
409 npts=load_l(nval, cval, nbt, ngrids, ltrc)
412 i=idtsur(idbio(itrc))
414 IF (master)
WRITE (out,30) &
415 &
'idTsur(idbio(', itrc,
'))'
419 hout(i,ng)=ltrc(itrc,ng)
422 CASE (
'Qout(idTvar)')
423 npts=load_l(nval, cval, nbt, ngrids, ltrc)
426 i=idtvar(idbio(itrc))
427 qout(i,ng)=ltrc(itrc,ng)
430 CASE (
'Qout(idsurT)')
431 npts=load_l(nval, cval, nbt, ngrids, ltrc)
434 i=idsurt(idbio(itrc))
436 IF (master)
WRITE (out,30) &
437 &
'idsurT(idbio(', itrc,
'))'
441 qout(i,ng)=ltrc(itrc,ng)
444 CASE (
'Qout(idTsur)')
445 npts=load_l(nval, cval, nbt, ngrids, ltrc)
448 i=idtsur(idbio(itrc))
449 qout(i,ng)=ltrc(itrc,ng)
452#if defined AVERAGES || \
453 (defined ad_averages && defined adjoint) || \
454 (defined rp_averages && defined tl_ioms) || \
455 (defined tl_averages && defined tangent)
456 CASE (
'Aout(idTvar)')
457 npts=load_l(nval, cval, nbt, ngrids, ltrc)
460 i=idtvar(idbio(itrc))
461 aout(i,ng)=ltrc(itrc,ng)
464 CASE (
'Aout(idTTav)')
465 npts=load_l(nval, cval, nbt, ngrids, ltrc)
468 i=idttav(idbio(itrc))
469 aout(i,ng)=ltrc(itrc,ng)
472 CASE (
'Aout(idUTav)')
473 npts=load_l(nval, cval, nbt, ngrids, ltrc)
476 i=idutav(idbio(itrc))
477 aout(i,ng)=ltrc(itrc,ng)
480 CASE (
'Aout(idVTav)')
481 npts=load_l(nval, cval, nbt, ngrids, ltrc)
484 i=idvtav(idbio(itrc))
485 aout(i,ng)=ltrc(itrc,ng)
488 CASE (
'Aout(iHUTav)')
489 npts=load_l(nval, cval, nbt, ngrids, ltrc)
492 i=ihutav(idbio(itrc))
493 aout(i,ng)=ltrc(itrc,ng)
496 CASE (
'Aout(iHVTav)')
497 npts=load_l(nval, cval, nbt, ngrids, ltrc)
500 i=ihvtav(idbio(itrc))
501 aout(i,ng)=ltrc(itrc,ng)
506 CASE (
'Dout(iTrate)')
507 npts=load_l(nval, cval, nbt, ngrids, ltrc)
511 dout(iddtrc(itrc,itrate),ng)=ltrc(i,ng)
514 CASE (
'Dout(iThadv)')
515 npts=load_l(nval, cval, nbt, ngrids, ltrc)
519 dout(iddtrc(itrc,ithadv),ng)=ltrc(i,ng)
522 CASE (
'Dout(iTxadv)')
523 npts=load_l(nval, cval, nbt, ngrids, ltrc)
527 dout(iddtrc(itrc,itxadv),ng)=ltrc(i,ng)
530 CASE (
'Dout(iTyadv)')
531 npts=load_l(nval, cval, nbt, ngrids, ltrc)
535 dout(iddtrc(itrc,ityadv),ng)=ltrc(i,ng)
538 CASE (
'Dout(iTvadv)')
539 npts=load_l(nval, cval, nbt, ngrids, ltrc)
543 dout(iddtrc(itrc,itvadv),ng)=ltrc(i,ng)
546# if defined TS_DIF2 || defined TS_DIF4
547 CASE (
'Dout(iThdif)')
548 npts=load_l(nval, cval, nbt, ngrids, ltrc)
552 dout(iddtrc(itrc,ithdif),ng)=ltrc(i,ng)
555 CASE (
'Dout(iTxdif)')
556 npts=load_l(nval, cval, nbt, ngrids, ltrc)
560 dout(iddtrc(itrc,itxdif),ng)=ltrc(i,ng)
563 CASE (
'Dout(iTydif)')
564 npts=load_l(nval, cval, nbt, ngrids, ltrc)
568 dout(iddtrc(itrc,itydif),ng)=ltrc(i,ng)
571# if defined MIX_GEO_TS || defined MIX_ISO_TS
572 CASE (
'Dout(iTsdif)')
573 npts=load_l(nval, cval, nbt, ngrids, ltrc)
577 dout(iddtrc(itrc,itsdif),ng)=ltrc(i,ng)
582 CASE (
'Dout(iTvdif)')
583 npts=load_l(nval, cval, nbt, ngrids, ltrc)
587 dout(iddtrc(itrc,itvdif),ng)=ltrc(i,ng)
594 10
IF (master)
WRITE (out,40) line
603 IF (master.and.lwrite)
THEN
605 IF (lbiology(ng))
THEN
607 WRITE (out,60) bioiter(ng),
'BioIter', &
608 &
'Number of iterations for nonlinear convergence.'
609 WRITE (out,70) attsw(ng),
'AttSW', &
610 &
'Light attenuation due to seawater (m-1)'
611 WRITE (out,80) attps(ng),
'AttPS', &
612 &
'Light attenuation due to small phytoplankton', &
614 WRITE (out,80) attpl(ng),
'AttPL', &
615 &
'Light attenuation due to large phytoplankton', &
617 WRITE (out,80) parfrac(ng),
'PARfrac', &
618 &
'Fraction of shortwave radiation that is', &
619 &
'photosynthetically active (nondimensional).'
620 WRITE (out,80) alphaps(ng),
'AlphaPS', &
621 &
'Small phytoplankton initial slope of the P-I curve', &
622 &
'(1/(W/m2) 1/day).'
623 WRITE (out,80) alphapl(ng),
'AlphaPL', &
624 &
'Small phytoplankton initial slope of the P-I curve', &
625 &
'(1/(W/m2) 1/day).'
626 WRITE (out,80) betaps(ng),
'BetaPS', &
627 &
'Small phytoplankton photoinhibition coefficient', &
628 &
'(1/(W/m2) 1/day).'
629 WRITE (out,80) betapl(ng),
'BetaPL', &
630 &
'Large phytoplankton photoinhibition coefficient', &
631 &
'(1/(W/m2) 1/day).'
632 WRITE (out,80) vmaxs(ng),
'VmaxS', &
633 &
'Small phytoplankton maximum photosynthetic rate', &
635 WRITE (out,80) vmaxl(ng),
'VmaxL', &
636 &
'Large phytoplankton maximum photosynthetic rate', &
638 WRITE (out,80) kno3s(ng),
'KNO3S', &
639 &
'Small phytoplankton NO3 half saturation constant', &
641 WRITE (out,80) kno3l(ng),
'KNO3L', &
642 &
'Large phytoplankton NO3 half saturation constant', &
644 WRITE (out,80) knh4s(ng),
'KNH4S', &
645 &
'Small phytoplankton NH4 half saturation constant', &
647 WRITE (out,80) knh4l(ng),
'KNH4L', &
648 &
'Large phytoplankton NH4 half saturation constant', &
650 WRITE (out,80) ksil(ng),
'KSiL', &
651 &
'Small phytoplankton SiOH4 half saturation constant', &
653 WRITE (out,80) pusais(ng),
'PusaiS', &
654 &
'Small phytoplankton NH4 inhibition coefficient', &
656 WRITE (out,80) pusail(ng),
'PusaiL', &
657 &
'Large phytoplankton NH4 inhibition coefficient', &
659 WRITE (out,80) kgpps(ng),
'KGppS', &
660 &
'Small phytoplankton temperature coefficient for', &
661 &
'photosynthetic rate (1/Celsius).'
662 WRITE (out,80) kgppl(ng),
'KGppL', &
663 &
'Large phytoplankton temperature coefficient for', &
664 &
'photosynthetic rate (1/Celsius).'
665 WRITE (out,70) resps0(ng),
'ResPS0', &
666 &
'Small phytoplankton respiration rate (1/day).'
667 WRITE (out,70) respl0(ng),
'ResPL0', &
668 &
'Large phytoplankton respiration rate (1/day).'
669 WRITE (out,80) kresps(ng),
'KResPS', &
670 &
'Small phytoplankton temperature coefficient for', &
671 &
'respiration (1/Celsius).'
672 WRITE (out,80) krespl(ng),
'KResPL', &
673 &
'Large phytoplankton temperature coefficient for', &
674 &
'respiration (1/Celsius).'
675 WRITE (out,80) gammas(ng),
'GammaS', &
676 &
'Small phytoplankton ratio of extracellular', &
677 &
'excretion to photosynthesis (nondimensional).'
678 WRITE (out,80) gammal(ng),
'GammaL', &
679 &
'Large phytoplankton ratio of extracellular', &
680 &
'excretion to photosynthesis (nondimensional).'
681 WRITE (out,80) morps0(ng),
'MorPS0', &
682 &
'Small phytoplankton mortality rate', &
683 &
'(m3/mmole_N/day).'
684 WRITE (out,80) morpl0(ng),
'MorPL0', &
685 &
'Large phytoplankton mortality rate', &
686 &
'(m3/mmole_N/day).'
687 WRITE (out,80) kmorps(ng),
'KMorPS', &
688 &
'Small phytoplankton temperature coefficient for', &
689 &
'mortality (1/Celsius).'
690 WRITE (out,80) kmorpl(ng),
'KMorPL', &
691 &
'Large phytoplankton temperature coefficient for', &
692 &
'mortality (1/Celsius).'
693 WRITE (out,80) grmaxsps(ng),
'GRmaxSps', &
694 &
'Small zooplankton grazing rate on small', &
695 &
'phytoplankton (1/day).'
696 WRITE (out,80) grmaxlps(ng),
'GRmaxLps', &
697 &
'Large zooplankton grazing rate on small', &
698 &
'phytoplankton (1/day).'
699 WRITE (out,80) grmaxlpl(ng),
'GRmaxLpl', &
700 &
'Large zooplankton grazing rate on large', &
701 &
'phytoplankton (1/day).'
702 WRITE (out,80) grmaxlzs(ng),
'GRmaxLzs', &
703 &
'Large zooplankton grazing rate on small', &
704 &
'zooplankton (1/day).'
705 WRITE (out,80) grmaxppl(ng),
'GRmaxPpl', &
706 &
'Predator zooplankton grazing rate on large', &
707 &
'phytoplankton (1/day).'
708 WRITE (out,80) grmaxpzs(ng),
'GRmaxPzs', &
709 &
'Predator zooplankton grazing rate on small', &
710 &
'zooplankton (1/day).'
711 WRITE (out,80) grmaxpzl(ng),
'GRmaxPzl', &
712 &
'Predator zooplankton grazing rate on large', &
713 &
'zooplankton (1/day).'
714 WRITE (out,80) kgras(ng),
'KGraS', &
715 &
'Small zooplankton temperature coefficient for', &
716 &
'grazing (1/Celsius).'
717 WRITE (out,80) kgral(ng),
'KGraL', &
718 &
'Large zooplankton temperature coefficient for', &
719 &
'grazing (1/Celsius).'
720 WRITE (out,80) kgrap(ng),
'KGraP', &
721 &
'Predator zooplankton temperature coefficient for', &
722 &
'grazing (1/Celsius).'
723 WRITE (out,80) lams(ng),
'LamS', &
724 &
'Small zooplankton grazing Ivlev constant', &
726 WRITE (out,80) laml(ng),
'LamL', &
727 &
'Large zooplankton grazing Ivlev constant', &
729 WRITE (out,80) lamp(ng),
'LamP', &
730 &
'Preditor zooplankton grazing Ivlev constant', &
732#ifdef HOLLING_GRAZING
733 WRITE (out,80) kps2zs(ng),
'KPS2ZS', &
734 &
'Half-saturation constant for small zooplankton', &
735 &
'grazing on small phytoplankton (mmole_N/m3)^2.'
736 WRITE (out,80) kps2zl(ng),
'KPS2ZL', &
737 &
'Half-saturation constant for large zooplankton', &
738 &
'grazing on small phytoplankton (mmole_N/m3)^2.'
739 WRITE (out,80) kpl2zl(ng),
'KPL2ZL', &
740 &
'Half-saturation constant for large zooplankton', &
741 &
'grazing on large phytoplankton (mmole_N/m3)^2.'
742 WRITE (out,80) kpl2zp(ng),
'KPL2ZP', &
743 &
'Half-saturation constant for predator zooplankton', &
744 &
'grazing on large phytoplankton (mmole_N/m3)^2.'
745 WRITE (out,80) kzs2zp(ng),
'KZS2ZP', &
746 &
'Half-saturation constant for predator zooplankton', &
747 &
'grazing on small zooplankton (mmole_N/m3)^2.'
748 WRITE (out,80) kzl2zp(ng),
'KZL2ZP', &
749 &
'Half-saturation constant for predator zooplankton', &
750 &
'grazing on large zooplankton (mmole_N/m3)^2.'
752 WRITE (out,80) ps2zsstar(ng),
'PS2ZSstar', &
753 &
'Small zooplankton threshold for grazing on small', &
754 &
'phytoplankton (mmole_N/m3).'
755 WRITE (out,80) ps2zlstar(ng),
'PS2ZLstar', &
756 &
'Large zooplankton threshold for grazing on small', &
757 &
'phytoplankton (mmole_N/m3).'
758 WRITE (out,80) pl2zlstar(ng),
'PL2ZLstar', &
759 &
'Large zooplankton threshold for grazing on large', &
760 &
'phytoplankton (mmole_N/m3).'
761 WRITE (out,80) pl2zlstar(ng),
'PL2ZLstar', &
762 &
'Large zooplankton threshold for grazing on small', &
763 &
'zooplankton (mmole_N/m3).'
764 WRITE (out,80) pl2zpstar(ng),
'PL2ZPstar', &
765 &
'Predator zooplankton threshold for grazing on large',&
766 &
'phytoplankton (mmole_N/m3).'
767 WRITE (out,80) zs2zpstar(ng),
'ZS2ZPstar', &
768 &
'Predator zooplankton threshold for grazing on small',&
769 &
'zooplankton (mmole_N/m3).'
770 WRITE (out,80) zl2zpstar(ng),
'ZL2ZPstar', &
771 &
'Predator zooplankton threshold for grazing on large',&
772 &
'zooplankton (mmole_N/m3).'
774 WRITE (out,80) pusaipl(ng),
'PusauPL', &
775 &
'Predator zooplankton grazing inhibition on large', &
776 &
'phytoplankton (mmole_N/m3).'
777 WRITE (out,80) pusaizs(ng),
'PusauZS', &
778 &
'Predator zooplankton grazing inhibition on small', &
779 &
'zootoplankton (mmole_N/m3).'
780 WRITE (out,80) morzs0(ng),
'MorZS0', &
781 &
'Small zooplankton mortality rate at 0 Celsius', &
782 &
'(m3/mmole_N/day).'
783 WRITE (out,80) morzl0(ng),
'MorZL0', &
784 &
'Large zooplankton mortality rate at 0 Celsius', &
785 &
'(m3/mmole_N/day).'
786 WRITE (out,80) morzp0(ng),
'MorZP0', &
787 &
'Predator zooplankton mortality rate at 0 Celsius', &
788 &
'(m3/mmole_N/day).'
789 WRITE (out,80) kmorzs(ng),
'KMorZS', &
790 &
'Small zooplankton temperature coefficient for', &
791 &
'mortality (1/Celsius).'
792 WRITE (out,80) kmorzl(ng),
'KMorZL', &
793 &
'Large zooplankton temperature coefficient for', &
794 &
'mortality (1/Celsius).'
795 WRITE (out,80) kmorzp(ng),
'KMorZP', &
796 &
'Predator zooplankton temperature coefficient for', &
797 &
'mortality (1/Celsius).'
798 WRITE (out,80) alphazs(ng),
'AlphaZS', &
799 &
'Small zooplankton assimilation efficiency', &
800 &
'(nondimensional).'
801 WRITE (out,80) alphazl(ng),
'AlphaZL', &
802 &
'Large zooplankton assimilation efficiency', &
803 &
'(nondimensional).'
804 WRITE (out,80) alphazp(ng),
'AlphaZP', &
805 &
'Predator zooplankton assimilation efficiency', &
806 &
'(nondimensional).'
807 WRITE (out,80) betazs(ng),
'BetaZS', &
808 &
'Small zooplankton growth efficiency', &
809 &
'(nondimensional).'
810 WRITE (out,80) betazl(ng),
'BetaZL', &
811 &
'Large zooplankton growth efficiency', &
812 &
'(nondimensional).'
813 WRITE (out,80) betazp(ng),
'BetaZP', &
814 &
'Predator zooplankton growth efficiency', &
815 &
'(nondimensional).'
816 WRITE (out,70) nit0(ng),
'Nit0', &
817 &
'NH4 to NO3 decomposition rate (1/day).'
818 WRITE (out,70) vp2n0(ng),
'VP2N0', &
819 &
'PON to NH4 decomposition rate (1/day).'
820 WRITE (out,70) vp2d0(ng),
'VP2D0', &
821 &
'PON to DON decomposition rate (1/day).'
822 WRITE (out,70) vd2n0(ng),
'VD2N0', &
823 &
'DON to NH4 decomposition rate (1/day).'
824 WRITE (out,70) vo2s0(ng),
'VO2S0', &
825 &
'Opal to SiOH4 decomposition rate (1/day).'
826 WRITE (out,80) knit(ng),
'KNit', &
827 &
'Temperature coefficient for NH4 to NO3', &
828 &
'decomposition (1/Celsius).'
829 WRITE (out,80) kp2d(ng),
'KP2D', &
830 &
'Temperature coefficient for PON to DON', &
831 &
'decomposition (1/Celsius).'
832 WRITE (out,80) kp2n(ng),
'KP2N', &
833 &
'Temperature coefficient for PON to NH4', &
834 &
'decomposition (1/Celsius).'
835 WRITE (out,80) kd2n(ng),
'KD2N', &
836 &
'Temperature coefficient for DON to NH4', &
837 &
'decomposition (1/Celsius).'
838 WRITE (out,80) ko2s(ng),
'KO2S', &
839 &
'Temperature coefficient for Opal to SiOH4', &
840 &
'decomposition (1/Celsius).'
841 WRITE (out,70) rsin(ng),
'RSiN', &
842 &
'Si:N ratio (mmole_Si/mmole_N)'
843 WRITE (out,70) setvpon(ng),
'setVPON', &
844 &
'PON sinking velocity (m/day).'
845 WRITE (out,70) setvopal(ng),
'setVOpal', &
846 &
'Opal sinking velocity (m/day).'
850 WRITE (out,90) nl_tnu2(i,ng),
'nl_tnu2', i, &
851 &
'NLM Horizontal, harmonic mixing coefficient', &
852 &
'(m2/s) for tracer ', i, trim(vname(1,idtvar(i)))
854 WRITE (out,90) ad_tnu2(i,ng),
'ad_tnu2', i, &
855 &
'ADM Horizontal, harmonic mixing coefficient', &
856 &
'(m2/s) for tracer ', i, trim(vname(1,idtvar(i)))
858# if defined TANGENT || defined TL_IOMS
859 WRITE (out,90) tl_tnu2(i,ng),
'tl_tnu2', i, &
860 &
'TLM Horizontal, harmonic mixing coefficient', &
861 &
'(m2/s) for tracer ', i, trim(vname(1,idtvar(i)))
868 WRITE (out,90) nl_tnu4(i,ng),
'nl_tnu4', i, &
869 &
'NLM Horizontal, biharmonic mixing coefficient', &
870 &
'(m4/s) for tracer ', i, trim(vname(1,idtvar(i)))
872 WRITE (out,90) ad_tnu4(i,ng),
'ad_tnu4', i, &
873 &
'ADM Horizontal, biharmonic mixing coefficient', &
874 &
'(m4/s) for tracer ', i, trim(vname(1,idtvar(i)))
876# if defined TANGENT || defined TL_IOMS
877 WRITE (out,90) tl_tnu4(i,ng),
'tl_tnu4', i, &
878 &
'TLM Horizontal, biharmonic mixing coefficient', &
879 &
'(m4/s) for tracer ', i, trim(vname(1,idtvar(i)))
885 IF (ltracersponge(i,ng))
THEN
886 WRITE (out,100) ltracersponge(i,ng),
'LtracerSponge', &
887 & i,
'Turning ON sponge on tracer ', i, &
888 & trim(vname(1,idtvar(i)))
890 WRITE (out,100) ltracersponge(i,ng),
'LtracerSponge', &
891 & i,
'Turning OFF sponge on tracer ', i, &
892 & trim(vname(1,idtvar(i)))
897 WRITE(out,90) akt_bak(i,ng),
'Akt_bak', i, &
898 &
'Background vertical mixing coefficient (m2/s)', &
899 &
'for tracer ', i, trim(vname(1,idtvar(i)))
905 WRITE (out,90) ad_akt_fac(i,ng),
'ad_Akt_fac', i, &
906 &
'ADM basic state vertical mixing scale factor', &
907 &
'for tracer ', i, trim(vname(1,idtvar(i)))
909# if defined TANGENT || defined TL_IOMS
910 WRITE (out,90) tl_akt_fac(i,ng),
'tl_Akt_fac', i, &
911 &
'TLM basic state vertical mixing scale factor', &
912 &
'for tracer ', i, trim(vname(1,idtvar(i)))
918 WRITE (out,90) tnudg(i,ng),
'Tnudg', i, &
919 &
'Nudging/relaxation time scale (days)', &
920 &
'for tracer ', i, trim(vname(1,idtvar(i)))
924 IF (ltracersrc(i,ng))
THEN
925 WRITE (out,100) ltracersrc(i,ng),
'LtracerSrc', &
926 & i,
'Turning ON point sources/Sink on tracer ', i, &
927 & trim(vname(1,idtvar(i)))
929 WRITE (out,100) ltracersrc(i,ng),
'LtracerSrc', &
930 & i,
'Turning OFF point sources/Sink on tracer ', i, &
931 & trim(vname(1,idtvar(i)))
936 IF (ltracerclm(i,ng))
THEN
937 WRITE (out,100) ltracerclm(i,ng),
'LtracerCLM', i, &
938 &
'Turning ON processing of climatology tracer ', i, &
939 & trim(vname(1,idtvar(i)))
941 WRITE (out,100) ltracerclm(i,ng),
'LtracerCLM', i, &
942 &
'Turning OFF processing of climatology tracer ', i, &
943 & trim(vname(1,idtvar(i)))
948 IF (lnudgetclm(i,ng))
THEN
949 WRITE (out,100) lnudgetclm(i,ng),
'LnudgeTCLM', i, &
950 &
'Turning ON nudging of climatology tracer ', i, &
951 & trim(vname(1,idtvar(i)))
953 WRITE (out,100) lnudgetclm(i,ng),
'LnudgeTCLM', i, &
954 &
'Turning OFF nudging of climatology tracer ', i, &
955 & trim(vname(1,idtvar(i)))
958 IF ((nhis(ng).gt.0).and.any(hout(:,ng)))
THEN
962 IF (hout(idtvar(i),ng))
WRITE (out,110) &
963 & hout(idtvar(i),ng),
'Hout(idTvar)', &
964 &
'Write out tracer ', i, trim(vname(1,idtvar(i)))
968 IF (hout(idtsur(i),ng))
WRITE (out,110) &
969 & hout(idtsur(i),ng),
'Hout(idTsur)', &
970 &
'Write out tracer flux ', i, &
971 & trim(vname(1,idtvar(i)))
974 IF ((nqck(ng).gt.0).and.any(qout(:,ng)))
THEN
978 IF (qout(idtvar(i),ng))
WRITE (out,110) &
979 & qout(idtvar(i),ng),
'Qout(idTvar)', &
980 &
'Write out tracer ', i, trim(vname(1,idtvar(i)))
984 IF (qout(idsurt(i),ng))
WRITE (out,110) &
985 & qout(idsurt(i),ng),
'Qout(idsurT)', &
986 &
'Write out surface tracer ', i, &
987 & trim(vname(1,idtvar(i)))
991 IF (qout(idtsur(i),ng))
WRITE (out,110) &
992 & qout(idtsur(i),ng),
'Qout(idTsur)', &
993 &
'Write out tracer flux ', i, &
994 & trim(vname(1,idtvar(i)))
997#if defined AVERAGES || \
998 (defined ad_averages && defined adjoint) || \
999 (defined rp_averages && defined tl_ioms) || \
1000 (defined tl_averages && defined tangent)
1001 IF ((navg(ng).gt.0).and.any(aout(:,ng)))
THEN
1005 IF (aout(idtvar(i),ng))
WRITE (out,110) &
1006 & aout(idtvar(i),ng),
'Aout(idTvar)', &
1007 &
'Write out averaged tracer ', i, &
1008 & trim(vname(1,idtvar(i)))
1012 IF (aout(idttav(i),ng))
WRITE (out,110) &
1013 & aout(idttav(i),ng),
'Aout(idTTav)', &
1014 &
'Write out averaged <t*t> for tracer ', i, &
1015 & trim(vname(1,idtvar(i)))
1019 IF (aout(idutav(i),ng))
WRITE (out,110) &
1020 & aout(idutav(i),ng),
'Aout(idUTav)', &
1021 &
'Write out averaged <u*t> for tracer ', i, &
1022 & trim(vname(1,idtvar(i)))
1026 IF (aout(idvtav(i),ng))
WRITE (out,110) &
1027 & aout(idvtav(i),ng),
'Aout(idVTav)', &
1028 &
'Write out averaged <v*t> for tracer ', i, &
1029 & trim(vname(1,idtvar(i)))
1033 IF (aout(ihutav(i),ng))
WRITE (out,110) &
1034 & aout(ihutav(i),ng),
'Aout(iHUTav)', &
1035 &
'Write out averaged <Huon*t> for tracer ', i, &
1036 & trim(vname(1,idtvar(i)))
1040 IF (aout(ihvtav(i),ng))
WRITE (out,110) &
1041 & aout(ihvtav(i),ng),
'Aout(iHVTav)', &
1042 &
'Write out averaged <Hvom*t> for tracer ', i, &
1043 & trim(vname(1,idtvar(i)))
1047#ifdef DIAGNOSTICS_TS
1048 IF ((ndia(ng).gt.0).and.any(dout(:,ng)))
THEN
1052 IF (dout(iddtrc(itrc,itrate),ng)) &
1053 &
WRITE (out,110) .true.,
'Dout(iTrate)', &
1054 &
'Write out rate of change of tracer ', itrc, &
1055 & trim(vname(1,idtvar(itrc)))
1059 IF (dout(iddtrc(itrc,ithadv),ng)) &
1060 &
WRITE (out,110) .true.,
'Dout(iThadv)', &
1061 &
'Write out horizontal advection, tracer ', itrc, &
1062 & trim(vname(1,idtvar(itrc)))
1066 IF (dout(iddtrc(itrc,itxadv),ng)) &
1067 &
WRITE (out,110) .true.,
'Dout(iTxadv)', &
1068 &
'Write out horizontal X-advection, tracer ', itrc, &
1069 & trim(vname(1,idtvar(itrc)))
1073 IF (dout(iddtrc(itrc,ityadv),ng)) &
1074 &
WRITE (out,110) .true.,
'Dout(iTyadv)', &
1075 &
'Write out horizontal Y-advection, tracer ', itrc, &
1076 & trim(vname(1,idtvar(itrc)))
1080 IF (dout(iddtrc(itrc,itvadv),ng)) &
1081 &
WRITE (out,110) .true.,
'Dout(iTvadv)', &
1082 &
'Write out vertical advection, tracer ', itrc, &
1083 & trim(vname(1,idtvar(itrc)))
1085# if defined TS_DIF2 || defined TS_DIF4
1088 IF (dout(iddtrc(itrc,ithdif),ng)) &
1089 &
WRITE (out,110) .true.,
'Dout(iThdif)', &
1090 &
'Write out horizontal diffusion, tracer ', itrc, &
1091 & trim(vname(1,idtvar(itrc)))
1095 IF (dout(iddtrc(i,itxdif),ng)) &
1096 &
WRITE (out,110) .true.,
'Dout(iTxdif)', &
1097 &
'Write out horizontal X-diffusion, tracer ', itrc, &
1098 & trim(vname(1,idtvar(itrc)))
1102 IF (dout(iddtrc(itrc,itydif),ng)) &
1103 &
WRITE (out,110) .true.,
'Dout(iTydif)', &
1104 &
'Write out horizontal Y-diffusion, tracer ', itrc, &
1105 & trim(vname(1,idtvar(itrc)))
1107# if defined MIX_GEO_TS || defined MIX_ISO_TS
1110 IF (dout(iddtrc(itrc,itsdif),ng)) &
1111 &
WRITE (out,110) .true.,
'Dout(iTsdif)', &
1112 &
'Write out horizontal S-diffusion, tracer ', itrc, &
1113 & trim(vname(1,idtvar(itrc)))
1119 IF (dout(iddtrc(itrc,itvdif),ng)) &
1120 &
WRITE (out,110) .true.,
'Dout(iTvdif)', &
1121 &
'Write out vertical diffusion, tracer ', itrc, &
1122 & trim(vname(1,idtvar(itrc)))
1140 nl_tnu4(i,ng)=sqrt(abs(nl_tnu4(i,ng)))
1142 ad_tnu4(i,ng)=sqrt(abs(ad_tnu4(i,ng)))
1144#if defined TANGENT || defined TL_IOMS
1145 tl_tnu4(i,ng)=sqrt(abs(tl_tnu4(i,ng)))
1150 IF (tnudg(i,ng).gt.0.0_r8)
THEN
1151 tnudg(i,ng)=1.0_r8/(tnudg(i,ng)*86400.0_r8)
1158 30
FORMAT (/,
' read_BioPar - variable info not yet loaded, ', &
1160 40
FORMAT (/,
' read_BioPar - Error while processing line: ',/,a)
1161 50
FORMAT (/,/,
' Nemuro Model Parameters, Grid: ',i2.2, &
1162 & /,
' =================================',/)
1163 60
FORMAT (1x,i10,2x,a,t32,a)
1164 70
FORMAT (1p,e11.4,2x,a,t32,a)
1165 80
FORMAT (1p,e11.4,2x,a,t32,a,/,t34,a)
1166 90
FORMAT (1p,e11.4,2x,a,
'(',i2.2,
')',t32,a,/,t34,a,i2.2,
':',1x,a)
1167 100
FORMAT (10x,l1,2x,a,
'(',i2.2,
')',t32,a,i2.2,
':',1x,a)
1168 110
FORMAT (10x,l1,2x,a,t32,a,i2.2,
':',1x,a)