196 |
mu_diaz(i,j,k) = 0. _d 0 |
mu_diaz(i,j,k) = 0. _d 0 |
197 |
irr_eff(i,j,k) = 0. _d 0 |
irr_eff(i,j,k) = 0. _d 0 |
198 |
irr_inst(i,j,k) = 0. _d 0 |
irr_inst(i,j,k) = 0. _d 0 |
199 |
|
irrk(i,j,k) = 0. _d 0 |
200 |
|
NO3_lim(i,j,k) = 0. _d 0 |
201 |
|
PO4_lim(i,j,k) = 0. _d 0 |
202 |
|
Fe_lim(i,j,k) = 0. _d 0 |
203 |
|
Fe_lim_diaz(i,j,k) = 0. _d 0 |
204 |
PtoN(i,j,k) = 0. _d 0 |
PtoN(i,j,k) = 0. _d 0 |
205 |
FetoN(i,j,k) = 0. _d 0 |
FetoN(i,j,k) = 0. _d 0 |
206 |
NPP(i,j,k) = 0. _d 0 |
NPP(i,j,k) = 0. _d 0 |
222 |
CALL TRACER_MIN_VAL( PTR_NO3, 1. _d -7) |
CALL TRACER_MIN_VAL( PTR_NO3, 1. _d -7) |
223 |
CALL TRACER_MIN_VAL( PTR_PO4, 1. _d -8) |
CALL TRACER_MIN_VAL( PTR_PO4, 1. _d -8) |
224 |
CALL TRACER_MIN_VAL( PTR_FE, 1. _d -11) |
CALL TRACER_MIN_VAL( PTR_FE, 1. _d -11) |
225 |
|
CALL TRACER_MIN_VAL( PTR_O2, 1. _d -11) |
226 |
|
CALL TRACER_MIN_VAL( PTR_DON, 1. _d -11) |
227 |
|
CALL TRACER_MIN_VAL( PTR_DOP, 1. _d -11) |
228 |
#endif |
#endif |
229 |
|
|
|
|
|
230 |
c----------------------------------------------------------- |
c----------------------------------------------------------- |
231 |
c mixed layer depth calculation for light and dvm |
c mixed layer depth calculation for light and dvm |
232 |
c |
c |
235 |
I bi, bj, imin, imax, jmin, jmax, |
I bi, bj, imin, imax, jmin, jmax, |
236 |
I myIter, myTime, myThid) |
I myIter, myTime, myThid) |
237 |
|
|
|
|
|
238 |
c Phytoplankton mixing |
c Phytoplankton mixing |
239 |
c The mixed layer is assumed to homogenize vertical gradients of phytoplankton. |
c The mixed layer is assumed to homogenize vertical gradients of phytoplankton. |
240 |
c This allows for basic Sverdrup dynamics in a qualitative sense. |
c This allows for basic Sverdrup dynamics in a qualitative sense. |
241 |
c This has not been thoroughly tested, and care should be |
c This has not been thoroughly tested, and care should be |
242 |
c taken with its interpretation. |
c taken with its interpretation. |
243 |
|
|
244 |
|
|
245 |
#ifdef ML_MEAN_PHYTO |
#ifdef ML_MEAN_PHYTO |
246 |
DO j=jmin,jmax |
DO j=jmin,jmax |
247 |
DO i=imin,imax |
DO i=imin,imax |
296 |
I bi, bj, imin, imax, jmin, jmax, |
I bi, bj, imin, imax, jmin, jmax, |
297 |
I myIter, myTime, myThid ) |
I myIter, myTime, myThid ) |
298 |
|
|
|
|
|
|
|
|
299 |
c phytoplankton photoadaptation to local light level |
c phytoplankton photoadaptation to local light level |
300 |
DO k=1,Nr |
DO k=1,Nr |
301 |
DO j=jmin,jmax |
DO j=jmin,jmax |
309 |
ENDDO |
ENDDO |
310 |
ENDDO |
ENDDO |
311 |
|
|
|
|
|
312 |
c --------------------------------------------------------------------- |
c --------------------------------------------------------------------- |
313 |
c Nutrient uptake and partitioning between organic pools |
c Nutrient uptake and partitioning between organic pools |
314 |
|
|
|
C!! needed?? |
|
|
C$TAF STORE P_sm = comlev1, key = ikey_dynamics, kind=isbyte |
|
|
C$TAF STORE P_lg = comlev1, key = ikey_dynamics, kind=isbyte |
|
|
C$TAF STORE P_diaz = comlev1, key = ikey_dynamics, kind=isbyte |
|
|
|
|
315 |
DO k=1,Nr |
DO k=1,Nr |
316 |
DO j=jmin,jmax |
DO j=jmin,jmax |
317 |
DO i=imin,imax |
DO i=imin,imax |
350 |
|
|
351 |
c Light-saturated maximal photosynthesis rate |
c Light-saturated maximal photosynthesis rate |
352 |
|
|
|
c Pc_m = Pc_0 * expkT(i,j,k) |
|
|
c & * max(1. _d -8, NO3_lim(i,j,k) * PO4_lim(i,j,k) |
|
|
c & * Fe_lim(i,j,k))**(1. / 3.) |
|
|
c & * maskC(i,j,k,bi,bj) |
|
|
c |
|
|
c Pc_m_diaz = Pc_0_diaz |
|
|
c & * exp(kappa_eppley_diaz * theta(i,j,k,bi,bj)) |
|
|
c & * max(1. _d -8, PO4_lim(i,j,k) |
|
|
c & * Fe_lim_diaz(i,j,k))**(1. / 2.) |
|
|
c & * maskC(i,j,k,bi,bj) |
|
|
|
|
|
|
|
353 |
#ifdef BLING_ADJOINT_SAFE_tmp_xxxxxxxxxxxxxxxxxx_needs_testing |
#ifdef BLING_ADJOINT_SAFE_tmp_xxxxxxxxxxxxxxxxxx_needs_testing |
354 |
th1 = tanh( (NO3_lim(i,j,k)-PO4_lim(i,j,k))*1. _d 6 ) |
th1 = tanh( (NO3_lim(i,j,k)-PO4_lim(i,j,k))*1. _d 6 ) |
355 |
nut_lim = ( 1. _d 0 - th1 ) * NO3_lim(i,j,k) * 0.5 _d 0 |
nut_lim = ( 1. _d 0 - th1 ) * NO3_lim(i,j,k) * 0.5 _d 0 |
382 |
& * min(PO4_lim(i,j,k), Fe_lim_diaz(i,j,k)) |
& * min(PO4_lim(i,j,k), Fe_lim_diaz(i,j,k)) |
383 |
& * maskC(i,j,k,bi,bj) |
& * maskC(i,j,k,bi,bj) |
384 |
|
|
385 |
|
CMM( Pc_m and Pc_m_diaz crash adjoint if get too small |
386 |
|
#ifdef BLING_ADJOINT_SAFE |
387 |
|
Pc_m = MAX(Pc_m ,maskC(i,j,k,bi,bj)*1. _d -15) |
388 |
|
Pc_m_diaz = MAX(Pc_m_diaz,maskC(i,j,k,bi,bj)*1. _d -15) |
389 |
|
#endif |
390 |
|
CMM) |
391 |
#endif |
#endif |
392 |
|
|
393 |
|
|
426 |
ENDDO |
ENDDO |
427 |
ENDDO |
ENDDO |
428 |
|
|
|
|
|
|
C$TAF STORE P_sm = comlev1, key = ikey_dynamics, kind=isbyte |
|
|
C$TAF STORE P_lg = comlev1, key = ikey_dynamics, kind=isbyte |
|
|
C$TAF STORE P_diaz = comlev1, key = ikey_dynamics, kind=isbyte |
|
|
Cxx needed? |
|
|
|
|
429 |
c Instantaneous nutrient concentration in phyto biomass |
c Instantaneous nutrient concentration in phyto biomass |
430 |
c Separate loop so adjoint stuff above can be outside loop |
c Separate loop so adjoint stuff above can be outside loop |
431 |
c (fix for recomputations) |
c (fix for recomputations) |
432 |
|
CMM( |
433 |
|
CADJ STORE P_sm = comlev1, key = ikey_dynamics, kind=isbyte |
434 |
|
CADJ STORE P_lg = comlev1, key = ikey_dynamics, kind=isbyte |
435 |
|
CADJ STORE P_diaz = comlev1, key = ikey_dynamics, kind=isbyte |
436 |
|
CMM) |
437 |
DO k=1,Nr |
DO k=1,Nr |
438 |
DO j=jmin,jmax |
DO j=jmin,jmax |
439 |
DO i=imin,imax |
DO i=imin,imax |
463 |
ENDDO |
ENDDO |
464 |
ENDDO |
ENDDO |
465 |
|
|
|
C$TAF STORE P_sm = comlev1, key = ikey_dynamics, kind=isbyte |
|
|
C$TAF STORE P_lg = comlev1, key = ikey_dynamics, kind=isbyte |
|
|
C$TAF STORE P_diaz = comlev1, key = ikey_dynamics, kind=isbyte |
|
|
cxx needed? |
|
|
|
|
|
|
|
466 |
DO k=1,Nr |
DO k=1,Nr |
467 |
DO j=jmin,jmax |
DO j=jmin,jmax |
468 |
DO i=imin,imax |
DO i=imin,imax |
587 |
I bi, bj, imin, imax, jmin, jmax, |
I bi, bj, imin, imax, jmin, jmax, |
588 |
I myIter, myTime, myThid) |
I myIter, myTime, myThid) |
589 |
|
|
|
|
|
590 |
c----------------------------------------------------------- |
c----------------------------------------------------------- |
591 |
c remineralization from diel vertical migration |
c remineralization from diel vertical migration |
592 |
CALL BLING_DVM( |
CALL BLING_DVM( |
744 |
IF ( useDiagnostics ) THEN |
IF ( useDiagnostics ) THEN |
745 |
|
|
746 |
c 3d global variables |
c 3d global variables |
747 |
CALL DIAGNOSTICS_FILL(P_sm,'BLGPSM ',0,Nr,1,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(P_sm, 'BLGPSM ',0,Nr,1,bi,bj,myThid) |
748 |
CALL DIAGNOSTICS_FILL(P_lg,'BLGPLG ',0,Nr,1,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(P_lg, 'BLGPLG ',0,Nr,1,bi,bj,myThid) |
749 |
CALL DIAGNOSTICS_FILL(P_diaz,'BLGPDIA ',0,Nr,1,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(P_diaz, 'BLGPDIA ',0,Nr,1,bi,bj,myThid) |
750 |
CALL DIAGNOSTICS_FILL(chl,'BLGCHL ',0,Nr,1,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(chl, 'BLGCHL ',0,Nr,1,bi,bj,myThid) |
751 |
CALL DIAGNOSTICS_FILL(irr_mem,'BLGIMEM ',0,Nr,1,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(irr_mem,'BLGIMEM ',0,Nr,1,bi,bj,myThid) |
752 |
c 3d local variables |
c 3d local variables |
753 |
CALL DIAGNOSTICS_FILL(irrk,'BLGIRRK ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(irrk, 'BLGIRRK ',0,Nr,2,bi,bj,myThid) |
754 |
CALL DIAGNOSTICS_FILL(irr_eff,'BLGIEFF ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(irr_eff, 'BLGIEFF ',0,Nr,2,bi,bj,myThid) |
755 |
CALL DIAGNOSTICS_FILL(Fe_lim,'BLGFELIM',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(Fe_lim, 'BLGFELIM',0,Nr,2,bi,bj,myThid) |
756 |
CALL DIAGNOSTICS_FILL(NO3_lim,'BLGNLIM ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(NO3_lim, 'BLGNLIM ',0,Nr,2,bi,bj,myThid) |
757 |
CALL DIAGNOSTICS_FILL(POC_flux,'BLGPOCF ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(POC_flux,'BLGPOCF ',0,Nr,2,bi,bj,myThid) |
758 |
CALL DIAGNOSTICS_FILL(NPP,'BLGNPP ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(NPP, 'BLGNPP ',0,Nr,2,bi,bj,myThid) |
759 |
CALL DIAGNOSTICS_FILL(NCP,'BLGNCP ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(NCP, 'BLGNCP ',0,Nr,2,bi,bj,myThid) |
760 |
c CALL DIAGNOSTICS_FILL(Fe_ads_inorg,'BLGFEAI',0,Nr,2,bi,bj, |
c CALL DIAGNOSTICS_FILL(Fe_ads_inorg,'BLGFEAI',0,Nr,2,bi,bj, |
761 |
c & myThid) |
c & myThid) |
762 |
c CALL DIAGNOSTICS_FILL(Fe_dvm,'BLGFEDVM',0,Nr,2,bi,bj,myThid) |
c CALL DIAGNOSTICS_FILL(Fe_dvm,'BLGFEDVM',0,Nr,2,bi,bj,myThid) |
763 |
c CALL DIAGNOSTICS_FILL(Fe_sed,'BLGFESED',0,Nr,2,bi,bj,myThid) |
c CALL DIAGNOSTICS_FILL(Fe_sed,'BLGFESED',0,Nr,2,bi,bj,myThid) |
764 |
CALL DIAGNOSTICS_FILL(Fe_spm,'BLGFESPM',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(Fe_spm, 'BLGFESPM',0,Nr,2,bi,bj,myThid) |
765 |
CALL DIAGNOSTICS_FILL(Fe_recycle,'BLGFEREC',0,Nr,2,bi,bj, |
CALL DIAGNOSTICS_FILL(Fe_recycle, 'BLGFEREC',0,Nr,2,bi,bj, |
766 |
& myThid) |
& myThid) |
767 |
CALL DIAGNOSTICS_FILL(Fe_remindvm,'BLGFERD',0,Nr,2,bi,bj, |
CALL DIAGNOSTICS_FILL(Fe_remindvm, 'BLGFERD ',0,Nr,2,bi,bj, |
768 |
& myThid) |
& myThid) |
769 |
c CALL DIAGNOSTICS_FILL(Fe_reminp,'BLGFEREM',0,Nr,2,bi,bj,myThid) |
c CALL DIAGNOSTICS_FILL(Fe_reminp,'BLGFEREM',0,Nr,2,bi,bj,myThid) |
770 |
CALL DIAGNOSTICS_FILL(Fe_reminsum,'BLGFEREM',0,Nr,2,bi,bj, |
CALL DIAGNOSTICS_FILL(Fe_reminsum, 'BLGFEREM',0,Nr,2,bi,bj, |
771 |
& myThid) |
& myThid) |
772 |
CALL DIAGNOSTICS_FILL(Fe_uptake,'BLGFEUP ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(Fe_uptake,'BLGFEUP ',0,Nr,2,bi,bj,myThid) |
773 |
CALL DIAGNOSTICS_FILL(N_den_benthic,'BLGNDENB',0,Nr,2,bi,bj, |
CALL DIAGNOSTICS_FILL(N_den_benthic,'BLGNDENB',0,Nr,2,bi,bj, |
774 |
& myThid) |
& myThid) |
775 |
CALL DIAGNOSTICS_FILL(N_den_pelag,'BLGNDENP',0,Nr,2,bi,bj, |
CALL DIAGNOSTICS_FILL(N_den_pelag, 'BLGNDENP',0,Nr,2,bi,bj, |
776 |
& myThid) |
& myThid) |
777 |
CALL DIAGNOSTICS_FILL(N_dvm,'BLGNDVM ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(N_dvm, 'BLGNDVM ',0,Nr,2,bi,bj,myThid) |
778 |
CALL DIAGNOSTICS_FILL(N_fix,'BLGNFIX ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(N_fix, 'BLGNFIX ',0,Nr,2,bi,bj,myThid) |
779 |
CALL DIAGNOSTICS_FILL(DON_prod,'BLGDONP ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(DON_prod, 'BLGDONP ',0,Nr,2,bi,bj,myThid) |
780 |
CALL DIAGNOSTICS_FILL(N_spm,'BLGNSPM ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(N_spm, 'BLGNSPM ',0,Nr,2,bi,bj,myThid) |
781 |
CALL DIAGNOSTICS_FILL(N_recycle,'BLGNREC ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(N_recycle,'BLGNREC ',0,Nr,2,bi,bj,myThid) |
782 |
CALL DIAGNOSTICS_FILL(N_remindvm,'BLGNRD ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(N_remindvm,'BLGNRD ',0,Nr,2,bi,bj,myThid) |
783 |
CALL DIAGNOSTICS_FILL(N_reminp,'BLGNREM ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(N_reminp, 'BLGNREM ',0,Nr,2,bi,bj,myThid) |
784 |
CALL DIAGNOSTICS_FILL(N_uptake,'BLGNUP ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(N_uptake, 'BLGNUP ',0,Nr,2,bi,bj,myThid) |
785 |
CALL DIAGNOSTICS_FILL(P_dvm,'BLGPDVM ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(P_dvm, 'BLGPDVM ',0,Nr,2,bi,bj,myThid) |
786 |
CALL DIAGNOSTICS_FILL(DOP_prod,'BLGDOPP ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(DOP_prod, 'BLGDOPP ',0,Nr,2,bi,bj,myThid) |
787 |
CALL DIAGNOSTICS_FILL(P_spm,'BLGPSPM ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(P_spm, 'BLGPSPM ',0,Nr,2,bi,bj,myThid) |
788 |
CALL DIAGNOSTICS_FILL(P_recycle,'BLGPREC ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(P_recycle,'BLGPREC ',0,Nr,2,bi,bj,myThid) |
789 |
CALL DIAGNOSTICS_FILL(P_remindvm,'BLGPRD ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(P_remindvm,'BLGPRD ',0,Nr,2,bi,bj,myThid) |
790 |
CALL DIAGNOSTICS_FILL(P_reminp,'BLGPREM ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(P_reminp, 'BLGPREM ',0,Nr,2,bi,bj,myThid) |
791 |
CALL DIAGNOSTICS_FILL(P_uptake,'BLGPUP ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(P_uptake, 'BLGPUP ',0,Nr,2,bi,bj,myThid) |
792 |
c CALL DIAGNOSTICS_FILL(dvm,'BLGDVM ',0,Nr,2,bi,bj,myThid) |
c CALL DIAGNOSTICS_FILL(dvm,'BLGDVM ',0,Nr,2,bi,bj,myThid) |
793 |
CALL DIAGNOSTICS_FILL(mu,'BLGMU ',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(mu, 'BLGMU ',0,Nr,2,bi,bj,myThid) |
794 |
CALL DIAGNOSTICS_FILL(mu_diaz,'BLGMUDIA',0,Nr,2,bi,bj,myThid) |
CALL DIAGNOSTICS_FILL(mu_diaz, 'BLGMUDIA',0,Nr,2,bi,bj,myThid) |
795 |
c 2d local variables |
c 2d local variables |
796 |
c CALL DIAGNOSTICS_FILL(Fe_burial,'BLGFEBUR',0,1,2,bi,bj,myThid) |
c CALL DIAGNOSTICS_FILL(Fe_burial,'BLGFEBUR',0,1,2,bi,bj,myThid) |
797 |
c CALL DIAGNOSTICS_FILL(NO3_sed,'BLGNSED ',0,1,2,bi,bj,myThid) |
c CALL DIAGNOSTICS_FILL(NO3_sed,'BLGNSED ',0,1,2,bi,bj,myThid) |