MODULE p4zlim !!====================================================================== !! *** MODULE p4zlim *** !! TOP : PISCES !!====================================================================== !! History : 1.0 ! 2004 (O. Aumont) Original code !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 !!---------------------------------------------------------------------- #if defined key_pisces !!---------------------------------------------------------------------- !! 'key_pisces' PISCES bio-model !!---------------------------------------------------------------------- !! p4z_lim : !!---------------------------------------------------------------------- USE oce_trc ! USE trp_trc ! USE sms ! IMPLICIT NONE PRIVATE PUBLIC p4z_lim ! called in p4zprg.F90 !!* Substitution # include "domzgr_substitute.h90" !!---------------------------------------------------------------------- !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007) !! $Header:$ !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) !!---------------------------------------------------------------------- CONTAINS SUBROUTINE p4z_lim !!--------------------------------------------------------------------- !! *** ROUTINE p4z_lim *** !! !! ** Purpose : Compute the co-limitations by the various nutrients !! for the various phytoplankton species !! !! ** Method : - ??? !!--------------------------------------------------------------------- INTEGER :: ji, jj, jk REAL(wp) :: zlim1, zlim2, zlim3, zlim4, zno3, zferlim REAL(wp) :: zconctemp, zconctemp2, zconctempn, zconctempn2 !!--------------------------------------------------------------------- ! Tuning of the iron concentration to a minimum ! level that is set to the detection limit ! ------------------------------------- DO jk = 1, jpk DO jj = 1, jpj DO ji = 1, jpi zno3 = trn(ji,jj,jk,jpno3) * 1.e6 zferlim = MAX( 1.5e-11*(zno3/40)**2, 3e-12 ) zferlim = MIN( zferlim, 1.5e-11 ) trn(ji,jj,jk,jpfer) = MAX( trn(ji,jj,jk,jpfer), zferlim ) END DO END DO END DO ! Computation of a variable Ks for iron on diatoms ! taking into account that increasing biomass is ! made of generally bigger cells ! ------------------------------------------------ DO jk = 1, jpkm1 DO jj = 1, jpj DO ji = 1, jpi zconctemp = MAX( 0.e0 , trn(ji,jj,jk,jpdia)-5e-7 ) zconctemp2 = MIN( 5.e-7, trn(ji,jj,jk,jpdia) ) zconctempn = MAX( 0.e0 , trn(ji,jj,jk,jpphy)-1e-6 ) zconctempn2 = MIN( 1.e-6, trn(ji,jj,jk,jpphy) ) concdfe(ji,jj,jk) = ( zconctemp2 * conc3 + 0.4e-9 * zconctemp) & & / ( zconctemp2 + zconctemp + rtrn ) concdfe(ji,jj,jk) = MAX( conc3, concdfe(ji,jj,jk) ) concnfe(ji,jj,jk) = ( zconctempn2 * conc2 + 0.08e-9 * zconctempn) & & / ( zconctempn2 + zconctempn + rtrn ) concnfe(ji,jj,jk) = MAX( conc2, concnfe(ji,jj,jk) ) END DO END DO END DO DO jk = 1, jpkm1 DO jj = 1, jpj DO ji = 1, jpi ! Michaelis-Menten Limitation term for nutrients ! Small flagellates ! ----------------------------------------------- xnanono3(ji,jj,jk) = trn(ji,jj,jk,jpno3) * concnnh4 & & / ( conc0 * concnnh4 + concnnh4 * trn(ji,jj,jk,jpno3) & & + conc0 * trn(ji,jj,jk,jpnh4) ) xnanonh4(ji,jj,jk) = trn(ji,jj,jk,jpnh4) * conc0 & & / ( conc0 * concnnh4 + concnnh4 * trn(ji,jj,jk,jpno3) & & + conc0 * trn(ji,jj,jk,jpnh4) ) zlim1 = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) zlim2 = trn(ji,jj,jk,jppo4) / ( trn(ji,jj,jk,jppo4) + concnnh4 ) zlim3 = trn(ji,jj,jk,jpfer) / ( trn(ji,jj,jk,jpfer) + concnfe(ji,jj,jk) ) xlimphy(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) zlim1 = trn(ji,jj,jk,jpnh4) / ( concnnh4 + trn(ji,jj,jk,jpnh4) ) zlim3 = trn(ji,jj,jk,jpfer) / ( conc2 + trn(ji,jj,jk,jpfer) ) zlim4 = trn(ji,jj,jk,jpdoc) / ( xkdoc2 + trn(ji,jj,jk,jpdoc) ) xlimbac(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) * zlim4 END DO END DO END DO DO jk = 1, jpkm1 DO jj = 1, jpj DO ji = 1, jpi ! Michaelis-Menten Limitation term for nutrients Diatoms ! ---------------------------------------------- xdiatno3(ji,jj,jk) = trn(ji,jj,jk,jpno3) * concdnh4 & & / ( conc1 * concdnh4 + concdnh4 * trn(ji,jj,jk,jpno3) & & + conc1 * trn(ji,jj,jk,jpnh4) ) xdiatnh4(ji,jj,jk) = trn(ji,jj,jk,jpnh4) * conc1 & & / ( conc1 * concdnh4 + concdnh4 * trn(ji,jj,jk,jpno3) & & + conc1 * trn(ji,jj,jk,jpnh4) ) zlim1 = xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) zlim2 = trn(ji,jj,jk,jppo4) / ( trn(ji,jj,jk,jppo4) + concdnh4 ) zlim3 = trn(ji,jj,jk,jpsil) / ( trn(ji,jj,jk,jpsil) + xksi (ji,jj) ) zlim4 = trn(ji,jj,jk,jpfer) / ( trn(ji,jj,jk,jpfer) + concdfe(ji,jj,jk) ) xlimdia(ji,jj,jk) = MIN( zlim1, zlim2, zlim3, zlim4 ) END DO END DO END DO ! END SUBROUTINE p4z_lim #else !!====================================================================== !! Dummy module : No PISCES bio-model !!====================================================================== CONTAINS SUBROUTINE p4z_lim ! Empty routine END SUBROUTINE p4z_lim #endif !!====================================================================== END MODULE p4zlim