ROMS
Loading...
Searching...
No Matches
nemuro_inp.h
Go to the documentation of this file.
1 SUBROUTINE read_biopar (model, inp, out, Lwrite)
2!
3!git $Id$
4!================================================== Hernan G. Arango ===
5! Copyright (c) 2002-2025 The ROMS Group !
6! Licensed under a MIT/X style license !
7! See License_ROMS.md !
8!=======================================================================
9! !
10! This routine reads in Nemuro ecosystem model input parameters. !
11! They are specified in input script "nemuro.in". !
12! !
13!=======================================================================
14!
15 USE mod_param
16 USE mod_parallel
17 USE mod_biology
18 USE mod_ncparam
19 USE mod_scalars
20!
22!
23 implicit none
24!
25! Imported variable declarations
26!
27 logical, intent(in) :: Lwrite
28 integer, intent(in) :: model, inp, out
29!
30! Local variable declarations.
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! Initialize.
48!-----------------------------------------------------------------------
49!
50 igrid=1 ! nested grid counter
51 itracer=0 ! LBC tracer counter
52 itrcstr=1 ! first LBC tracer to process
53 itrcend=nbt ! last LBC tracer to process
54 nline=0 ! LBC multi-line counter
55!
56!-----------------------------------------------------------------------
57! Read in Nemuro biological model parameters.
58!-----------------------------------------------------------------------
59!
60 DO WHILE (.true.)
61 READ (inp,'(a)',err=10,END=20) line
62 status=decode_line(line, keyword, nval, cval, rval)
63 IF (status.gt.0) THEN
64 SELECT CASE (trim(keyword))
65 CASE ('Lbiology')
66 npts=load_l(nval, cval, ngrids, lbiology)
67 CASE ('BioIter')
68 npts=load_i(nval, rval, ngrids, bioiter)
69 CASE ('AttSW')
70 npts=load_r(nval, rval, ngrids, attsw)
71 CASE ('AttPS')
72 npts=load_r(nval, rval, ngrids, attps)
73 CASE ('AttPL')
74 npts=load_r(nval, rval, ngrids, attpl)
75 CASE ('PARfrac')
76 npts=load_r(nval, rval, ngrids, parfrac)
77 CASE ('AlphaPS')
78 npts=load_r(nval, rval, ngrids, alphaps)
79 CASE ('AlphaPL')
80 npts=load_r(nval, rval, ngrids, alphapl)
81 CASE ('BetaPS')
82 npts=load_r(nval, rval, ngrids, betaps)
83 CASE ('BetaPL')
84 npts=load_r(nval, rval, ngrids, betapl)
85 CASE ('VmaxS')
86 npts=load_r(nval, rval, ngrids, vmaxs)
87 CASE ('VmaxL')
88 npts=load_r(nval, rval, ngrids, vmaxl)
89 CASE ('KNO3S')
90 npts=load_r(nval, rval, ngrids, kno3s)
91 CASE ('KNO3L')
92 npts=load_r(nval, rval, ngrids, kno3l)
93 CASE ('KNH4S')
94 npts=load_r(nval, rval, ngrids, knh4s)
95 CASE ('KNH4L')
96 npts=load_r(nval, rval, ngrids, knh4l)
97 CASE ('KSiL')
98 npts=load_r(nval, rval, ngrids, ksil)
99 CASE ('PusaiS')
100 npts=load_r(nval, rval, ngrids, pusais)
101 CASE ('PusaiL')
102 npts=load_r(nval, rval, ngrids, pusail)
103 CASE ('KGppS')
104 npts=load_r(nval, rval, ngrids, kgpps)
105 CASE ('KGppL')
106 npts=load_r(nval, rval, ngrids, kgppl)
107 CASE ('ResPS0')
108 npts=load_r(nval, rval, ngrids, resps0)
109 CASE ('ResPL0')
110 npts=load_r(nval, rval, ngrids, respl0)
111 CASE ('KResPS')
112 npts=load_r(nval, rval, ngrids, kresps)
113 CASE ('KResPL')
114 npts=load_r(nval, rval, ngrids, krespl)
115 CASE ('GammaS')
116 npts=load_r(nval, rval, ngrids, gammas)
117 CASE ('GammaL')
118 npts=load_r(nval, rval, ngrids, gammal)
119 CASE ('MorPS0')
120 npts=load_r(nval, rval, ngrids, morps0)
121 CASE ('MorPL0')
122 npts=load_r(nval, rval, ngrids, morpl0)
123 CASE ('KMorPS')
124 npts=load_r(nval, rval, ngrids, kmorps)
125 CASE ('KMorPL')
126 npts=load_r(nval, rval, ngrids, kmorpl)
127 CASE ('GRmaxSps')
128 npts=load_r(nval, rval, ngrids, grmaxsps)
129 CASE ('GRmaxLps')
130 npts=load_r(nval, rval, ngrids, grmaxlps)
131 CASE ('GRmaxLpl')
132 npts=load_r(nval, rval, ngrids, grmaxlpl)
133 CASE ('GRmaxLzs')
134 npts=load_r(nval, rval, ngrids, grmaxlzs)
135 CASE ('GRmaxPpl')
136 npts=load_r(nval, rval, ngrids, grmaxppl)
137 CASE ('GRmaxPzs')
138 npts=load_r(nval, rval, ngrids, grmaxpzs)
139 CASE ('GRmaxPzl')
140 npts=load_r(nval, rval, ngrids, grmaxpzl)
141 CASE ('KGraS')
142 npts=load_r(nval, rval, ngrids, kgras)
143 CASE ('KGraL')
144 npts=load_r(nval, rval, ngrids, kgral)
145 CASE ('KGraP')
146 npts=load_r(nval, rval, ngrids, kgrap)
147 CASE ('LamS')
148 npts=load_r(nval, rval, ngrids, lams)
149 CASE ('LamL')
150 npts=load_r(nval, rval, ngrids, laml)
151 CASE ('LamP')
152 npts=load_r(nval, rval, ngrids, lamp)
153 CASE ('KPS2ZS')
154 npts=load_r(nval, rval, ngrids, kps2zs)
155 CASE ('KPS2ZL')
156 npts=load_r(nval, rval, ngrids, kps2zl)
157 CASE ('KPL2ZL')
158 npts=load_r(nval, rval, ngrids, kpl2zl)
159 CASE ('KZS2ZL')
160 npts=load_r(nval, rval, ngrids, kzs2zl)
161 CASE ('KPL2ZP')
162 npts=load_r(nval, rval, ngrids, kpl2zp)
163 CASE ('KZS2ZP')
164 npts=load_r(nval, rval, ngrids, kzs2zp)
165 CASE ('KZL2ZP')
166 npts=load_r(nval, rval, ngrids, kzl2zp)
167 CASE ('PS2ZSstar')
168 npts=load_r(nval, rval, ngrids, ps2zsstar)
169 CASE ('PS2ZLstar')
170 npts=load_r(nval, rval, ngrids, ps2zlstar)
171 CASE ('PL2ZLstar')
172 npts=load_r(nval, rval, ngrids, pl2zlstar)
173 CASE ('ZS2ZLstar')
174 npts=load_r(nval, rval, ngrids, zs2zlstar)
175 CASE ('PL2ZPstar')
176 npts=load_r(nval, rval, ngrids, pl2zpstar)
177 CASE ('ZS2ZPstar')
178 npts=load_r(nval, rval, ngrids, zs2zpstar)
179 CASE ('ZL2ZPstar')
180 npts=load_r(nval, rval, ngrids, zl2zpstar)
181 CASE ('PusaiPL')
182 npts=load_r(nval, rval, ngrids, pusaipl)
183 CASE ('PusaiZS')
184 npts=load_r(nval, rval, ngrids, pusaizs)
185 CASE ('MorZS0')
186 npts=load_r(nval, rval, ngrids, morzs0)
187 CASE ('MorZL0')
188 npts=load_r(nval, rval, ngrids, morzl0)
189 CASE ('MorZP0')
190 npts=load_r(nval, rval, ngrids, morzp0)
191 CASE ('KMorZS')
192 npts=load_r(nval, rval, ngrids, kmorzs)
193 CASE ('KMorZL')
194 npts=load_r(nval, rval, ngrids, kmorzl)
195 CASE ('KMorZP')
196 npts=load_r(nval, rval, ngrids, kmorzp)
197 CASE ('AlphaZS')
198 npts=load_r(nval, rval, ngrids, alphazs)
199 CASE ('AlphaZL')
200 npts=load_r(nval, rval, ngrids, alphazl)
201 CASE ('AlphaZP')
202 npts=load_r(nval, rval, ngrids, alphazp)
203 CASE ('BetaZS')
204 npts=load_r(nval, rval, ngrids, betazs)
205 CASE ('BetaZL')
206 npts=load_r(nval, rval, ngrids, betazl)
207 CASE ('BetaZP')
208 npts=load_r(nval, rval, ngrids, betazp)
209 CASE ('Nit0')
210 npts=load_r(nval, rval, ngrids, nit0)
211 CASE ('VP2N0')
212 npts=load_r(nval, rval, ngrids, vp2n0)
213 CASE ('VP2D0')
214 npts=load_r(nval, rval, ngrids, vp2d0)
215 CASE ('VD2N0')
216 npts=load_r(nval, rval, ngrids, vd2n0)
217 CASE ('VO2S0')
218 npts=load_r(nval, rval, ngrids, vo2s0)
219 CASE ('KNit')
220 npts=load_r(nval, rval, ngrids, knit)
221 CASE ('KP2D')
222 npts=load_r(nval, rval, ngrids, kp2d)
223 CASE ('KP2N')
224 npts=load_r(nval, rval, ngrids, kp2n)
225 CASE ('KD2N')
226 npts=load_r(nval, rval, ngrids, kd2n)
227 CASE ('KO2S')
228 npts=load_r(nval, rval, ngrids, ko2s)
229 CASE ('RSiN')
230 npts=load_r(nval, rval, ngrids, rsin)
231 CASE ('setVPON')
232 npts=load_r(nval, rval, ngrids, setvpon)
233 CASE ('setVOpal')
234 npts=load_r(nval, rval, ngrids, setvopal)
235 CASE ('TNU2')
236 npts=load_r(nval, rval, nbt, ngrids, rbio)
237 DO ng=1,ngrids
238 DO itrc=1,nbt
239 i=idbio(itrc)
240 nl_tnu2(i,ng)=rbio(itrc,ng)
241 END DO
242 END DO
243 CASE ('TNU4')
244 npts=load_r(nval, rval, nbt, ngrids, rbio)
245 DO ng=1,ngrids
246 DO itrc=1,nbt
247 i=idbio(itrc)
248 nl_tnu4(i,ng)=rbio(itrc,ng)
249 END DO
250 END DO
251 CASE ('ad_TNU2')
252 npts=load_r(nval, rval, nbt, ngrids, rbio)
253 DO ng=1,ngrids
254 DO itrc=1,nbt
255 i=idbio(itrc)
256 ad_tnu2(i,ng)=rbio(itrc,ng)
257 tl_tnu2(i,ng)=rbio(itrc,ng)
258 END DO
259 END DO
260 CASE ('ad_TNU4')
261 npts=load_r(nval, rval, nbt, ngrids, rbio)
262 DO ng=1,ngrids
263 DO itrc=1,nbt
264 i=idbio(itrc)
265 ad_tnu4(i,ng)=rbio(itrc,ng)
266 tl_tnu4(i,ng)=rbio(itrc,ng)
267 END DO
268 END DO
269 CASE ('LtracerSponge')
270 npts=load_l(nval, cval, nbt, ngrids, ltrc)
271 DO ng=1,ngrids
272 DO itrc=1,nbt
273 i=idbio(itrc)
274 ltracersponge(i,ng)=ltrc(itrc,ng)
275 END DO
276 END DO
277 CASE ('AKT_BAK')
278 npts=load_r(nval, rval, nbt, ngrids, rbio)
279 DO ng=1,ngrids
280 DO itrc=1,nbt
281 i=idbio(itrc)
282 akt_bak(i,ng)=rbio(itrc,ng)
283 END DO
284 END DO
285 CASE ('ad_AKT_fac')
286 npts=load_r(nval, rval, nbt, ngrids, rbio)
287 DO ng=1,ngrids
288 DO itrc=1,nbt
289 i=idbio(itrc)
290 ad_akt_fac(i,ng)=rbio(itrc,ng)
291 tl_akt_fac(i,ng)=rbio(itrc,ng)
292 END DO
293 END DO
294 CASE ('TNUDG')
295 npts=load_r(nval, rval, nbt, ngrids, rbio)
296 DO ng=1,ngrids
297 DO itrc=1,nbt
298 i=idbio(itrc)
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 ! next nested grid
307 END IF
308 itrc=idbio(itracer)
309 npts=load_tadv(nval, cval, line, nline, itrc, igrid, &
310 & itracer, idbio(itrcstr), idbio(itrcend), &
311 & vname(1,idtvar(itrc)), &
312 & hadvection)
313 CASE ('Vadvection')
314 IF (itracer.lt.nbt) THEN
315 itracer=itracer+1
316 ELSE
317 itracer=1 ! next nested grid
318 END IF
319 itrc=idbio(itracer)
320 npts=load_tadv(nval, cval, line, nline, itrc, igrid, &
321 & itracer, idbio(itrcstr), idbio(itrcend), &
322 & vname(1,idtvar(itrc)), &
323 & vadvection)
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 ! next nested grid
330 END IF
331 itrc=idbio(itracer)
332 npts=load_tadv(nval, cval, line, nline, itrc, igrid, &
333 & itracer, idbio(itrcstr), idbio(itrcend), &
334 & vname(1,idtvar(itrc)), &
335 & ad_hadvection)
336 CASE ('Vadvection')
337 IF (itracer.lt.(nbt) THEN
338 itracer=itracer+1
339 ELSE
340 itracer=1 ! next nested grid
341 END IF
342 itrc=idbio(itracer)
343 npts=load_tadv(nval, cval, line, nline, itrc, igrid, &
344 & itracer, idbio(itrcstr), idbio(itrcend), &
345 & vname(1,idtvar(itrc)), &
346 & ad_vadvection)
347#endif
348 CASE ('LBC(isTvar)')
349 IF (itracer.lt.nbt) THEN
350 itracer=itracer+1
351 ELSE
352 itracer=1 ! next nested grid
353 END IF
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
361 itracer=itracer+1
362 ELSE
363 itracer=1 ! next nested grid
364 END IF
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)
369#endif
370 CASE ('LtracerSrc')
371 npts=load_l(nval, cval, nbt, ngrids, ltrc)
372 DO ng=1,ngrids
373 DO itrc=1,nbt
374 i=idbio(itrc)
375 ltracersrc(i,ng)=ltrc(itrc,ng)
376 END DO
377 END DO
378 CASE ('LtracerCLM')
379 npts=load_l(nval, cval, nbt, ngrids, ltrc)
380 DO ng=1,ngrids
381 DO itrc=1,nbt
382 i=idbio(itrc)
383 ltracerclm(i,ng)=ltrc(itrc,ng)
384 END DO
385 END DO
386 CASE ('LnudgeTCLM')
387 npts=load_l(nval, cval, nbt, ngrids, ltrc)
388 DO ng=1,ngrids
389 DO itrc=1,nbt
390 i=idbio(itrc)
391 lnudgetclm(i,ng)=ltrc(itrc,ng)
392 END DO
393 END DO
394 CASE ('Hout(idTvar)')
395 npts=load_l(nval, cval, nbt, ngrids, ltrc)
396 DO ng=1,ngrids
397 DO itrc=1,nbt
398 i=idtvar(idbio(itrc))
399 IF (i.eq.0) THEN
400 IF (master) WRITE (out,30) &
401 & 'idTvar(idbio(', itrc, '))'
402 exit_flag=5
403 RETURN
404 END IF
405 hout(i,ng)=ltrc(itrc,ng)
406 END DO
407 END DO
408 CASE ('Hout(idTsur)')
409 npts=load_l(nval, cval, nbt, ngrids, ltrc)
410 DO ng=1,ngrids
411 DO itrc=1,nbt
412 i=idtsur(idbio(itrc))
413 IF (i.eq.0) THEN
414 IF (master) WRITE (out,30) &
415 & 'idTsur(idbio(', itrc, '))'
416 exit_flag=5
417 RETURN
418 END IF
419 hout(i,ng)=ltrc(itrc,ng)
420 END DO
421 END DO
422 CASE ('Qout(idTvar)')
423 npts=load_l(nval, cval, nbt, ngrids, ltrc)
424 DO ng=1,ngrids
425 DO itrc=1,nbt
426 i=idtvar(idbio(itrc))
427 qout(i,ng)=ltrc(itrc,ng)
428 END DO
429 END DO
430 CASE ('Qout(idsurT)')
431 npts=load_l(nval, cval, nbt, ngrids, ltrc)
432 DO ng=1,ngrids
433 DO itrc=1,nbt
434 i=idsurt(idbio(itrc))
435 IF (i.eq.0) THEN
436 IF (master) WRITE (out,30) &
437 & 'idsurT(idbio(', itrc, '))'
438 exit_flag=5
439 RETURN
440 END IF
441 qout(i,ng)=ltrc(itrc,ng)
442 END DO
443 END DO
444 CASE ('Qout(idTsur)')
445 npts=load_l(nval, cval, nbt, ngrids, ltrc)
446 DO ng=1,ngrids
447 DO itrc=1,nbt
448 i=idtsur(idbio(itrc))
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)')
457 npts=load_l(nval, cval, nbt, ngrids, ltrc)
458 DO ng=1,ngrids
459 DO itrc=1,nbt
460 i=idtvar(idbio(itrc))
461 aout(i,ng)=ltrc(itrc,ng)
462 END DO
463 END DO
464 CASE ('Aout(idTTav)')
465 npts=load_l(nval, cval, nbt, ngrids, ltrc)
466 DO ng=1,ngrids
467 DO itrc=1,nbt
468 i=idttav(idbio(itrc))
469 aout(i,ng)=ltrc(itrc,ng)
470 END DO
471 END DO
472 CASE ('Aout(idUTav)')
473 npts=load_l(nval, cval, nbt, ngrids, ltrc)
474 DO ng=1,ngrids
475 DO itrc=1,nbt
476 i=idutav(idbio(itrc))
477 aout(i,ng)=ltrc(itrc,ng)
478 END DO
479 END DO
480 CASE ('Aout(idVTav)')
481 npts=load_l(nval, cval, nbt, ngrids, ltrc)
482 DO ng=1,ngrids
483 DO itrc=1,nbt
484 i=idvtav(idbio(itrc))
485 aout(i,ng)=ltrc(itrc,ng)
486 END DO
487 END DO
488 CASE ('Aout(iHUTav)')
489 npts=load_l(nval, cval, nbt, ngrids, ltrc)
490 DO ng=1,ngrids
491 DO itrc=1,nbt
492 i=ihutav(idbio(itrc))
493 aout(i,ng)=ltrc(itrc,ng)
494 END DO
495 END DO
496 CASE ('Aout(iHVTav)')
497 npts=load_l(nval, cval, nbt, ngrids, ltrc)
498 DO ng=1,ngrids
499 DO itrc=1,nbt
500 i=ihvtav(idbio(itrc))
501 aout(i,ng)=ltrc(itrc,ng)
502 END DO
503 END DO
504#endif
505#ifdef DIAGNOSTICS_TS
506 CASE ('Dout(iTrate)')
507 npts=load_l(nval, cval, nbt, ngrids, ltrc)
508 DO ng=1,ngrids
509 DO i=1,nbt
510 itrc=idbio(i)
511 dout(iddtrc(itrc,itrate),ng)=ltrc(i,ng)
512 END DO
513 END DO
514 CASE ('Dout(iThadv)')
515 npts=load_l(nval, cval, nbt, ngrids, ltrc)
516 DO ng=1,ngrids
517 DO i=1,nbt
518 itrc=idbio(i)
519 dout(iddtrc(itrc,ithadv),ng)=ltrc(i,ng)
520 END DO
521 END DO
522 CASE ('Dout(iTxadv)')
523 npts=load_l(nval, cval, nbt, ngrids, ltrc)
524 DO ng=1,ngrids
525 DO i=1,nbt
526 itrc=idbio(i)
527 dout(iddtrc(itrc,itxadv),ng)=ltrc(i,ng)
528 END DO
529 END DO
530 CASE ('Dout(iTyadv)')
531 npts=load_l(nval, cval, nbt, ngrids, ltrc)
532 DO ng=1,ngrids
533 DO i=1,nbt
534 itrc=idbio(i)
535 dout(iddtrc(itrc,ityadv),ng)=ltrc(i,ng)
536 END DO
537 END DO
538 CASE ('Dout(iTvadv)')
539 npts=load_l(nval, cval, nbt, ngrids, ltrc)
540 DO ng=1,ngrids
541 DO i=1,nbt
542 itrc=idbio(i)
543 dout(iddtrc(itrc,itvadv),ng)=ltrc(i,ng)
544 END DO
545 END DO
546# if defined TS_DIF2 || defined TS_DIF4
547 CASE ('Dout(iThdif)')
548 npts=load_l(nval, cval, nbt, ngrids, ltrc)
549 DO ng=1,ngrids
550 DO i=1,nbt
551 itrc=idbio(i)
552 dout(iddtrc(itrc,ithdif),ng)=ltrc(i,ng)
553 END DO
554 END DO
555 CASE ('Dout(iTxdif)')
556 npts=load_l(nval, cval, nbt, ngrids, ltrc)
557 DO ng=1,ngrids
558 DO i=1,nbt
559 itrc=idbio(i)
560 dout(iddtrc(itrc,itxdif),ng)=ltrc(i,ng)
561 END DO
562 END DO
563 CASE ('Dout(iTydif)')
564 npts=load_l(nval, cval, nbt, ngrids, ltrc)
565 DO ng=1,ngrids
566 DO i=1,nbt
567 itrc=idbio(i)
568 dout(iddtrc(itrc,itydif),ng)=ltrc(i,ng)
569 END DO
570 END DO
571# if defined MIX_GEO_TS || defined MIX_ISO_TS
572 CASE ('Dout(iTsdif)')
573 npts=load_l(nval, cval, nbt, ngrids, ltrc)
574 DO ng=1,ngrids
575 DO i=1,nbt
576 itrc=idbio(i)
577 dout(iddtrc(itrc,itsdif),ng)=ltrc(i,ng)
578 END DO
579 END DO
580# endif
581# endif
582 CASE ('Dout(iTvdif)')
583 npts=load_l(nval, cval, nbt, ngrids, ltrc)
584 DO ng=1,ngrids
585 DO i=1,nbt
586 itrc=idbio(i)
587 dout(iddtrc(itrc,itvdif),ng)=ltrc(i,ng)
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
595 exit_flag=4
596 RETURN
597 20 CONTINUE
598!
599!-----------------------------------------------------------------------
600! Report input parameters.
601!-----------------------------------------------------------------------
602!
603 IF (master.and.lwrite) THEN
604 DO ng=1,ngrids
605 IF (lbiology(ng)) 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
848 DO itrc=1,nbt
849 i=idbio(itrc)
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
866 DO itrc=1,nbt
867 i=idbio(itrc)
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
883 DO itrc=1,nbt
884 i=idbio(itrc)
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)))
889 ELSE
890 WRITE (out,100) ltracersponge(i,ng), 'LtracerSponge', &
891 & i, 'Turning OFF sponge on tracer ', i, &
892 & trim(vname(1,idtvar(i)))
893 END IF
894 END DO
895 DO itrc=1,nbt
896 i=idbio(itrc)
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)))
900 END DO
901#ifdef FORWARD_MIXING
902 DO itrc=1,nbt
903 i=idbio(itrc)
904# ifdef ADJOINT
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)))
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', &
912 & 'for tracer ', i, trim(vname(1,idtvar(i)))
913# endif
914 END DO
915#endif
916 DO itrc=1,nbt
917 i=idbio(itrc)
918 WRITE (out,90) tnudg(i,ng), 'Tnudg', i, &
919 & 'Nudging/relaxation time scale (days)', &
920 & 'for tracer ', i, trim(vname(1,idtvar(i)))
921 END DO
922 DO itrc=1,nbt
923 i=idbio(itrc)
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)))
928 ELSE
929 WRITE (out,100) ltracersrc(i,ng), 'LtracerSrc', &
930 & i, 'Turning OFF point sources/Sink on tracer ', i, &
931 & trim(vname(1,idtvar(i)))
932 END IF
933 END DO
934 DO itrc=1,nbt
935 i=idbio(itrc)
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)))
940 ELSE
941 WRITE (out,100) ltracerclm(i,ng), 'LtracerCLM', i, &
942 & 'Turning OFF processing of climatology tracer ', i, &
943 & trim(vname(1,idtvar(i)))
944 END IF
945 END DO
946 DO itrc=1,nbt
947 i=idbio(itrc)
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)))
952 ELSE
953 WRITE (out,100) lnudgetclm(i,ng), 'LnudgeTCLM', i, &
954 & 'Turning OFF nudging of climatology tracer ', i, &
955 & trim(vname(1,idtvar(i)))
956 END IF
957 END DO
958 IF ((nhis(ng).gt.0).and.any(hout(:,ng))) THEN
959 WRITE (out,'(1x)')
960 DO itrc=1,nbt
961 i=idbio(itrc)
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)))
965 END DO
966 DO itrc=1,nbt
967 i=idbio(itrc)
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)))
972 END DO
973 END IF
974 IF ((nqck(ng).gt.0).and.any(qout(:,ng))) THEN
975 WRITE (out,'(1x)')
976 DO itrc=1,nbt
977 i=idbio(itrc)
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)))
981 END DO
982 DO itrc=1,nbt
983 i=idbio(itrc)
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)))
988 END DO
989 DO itrc=1,nbt
990 i=idbio(itrc)
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)))
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)')
1003 DO itrc=1,nbt
1004 i=idbio(itrc)
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)))
1009 END DO
1010 DO itrc=1,nbt
1011 i=idbio(itrc)
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)))
1016 END DO
1017 DO itrc=1,nbt
1018 i=idbio(itrc)
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)))
1023 END DO
1024 DO itrc=1,nbt
1025 i=idbio(itrc)
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)))
1030 END DO
1031 DO itrc=1,nbt
1032 i=idbio(itrc)
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)))
1037 END DO
1038 DO itrc=1,nbt
1039 i=idbio(itrc)
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)))
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)')
1050 DO i=1,nbt
1051 itrc=idbio(i)
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)))
1056 END DO
1057 DO i=1,nbt
1058 itrc=idbio(i)
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)))
1063 END DO
1064 DO i=1,nbt
1065 itrc=idbio(i)
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)))
1070 END DO
1071 DO i=1,nbt
1072 itrc=idbio(i)
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)))
1077 END DO
1078 DO i=1,nbt
1079 itrc=idbio(i)
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)))
1084 END DO
1085# if defined TS_DIF2 || defined TS_DIF4
1086 DO i=1,nbt
1087 itrc=idbio(i)
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)))
1092 END DO
1093 DO i=1,nbt
1094 itrc=idbio(i)
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)))
1099 END DO
1100 DO i=1,nbt
1101 itrc=idbio(i)
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)))
1106 END DO
1107# if defined MIX_GEO_TS || defined MIX_ISO_TS
1108 DO i=1,nbt
1109 itrc=idbio(i)
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)))
1114 END DO
1115# endif
1116# endif
1117 DO i=1,nbt
1118 itrc=idbio(i)
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)))
1123 END DO
1124 END IF
1125#endif
1126 END IF
1127 END DO
1128 END IF
1129!
1130!-----------------------------------------------------------------------
1131! Rescale biological tracer parameters.
1132!-----------------------------------------------------------------------
1133!
1134! Take the square root of the biharmonic coefficients so it can
1135! be applied to each harmonic operator.
1136!
1137 DO ng=1,ngrids
1138 DO itrc=1,nbt
1139 i=idbio(itrc)
1140 nl_tnu4(i,ng)=sqrt(abs(nl_tnu4(i,ng)))
1141#ifdef ADJOINT
1142 ad_tnu4(i,ng)=sqrt(abs(ad_tnu4(i,ng)))
1143#endif
1144#if defined TANGENT || defined TL_IOMS
1145 tl_tnu4(i,ng)=sqrt(abs(tl_tnu4(i,ng)))
1146#endif
1147!
1148! Compute inverse nudging coefficients (1/s) used in various tasks.
1149!
1150 IF (tnudg(i,ng).gt.0.0_r8) THEN
1151 tnudg(i,ng)=1.0_r8/(tnudg(i,ng)*86400.0_r8)
1152 ELSE
1153 tnudg(i,ng)=0.0_r8
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
1171 END SUBROUTINE read_biopar
subroutine read_biopar(model, inp, out, lwrite)
Definition ecosim_inp.h:2
integer nbt
Definition mod_param.F:509