2
3
4
5
6
7
8
9
10
11
12
13
14
20
22
23 implicit none
24
25
26
27 logical, intent(in) :: Lwrite
28 integer, intent(in) :: model, inp, out
29
30
31
32 integer :: Npts, Nval
33 integer :: iTrcStr, iTrcEnd
34 integer :: i, ifield, igrid, itracer, itrc, ng, nline, status
35
36 logical, dimension(NBT,Ngrids) :: Ltrc
37
38 real(r8), dimension(NBT,Ngrids) :: Rbio
39
40 real(dp), dimension(nRval) :: Rval
41
42 character (len=40 ) :: KeyWord
43 character (len=256) :: line
44 character (len=256), dimension(nCval) :: Cval
45
46
47
48
49
50 igrid=1
51 itracer=0
52 itrcstr=1
54 nline=0
55
56
57
58
59
60 DO WHILE (.true.)
61 READ (inp,'(a)',err=10,END=20) line
63 IF (status.gt.0) THEN
64 SELECT CASE (trim(keyword))
65 CASE ('Lbiology')
67 CASE ('BioIter')
69 CASE ('AttSW')
71 CASE ('AttPS')
73 CASE ('AttPL')
75 CASE ('PARfrac')
77 CASE ('AlphaPS')
79 CASE ('AlphaPL')
81 CASE ('BetaPS')
83 CASE ('BetaPL')
85 CASE ('VmaxS')
87 CASE ('VmaxL')
89 CASE ('KNO3S')
91 CASE ('KNO3L')
93 CASE ('KNH4S')
95 CASE ('KNH4L')
97 CASE ('KSiL')
99 CASE ('PusaiS')
101 CASE ('PusaiL')
103 CASE ('KGppS')
105 CASE ('KGppL')
107 CASE ('ResPS0')
109 CASE ('ResPL0')
111 CASE ('KResPS')
113 CASE ('KResPL')
115 CASE ('GammaS')
117 CASE ('GammaL')
119 CASE ('MorPS0')
121 CASE ('MorPL0')
123 CASE ('KMorPS')
125 CASE ('KMorPL')
127 CASE ('GRmaxSps')
129 CASE ('GRmaxLps')
131 CASE ('GRmaxLpl')
133 CASE ('GRmaxLzs')
135 CASE ('GRmaxPpl')
137 CASE ('GRmaxPzs')
139 CASE ('GRmaxPzl')
141 CASE ('KGraS')
143 CASE ('KGraL')
145 CASE ('KGraP')
147 CASE ('LamS')
149 CASE ('LamL')
151 CASE ('LamP')
153 CASE ('KPS2ZS')
155 CASE ('KPS2ZL')
157 CASE ('KPL2ZL')
159 CASE ('KZS2ZL')
161 CASE ('KPL2ZP')
163 CASE ('KZS2ZP')
165 CASE ('KZL2ZP')
167 CASE ('PS2ZSstar')
169 CASE ('PS2ZLstar')
171 CASE ('PL2ZLstar')
173 CASE ('ZS2ZLstar')
175 CASE ('PL2ZPstar')
177 CASE ('ZS2ZPstar')
179 CASE ('ZL2ZPstar')
181 CASE ('PusaiPL')
183 CASE ('PusaiZS')
185 CASE ('MorZS0')
187 CASE ('MorZL0')
189 CASE ('MorZP0')
191 CASE ('KMorZS')
193 CASE ('KMorZL')
195 CASE ('KMorZP')
197 CASE ('AlphaZS')
199 CASE ('AlphaZL')
201 CASE ('AlphaZP')
203 CASE ('BetaZS')
205 CASE ('BetaZL')
207 CASE ('BetaZP')
209 CASE ('Nit0')
211 CASE ('VP2N0')
213 CASE ('VP2D0')
215 CASE ('VD2N0')
217 CASE ('VO2S0')
219 CASE ('KNit')
221 CASE ('KP2D')
223 CASE ('KP2N')
225 CASE ('KD2N')
227 CASE ('KO2S')
229 CASE ('RSiN')
231 CASE ('setVPON')
233 CASE ('setVOpal')
235 CASE ('TNU2')
241 END DO
242 END DO
243 CASE ('TNU4')
249 END DO
250 END DO
251 CASE ('ad_TNU2')
258 END DO
259 END DO
260 CASE ('ad_TNU4')
267 END DO
268 END DO
269 CASE ('LtracerSponge')
275 END DO
276 END DO
277 CASE ('AKT_BAK')
283 END DO
284 END DO
285 CASE ('ad_AKT_fac')
292 END DO
293 END DO
294 CASE ('TNUDG')
299 tnudg(i,ng)=rbio(itrc,ng)
300 END DO
301 END DO
302 CASE ('Hadvection')
303 IF (itracer.lt.
nbt)
THEN
304 itracer=itracer+1
305 ELSE
306 itracer=1
307 END IF
309 npts=
load_tadv(nval, cval, line, nline, itrc, igrid, &
313 CASE ('Vadvection')
314 IF (itracer.lt.
nbt)
THEN
315 itracer=itracer+1
316 ELSE
317 itracer=1
318 END IF
320 npts=
load_tadv(nval, cval, line, nline, itrc, igrid, &
324#if defined ADJOINT || defined TANGENT || defined TL_IOMS
325 CASE ('ad_Hadvection')
326 IF (itracer.lt.
nbt)
THEN
327 itracer=itracer+1
328 ELSE
329 itracer=1
330 END IF
332 npts=
load_tadv(nval, cval, line, nline, itrc, igrid, &
336 CASE ('Vadvection')
337 IF (itracer.lt.(
nbt)
THEN
338 itracer=itracer+1
339 ELSE
340 itracer=1
341 END IF
343 npts=
load_tadv(nval, cval, line, nline, itrc, igrid, &
347#endif
348 CASE ('LBC(isTvar)')
349 IF (itracer.lt.
nbt)
THEN
350 itracer=itracer+1
351 ELSE
352 itracer=1
353 END IF
355 npts=
load_lbc(nval, cval, line, nline, ifield, igrid, &
358#if defined ADJOINT || defined TANGENT || defined TL_IOMS
359 CASE ('ad_LBC(isTvar)')
360 IF (itracer.lt.
nbt)
THEN
361 itracer=itracer+1
362 ELSE
363 itracer=1
364 END IF
366 npts=
load_lbc(nval, cval, line, nline, ifield, igrid, &
369#endif
370 CASE ('LtracerSrc')
376 END DO
377 END DO
378 CASE ('LtracerCLM')
384 END DO
385 END DO
386 CASE ('LnudgeTCLM')
392 END DO
393 END DO
394 CASE ('Hout(idTvar)')
399 IF (i.eq.0) THEN
400 IF (
master)
WRITE (out,30) &
401 & 'idTvar(idbio(', itrc, '))'
403 RETURN
404 END IF
405 hout(i,ng)=ltrc(itrc,ng)
406 END DO
407 END DO
408 CASE ('Hout(idTsur)')
413 IF (i.eq.0) THEN
414 IF (
master)
WRITE (out,30) &
415 & 'idTsur(idbio(', itrc, '))'
417 RETURN
418 END IF
419 hout(i,ng)=ltrc(itrc,ng)
420 END DO
421 END DO
422 CASE ('Qout(idTvar)')
427 qout(i,ng)=ltrc(itrc,ng)
428 END DO
429 END DO
430 CASE ('Qout(idsurT)')
435 IF (i.eq.0) THEN
436 IF (
master)
WRITE (out,30) &
437 & 'idsurT(idbio(', itrc, '))'
439 RETURN
440 END IF
441 qout(i,ng)=ltrc(itrc,ng)
442 END DO
443 END DO
444 CASE ('Qout(idTsur)')
449 qout(i,ng)=ltrc(itrc,ng)
450 END DO
451 END DO
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)')
461 aout(i,ng)=ltrc(itrc,ng)
462 END DO
463 END DO
464 CASE ('Aout(idTTav)')
469 aout(i,ng)=ltrc(itrc,ng)
470 END DO
471 END DO
472 CASE ('Aout(idUTav)')
477 aout(i,ng)=ltrc(itrc,ng)
478 END DO
479 END DO
480 CASE ('Aout(idVTav)')
485 aout(i,ng)=ltrc(itrc,ng)
486 END DO
487 END DO
488 CASE ('Aout(iHUTav)')
493 aout(i,ng)=ltrc(itrc,ng)
494 END DO
495 END DO
496 CASE ('Aout(iHVTav)')
501 aout(i,ng)=ltrc(itrc,ng)
502 END DO
503 END DO
504#endif
505#ifdef DIAGNOSTICS_TS
506 CASE ('Dout(iTrate)')
512 END DO
513 END DO
514 CASE ('Dout(iThadv)')
520 END DO
521 END DO
522 CASE ('Dout(iTxadv)')
528 END DO
529 END DO
530 CASE ('Dout(iTyadv)')
536 END DO
537 END DO
538 CASE ('Dout(iTvadv)')
544 END DO
545 END DO
546# if defined TS_DIF2 || defined TS_DIF4
547 CASE ('Dout(iThdif)')
553 END DO
554 END DO
555 CASE ('Dout(iTxdif)')
561 END DO
562 END DO
563 CASE ('Dout(iTydif)')
569 END DO
570 END DO
571# if defined MIX_GEO_TS || defined MIX_ISO_TS
572 CASE ('Dout(iTsdif)')
578 END DO
579 END DO
580# endif
581# endif
582 CASE ('Dout(iTvdif)')
588 END DO
589 END DO
590#endif
591 END SELECT
592 END IF
593 END DO
594 10
IF (
master)
WRITE (out,40) line
596 RETURN
597 20 CONTINUE
598
599
600
601
602
603 IF (
master.and.lwrite)
THEN
606 WRITE (out,50) ng
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', &
613 & '(m2/mmole_N).'
614 WRITE (out,80)
attpl(ng),
'AttPL', &
615 & 'Light attenuation due to large phytoplankton', &
616 & '(m2/mmole_N).'
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', &
634 & '(1/day).'
635 WRITE (out,80)
vmaxl(ng),
'VmaxL', &
636 & 'Large phytoplankton maximum photosynthetic rate', &
637 & '(1/day).'
638 WRITE (out,80)
kno3s(ng),
'KNO3S', &
639 & 'Small phytoplankton NO3 half saturation constant', &
640 & '(mmole_N/m3).'
641 WRITE (out,80)
kno3l(ng),
'KNO3L', &
642 & 'Large phytoplankton NO3 half saturation constant', &
643 & '(mmole_N/m3).'
644 WRITE (out,80)
knh4s(ng),
'KNH4S', &
645 & 'Small phytoplankton NH4 half saturation constant', &
646 & '(mmole_N/m3).'
647 WRITE (out,80)
knh4l(ng),
'KNH4L', &
648 & 'Large phytoplankton NH4 half saturation constant', &
649 & '(mmole_N/m3).'
650 WRITE (out,80)
ksil(ng),
'KSiL', &
651 & 'Small phytoplankton SiOH4 half saturation constant', &
652 & '(mmole_Si/m3).'
653 WRITE (out,80)
pusais(ng),
'PusaiS', &
654 & 'Small phytoplankton NH4 inhibition coefficient', &
655 & '(m3/mmole_N).'
656 WRITE (out,80)
pusail(ng),
'PusaiL', &
657 & 'Large phytoplankton NH4 inhibition coefficient', &
658 & '(m3/mmole_N).'
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', &
725 & '(m3/mmole_N).'
726 WRITE (out,80)
laml(ng),
'LamL', &
727 & 'Large zooplankton grazing Ivlev constant', &
728 & '(m3/mmole_N).'
729 WRITE (out,80)
lamp(ng),
'LamP', &
730 & 'Preditor zooplankton grazing Ivlev constant', &
731 & '(m3/mmole_N).'
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.'
751#else
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).'
773#endif
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).'
847#ifdef TS_DIF2
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)))
853# ifdef ADJOINT
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)))
857# endif
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)))
862# endif
863 END DO
864#endif
865#ifdef TS_DIF4
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)))
871# ifdef ADJOINT
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)))
875# endif
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)))
880# endif
881 END DO
882#endif
887 & i, 'Turning ON sponge on tracer ', i, &
889 ELSE
891 & i, 'Turning OFF sponge on tracer ', i, &
893 END IF
894 END DO
897 WRITE(out,90)
akt_bak(i,ng),
'Akt_bak', i, &
898 & 'Background vertical mixing coefficient (m2/s)', &
900 END DO
901#ifdef FORWARD_MIXING
904# ifdef ADJOINT
905 WRITE (out,90)
ad_akt_fac(i,ng),
'ad_Akt_fac', i, &
906 & 'ADM basic state vertical mixing scale factor', &
908# endif
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', &
913# endif
914 END DO
915#endif
918 WRITE (out,90)
tnudg(i,ng),
'Tnudg', i, &
919 & 'Nudging/relaxation time scale (days)', &
921 END DO
925 WRITE (out,100)
ltracersrc(i,ng),
'LtracerSrc', &
926 & i, 'Turning ON point sources/Sink on tracer ', i, &
928 ELSE
929 WRITE (out,100)
ltracersrc(i,ng),
'LtracerSrc', &
930 & i, 'Turning OFF point sources/Sink on tracer ', i, &
932 END IF
933 END DO
937 WRITE (out,100)
ltracerclm(i,ng),
'LtracerCLM', i, &
938 & 'Turning ON processing of climatology tracer ', i, &
940 ELSE
941 WRITE (out,100)
ltracerclm(i,ng),
'LtracerCLM', i, &
942 & 'Turning OFF processing of climatology tracer ', i, &
944 END IF
945 END DO
949 WRITE (out,100)
lnudgetclm(i,ng),
'LnudgeTCLM', i, &
950 & 'Turning ON nudging of climatology tracer ', i, &
952 ELSE
953 WRITE (out,100)
lnudgetclm(i,ng),
'LnudgeTCLM', i, &
954 & 'Turning OFF nudging of climatology tracer ', i, &
956 END IF
957 END DO
958 IF ((
nhis(ng).gt.0).and.any(
hout(:,ng)))
THEN
959 WRITE (out,'(1x)')
965 END DO
970 & 'Write out tracer flux ', i, &
972 END DO
973 END IF
974 IF ((
nqck(ng).gt.0).and.any(
qout(:,ng)))
THEN
975 WRITE (out,'(1x)')
981 END DO
986 & 'Write out surface tracer ', i, &
988 END DO
993 & 'Write out tracer flux ', i, &
995 END DO
996 END IF
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
1002 WRITE (out,'(1x)')
1007 & 'Write out averaged tracer ', i, &
1009 END DO
1014 & 'Write out averaged <t*t> for tracer ', i, &
1016 END DO
1021 & 'Write out averaged <u*t> for tracer ', i, &
1023 END DO
1028 & 'Write out averaged <v*t> for tracer ', i, &
1030 END DO
1035 & 'Write out averaged <Huon*t> for tracer ', i, &
1037 END DO
1042 & 'Write out averaged <Hvom*t> for tracer ', i, &
1044 END DO
1045 END IF
1046#endif
1047#ifdef DIAGNOSTICS_TS
1048 IF ((
ndia(ng).gt.0).and.any(
dout(:,ng)))
THEN
1049 WRITE (out,'(1x)')
1053 & WRITE (out,110) .true., 'Dout(iTrate)', &
1054 & 'Write out rate of change of tracer ', itrc, &
1056 END DO
1060 & WRITE (out,110) .true., 'Dout(iThadv)', &
1061 & 'Write out horizontal advection, tracer ', itrc, &
1063 END DO
1067 & WRITE (out,110) .true., 'Dout(iTxadv)', &
1068 & 'Write out horizontal X-advection, tracer ', itrc, &
1070 END DO
1074 & WRITE (out,110) .true., 'Dout(iTyadv)', &
1075 & 'Write out horizontal Y-advection, tracer ', itrc, &
1077 END DO
1081 & WRITE (out,110) .true., 'Dout(iTvadv)', &
1082 & 'Write out vertical advection, tracer ', itrc, &
1084 END DO
1085# if defined TS_DIF2 || defined TS_DIF4
1089 & WRITE (out,110) .true., 'Dout(iThdif)', &
1090 & 'Write out horizontal diffusion, tracer ', itrc, &
1092 END DO
1096 & WRITE (out,110) .true., 'Dout(iTxdif)', &
1097 & 'Write out horizontal X-diffusion, tracer ', itrc, &
1099 END DO
1103 & WRITE (out,110) .true., 'Dout(iTydif)', &
1104 & 'Write out horizontal Y-diffusion, tracer ', itrc, &
1106 END DO
1107# if defined MIX_GEO_TS || defined MIX_ISO_TS
1111 & WRITE (out,110) .true., 'Dout(iTsdif)', &
1112 & 'Write out horizontal S-diffusion, tracer ', itrc, &
1114 END DO
1115# endif
1116# endif
1120 & WRITE (out,110) .true., 'Dout(iTvdif)', &
1121 & 'Write out vertical diffusion, tracer ', itrc, &
1123 END DO
1124 END IF
1125#endif
1126 END IF
1127 END DO
1128 END IF
1129
1130
1131
1132
1133
1134
1135
1136
1141#ifdef ADJOINT
1143#endif
1144#if defined TANGENT || defined TL_IOMS
1146#endif
1147
1148
1149
1150 IF (
tnudg(i,ng).gt.0.0_r8)
THEN
1152 ELSE
1154 END IF
1155 END DO
1156 END DO
1157
1158 30 FORMAT (/,' read_BioPar - variable info not yet loaded, ', &
1159 & a,i2.2,a)
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)
1169
1170 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)
real(r8), dimension(:), allocatable pl2zlstar
real(r8), dimension(:), allocatable kps2zs
real(r8), dimension(:), allocatable parfrac
real(r8), dimension(:), allocatable kmorzl
real(r8), dimension(:), allocatable kpl2zl
real(r8), dimension(:), allocatable ko2s
real(r8), dimension(:), allocatable pusaipl
real(r8), dimension(:), allocatable knit
real(r8), dimension(:), allocatable pusais
real(r8), dimension(:), allocatable kzs2zl
real(r8), dimension(:), allocatable vp2n0
real(r8), dimension(:), allocatable alphaps
real(r8), dimension(:), allocatable vmaxs
real(r8), dimension(:), allocatable vp2d0
real(r8), dimension(:), allocatable ps2zsstar
integer, dimension(:), allocatable bioiter
real(r8), dimension(:), allocatable zs2zpstar
real(r8), dimension(:), allocatable attsw
real(r8), dimension(:), allocatable knh4l
real(r8), dimension(:), allocatable kgpps
real(r8), dimension(:), allocatable grmaxppl
real(r8), dimension(:), allocatable lams
real(r8), dimension(:), allocatable kzs2zp
real(r8), dimension(:), allocatable kps2zl
real(r8), dimension(:), allocatable vd2n0
real(r8), dimension(:), allocatable setvpon
real(r8), dimension(:), allocatable kmorzs
real(r8), dimension(:), allocatable vmaxl
real(r8), dimension(:), allocatable morpl0
real(r8), dimension(:), allocatable kmorps
real(r8), dimension(:), allocatable rsin
real(r8), dimension(:), allocatable grmaxpzs
real(r8), dimension(:), allocatable vo2s0
real(r8), dimension(:), allocatable pusail
real(r8), dimension(:), allocatable kgppl
real(r8), dimension(:), allocatable kresps
real(r8), dimension(:), allocatable grmaxlzs
real(r8), dimension(:), allocatable krespl
real(r8), dimension(:), allocatable kgras
real(r8), dimension(:), allocatable alphazl
real(r8), dimension(:), allocatable kgral
real(r8), dimension(:), allocatable betapl
real(r8), dimension(:), allocatable resps0
real(r8), dimension(:), allocatable attpl
real(r8), dimension(:), allocatable kp2n
real(r8), dimension(:), allocatable attps
real(r8), dimension(:), allocatable morzl0
real(r8), dimension(:), allocatable betazp
real(r8), dimension(:), allocatable morzs0
real(r8), dimension(:), allocatable gammal
real(r8), dimension(:), allocatable lamp
integer, dimension(:), allocatable idbio
real(r8), dimension(:), allocatable alphapl
real(r8), dimension(:), allocatable kmorzp
real(r8), dimension(:), allocatable kpl2zp
real(r8), dimension(:), allocatable ps2zlstar
real(r8), dimension(:), allocatable grmaxlps
real(r8), dimension(:), allocatable kd2n
real(r8), dimension(:), allocatable zl2zpstar
real(r8), dimension(:), allocatable nit0
real(r8), dimension(:), allocatable kno3l
real(r8), dimension(:), allocatable alphazs
real(r8), dimension(:), allocatable kzl2zp
real(r8), dimension(:), allocatable betazl
real(r8), dimension(:), allocatable gammas
real(r8), dimension(:), allocatable setvopal
real(r8), dimension(:), allocatable grmaxlpl
real(r8), dimension(:), allocatable respl0
real(r8), dimension(:), allocatable kno3s
real(r8), dimension(:), allocatable morzp0
real(r8), dimension(:), allocatable kmorpl
real(r8), dimension(:), allocatable pl2zpstar
real(r8), dimension(:), allocatable pusaizs
real(r8), dimension(:), allocatable alphazp
real(r8), dimension(:), allocatable grmaxsps
real(r8), dimension(:), allocatable kgrap
real(r8), dimension(:), allocatable betazs
real(r8), dimension(:), allocatable knh4s
real(r8), dimension(:), allocatable ksil
real(r8), dimension(:), allocatable grmaxpzl
real(r8), dimension(:), allocatable laml
real(r8), dimension(:), allocatable morps0
real(r8), dimension(:), allocatable kp2d
real(r8), dimension(:), allocatable betaps
real(r8), dimension(:), allocatable zs2zlstar
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 idtsur
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
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 lbiology
logical, dimension(:,:), allocatable ltracerclm
integer, dimension(:), allocatable ndia
logical, dimension(:,:), allocatable lnudgetclm
real(r8), dimension(:,:), allocatable tl_akt_fac