139
140
146
147
148
149 integer, intent(in) :: ng, tile
150 integer, intent(in) :: LBi, UBi, LBj, UBj, UBk, UBt
151 integer, intent(in) :: IminS, ImaxS, JminS, JmaxS
152 integer, intent(in) :: nstp, nnew
153
154#ifdef ASSUMED_SHAPE
155# ifdef MASKING
156 real(r8), intent(in) :: rmask(LBi:,LBj:)
157# if defined WET_DRY && defined DIAGNOSTICS_BIO
158 real(r8), intent(in) :: rmask_full(LBi:,LBj:)
159# endif
160# endif
161 real(r8), intent(in) :: Hz(LBi:,LBj:,:)
162 real(r8), intent(in) :: z_r(LBi:,LBj:,:)
163 real(r8), intent(in) :: z_w(LBi:,LBj:,0:)
164 real(r8), intent(in) :: SpecIr(LBi:,LBj:,:)
165 real(r8), intent(in) :: avcos(LBi:,LBj:,:)
166# ifdef DIAGNOSTICS_BIO
167 real(r8), intent(inout) :: DiaBio3d(LBi:,LBj:,:,:)
168 real(r8), intent(inout) :: DiaBio4d(LBi:,LBj:,:,:,:)
169# endif
170 real(r8), intent(inout) :: t(LBi:,LBj:,:,:,:)
171#else
172# ifdef MASKING
173 real(r8), intent(in) :: rmask(LBi:UBi,LBj:UBj)
174# if defined WET_DRY && defined DIAGNOSTICS_BIO
175 real(r8), intent(in) :: rmask_full(LBi:UBi,LBj:UBj)
176# endif
177# endif
178 real(r8), intent(in) :: Hz(LBi:UBi,LBj:UBj,UBk)
179 real(r8), intent(in) :: z_r(LBi:UBi,LBj:UBj,UBk)
180 real(r8), intent(in) :: z_w(LBi:UBi,LBj:UBj,0:UBk)
181 real(r8), intent(in) :: SpecIr(LBi:UBi,LBj:UBj,NBands)
182 real(r8), intent(in) :: avcos(LBi:UBi,LBj:UBj,NBands)
183# ifdef DIAGNOSTICS_BIO
184 real(r8), intent(inout) :: DiaBio3d(LBi:UBi,LBj:UBj, &
185 & NDbands,NDbio3d)
186 real(r8), intent(inout) :: DiaBio4d(LBi:UBi,LBj:UBj,N(ng), &
187 & NDbands,NDbio4d)
188# endif
189 real(r8), intent(inout) :: t(LBi:UBi,LBj:UBj,UBk,3,UBt)
190#endif
191
192
193
194 integer, parameter :: Msink = 30
195
196 integer :: i, j, k, ks
197 integer :: Iter, Tindex, ic, isink, ibio, id, itrc, ivar
198 integer :: ibac, iband, idom, ifec, iphy, ipig
199 integer :: Nsink
200
201 integer, dimension(Msink) :: idsink
202 integer, dimension(IminS:ImaxS,N(ng)) :: ksource
203
204 real(r8), parameter :: MinVal = 0.0_r8
205
206 real(r8) :: FV1, FV2, FV3, FV4, FV5, FV6, FV7, dtbio
207 real(r8) :: DOC_lab, Ed_tot, Nup_max, aph442, aPHYN_wa
208 real(r8) :: avgcos_min, par_b, par_s, photo_DIC, photo_DOC
209 real(r8) :: photo_decay, slope_AC, tChl, theta_m, total_photo
210 real(r8) :: WLE, factint
211
212 real(r8) :: Het_BAC
213 real(r8) :: N_quota, RelDOC1, RelDON1, RelDOP1, RelFe
214 real(r8) :: cff, cff1, cff2, cffL, cffR, cu, dltL, dltR
215#ifdef DIAGNOSTICS_BIO
216 real(r8) :: fiter
217#endif
218
219 real(r8), dimension(Msink) :: Wbio
220
221 real(r8), dimension(4) :: Bac_G
222
223 real(r8), dimension(NBands) :: dATT_sum
224
225 real(r8), dimension(N(ng),NBands) :: avgcos, dATT
226 real(r8), dimension(N(ng),NBands) :: specir_d
227 real(r8), dimension(N(ng),NBands) :: tot_ab, tot_b, tot_s
228#ifdef BIO_OPTIC
229 real(r8), dimension(0:N(ng),NBands) :: specir_w
230#endif
231 real(r8), dimension(N(ng),Nphy) :: C2CHL, C2CHL_w
232 real(r8), dimension(N(ng),Nphy) :: Gt_fl, Gt_ll, Gt_nl
233 real(r8), dimension(N(ng),Nphy) :: Gt_sl, Gt_pl
234 real(r8), dimension(N(ng),Nphy) :: alfa
235 real(r8), dimension(N(ng),Nphy) :: pac_eff
236
237 real(r8), dimension(N(ng),Nphy,Npig) :: Pigs_w
238
239 integer, dimension(IminS:ImaxS) :: Keuphotic
240
241 real(r8), dimension(IminS:ImaxS,N(ng)) :: E0_nz
242 real(r8), dimension(IminS:ImaxS,N(ng)) :: Ed_nz
243 real(r8), dimension(IminS:ImaxS,N(ng)) :: DOC_frac
244 real(r8), dimension(IminS:ImaxS,N(ng)) :: NitrBAC
245 real(r8), dimension(IminS:ImaxS,N(ng)) :: NH4toNO3
246 real(r8), dimension(IminS:ImaxS,N(ng)) :: NtoNBAC
247 real(r8), dimension(IminS:ImaxS,N(ng)) :: NtoPBAC
248 real(r8), dimension(IminS:ImaxS,N(ng)) :: NtoFeBAC
249 real(r8), dimension(IminS:ImaxS,N(ng)) :: totDOC_d
250 real(r8), dimension(IminS:ImaxS,N(ng)) :: totDON_d
251 real(r8), dimension(IminS:ImaxS,N(ng)) :: totDOP_d
252 real(r8), dimension(IminS:ImaxS,N(ng)) :: totFe_d
253 real(r8), dimension(IminS:ImaxS,N(ng)) :: totNH4_d
254 real(r8), dimension(IminS:ImaxS,N(ng)) :: totNO3_d
255 real(r8), dimension(IminS:ImaxS,N(ng)) :: totPO4_d
256 real(r8), dimension(IminS:ImaxS,N(ng)) :: totSiO_d
257
258 real(r8), dimension(IminS:ImaxS,N(ng),Nbac) :: GtBAC
259 real(r8), dimension(IminS:ImaxS,N(ng),Nbac) :: NupDOC_ba
260 real(r8), dimension(IminS:ImaxS,N(ng),Nbac) :: NupDON_ba
261 real(r8), dimension(IminS:ImaxS,N(ng),Nbac) :: NupDOP_ba
262 real(r8), dimension(IminS:ImaxS,N(ng),Nbac) :: NupFe_ba
263 real(r8), dimension(IminS:ImaxS,N(ng),Nbac) :: NupNH4_ba
264 real(r8), dimension(IminS:ImaxS,N(ng),Nbac) :: NupPO4_ba
265
266 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: C2fALG
267 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: C2nALG
268 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: C2pALG
269 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: C2sALG
270 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: GtALG
271 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: GtALG_r
272 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: NupDOP
273 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: NupDON
274 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: NupFe
275 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: NupNH4
276 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: NupNO3
277 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: NupPO4
278 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: NupSiO
279 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: graz_act
280 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: mu_bar_f
281 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: mu_bar_n
282 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: mu_bar_p
283 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: mu_bar_s
284 real(r8), dimension(IminS:ImaxS,N(ng),Nphy) :: refuge
285
286 real(r8), dimension(IminS:ImaxS,N(ng),Nfec) :: Regen_C
287 real(r8), dimension(IminS:ImaxS,N(ng),Nfec) :: Regen_F
288 real(r8), dimension(IminS:ImaxS,N(ng),Nfec) :: Regen_N
289 real(r8), dimension(IminS:ImaxS,N(ng),Nfec) :: Regen_P
290 real(r8), dimension(IminS:ImaxS,N(ng),Nfec) :: Regen_S
291
292 real(r8), dimension(IminS:ImaxS,N(ng),NBands) :: specir_scal
293 real(r8), dimension(IminS:ImaxS,N(ng),Nphy,NBands) :: aPHYN_al
294 real(r8), dimension(IminS:ImaxS,N(ng),Nphy,NBands) :: aPHYN_at
295 real(r8), dimension(IminS:ImaxS,N(ng),NBands) :: aDET
296 real(r8), dimension(IminS:ImaxS,N(ng),NBands) :: aCDC
297 real(r8), dimension(IminS:ImaxS,N(ng),NBands) :: b_phy
298 real(r8), dimension(IminS:ImaxS,N(ng),NBands) :: s_phy
299 real(r8), dimension(IminS:ImaxS,N(ng),NBands) :: b_tot
300 real(r8), dimension(IminS:ImaxS,N(ng),NBands) :: s_tot
301
302 real(r8), dimension(IminS:ImaxS,N(ng),NT(ng)) :: Bio
303 real(r8), dimension(IminS:ImaxS,N(ng),NT(ng)) :: Bio_old
304 real(r8), dimension(IminS:ImaxS,N(ng),NT(ng)) :: Bio_new
305
306 real(r8), dimension(IminS:ImaxS,0:N(ng)) :: FC
307 real(r8), dimension(IminS:ImaxS,N(ng)) :: Hz_inv
308 real(r8), dimension(IminS:ImaxS,N(ng)) :: Hz_inv2
309 real(r8), dimension(IminS:ImaxS,N(ng)) :: Hz_inv3
310 real(r8), dimension(IminS:ImaxS,N(ng)) :: WL
311 real(r8), dimension(IminS:ImaxS,N(ng)) :: WR
312 real(r8), dimension(IminS:ImaxS,N(ng)) :: bL
313 real(r8), dimension(IminS:ImaxS,N(ng)) :: bR
314 real(r8), dimension(IminS:ImaxS,N(ng)) :: qc
315
316#include "set_bounds.h"
317#ifdef DIAGNOSTICS_BIO
318
319
320
321
322
324 & (mod(
iic(ng),
ndia(ng)).eq.1)).or. &
329 DO j=jstr,jend
330 DO i=istr,iend
331 diabio3d(i,j,k,ivar)=0.0_r8
332 END DO
333 END DO
334 END DO
335 END DO
339 DO j=jstr,jend
340 DO i=istr,iend
341 diabio4d(i,j,k,iband,ivar)=0.0_r8
342 END DO
343 END DO
344 END DO
345 END DO
346 END DO
347 END IF
348#endif
349
350
351
352
353
354
355
357#ifdef DIAGNOSTICS_BIO
358
359
360
361
362 fiter=1.0_r8/real(
bioiter(ng),r8)
363#endif
364
365
366
367
368 ic=1
370 idsink(ic)=
ifecn(ifec)
372 ic=ic+1
373 idsink(ic)=
ifecc(ifec)
375 ic=ic+1
376 idsink(ic)=
ifecp(ifec)
378 ic=ic+1
379 idsink(ic)=
ifecs(ifec)
381 ic=ic+1
382 idsink(ic)=
ifecf(ifec)
384 ic=ic+1
385 END DO
386
388 idsink(ic)=
iphyn(iphy)
390 ic=ic+1
391 idsink(ic)=
iphyc(iphy)
393 ic=ic+1
394 idsink(ic)=
iphyp(iphy)
396 IF (
iphys(iphy).ne.0)
THEN
397 ic=ic+1
398 idsink(ic)=
iphys(iphy)
400 END IF
401 ic=ic+1
402 idsink(ic)=
iphyf(iphy)
404 ic=ic+1
405 END DO
406 nsink=ic-1
407
408
409
410
411
412 j_loop : DO j=jstr,jend
414 DO i=istr,iend
415 hz_inv(i,k)=1.0_r8/hz(i,j,k)
416 END DO
417 END DO
419 DO i=istr,iend
420 hz_inv2(i,k)=1.0_r8/(hz(i,j,k)+hz(i,j,k+1))
421 END DO
422 END DO
424 DO i=istr,iend
425 hz_inv3(i,k)=1.0_r8/(hz(i,j,k-1)+hz(i,j,k)+hz(i,j,k+1))
426 END DO
427 END DO
428
429
430
431
432
433
434
435
436
437
438
442 DO i=istr,iend
443 bio(i,k,itrc)=max(minval,t(i,j,k,nstp,itrc))
444 bio_old(i,k,itrc)=bio(i,k,itrc)
445
446
447
448
449
450
451
452
453 bio_new(i,k,itrc)=0.0_r8
454 END DO
455 END DO
456 END DO
457
458
459
461 DO i=istr,iend
464 END DO
465 END DO
466
467
468
469
470
471
472
475 DO i=istr,iend
477 END DO
478 END DO
479 END DO
480
481
482
483
484
488 DO i=istr,iend
491 regen_c(i,k,ifec)=
regcr(ifec,ng)*fv1
492 regen_n(i,k,ifec)=
regnr(ifec,ng)*fv1
493 regen_p(i,k,ifec)=
regpr(ifec,ng)*fv1
494 regen_f(i,k,ifec)=
regfr(ifec,ng)*fv1
495 regen_s(i,k,ifec)=
regsr(ifec,ng)*fv1
496 END DO
497 END DO
498 END DO
499 END IF
500
501
502
505 DO i=istr,iend
509
510
511
512 fv1=
maxc2nalg(iphy,ng)*(1.0_r8+gtalg(i,k,iphy))
513 mu_bar_n(i,k,iphy)=gtalg(i,k,iphy)* &
516 fv1=
maxc2sialg(iphy,ng)*(1.0_r8+gtalg(i,k,iphy))
517 mu_bar_s(i,k,iphy)=gtalg(i,k,iphy)* &
519 ELSE
521 END IF
523 fv1=
maxc2palg(iphy,ng)*(1.0_r8+gtalg(i,k,iphy))
524 mu_bar_p(i,k,iphy)=gtalg(i,k,iphy)* &
526 ELSE
528 END IF
530 fv1=
maxc2fealg(iphy,ng)*(1.0_r8+gtalg(i,k,iphy))
531 mu_bar_f(i,k,iphy)=gtalg(i,k,iphy)* &
533 ELSE
535 END IF
536 END DO
537 END DO
538 END DO
539
540
541
544 DO i=istr,iend
548 END DO
549 END DO
550 END DO
551
552
553
554
555
556
557
558
561 DO i=istr,iend
562 fv1=max(1.0_r8,(bio(i,k,
iphyc(iphy))/refuge(i,k,iphy)))
563 graz_act(i,k,iphy)=
hsgrz(iphy,ng)*log(fv1)
564 END DO
565 END DO
566 END DO
567
568
569
570
571
572 iter_loop :
DO iter=1,
bioiter(ng)
573
575 DO i=istr,iend
576 totnh4_d(i,k)=0.0_r8
577 totno3_d(i,k)=0.0_r8
578 totpo4_d(i,k)=0.0_r8
579 totsio_d(i,k)=0.0_r8
580 totfe_d(i,k)=0.0_r8
581 totdoc_d(i,k)=0.0_r8
582 totdon_d(i,k)=0.0_r8
583 totdop_d(i,k)=0.0_r8
584 END DO
585 END DO
588 DO i=istr,iend
589 nupnh4(i,k,iphy)=0.0_r8
590 nupno3(i,k,iphy)=0.0_r8
591 nuppo4(i,k,iphy)=0.0_r8
592 nupsio(i,k,iphy)=0.0_r8
593 nupfe(i,k,iphy)=0.0_r8
594 nupdon(i,k,iphy)=0.0_r8
595 nupdop(i,k,iphy)=0.0_r8
596 END DO
597 END DO
598 END DO
599
600
601
602
605 DO i=istr,iend
606 c2nalg(i,k,iphy)=0.0_r8
607 IF (bio(i,k,
iphyn(iphy)).gt.0.0_r8)
THEN
608 c2nalg(i,k,iphy)=bio(i,k,
iphyc(iphy))/ &
609 & bio(i,k,
iphyn(iphy))
610 END IF
611 c2palg(i,k,iphy)=0.0_r8
612 IF (bio(i,k,
iphyp(iphy)).gt.0.0_r8)
THEN
613 c2palg(i,k,iphy)=bio(i,k,
iphyc(iphy))/ &
614 & bio(i,k,
iphyp(iphy))
615 END IF
616 c2salg(i,k,iphy)=0.0_r8
617 IF (
iphys(iphy).gt.0)
THEN
618 IF (bio(i,k,
iphys(iphy)).gt.0.0_r8)
THEN
619 c2salg(i,k,iphy)=bio(i,k,
iphyc(iphy))/ &
620 & bio(i,k,
iphys(iphy))
621 END IF
622 END IF
623 c2falg(i,k,iphy)=0.0_r8
624 IF (bio(i,k,
iphyf(iphy)).gt.0.0_r8)
THEN
625 c2falg(i,k,iphy)=bio(i,k,
iphyc(iphy))/ &
626 & bio(i,k,
iphyf(iphy))
627 END IF
628 END DO
629 END DO
630 END DO
631
632
633
634
635
636
637
638 DO i=istr,iend
639 ed_nz(i,
n(ng))=0.0_r8
640 e0_nz(i,
n(ng))=0.0_r8
642 IF (specir(i,j,21).gt.
vsmall)
THEN
644 ed_nz(i,k)=0.0_r8
645 e0_nz(i,k)=0.0_r8
646 END DO
648 datt_sum(iband)=0.0_r8
650 avgcos(k,iband)=0.0_r8
651 datt(k,iband)=0.0_r8
652#ifdef DIAGNOSTICS_BIO
653 adet(i,k,iband)=0.0_r8
654 acdc(i,k,iband)=0.0_r8
655 b_phy(i,k,iband)=0.0_r8
656 s_phy(i,k,iband)=0.0_r8
657 b_tot(i,k,iband)=0.0_r8
658 s_tot(i,k,iband)=0.0_r8
659#endif
660 END DO
663 aphyn_at(i,k,iphy,iband)=0.0_r8
664 aphyn_al(i,k,iphy,iband)=0.0_r8
665 END DO
666 END DO
667 END DO
668
669
670
671
672 ed_tot=0.0_r8
674 ed_tot=ed_tot+specir(i,j,iband)*
dlam
675 avgcos(
n(ng),iband)=avcos(i,j,iband)
676 END DO
677
678
679
680
681
682
684 IF (ed_tot.ge.1.0_r8) THEN
685 aph442=0.0_r8
686 tchl=0.0_r8
688 IF (bio(i,k,
iphyc(iphy)).gt.0.0_r8)
THEN
690 pac_eff(k,iphy)=1.0_r8
693 & (bio(i,k,
iphyc(iphy))*12.0_r8)
694 pac_eff(k,iphy)=max(0.5_r8, &
695 & (min(1.0_r8, &
698 & (fv2- &
700 END IF
701 iband=9
703 IF (
ipigs(iphy,ipig).gt.0)
THEN
704 aph442=aph442+ &
705 & bio(i,k,
ipigs(iphy,ipig))* &
706 & apigs(ipig,iband)*pac_eff(k,iphy)
707 END IF
708 END DO
709 END IF
710 END DO
711
712
713
714
715
716 aph442=0.5_r8*aph442
718 tot_ab=0.0_r8
721 IF (
ipigs(iphy,ipig).gt.0)
THEN
722 aphyn_at(i,k,iphy,iband)= &
723 & aphyn_at(i,k,iphy,iband)+ &
724 & bio(i,k,
ipigs(iphy,ipig))* &
725 & apigs(ipig,iband)* &
726 & pac_eff(k,iphy)
727 END IF
728 END DO
729 tot_ab(k,iband)=tot_ab(k,iband)+ &
730 & aphyn_at(i,k,iphy,iband)
731#ifdef DIAGNOSTICS_BIO
732 diabio4d(i,j,k,iband,
idaphy)=diabio4d(i,j,k,iband,&
734 & aphyn_at(i,k,iphy, &
735 & iband)
736#endif
737
738
739
740 ipig=5
741 IF (
ipigs(iphy,ipig).gt.0)
THEN
742 aphyn_al(i,k,iphy,iband)= &
743 & aphyn_at(i,k,iphy,iband)- &
744 & bio(i,k,
ipigs(iphy,ipig))* &
745 & apigs(ipig,iband)* &
746 & pac_eff(k,iphy)
747 END IF
748 END DO
749
750
751
752 cff=aph442*exp(0.011_r8* &
753 & (442.0_r8- &
754 & (397.0_r8+real(iband,r8)*
dlam)))
755 tot_ab(k,iband)=tot_ab(k,iband)+cff
756#ifdef DIAGNOSTICS_BIO
757 adet(i,k,iband)=adet(i,k,iband)+cff
758 diabio4d(i,j,k,iband,
idadet)=diabio4d(i,j,k,iband, &
760 & adet(i,k,iband)
761#endif
762
763
764
765
766
767
768
770 & adoc(
ilab,iband)+ &
773 tot_ab(k,iband)=tot_ab(k,iband)+cff+awater(iband)
774#ifdef DIAGNOSTICS_BIO
775 acdc(i,k,iband)=acdc(i,k,iband)+cff
776 diabio4d(i,j,k,iband,
idacdc)=diabio4d(i,j,k,iband, &
778 & acdc(i,k,iband)
779#endif
780
781
782
783
784
785
786
787 par_s=0.3_r8*(tchl**0.62_r8)
788 par_b=0.0_r8
789 IF (tchl.gt.0.0_r8) THEN
790 par_b=par_s*(0.002_r8+ &
791 & 0.01_r8* &
792 & (0.5_r8-0.25_r8*log10(tchl))* &
794 END IF
795 par_b=max(par_b,0.0_r8)
796#ifdef DIAGNOSTICS_BIO
797 s_phy(i,k,iband)=s_phy(i,k,iband)+par_s
798 b_phy(i,k,iband)=b_phy(i,k,iband)+par_b
799 diabio4d(i,j,k,iband,
idsphy)=diabio4d(i,j,k,iband, &
801 & s_phy(i,k,iband)
802 diabio4d(i,j,k,iband,
idbphy)=diabio4d(i,j,k,iband, &
804 & b_phy(i,k,iband)
805#endif
806
807
808
809
810 tot_s(k,iband)=bwater(iband)+par_s*
wavedp(iband)
811#ifdef DIAGNOSTICS_BIO
812 s_tot(i,k,iband)=s_tot(i,k,iband)+tot_s(k,iband)
813#endif
814
815
816
817 tot_b(k,iband)=0.5_r8*bwater(iband)+par_b
818#ifdef DIAGNOSTICS_BIO
819 b_tot(i,k,iband)=b_tot(i,k,iband)+tot_b(k,iband)
820
821 diabio4d(i,j,k,iband,
idstot)=diabio4d(i,j,k,iband, &
823 & s_tot(i,k,iband)
824 diabio4d(i,j,k,iband,
idbtot)=diabio4d(i,j,k,iband, &
826 & b_tot(i,k,iband)
827#endif
828#ifdef BIO_OPTIC
829
830
831
832
833
834 cff1=1.0_r8+ &
835 & 0.005_r8*acos(avgcos(k,iband))*
rad2deg
836 cff2=4.18_r8*(1.0_r8-0.52_r8* &
837 & exp(-10.8_r8*tot_ab(k,iband)))
838 datt(k,iband)=cff1*tot_ab(k,iband)+ &
839 & cff2*tot_b(k,iband)
840#else
841
842
843
844
845
846
847 datt(k,iband)=(tot_ab(k,iband)+ &
848 & tot_b(k,iband))/avgcos(k,iband)
849#endif
850
851
852
853 avgcos_min=avgcos(k,iband)+ &
854 & (0.5_r8-avgcos(k,iband))* &
855 & (tot_s(k,iband)/ &
856 & (tot_ab(k,iband)+tot_s(k,iband)))
857
858
859
860
861
862 fv1=max(1.0_r8, &
863 & 7.0_r8-datt(k,iband)*abs(z_r(i,j,k)))
864 slope_ac =min(0.0_r8, &
865 & (avgcos_min-avgcos(k,iband))/fv1)
866 avgcos(k,iband)=avgcos(k,iband)+ &
867 & slope_ac*datt(k,iband)*hz(i,j,k)
868#ifdef BIO_OPTIC
869
870
871
872
873 cff1=1.0_r8+ &
874 & 0.005_r8*acos(avgcos(k,iband))*
rad2deg
875 datt(k,iband)=cff1*tot_ab(k,iband)+ &
876 & cff2*tot_b(k,iband)
877#else
878 datt(k,iband)=(tot_ab(k,iband)+ &
879 & tot_b(k,iband))/avgcos(k,iband)
880#endif
881
882
883
884 IF (k.ne.1) THEN
885 avgcos(k-1,iband)=avgcos(k,iband)
886 END IF
887
888
889
890 fv1=datt(k,iband)*hz(i,j,k)
891 fv2=datt_sum(iband)+0.5_r8*fv1
892 datt_sum(iband)=datt_sum(iband)+fv1
893 specir_d(k,iband)=specir(i,j,iband)* &
895
896
897
898 specir_scal(i,k,iband)=specir_d(k,iband)* &
899 & (datt(k,iband)/ &
900 & tot_ab(k,iband))
901 e0_nz(i,k)=e0_nz(i,k)+specir_scal(i,k,iband)
902
903
904
905 ed_nz(i,k)=ed_nz(i,k)+specir_d(k,iband)
906#ifdef DIAGNOSTICS_BIO
907 diabio3d(i,j,iband,
idspir)=diabio3d(i,j,iband, &
909 & specir(i,j,iband)
910 diabio4d(i,j,k,iband,
iddirr)=diabio4d(i,j,k,iband, &
912 & specir_d(k,iband)
913 diabio4d(i,j,k,iband,
idsirr)=diabio4d(i,j,k,iband, &
915 & specir_scal(i,k,iband)
916 diabio4d(i,j,k,iband,
idlatt)=diabio4d(i,j,k,iband, &
918 & datt(k,iband)
919 diabio4d(i,j,k,iband,
idacos)=diabio4d(i,j,k,iband, &
921 & avgcos(k,iband)
922#endif
923 END DO
924 ed_tot=e0_nz(i,k)
925
926
927
928 keuphotic(i)=k
929 END IF
930 END DO
931 END IF
932 END DO
933
934
935
936
937
940 DO i=istr,iend
941
942
943
944 IF ((bio(i,k,
idomc(
ilab)).gt.0.0_r8).and. &
945 & (bio(i,k,
idomn(
ilab)).gt.0.0_r8).and. &
947 nupdoc_ba(i,k,ibac)=gtbac(i,k,ibac)* &
948 & bio(i,k,
ibacc(ibac))* &
953 nupdon_ba(i,k,ibac)=nupdoc_ba(i,k,ibac)* &
956 nupdop_ba(i,k,ibac)=nupdoc_ba(i,k,ibac)* &
959 ELSE
960 nupdoc_ba(i,k,ibac)=0.0_r8
961 nupdon_ba(i,k,ibac)=0.0_r8
962 nupdop_ba(i,k,ibac)=0.0_r8
963 END IF
964 totdoc_d(i,k)=totdoc_d(i,k)+nupdoc_ba(i,k,ibac)
965 totdon_d(i,k)=totdon_d(i,k)+nupdon_ba(i,k,ibac)
966 totdop_d(i,k)=totdop_d(i,k)+nupdop_ba(i,k,ibac)
967
968
969
970 nupnh4_ba(i,k,ibac)=gtbac(i,k,ibac)* &
971 & bio(i,k,
ibacn(ibac))* &
974 totnh4_d(i,k)=totnh4_d(i,k)+nupnh4_ba(i,k,ibac)
975
976
977
978 nuppo4_ba(i,k,ibac)=gtbac(i,k,ibac)* &
979 & bio(i,k,
ibacp(ibac))* &
982 totpo4_d(i,k)=totpo4_d(i,k)+nuppo4_ba(i,k,ibac)
983
984
985
986 nupfe_ba(i,k,ibac)=gtbac(i,k,ibac)* &
987 & bio(i,k,
ibacf(ibac))* &
990 totfe_d(i,k)=totfe_d(i,k)+nupfe_ba(i,k,ibac)
991 END DO
992 END DO
993 END DO
994
995
996
997
998
1001 DO i=istr,iend
1003
1004
1005
1006
1007
1008
1009 nup_max=gtalg(i,k,iphy)
1010 nupno3(i,k,iphy)=(bio(i,k,
ino3_)/ &
1013 nupnh4(i,k,iphy)=bio(i,k,
inh4_)/ &
1015
1016
1017
1018 fv1=nupno3(i,k,iphy)+nupnh4(i,k,iphy)
1019 IF (fv1.gt.1.0_r8) THEN
1020 fv1=1.0_r8/fv1
1021 nupno3(i,k,iphy)=nupno3(i,k,iphy)*fv1
1022 nupnh4(i,k,iphy)=nupnh4(i,k,iphy)*fv1
1023 END IF
1024
1025
1026
1027 fv1=nup_max*bio(i,k,
iphyn(iphy))
1028 nupno3(i,k,iphy)=nupno3(i,k,iphy)*fv1
1029 nupnh4(i,k,iphy)=nupnh4(i,k,iphy)*fv1
1030
1031
1032
1033 IF (c2nalg(i,k,iphy).gt.
c2nnupdon(iphy,ng))
THEN
1034 nupdon(i,k,iphy)=fv1* &
1036 & (
hsdon(iphy,ng)+ &
1038 END IF
1039
1040
1041
1042 totno3_d(i,k)=totno3_d(i,k)+nupno3(i,k,iphy)
1043 totnh4_d(i,k)=totnh4_d(i,k)+nupnh4(i,k,iphy)
1044 totdon_d(i,k)=totdon_d(i,k)+nupdon(i,k,iphy)
1045 END IF
1046
1047
1048
1049
1052 nup_max=gtalg(i,k,iphy)
1053 nupsio(i,k,iphy)=bio(i,k,
isio_)/ &
1055
1056
1057
1058 IF (
iphys(iphy).gt.0)
THEN
1059 fv1=nup_max*bio(i,k,
iphys(iphy))
1060 nupsio(i,k,iphy)=nupsio(i,k,iphy)*fv1
1061 ELSE
1062 nupsio(i,k,iphy)=0.0_r8
1063 END IF
1064
1065
1066
1067 totsio_d(i,k)=totsio_d(i,k)+nupsio(i,k,iphy)
1068 END IF
1069 END IF
1070
1071
1072
1073
1076 nup_max=gtalg(i,k,iphy)
1077 nuppo4(i,k,iphy)=bio(i,k,
ipo4_)/ &
1079
1080
1081
1082 fv1=nup_max*bio(i,k,
iphyp(iphy))
1083 nuppo4(i,k,iphy)=nuppo4(i,k,iphy)*fv1
1084
1085
1086
1087 IF (c2palg(i,k,iphy).gt.
c2palkphos(iphy,ng))
THEN
1088 nupdop(i,k,iphy)=fv1* &
1090 & (
hsdop(iphy,ng)+ &
1092 END IF
1093
1094
1095
1096 totpo4_d(i,k)=totpo4_d(i,k)+nuppo4(i,k,iphy)
1097 totdop_d(i,k)=totdop_d(i,k)+nupdop(i,k,iphy)
1098 END IF
1099 END IF
1100
1101
1102
1103
1106 nup_max=gtalg(i,k,iphy)
1107 nupfe(i,k,iphy)=bio(i,k,
ifeo_)/ &
1109
1110
1111
1112 fv1=nup_max*bio(i,k,
iphyf(iphy))
1113 nupfe(i,k,iphy)=nupfe(i,k,iphy)*fv1
1114
1115
1116
1117 totfe_d(i,k)=totfe_d(i,k)+nupfe(i,k,iphy)
1118 END IF
1119 END IF
1120 END DO
1121 END DO
1122 END DO
1123
1124
1125
1126
1127
1129 DO i=istr,iend
1130 nitrbac(i,k)=0.0_r8
1131 nh4tono3(i,k)=0.0_r8
1132 ntonbac(i,k)=0.0_r8
1133 ntopbac(i,k)=0.0_r8
1134 ntofebac(i,k)=0.0_r8
1135 IF (k.lt.keuphotic(i)) THEN
1136 nh4tono3(i,k)=
rtnit(ng)* &
1138
1139
1140
1141
1142
1143 nitrbac(i,k)=nh4tono3(i,k)/7.0_r8
1144 ntonbac(i,k)=nitrbac(i,k)*
n2cbac(ng)
1145 ntopbac(i,k)=nitrbac(i,k)*
p2cbac(ng)
1146 ntofebac(i,k)=nitrbac(i,k)*
fe2cbac(ng)
1147 totnh4_d(i,k)=totnh4_d(i,k)+nh4tono3(i,k)+ntonbac(i,k)
1148 totpo4_d(i,k)=totpo4_d(i,k)+ntopbac(i,k)
1149 totfe_d(i,k)=totfe_d(i,k)+ntofebac(i,k)
1150 END IF
1151 END DO
1152 END DO
1153
1154
1155
1156
1157
1158
1159
1161 DO i=istr,iend
1162 fv2=totno3_d(i,k)*dtbio
1163 IF (fv2.gt.bio(i,k,
ino3_))
THEN
1166 nupno3(i,k,iphy)=nupno3(i,k,iphy)*fv1
1167 END DO
1168 END IF
1169
1170 fv2=totnh4_d(i,k)*dtbio
1171 IF (fv2.gt.bio(i,k,
inh4_))
THEN
1174 nupnh4(i,k,iphy)=nupnh4(i,k,iphy)*fv1
1175 END DO
1177 nupnh4_ba(i,k,ibac)=nupnh4_ba(i,k,ibac)*fv1
1178 END DO
1179 nh4tono3(i,k)=nh4tono3(i,k)*fv1
1180 ntonbac(i,k)=ntonbac(i,k)*fv1
1181 END IF
1182
1183 fv2=totsio_d(i,k)*dtbio
1184 IF (fv2.gt.bio(i,k,
isio_))
THEN
1187 nupsio(i,k,iphy)=nupsio(i,k,iphy)*fv1
1188 END DO
1189 END IF
1190
1191 fv2=totpo4_d(i,k)*dtbio
1192 IF (fv2.gt.bio(i,k,
ipo4_))
THEN
1195 nuppo4(i,k,iphy)=nuppo4(i,k,iphy)*fv1
1196 END DO
1198 nuppo4_ba(i,k,ibac)=nuppo4_ba(i,k,ibac)*fv1
1199 END DO
1200 ntopbac(i,k)=ntopbac(i,k)*fv1
1201 END IF
1202
1203 fv2=totfe_d(i,k)*dtbio
1204 IF (fv2.gt.bio(i,k,
ifeo_))
THEN
1207 nupfe(i,k,iphy)=nupfe(i,k,iphy)*fv1
1208 END DO
1210 nupfe_ba(i,k,ibac)=nupfe_ba(i,k,ibac)*fv1
1211 END DO
1212 ntofebac(i,k)=ntofebac(i,k)*fv1
1213 END IF
1214
1215
1216
1217
1218 fv2=totdoc_d(i,k)*dtbio
1221 totdoc_d(i,k)=totdoc_d(i,k)*fv1
1223 nupdoc_ba(i,k,ibac)=nupdoc_ba(i,k,ibac)*fv1
1224 totdon_d(i,k)=totdon_d(i,k)-nupdon_ba(i,k,ibac)
1225 nupdon_ba(i,k,ibac)=nupdon_ba(i,k,ibac)*fv1
1226 totdon_d(i,k)=totdon_d(i,k)+nupdon_ba(i,k,ibac)
1227 totdop_d(i,k)=totdop_d(i,k)-nupdop_ba(i,k,ibac)
1228 nupdop_ba(i,k,ibac)=nupdop_ba(i,k,ibac)*fv1
1229 totdop_d(i,k)=totdop_d(i,k)+nupdop_ba(i,k,ibac)
1230 END DO
1231 END IF
1232
1233
1234
1235 fv2=totdon_d(i,k)*dtbio
1238 totdon_d(i,k)=totdon_d(i,k)*fv1
1239 totdoc_d(i,k)=totdoc_d(i,k)*fv1
1241 nupdon(i,k,iphy)=nupdon(i,k,iphy)*fv1
1242 END DO
1244 nupdon_ba(i,k,ibac)=nupdon_ba(i,k,ibac)*fv1
1245 nupdoc_ba(i,k,ibac)=nupdoc_ba(i,k,ibac)*fv1
1246 totdop_d(i,k)=totdop_d(i,k)-nupdop_ba(i,k,ibac)
1247 nupdop_ba(i,k,ibac)=nupdop_ba(i,k,ibac)*fv1
1248 totdop_d(i,k)=totdop_d(i,k)+nupdop_ba(i,k,ibac)
1249 END DO
1250 END IF
1251
1252
1253
1254 fv2=totdop_d(i,k)*dtbio
1257 totdop_d(i,k)=totdop_d(i,k)*fv1
1258 totdoc_d(i,k)=totdoc_d(i,k)*fv1
1260 nupdop(i,k,iphy)=nupdop(i,k,iphy)*fv1
1261 END DO
1263 nupdop_ba(i,k,ibac)=nupdop_ba(i,k,ibac)*fv1
1264 totdon_d(i,k)=totdon_d(i,k)-nupdon_ba(i,k,ibac)
1265 nupdon_ba(i,k,ibac)=nupdon_ba(i,k,ibac)*fv1
1266 totdon_d(i,k)=totdon_d(i,k)+nupdon_ba(i,k,ibac)
1267 nupdoc_ba(i,k,ibac)=nupdoc_ba(i,k,ibac)*fv1
1268 END DO
1269 END IF
1270 END DO
1271 END DO
1272
1273
1274
1277 DO i=istr,iend
1278 bio_new(i,k,
iphyn(iphy))=bio_new(i,k,
iphyn(iphy))+ &
1279 & nupno3(i,k,iphy)+ &
1280 & nupnh4(i,k,iphy)+ &
1281 & nupdon(i,k,iphy)
1282 bio_new(i,k,
iphyp(iphy))=bio_new(i,k,
iphyp(iphy))+ &
1283 & nuppo4(i,k,iphy)+ &
1284 & nupdop(i,k,iphy)
1285 bio_new(i,k,
iphyf(iphy))=bio_new(i,k,
iphyf(iphy))+ &
1286 & nupfe(i,k,iphy)
1287 IF (
iphys(iphy).gt.0)
THEN
1288 bio_new(i,k,
iphys(iphy))=bio_new(i,k,
iphys(iphy))+ &
1289 & nupsio(i,k,iphy)
1290 END IF
1291
1292
1293
1294
1296 & nupno3(i,k,iphy)
1298 & nupnh4(i,k,iphy)
1300 & nupsio(i,k,iphy)
1302 & nuppo4(i,k,iphy)
1304 & nupfe(i,k,iphy)
1306 & nupdon(i,k,iphy)
1308 & nupdop(i,k,iphy)
1309 END DO
1310 END DO
1311 END DO
1312
1313
1314
1316 DO i=istr,iend
1318 & nitrbac(i,k)
1319 END DO
1320 END DO
1321
1322
1323
1324
1327 DO i=istr,iend
1328 bio_new(i,k,
ibacc(ibac))=bio_new(i,k,
ibacc(ibac))+ &
1329 & nitrbac(i,k)
1330 bio_new(i,k,
ibacn(ibac))=bio_new(i,k,
ibacn(ibac))+ &
1331 & ntonbac(i,k)
1332 bio_new(i,k,
ibacp(ibac))=bio_new(i,k,
ibacp(ibac))+ &
1333 & ntopbac(i,k)
1334 bio_new(i,k,
ibacf(ibac))=bio_new(i,k,
ibacf(ibac))+ &
1335 & ntofebac(i,k)
1336 END DO
1337 END DO
1338 END DO
1339
1340
1341
1343 DO i=istr,iend
1345 & nh4tono3(i,k)
1347 & (nh4tono3(i,k)+ntonbac(i,k))
1349 & ntopbac(i,k)
1351 & ntofebac(i,k)
1352 END DO
1353 END DO
1354
1355
1356
1357
1358
1359 DO i=istr,iend
1360 DO k=
n(ng),keuphotic(i),-1
1362 IF (bio(i,k,
iphyc(iphy)).gt.0.0_r8)
THEN
1363
1364
1365
1366 aphyn_wa=0.0_r8
1368 aphyn_wa=aphyn_wa+(aphyn_al(i,k,iphy,iband)* &
1369 & specir_scal(i,k,iband))
1370 END DO
1371
1372
1373
1374
1375
1376 aphyn_wa=aphyn_wa/e0_nz(i,k)
1377
1378
1379
1380
1381 alfa(k,iphy)=(aphyn_wa/bio(i,k,
iphyc(iphy)))* &
1382 &
qu_yld(iphy,ng)*0.001_r8
1383
1384
1385
1386 fv1=max(0.0_r8,e0_nz(i,k)-
e0_comp(iphy,ng))
1388 IF (fv2.gt.0.0_r8) THEN
1389 gt_ll(k,iphy)=gtalg(i,k,iphy)* &
1390 & tanh(alfa(k,iphy)*fv1/ &
1391 & gtalg(i,k,iphy))* &
1393 ELSE
1394 gt_ll(k,iphy)=gtalg(i,k,iphy)* &
1395 & tanh(alfa(k,iphy)*fv1/ &
1396 & gtalg(i,k,iphy))
1397 END IF
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407 IF (bio(i,k,
iphyn(iphy)).gt.0.0_r8)
THEN
1408 fv1=bio(i,k,
iphyc(iphy))/ &
1409 & (bio(i,k,
iphyn(iphy))+bio_new(i,k,
iphyn(iphy)))
1410 gt_nl(k,iphy)=mu_bar_n(i,k,iphy)* &
1412 gt_nl(k,iphy)=max(0.0_r8, &
1413 & min(gt_nl(k,iphy), &
1414 & gtalg(i,k,iphy)))
1415 END IF
1416
1417
1418
1419
1420 IF (
iphys(iphy).gt.0)
THEN
1422 & (bio(i,k,
iphys(iphy)).gt.0.0_r8))
THEN
1423 fv1=bio(i,k,
iphyc(iphy))/ &
1424 & (bio(i,k,
iphys(iphy))+ &
1425 & bio_new(i,k,
iphys(iphy)))
1426 gt_sl(k,iphy)=mu_bar_s(i,k,iphy)* &
1428 gt_sl(k,iphy)=max(0.0_r8, &
1429 & min(gt_sl(k,iphy), &
1430 & gtalg(i,k,iphy)))
1431 ELSE
1433 END IF
1434 ELSE
1436 END IF
1437
1438
1439
1441 & (bio(i,k,
iphyp(iphy)).gt.0.0_r8))
THEN
1442 fv1=bio(i,k,
iphyc(iphy))/ &
1443 & (bio(i,k,
iphyp(iphy))+bio_new(i,k,
iphyp(iphy)))
1444 gt_pl(k,iphy)=mu_bar_p(i,k,iphy)* &
1446 gt_pl(k,iphy)=max(0.0_r8, &
1447 & min(gt_pl(k,iphy), &
1448 & gtalg(i,k,iphy)))
1449 ELSE
1451 END IF
1452
1453
1454
1456 & (bio(i,k,
iphyf(iphy)).gt.0.0_r8))
THEN
1457 fv1=bio(i,k,
iphyc(iphy))/ &
1458 & (bio(i,k,
iphyf(iphy))+bio_new(i,k,
iphyf(iphy)))
1459 gt_fl(k,iphy)=mu_bar_f(i,k,iphy)* &
1461 gt_fl(k,iphy)=max(0.0_r8, &
1462 & min(gt_fl(k,iphy), &
1463 & gtalg(i,k,iphy)))
1464 ELSE
1466 END IF
1467
1468
1469
1470 gtalg_r(i,k,iphy)=min(gt_ll(k,iphy),gt_nl(k,iphy), &
1471 & gt_sl(k,iphy),gt_pl(k,iphy), &
1472 & gt_fl(k,iphy))
1473 IF (gtalg_r(i,k,iphy).ge.
larger)
THEN
1474 gtalg_r(i,k,iphy)=0.0_r8
1475 END IF
1476
1477
1478
1479 fv1=bio(i,k,
iphyc(iphy))*gtalg_r(i,k,iphy)
1480 bio_new(i,k,
iphyc(iphy))=bio_new(i,k,
iphyc(iphy))+ &
1481 & fv1
1483 & fv1
1484
1485
1486
1488 IF (
ipigs(iphy,ipig).gt.0)
THEN
1489 itrc=
ipigs(iphy,ipig)
1490 IF (bio(i,k,
iphyc(iphy)).gt.0.0_r8)
THEN
1491 fv1=bio(i,k,itrc)*gtalg_r(i,k,iphy)
1492 bio_new(i,k,itrc)=bio_new(i,k,itrc)+fv1
1493 END IF
1494 END IF
1495 END DO
1496 END IF
1497 END DO
1498 END DO
1499 END DO
1500
1501
1502
1503
1504
1506 DO i=istr,iend
1507 het_bac=0.0_r8
1508 reldoc1=0.0_r8
1509 reldon1=0.0_r8
1510 reldop1=0.0_r8
1511 relfe=0.0_r8
1512
1513
1514
1515
1516
1517
1518
1520 fv1=nupdoc_ba(i,k,ibac)*
exbac_c(ng)* &
1522 fv2=nupdoc_ba(i,k,ibac)*
exbac_c(ng)* &
1524 fv3=nupdon_ba(i,k,ibac)*
exbac_n(ng)
1525
1527 & fv1
1529 & fv2
1531 & fv3
1532
1533
1534
1535
1536
1538 & fv3
1539
1540
1541
1542 nupdoc_ba(i,k,ibac)=nupdoc_ba(i,k,ibac)- &
1543 & (fv1+fv2)
1544 nupdon_ba(i,k,ibac)=nupdon_ba(i,k,ibac)- &
1545 & fv3
1546
1547
1548
1549
1550
1551 bac_g(1)=nupdoc_ba(i,k,ibac)*
bac_ceff(ng)
1552 bac_g(2)=(nupdon_ba(i,k,ibac)+ &
1553 & nupnh4_ba(i,k,ibac))* &
1555 bac_g(3)=(nupdop_ba(i,k,ibac)+ &
1556 & nuppo4_ba(i,k,ibac))* &
1558 bac_g(4)=nupfe_ba(i,k,ibac)*
c2febac(ng)
1559
1560
1561
1562 IF ((bac_g(1).le.bac_g(2)).and. &
1563 & (bac_g(1).le.bac_g(3)).and. &
1564 & (bac_g(1).le.bac_g(4))) THEN
1565 het_bac=bac_g(1)
1569 bio_new(i,k,
ibacn(ibac))=bio_new(i,k,
ibacn(ibac))+ &
1570 & fv1
1571 bio_new(i,k,
ibacp(ibac))=bio_new(i,k,
ibacp(ibac))+ &
1572 & fv2
1573 bio_new(i,k,
ibacf(ibac))=bio_new(i,k,
ibacf(ibac))+ &
1574 & fv3
1575
1576
1577
1578
1579
1580 nupnh4_ba(i,k,ibac)=fv1-nupdon_ba(i,k,ibac)
1581 nuppo4_ba(i,k,ibac)=fv2-nupdop_ba(i,k,ibac)
1582
1583
1584
1585
1586 relfe=nupfe_ba(i,k,ibac)-fv3
1587 nupfe_ba(i,k,ibac)=fv3
1588
1589
1590
1591
1592 ELSE IF ((bac_g(2).le.bac_g(3)).and. &
1593 & (bac_g(2).le.bac_g(4))) THEN
1594 het_bac=bac_g(2)
1597 bio_new(i,k,
ibacn(ibac))=bio_new(i,k,
ibacn(ibac))+ &
1598 & (nupdon_ba(i,k,ibac)+ &
1599 & nupnh4_ba(i,k,ibac))
1600 bio_new(i,k,
ibacp(ibac))=bio_new(i,k,
ibacp(ibac))+ &
1601 & fv2
1602 bio_new(i,k,
ibacf(ibac))=bio_new(i,k,
ibacf(ibac))+ &
1603 & fv3
1604
1605
1606
1607
1609 nupdoc_ba(i,k,ibac)=nupdoc_ba(i,k,ibac)-fv1
1610 reldoc1=fv1
1611
1612
1613
1615
1618 fv5=fv2-(nupdop_ba(i,k,ibac)+ &
1619 nuppo4_ba(i,k,ibac)-fv4)
1620
1621
1622
1623 IF (fv5.lt.0.0_r8) THEN
1624 reldop1=fv4
1625 nuppo4_ba(i,k,ibac)=nuppo4_ba(i,k,ibac)+fv5
1626 ELSE
1627 reldop1=fv4-fv5
1628 END IF
1629 nupdop_ba(i,k,ibac)=nupdop_ba(i,k,ibac)-reldop1
1630
1631
1632
1633 relfe=nupfe_ba(i,k,ibac)-fv3
1634 nupfe_ba(i,k,ibac)=fv3
1635
1636
1637
1638
1639 ELSE IF (bac_g(3).le.bac_g(4)) THEN
1640 het_bac=bac_g(3)
1643 bio_new(i,k,
ibacn(ibac))=bio_new(i,k,
ibacn(ibac))+ &
1644 & fv2
1645 bio_new(i,k,
ibacp(ibac))=bio_new(i,k,
ibacp(ibac))+ &
1646 & (nupdop_ba(i,k,ibac)+ &
1647 & nuppo4_ba(i,k,ibac))
1648 bio_new(i,k,
ibacf(ibac))=bio_new(i,k,
ibacf(ibac))+ &
1649 & fv3
1650
1651
1652
1653
1655 nupdoc_ba(i,k,ibac)=nupdoc_ba(i,k,ibac)-fv1
1656 reldoc1=fv1
1657
1658
1659
1661
1664 fv5=fv2-(nupdon_ba(i,k,ibac)+ &
1665 & nupnh4_ba(i,k,ibac)-fv4)
1666
1667
1668
1669 IF (fv5.lt.0.0_r8) THEN
1670 reldon1=fv4
1671 nupnh4_ba(i,k,ibac)=nupnh4_ba(i,k,ibac)+fv5
1672 ELSE
1673 reldon1=fv4-fv5
1674 END IF
1675 nupdon_ba(i,k,ibac)=nupdon_ba(i,k,ibac)-reldon1
1676
1677
1678
1679 relfe=nupfe_ba(i,k,ibac)-fv3
1680 nupfe_ba(i,k,ibac)=fv3
1681
1682
1683
1684
1685 ELSE
1686 het_bac=bac_g(4)
1689 bio_new(i,k,
ibacn(ibac))=bio_new(i,k,
ibacn(ibac))+ &
1690 & fv2
1691 bio_new(i,k,
ibacp(ibac))=bio_new(i,k,
ibacp(ibac))+ &
1692 & fv3
1693 bio_new(i,k,
ibacf(ibac))=bio_new(i,k,
ibacf(ibac))+ &
1694 & nupfe_ba(i,k,ibac)
1695
1696
1697
1698
1700 nupdoc_ba(i,k,ibac)=nupdoc_ba(i,k,ibac)-fv1
1701 reldoc1=fv1
1702
1703
1704
1706
1709 fv5=fv2-(nupdon_ba(i,k,ibac)+ &
1710 & nupnh4_ba(i,k,ibac)-fv4)
1711
1712
1713
1714 IF (fv5.lt.0.0_r8) THEN
1715 reldon1=fv4
1716 nupnh4_ba(i,k,ibac)=nupnh4_ba(i,k,ibac)+fv5
1717 ELSE
1718 reldon1=fv4-fv5
1719 END IF
1720 nupdon_ba(i,k,ibac)=nupdon_ba(i,k,ibac)-reldon1
1721
1722
1723
1725
1728 fv5=fv2-(nupdop_ba(i,k,ibac)+ &
1729 & nuppo4_ba(i,k,ibac)-fv4)
1730
1731
1732
1733 IF (fv5.lt.0.0_r8) THEN
1734 reldop1=fv4
1735 nuppo4_ba(i,k,ibac)=nuppo4_ba(i,k,ibac)+fv5
1736 ELSE
1737 reldop1=fv4-fv5
1738 END IF
1739 nupdop_ba(i,k,ibac)=nupdop_ba(i,k,ibac)-reldop1
1740 END IF
1741
1742
1743
1744 bio_new(i,k,
ibacc(ibac))=bio_new(i,k,
ibacc(ibac))+ &
1745 & het_bac
1746 fv1=nupdoc_ba(i,k,ibac)-het_bac
1748 & fv1
1749
1750
1751
1752
1753
1755 & (totdoc_d(i,k)-reldoc1)
1756
1757
1758
1759
1760
1761
1762
1763
1765 & nupdon_ba(i,k,ibac)
1767 & nupdop_ba(i,k,ibac)
1769 & nupnh4_ba(i,k,ibac)
1771 & nuppo4_ba(i,k,ibac)
1773 & nupfe_ba(i,k,ibac)
1774 END DO
1775 END DO
1776 END DO
1777
1778
1779
1780
1781
1784 DO i=istr,iend
1785
1786
1787
1788 IF ((c2nalg(i,k,iphy).ge. &
1790 & (c2palg(i,k,iphy).ge. &
1794 bio_new(i,k,
iphyc(iphy))=bio_new(i,k,
iphyc(iphy))- &
1795 & fv1
1796
1797
1798
1800 & fv1
1801 ELSE IF ((c2nalg(i,k,iphy).ge. &
1803 & (c2palg(i,k,iphy).ge. &
1805 & (c2salg(i,k,iphy).ge. &
1808 bio_new(i,k,
iphyc(iphy))=bio_new(i,k,
iphyc(iphy))- &
1809 & fv1
1810
1811
1812
1814 & fv1
1815 END IF
1816
1817
1818
1819 IF (bio(i,k,
iphyc(iphy)).gt.refuge(i,k,iphy))
THEN
1820
1821
1822
1823 fv1=graz_act(i,k,iphy)*bio(i,k,
iphyc(iphy))
1824 bio_new(i,k,
iphyc(iphy))=bio_new(i,k,
iphyc(iphy))- &
1825 & fv1
1833 & fv3
1838
1839
1840
1841 fv2=graz_act(i,k,iphy)*bio(i,k,
iphyn(iphy))
1842 bio_new(i,k,
iphyn(iphy))=bio_new(i,k,
iphyn(iphy))- &
1843 & fv2
1852
1853
1854
1855 IF (
iphys(iphy).gt.0)
THEN
1856 fv2=graz_act(i,k,iphy)*bio(i,k,
iphys(iphy))
1857 bio_new(i,k,
iphys(iphy))=bio_new(i,k,
iphys(iphy))- &
1858 & fv2
1859
1860
1861
1862
1866 & (1.0_r8-
fecdoc(iphy,ng))* &
1867 & fv2
1868 END IF
1869
1870
1871
1872 fv2=graz_act(i,k,iphy)*bio(i,k,
iphyp(iphy))
1873 bio_new(i,k,
iphyp(iphy))=bio_new(i,k,
iphyp(iphy))- &
1874 & fv2
1883
1884
1885
1886 fv2=graz_act(i,k,iphy)*bio(i,k,
iphyf(iphy))
1887 bio_new(i,k,
iphyf(iphy))=bio_new(i,k,
iphyf(iphy))- &
1888 & fv2
1896 END IF
1897 END DO
1898 END DO
1899 END DO
1900
1901
1902
1905 IF (
ipigs(iphy,ipig).gt.0)
THEN
1906 itrc=
ipigs(iphy,ipig)
1908 DO i=istr,iend
1909 IF (bio(i,k,
iphyc(iphy)).gt.refuge(i,k,iphy))
THEN
1910 fv1=graz_act(i,k,iphy)*bio(i,k,itrc)
1911 bio_new(i,k,itrc)=bio_new(i,k,itrc) - fv1
1912 END IF
1913 END DO
1914 END DO
1915 END IF
1916 END DO
1917 END DO
1918
1919
1920
1921
1922
1923
1924
1927 DO i=istr,iend
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943 bio_new(i,k,
ibacc(ibac))=bio_new(i,k,
ibacc(ibac))- &
1944
1945 & bio_new(i,k,
ibacc(ibac))
1947
1948 & bio_new(i,k,
ibacc(ibac))* &
1952
1953 & bio_new(i,k,
ibacc(ibac))* &
1957
1958 & bio_new(i,k,
ibacc(ibac))* &
1961
1962 & bio_new(i,k,
ibacc(ibac))* &
1964
1965
1966
1967 bio_new(i,k,
ibacn(ibac))=bio_new(i,k,
ibacn(ibac))- &
1968
1969 & bio_new(i,k,
ibacn(ibac))
1971
1972 & bio_new(i,k,
ibacn(ibac))* &
1975
1976 & bio_new(i,k,
ibacn(ibac))* &
1979
1980 & bio_new(i,k,
ibacn(ibac))* &
1982
1983
1984
1985 bio_new(i,k,
ibacp(ibac))=bio_new(i,k,
ibacp(ibac))- &
1986
1987 & bio_new(i,k,
ibacp(ibac))
1989
1990 & bio_new(i,k,
ibacp(ibac))* &
1993
1994 & bio_new(i,k,
ibacp(ibac))* &
1997
1998 & bio_new(i,k,
ibacp(ibac))* &
2000
2001
2002
2003 bio_new(i,k,
ibacf(ibac))=bio_new(i,k,
ibacf(ibac))- &
2004
2005 & bio_new(i,k,
ibacf(ibac))
2007
2008 & bio_new(i,k,
ibacf(ibac))* &
2011
2012 & bio_new(i,k,
ibacf(ibac))* &
2014 END DO
2015 END DO
2016 END DO
2017
2018
2019
2020
2021
2024 DO i=istr,iend
2025
2026
2027
2028 fv3=regen_c(i,k,ifec)*bio(i,k,
ifecc(ifec))
2029 bio_new(i,k,
ifecc(ifec))=bio_new(i,k,
ifecc(ifec))- &
2030 & fv3
2032 & fv3
2033
2034
2035
2036 fv2=regen_n(i,k,ifec)*bio(i,k,
ifecn(ifec))
2037 bio_new(i,k,
ifecn(ifec))=bio_new(i,k,
ifecn(ifec))- &
2038 & fv2
2040 & fv2
2041
2042
2043
2044 fv2=regen_s(i,k,ifec)*bio(i,k,
ifecs(ifec))
2045 bio_new(i,k,
ifecs(ifec))=bio_new(i,k,
ifecs(ifec))- &
2046 & fv2
2048 & fv2
2049
2050
2051
2052 fv2=regen_p(i,k,ifec)*bio(i,k,
ifecp(ifec))
2053 bio_new(i,k,
ifecp(ifec))=bio_new(i,k,
ifecp(ifec))- &
2054 & fv2
2056 & fv2
2057
2058
2059
2060 fv2=regen_f(i,k,ifec)*bio(i,k,
ifecf(ifec))
2061 bio_new(i,k,
ifecf(ifec))=bio_new(i,k,
ifecf(ifec))- &
2062 & fv2
2064 & fv2
2065 END DO
2066 END DO
2067 END DO
2068
2069
2070
2071
2072
2074 DO i=istr,iend
2075
2076
2077
2078
2079 IF (ed_nz(i,
n(ng)).ge.0.01)
THEN
2080
2083
2084
2085
2086
2087
2088
2091 photo_decay=0.5_r8*hz(i,j,
n(ng))* &
2093 fv3=exp(-photo_decay)
2094 photo_decay=2.0_r8*photo_decay
2095
2096
2097
2098 DO k=
n(ng),keuphotic(i),-1
2099 IF (fv3.gt.0.01_r8) THEN
2100 fv6=fv5+fv4
2101 IF (fv6.gt.0.0_r8) THEN
2102 fv7=fv4/fv6
2103 photo_dic=fv3*fv1*fv6
2104 photo_doc=fv3*fv2*fv6
2105 total_photo=photo_dic+photo_doc
2106
2107
2108
2109 fv4=(1.0_r8-fv7)*total_photo
2111 & fv4
2113 & photo_doc
2115 & fv7*total_photo
2117 & photo_dic
2118 END IF
2119
2120
2121
2122
2123
2126 fv7=photo_decay+ &
2127 & 0.5_r8*hz(i,j,k)*(0.2_r8+(fv4+fv5)*
adoc300(
ilab))
2128
2129
2130
2131
2132
2133 fv3=exp(-fv7)
2134
2135
2136
2137 photo_decay=photo_decay+2.0_r8*fv7
2138 END IF
2139 END DO
2140 END IF
2141 END DO
2142 END IF
2143
2144
2145
2146
2147
2148 DO i=istr,iend
2149 IF (keuphotic(i).le.
n(ng))
THEN
2151
2152
2153
2154
2155
2156
2157 DO k=
n(ng),keuphotic(i),-1
2159 c2chl_w(k,iphy)=min((
b_c2cl(iphy,ng)+ &
2160 &
mxc2cl(iphy,ng)*e0_nz(i,k)), &
2162 ELSE IF (c2nalg(i,k,iphy).gt. &
2164 c2chl_w(k,iphy)=
b_c2cn(iphy,ng)+ &
2166 & (c2nalg(i,k,iphy)- &
2168 ELSE
2169 c2chl_w(k,iphy)=min((
b_c2cl(iphy,ng)+ &
2170 &
mxc2cl(iphy,ng)*e0_nz(i,k)), &
2172 END IF
2173 END DO
2174
2175
2176
2177 DO k=
n(ng),keuphotic(i),-1
2178 pigs_w(k,iphy,
ichl)=1.0_r8/c2chl_w(k,iphy)
2179 END DO
2180
2181
2182
2183 IF (
ipigs(iphy,2).gt.0)
THEN
2184 DO k=
n(ng),keuphotic(i),-1
2185 pigs_w(k,iphy,2)=
b_chlb(iphy,ng)+ &
2187 & (c2chl_w(k,iphy)- &
2189 pigs_w(k,iphy,2)=pigs_w(k,iphy,2)* &
2190 & pigs_w(k,iphy,
ichl)
2191 END DO
2192 END IF
2193
2194
2195
2196 IF (
ipigs(iphy,3).gt.0)
THEN
2197 DO k=
n(ng),keuphotic(i),-1
2198 pigs_w(k,iphy,3)=
b_chlc(iphy,ng)+ &
2200 & (c2chl_w(k,iphy)- &
2202 pigs_w(k,iphy,3)=pigs_w(k,iphy,3)* &
2203 & pigs_w(k,iphy,
ichl)
2204 END DO
2205 END IF
2206
2207
2208
2209 IF (
ipigs(iphy,4).gt.0)
THEN
2210 DO k=
n(ng),keuphotic(i),-1
2211 pigs_w(k,iphy,4)=
b_psc(iphy,ng)+ &
2213 & (c2chl_w(k,iphy)- &
2215 pigs_w(k,iphy,4)=pigs_w(k,iphy,4)* &
2216 & pigs_w(k,iphy,
ichl)
2217 END DO
2218 END IF
2219
2220
2221
2222 IF (
ipigs(iphy,5).gt.0)
THEN
2223 DO k=
n(ng),keuphotic(i),-1
2224 pigs_w(k,iphy,5)=
b_ppc(iphy,ng)+ &
2226 & (c2chl_w(k,iphy)- &
2228 pigs_w(k,iphy,5)=pigs_w(k,iphy,5)* &
2229 & pigs_w(k,iphy,
ichl)
2230 END DO
2231 END IF
2232
2233
2234
2235 IF (
ipigs(iphy,6).gt.0)
THEN
2236 DO k=
n(ng),keuphotic(i),-1
2237 pigs_w(k,iphy,6)=
b_lpub(iphy,ng)+ &
2239 & (c2chl_w(k,iphy)- &
2241 pigs_w(k,iphy,6)=pigs_w(k,iphy,6)* &
2242 & pigs_w(k,iphy,
ichl)
2243 END DO
2244 END IF
2245
2246
2247
2248 IF (
ipigs(iphy,7).gt.0)
THEN
2249 DO k=
n(ng),keuphotic(i),-1
2250 pigs_w(k,iphy,7)=
b_hpub(iphy,ng)+ &
2252 & (c2chl_w(k,iphy)- &
2254 pigs_w(k,iphy,7)=pigs_w(k,iphy,7)* &
2255 & pigs_w(k,iphy,
ichl)
2256 END DO
2257 END IF
2258 END DO
2259
2260
2261
2262
2265 IF (
ipigs(iphy,ipig).gt.0)
THEN
2266 itrc=
ipigs(iphy,ipig)
2267 DO k=
n(ng),keuphotic(i),-1
2268 IF ((bio(i,k,
iphyc(iphy)).gt.0.0_r8).and. &
2269 & (bio(i,k,itrc).gt.0.0_r8)) THEN
2270 fv1=bio(i,k,
iphyc(iphy))*12.0_r8
2271 fv2=gtalg_r(i,k,iphy)
2272 fv3=fv1/ &
2273 & (fv2/pigs_w(k,iphy,ipig)+ &
2274 & fv1*(1.0_r8-fv2)/ &
2275 & bio(i,k,itrc))
2276 bio_new(i,k,itrc)=bio_new(i,k,itrc)+ &
2277 & (fv3-bio(i,k,itrc))
2278 END IF
2279 END DO
2280 END IF
2281 END DO
2282 END DO
2283 END IF
2284 END DO
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294 sink_loop: DO isink=1,nsink
2295 itrc=idsink(isink)
2296
2297
2298
2299
2300
2301
2303 DO i=istr,iend
2304 qc(i,k)=bio(i,k,itrc)
2305 END DO
2306 END DO
2307
2309 DO i=istr,iend
2310 fc(i,k)=(qc(i,k+1)-qc(i,k))*hz_inv2(i,k)
2311 END DO
2312 END DO
2314 DO i=istr,iend
2315 dltr=hz(i,j,k)*fc(i,k)
2316 dltl=hz(i,j,k)*fc(i,k-1)
2317 cff=hz(i,j,k-1)+2.0_r8*hz(i,j,k)+hz(i,j,k+1)
2318 cffr=cff*fc(i,k)
2319 cffl=cff*fc(i,k-1)
2320
2321
2322
2323
2324 IF ((dltr*dltl).le.0.0_r8) THEN
2325 dltr=0.0_r8
2326 dltl=0.0_r8
2327 ELSE IF (abs(dltr).gt.abs(cffl)) THEN
2328 dltr=cffl
2329 ELSE IF (abs(dltl).gt.abs(cffr)) THEN
2330 dltl=cffr
2331 END IF
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342 cff=(dltr-dltl)*hz_inv3(i,k)
2343 dltr=dltr-cff*hz(i,j,k+1)
2344 dltl=dltl+cff*hz(i,j,k-1)
2345 br(i,k)=qc(i,k)+dltr
2346 bl(i,k)=qc(i,k)-dltl
2347 wr(i,k)=(2.0_r8*dltr-dltl)**2
2348 wl(i,k)=(dltr-2.0_r8*dltl)**2
2349 END DO
2350 END DO
2351 cff=1.0e-14_r8
2353 DO i=istr,iend
2354 dltl=max(cff,wl(i,k ))
2355 dltr=max(cff,wr(i,k+1))
2356 br(i,k)=(dltr*br(i,k)+dltl*bl(i,k+1))/(dltr+dltl)
2357 bl(i,k+1)=br(i,k)
2358 END DO
2359 END DO
2360 DO i=istr,iend
2362#if defined LINEAR_CONTINUATION
2363 bl(i,
n(ng))=br(i,
n(ng)-1)
2364 br(i,
n(ng))=2.0_r8*qc(i,
n(ng))-bl(i,
n(ng))
2365#elif defined NEUMANN
2366 bl(i,
n(ng))=br(i,
n(ng)-1)
2367 br(i,
n(ng))=1.5_r8*qc(i,
n(ng))-0.5_r8*bl(i,
n(ng))
2368#else
2369 br(i,
n(ng))=qc(i,
n(ng))
2370 bl(i,
n(ng))=qc(i,
n(ng))
2371 br(i,
n(ng)-1)=qc(i,
n(ng))
2372#endif
2373#if defined LINEAR_CONTINUATION
2374 br(i,1)=bl(i,2)
2375 bl(i,1)=2.0_r8*qc(i,1)-br(i,1)
2376#elif defined NEUMANN
2377 br(i,1)=bl(i,2)
2378 bl(i,1)=1.5_r8*qc(i,1)-0.5_r8*br(i,1)
2379#else
2380 bl(i,2)=qc(i,1)
2381 br(i,1)=qc(i,1)
2382 bl(i,1)=qc(i,1)
2383#endif
2384 END DO
2385
2386
2387
2388
2389
2391 DO i=istr,iend
2392 dltr=br(i,k)-qc(i,k)
2393 dltl=qc(i,k)-bl(i,k)
2394 cffr=2.0_r8*dltr
2395 cffl=2.0_r8*dltl
2396 IF ((dltr*dltl).lt.0.0_r8) THEN
2397 dltr=0.0_r8
2398 dltl=0.0_r8
2399 ELSE IF (abs(dltr).gt.abs(cffl)) THEN
2400 dltr=cffl
2401 ELSE IF (abs(dltl).gt.abs(cffr)) THEN
2402 dltl=cffr
2403 END IF
2404 br(i,k)=qc(i,k)+dltr
2405 bl(i,k)=qc(i,k)-dltl
2406 END DO
2407 END DO
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423 cff=dtbio*abs(wbio(isink))
2425 DO i=istr,iend
2426 fc(i,k-1)=0.0_r8
2427 wl(i,k)=z_w(i,j,k-1)+cff
2428 wr(i,k)=hz(i,j,k)*qc(i,k)
2429 ksource(i,k)=k
2430 END DO
2431 END DO
2434 DO i=istr,iend
2435 IF (wl(i,k).gt.z_w(i,j,ks)) THEN
2436 ksource(i,k)=ks+1
2437 fc(i,k-1)=fc(i,k-1)+wr(i,ks)
2438 END IF
2439 END DO
2440 END DO
2441 END DO
2442
2443
2444
2446 DO i=istr,iend
2447 ks=ksource(i,k)
2448 cu=min(1.0_r8,(wl(i,k)-z_w(i,j,ks-1))*hz_inv(i,ks))
2449 fc(i,k-1)=fc(i,k-1)+ &
2450 & hz(i,j,ks)*cu* &
2451 & (bl(i,ks)+ &
2452 & cu*(0.5_r8*(br(i,ks)-bl(i,ks))- &
2453 & (1.5_r8-cu)* &
2454 & (br(i,ks)+bl(i,ks)- &
2455 & 2.0_r8*qc(i,ks))))
2456 END DO
2457 END DO
2459 DO i=istr,iend
2460 bio(i,k,itrc)=qc(i,k)+(fc(i,k)-fc(i,k-1))*hz_inv(i,k)
2461 END DO
2462 END DO
2463
2464#ifdef BIO_SEDIMENT
2465
2466
2467
2468
2469
2470
2471
2472
2474 IF (itrc.eq.
ifecn(ifec))
THEN
2475 DO i=istr,iend
2476 cff1=fc(i,0)*hz_inv(i,1)
2478 END DO
2479 ELSE IF (itrc.eq.
ifecc(ifec))
THEN
2480 DO i=istr,iend
2481 cff1=fc(i,0)*hz_inv(i,1)
2483 END DO
2484 ELSE IF (itrc.eq.
ifecp(ifec))
THEN
2485 DO i=istr,iend
2486 cff1=fc(i,0)*hz_inv(i,1)
2488 END DO
2489 ELSE IF (itrc.eq.
ifecs(ifec))
THEN
2490 DO i=istr,iend
2491 cff1=fc(i,0)*hz_inv(i,1)
2493 END DO
2494 ELSE IF (itrc.eq.
ifecf(ifec))
THEN
2495 DO i=istr,iend
2496 cff1=fc(i,0)*hz_inv(i,1)
2498 END DO
2499 END IF
2500 END DO
2502 IF (itrc.eq.
iphyn(iphy))
THEN
2503 DO i=istr,iend
2504 cff1=fc(i,0)*hz_inv(i,1)
2506 END DO
2507 ELSE IF (itrc.eq.
iphyc(iphy))
THEN
2508 DO i=istr,iend
2509 cff1=fc(i,0)*hz_inv(i,1)
2511 END DO
2512 ELSE IF (itrc.eq.
iphyp(iphy))
THEN
2513 DO i=istr,iend
2514 cff1=fc(i,0)*hz_inv(i,1)
2516 END DO
2517 ELSE IF (itrc.eq.
iphys(iphy))
THEN
2518 DO i=istr,iend
2519 cff1=fc(i,0)*hz_inv(i,1)
2521 END DO
2522 ELSE IF (itrc.eq.
iphyf(iphy))
THEN
2523 DO i=istr,iend
2524 cff1=fc(i,0)*hz_inv(i,1)
2526 END DO
2527 END IF
2528 END DO
2529#endif
2530 END DO sink_loop
2531
2532
2533
2534
2535
2539 DO i=istr,iend
2540 bio(i,k,itrc)=bio(i,k,itrc)+dtbio*bio_new(i,k,itrc)
2541 END DO
2542 END DO
2543 END DO
2544
2545 END DO iter_loop
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2565 DO i=istr,iend
2566 cff=bio(i,k,itrc)-bio_old(i,k,itrc)
2567 t(i,j,k,nnew,itrc)=t(i,j,k,nnew,itrc)+cff*hz(i,j,k)
2568 END DO
2569 END DO
2570 END DO
2571 END DO j_loop
2572
2573 RETURN
logical, dimension(:), allocatable rtuvr_flag
real(r8), dimension(:), allocatable rtnit
integer, dimension(nphy) iphyn
real(r8), dimension(:,:), allocatable b_c2cl
real(r8), dimension(:,:), allocatable e0_comp
real(r8), dimension(:,:), allocatable inhib_fac
real(r8), dimension(:,:), allocatable mxpaceff
real(r8), dimension(:,:), allocatable mxppc
real(r8), dimension(:,:), allocatable hspo4
real(r8), dimension(:,:), allocatable regcr
real(r8), dimension(:), allocatable frac_exbac_n
real(r8), dimension(:,:), allocatable mxchlc
real(r8), dimension(:), allocatable bacpel
real(r8), dimension(:,:), allocatable mxpsc
real(r8), dimension(:,:), allocatable mxc2cl
real(r8), dimension(:,:), allocatable b_chlc
real(r8), dimension(:,:), allocatable hsfe
real(r8), dimension(:,:), allocatable maxc2sialg
integer, dimension(nbac) ibacc
real(r8), dimension(:), allocatable r_exbac_c
real(r8), dimension(:,:), allocatable bactbase
real(r8), dimension(:,:), allocatable hspo4_ba
real(r8), dimension(nbands) wavedp
real(r8), dimension(:,:), allocatable hsfe_ba
real(r8), dimension(:,:), allocatable hsdon
real(r8), dimension(:,:), allocatable mxchlb
real(r8), dimension(:,:), allocatable regpr
real(r8), dimension(:,:), allocatable b_psc
integer, dimension(nfec) ifecf
integer, dimension(ndom) idomn
integer, dimension(:), allocatable bioiter
real(r8), dimension(:,:), allocatable regtbase
real(r8), dimension(:,:,:), allocatable fecpel
real(r8), dimension(:), allocatable bac_ceff
integer, dimension(nbac) ibacp
integer, dimension(nfec) ifecp
real(r8), dimension(:,:), allocatable hsnh4_ba
real(r8), dimension(:,:), allocatable qu_yld
integer, dimension(nfec) ifecc
real(r8), dimension(:,:), allocatable hsno3
integer, dimension(nphy) iphyp
real(r8), dimension(:), allocatable rtuvr_dic
real(r8), dimension(:,:), allocatable exalg
real(r8), dimension(:,:), allocatable b_c2cn
real(r8), dimension(:,:), allocatable mxc2cn
real(r8), dimension(:), allocatable p2cbac
integer, parameter nbands
real(r8), dimension(:,:), allocatable maxc2fealg
real(r8), dimension(:,:), allocatable minc2sialg
real(r8), dimension(:,:), allocatable hsdoc_ba
integer, dimension(nfec) ifecs
real(r8), dimension(:,:), allocatable regsr
integer, dimension(ndom) icdmc
real(r8), dimension(:,:), allocatable phytbase
real(r8), dimension(:,:), allocatable fecdoc
real(r8), dimension(:,:), allocatable imaxc2palg
real(r8), dimension(:,:), allocatable b_hpub
real(r8), dimension(:,:), allocatable bet_
real(r8), dimension(:), allocatable n2cbac
real(r8), parameter larger
real(r8), dimension(:,:), allocatable imaxc2sialg
real(r8), dimension(:,:), allocatable mxlpub
real(r8), dimension(:,:), allocatable b_chlb
real(r8), dimension(:), allocatable baccyc
real(r8), dimension(:,:), allocatable maxc2nalg
integer, dimension(nphy) iphyc
real(r8), dimension(:,:), allocatable wf
real(r8), dimension(:,:), allocatable mxhpub
integer, dimension(nbac) ibacf
real(r8), dimension(:,:), allocatable c2nalgminabs
logical, dimension(:), allocatable regen_flag
real(r8), dimension(:,:), allocatable hsnh4
real(r8), dimension(:,:), allocatable feccyc
real(r8), dimension(:,:), allocatable b_ppc
real(r8), dimension(:), allocatable bacdoc
real(r8), dimension(:,:), allocatable b_paceff
real(r8), dimension(:,:), allocatable minrefuge
real(r8), dimension(:,:), allocatable c2nnupdon
integer, dimension(nphy, npig) ipigs
real(r8), dimension(:,:), allocatable minc2nalg
real(r8), dimension(:), allocatable c2febac
real(r8), parameter vsmall
real(r8), dimension(:,:), allocatable imaxc2fealg
real(r8), dimension(:,:), allocatable maxc2palg
real(r8), dimension(:,:), allocatable regtfac
real(r8), dimension(:,:), allocatable c2fealgminabs
real(r8), dimension(:), allocatable c2pbac
real(r8), dimension(:,:), allocatable phytfac
integer, dimension(:), allocatable idbio
integer, dimension(ndom) idomp
real(r8), dimension(:,:), allocatable ws
real(r8), dimension(:,:), allocatable cdocfrac_c
integer, dimension(nbac) ibacn
real(r8), dimension(:,:), allocatable hsdop
real(r8), dimension(:,:), allocatable regnr
real(r8), parameter small
real(r8), dimension(:,:), allocatable imaxc2nalg
real(r8), dimension(:), allocatable exbac_c
integer, dimension(ndom) idomc
real(r8), dimension(:,:), allocatable hssio
real(r8), dimension(ndom) adoc410
real(r8), dimension(:,:), allocatable b_lpub
real(r8), dimension(:), allocatable rtuvr_doc
real(r8), dimension(:,:), allocatable gtbac_max
real(r8), dimension(:,:), allocatable c2sialgminabs
integer, dimension(nphy) iphyf
real(r8), dimension(:), allocatable exbac_n
real(r8), dimension(:), allocatable i_bac_ceff
real(r8), dimension(:,:), allocatable minc2palg
integer, dimension(nphy) iphys
real(r8), dimension(:,:), allocatable minc2fealg
real(r8), dimension(:), allocatable c2nbac
real(r8), dimension(:,:), allocatable hsgrz
integer, dimension(nfec) ifecn
real(r8), dimension(:,:), allocatable gtalg_max
real(r8), dimension(:,:), allocatable bactfac
real(r8), dimension(:), allocatable fe2cbac
real(r8), dimension(:,:), allocatable c2chl_max
real(r8), dimension(ndom) adoc300
real(r8), dimension(:,:), allocatable e0_inhib
real(r8), dimension(:), allocatable hsnit
real(r8), dimension(:,:), allocatable regfr
real(r8), dimension(:,:), allocatable c2palkphos
real(r8), dimension(:,:), allocatable c2palgminabs
integer, dimension(:), allocatable nrrec
integer, dimension(:), allocatable iic
real(dp), dimension(:), allocatable dt
real(dp), parameter rad2deg
integer, dimension(:), allocatable ntstart
integer, dimension(:), allocatable ndia
integer, dimension(:), allocatable ntsdia