MODULE p4zmicro !!====================================================================== !! *** MODULE p4zmicro *** !! TOP : PISCES Compute the sources/sinks for microzooplankton !!====================================================================== !! 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_micro : Compute the sources/sinks for microzooplankton !!---------------------------------------------------------------------- USE oce_trc ! USE trp_trc ! USE sms ! IMPLICIT NONE PRIVATE PUBLIC p4z_micro ! called in p4zbio.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_micro !!--------------------------------------------------------------------- !! *** ROUTINE p4z_micro *** !! !! ** Purpose : Compute the sources/sinks for microzooplankton !! !! ** Method : - ??? !!--------------------------------------------------------------------- INTEGER :: ji, jj, jk REAL(wp) :: zcompadi, zcompadi2, zcompaz , zcompaph, zcompapoc REAL(wp) :: zgraze , zdenom , zdenom2 REAL(wp) :: zfact , zstep , zinano , zidiat, zipoc !!--------------------------------------------------------------------- zstep = rfact2 / rjjss ! Time step duration for biology DO jk = 1, jpkm1 DO jj = 1, jpj DO ji = 1, jpi zcompaz = MAX( ( trn(ji,jj,jk,jpzoo) - 1.e-9 ), 0.e0 ) # if defined key_off_degrad zfact = zstep * tgfunc(ji,jj,jk) * zcompaz *facvol(ji,jj,jk) # else zfact = zstep * tgfunc(ji,jj,jk) * zcompaz # endif ! Respiration rates of both zooplankton ! ------------------------------------- respz(ji,jj,jk) = resrat * zfact * ( 1.+ 3.* nitrfac(ji,jj,jk) ) & & * trn(ji,jj,jk,jpzoo) / ( xkmort + trn(ji,jj,jk,jpzoo) ) ! Zooplankton mortality. A square function has been selected with ! no real reason except that it seems to be more stable and may ! mimic predation. ! --------------------------------------------------------------- tortz(ji,jj,jk) = mzrat * 1.e6 * zfact * trn(ji,jj,jk,jpzoo) END DO END DO END DO DO jk = 1, jpkm1 DO jj = 1, jpj DO ji = 1, jpi zcompadi = MAX( ( trn(ji,jj,jk,jpdia) - 1.e-8 ), 0.e0 ) zcompadi2 = MIN( zcompadi, 5.e-7 ) zcompaph = MAX( ( trn(ji,jj,jk,jpphy) - 2.e-7 ), 0.e0 ) zcompapoc = MAX( ( trn(ji,jj,jk,jppoc) - 1.e-8 ), 0.e0 ) ! Microzooplankton grazing ! ------------------------ zdenom2 = 1./ ( zprefp * zcompaph + zprefc * zcompapoc + zprefd * zcompadi2 + rtrn ) zgraze = grazrat * zstep * tgfunc(ji,jj,jk) & # if defined key_off_degrad & * facvol(ji,jj,jk) & # endif & * trn(ji,jj,jk,jpzoo) zinano = zprefp * zcompaph * zdenom2 zipoc = zprefc * zcompapoc * zdenom2 zidiat = zprefd * zcompadi2 * zdenom2 zdenom = 1./ ( xkgraz + zinano * zcompaph + zipoc * zcompapoc + zidiat * zcompadi2 ) grazp (ji,jj,jk) = zgraze * zinano * zcompaph * zdenom grazm (ji,jj,jk) = zgraze * zipoc * zcompapoc * zdenom grazsd(ji,jj,jk) = zgraze * zidiat * zcompadi2 * zdenom grazpf (ji,jj,jk) = grazp (ji,jj,jk) * trn(ji,jj,jk,jpnfe) / (trn(ji,jj,jk,jpphy) + rtrn) grazpch(ji,jj,jk) = grazp (ji,jj,jk) * trn(ji,jj,jk,jpnch) / (trn(ji,jj,jk,jpphy) + rtrn) grazmf (ji,jj,jk) = grazm (ji,jj,jk) * trn(ji,jj,jk,jpsfe) / (trn(ji,jj,jk,jppoc) + rtrn) grazsf (ji,jj,jk) = grazsd(ji,jj,jk) * trn(ji,jj,jk,jpdfe) / (trn(ji,jj,jk,jpdia) + rtrn) grazss (ji,jj,jk) = grazsd(ji,jj,jk) * trn(ji,jj,jk,jpbsi) / (trn(ji,jj,jk,jpdia) + rtrn) grazsch(ji,jj,jk) = grazsd(ji,jj,jk) * trn(ji,jj,jk,jpdch) / (trn(ji,jj,jk,jpdia) + rtrn) END DO END DO END DO DO jk = 1, jpkm1 DO jj = 1, jpj DO ji = 1, jpi ! Various remineralization and excretion terms ! -------------------------------------------- grarem(ji,jj,jk) = ( grazp(ji,jj,jk) + grazm (ji,jj,jk) & & + grazsd(ji,jj,jk) ) * ( 1.- epsher - unass ) grafer(ji,jj,jk) = ( grazpf(ji,jj,jk) + grazsf(ji,jj,jk) & & + grazmf(ji,jj,jk) ) * ( 1.- epsher - unass ) & & + ( grazm (ji,jj,jk) * MAX( (trn(ji,jj,jk,jpsfe) / & & (trn(ji,jj,jk,jppoc) + rtrn) - ferat3), 0.e0 ) & & + grazp (ji,jj,jk) * MAX( (trn(ji,jj,jk,jpnfe) / & & (trn(ji,jj,jk,jpphy) + rtrn) - ferat3), 0.e0 ) & & + grazsd(ji,jj,jk) * MAX( (trn(ji,jj,jk,jpdfe) / & & (trn(ji,jj,jk,jpdia) + rtrn) - ferat3), 0.e0 ) ) * epsher grapoc(ji,jj,jk) = ( grazp(ji,jj,jk) + grazm(ji,jj,jk) + grazsd(ji,jj,jk) ) * unass END DO END DO END DO ! END SUBROUTINE p4z_micro #else !!====================================================================== !! Dummy module : No PISCES bio-model !!====================================================================== CONTAINS SUBROUTINE p4z_micro ! Empty routine END SUBROUTINE p4z_micro #endif !!====================================================================== END MODULE p4zmicro