MODULE p4zrem !!====================================================================== !! *** MODULE p4zrem *** !! TOP : PISCES Compute remineralization/scavenging of organic compounds !!====================================================================== !! History : 1.0 ! 2004 (O. Aumont) Original code !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 !!---------------------------------------------------------------------- #if defined key_pisces !!---------------------------------------------------------------------- !! 'key_top' and TOP models !! 'key_pisces' PISCES bio-model !!---------------------------------------------------------------------- !! p4z_rem : Compute remineralization/scavenging of organic compounds !!---------------------------------------------------------------------- USE oce_trc ! USE trp_trc ! USE sms ! IMPLICIT NONE PRIVATE PUBLIC p4z_rem ! 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_rem !!--------------------------------------------------------------------- !! *** ROUTINE p4z_rem *** !! !! ** Purpose : Compute remineralization/scavenging of organic compounds !! !! ** Method : - ??? !!--------------------------------------------------------------------- INTEGER :: ji, jj, jk REAL(wp) :: zremip, zremik , zlam1b REAL(wp) :: zkeq , zfeequi, zsiremin REAL(wp) :: zsatur, zsatur2, znusil REAL(wp) :: zlamfac, zstep REAL(wp), DIMENSION(jpi,jpj) :: ztempbac REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepbac, zfesatur !!--------------------------------------------------------------------- zstep = rfact2 / rjjss ! Time step duration for the biology ! Computation of the mean phytoplankton concentration as ! a crude estimate of the bacterial biomass ! -------------------------------------------------- DO jk = 1, jpkm1 DO jj = 1, jpj DO ji = 1, jpi IF( fsdept(ji,jj,jk) < 120. ) THEN zdepbac(ji,jj,jk) = MIN( 0.7 * ( trn(ji,jj,jk,jpzoo) + 2.* trn(ji,jj,jk,jpmes) ), 4.e-6 ) ztempbac(ji,jj) = zdepbac(ji,jj,jk) ELSE zdepbac(ji,jj,jk) = MIN( 1., 120./ fsdept(ji,jj,jk) ) * ztempbac(ji,jj) ENDIF END DO END DO END DO DO jk = 1, jpkm1 DO jj = 1, jpj DO ji = 1, jpi ! DENITRIFICATION FACTOR COMPUTED FROM O2 LEVELS ! ---------------------------------------------- nitrfac(ji,jj,jk) = MAX( 0.e0, 0.4 * ( 6.e-6 - trn(ji,jj,jk,jpoxy) ) & & / ( oxymin + trn(ji,jj,jk,jpoxy) ) ) END DO END DO END DO nitrfac(:,:,:) = MIN( 1., nitrfac(:,:,:) ) DO jk = 1, jpkm1 DO jj = 1, jpj DO ji = 1, jpi ! DOC ammonification. Depends on depth, phytoplankton biomass ! and a limitation term which is supposed to be a parameterization ! of the bacterial activity. ! ---------------------------------------------------------------- zremik = xremik * zstep / 1.e-6 * xlimbac(ji,jj,jk) & # if defined key_off_degrad & * facvol(ji,jj,jk) & # endif & * zdepbac(ji,jj,jk) zremik = MAX( zremik, 5.5e-4 * zstep ) ! Ammonification in oxic waters with oxygen consumption ! ----------------------------------------------------- olimi(ji,jj,jk) = MIN( ( trn(ji,jj,jk,jpoxy) - rtrn ) / o2ut, & & zremik * ( 1.- nitrfac(ji,jj,jk) ) * trn(ji,jj,jk,jpdoc) ) ! Ammonification in suboxic waters with denitrification ! ------------------------------------------------------- denitr(ji,jj,jk) = MIN( ( trn(ji,jj,jk,jpno3) - rtrn ) / rdenit, & & zremik * nitrfac(ji,jj,jk) * trn(ji,jj,jk,jpdoc) ) END DO END DO END DO olimi (:,:,:) = MAX( 0.e0, olimi (:,:,:) ) denitr(:,:,:) = MAX( 0.e0, denitr(:,:,:) ) DO jk = 1, jpkm1 DO jj = 1, jpj DO ji = 1, jpi ! NH4 nitrification to NO3. Ceased for oxygen concentrations ! below 2 umol/L. Inhibited at strong light ! ---------------------------------------------------------- onitr(ji,jj,jk) = nitrif * zstep * trn(ji,jj,jk,jpnh4) / ( 1.+ emoy(ji,jj,jk) ) & # if defined key_off_degrad & * facvol(ji,jj,jk) & # endif & * ( 1.- nitrfac(ji,jj,jk) ) END DO END DO END DO DO jk = 1, jpkm1 DO jj = 1, jpj DO ji = 1, jpi ! Bacterial uptake of iron. No iron is available in DOC. So ! Bacteries are obliged to take up iron from the water. Some ! studies (especially at Papa) have shown this uptake to be ! significant ! ---------------------------------------------------------- xbactfer(ji,jj,jk) = 15.e-6 * rfact2 * 4.* 0.4 * prmax(ji,jj,jk) & & * ( xlimphy(ji,jj,jk) * zdepbac(ji,jj,jk))**2 & & / ( xkgraz2 + zdepbac(ji,jj,jk) ) & & * ( 0.5 + SIGN( 0.5, trn(ji,jj,jk,jpfer) -2.e-11 ) ) END DO END DO END DO DO jk = 1, jpkm1 DO jj = 1, jpj DO ji = 1, jpi ! POC disaggregation by turbulence and bacterial activity. ! ------------------------------------------------------------- zremip = xremip * zstep * tgfunc(ji,jj,jk) & # if defined key_off_degrad & * facvol(ji,jj,jk) & # endif & * ( 1.- 0.5 * nitrfac(ji,jj,jk) ) ! POC disaggregation rate is reduced in anoxic zone as shown by ! sediment traps data. In oxic area, the exponent of the martin s ! law is around -0.87. In anoxic zone, it is around -0.35. This ! means a disaggregation constant about 0.5 the value in oxic zones ! ----------------------------------------------------------------- orem (ji,jj,jk) = zremip * trn(ji,jj,jk,jppoc) ofer (ji,jj,jk) = zremip * trn(ji,jj,jk,jpsfe) #if ! defined key_kriest orem2(ji,jj,jk) = zremip * trn(ji,jj,jk,jpgoc) ofer2(ji,jj,jk) = zremip * trn(ji,jj,jk,jpbfe) #else orem2(ji,jj,jk) = zremip * trn(ji,jj,jk,jpnum) #endif END DO END DO END DO DO jk = 1, jpkm1 DO jj = 1, jpj DO ji = 1, jpi ! Remineralization rate of BSi depedant on T and saturation ! --------------------------------------------------------- zsatur = ( sio3eq(ji,jj,jk) - trn(ji,jj,jk,jpsil) ) / ( sio3eq(ji,jj,jk) + rtrn ) zsatur = MAX( rtrn, zsatur ) zsatur2 = zsatur * ( 1. + tn(ji,jj,jk) / 400.)**4 znusil = 0.225 * ( 1. + tn(ji,jj,jk) / 15.) * zsatur + 0.775 * zsatur2**9 # if defined key_off_degrad zsiremin = xsirem * zstep * znusil * facvol(ji,jj,jk) # else zsiremin = xsirem * zstep * znusil # endif osil(ji,jj,jk) = zsiremin * trn(ji,jj,jk,jpdsi) ! END DO END DO END DO zfesatur(:,:,:) = 0.6e-9 DO jk = 1, jpkm1 DO jj = 1, jpj DO ji = 1, jpi ! scavenging rate of iron. this scavenging rate depends on the ! load in particles on which they are adsorbed. The ! parameterization has been taken from studies on Th ! ------------------------------------------------------------ zkeq = fekeq(ji,jj,jk) zfeequi = ( -( 1. + zfesatur(ji,jj,jk) * zkeq - zkeq * trn(ji,jj,jk,jpfer) ) & & + SQRT( ( 1. + zfesatur(ji,jj,jk) * zkeq - zkeq * trn(ji,jj,jk,jpfer) )**2 & & + 4. * trn(ji,jj,jk,jpfer) * zkeq) ) / ( 2. * zkeq ) #if ! defined key_kriest zlam1b = 3.e-5 + xlam1 * ( trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpgoc) & & + trn(ji,jj,jk,jpcal) + trn(ji,jj,jk,jpdsi) ) * 1.e6 #else zlam1b = 3.e-5 + xlam1 * ( trn(ji,jj,jk,jppoc) & & + trn(ji,jj,jk,jpcal) + trn(ji,jj,jk,jpdsi) ) * 1.e6 #endif # if defined key_off_degrad xscave(ji,jj,jk) = zfeequi * zlam1b * zstep * facvol(ji,jj,jk) # else xscave(ji,jj,jk) = zfeequi * zlam1b * zstep # endif ! Increased scavenging for very high iron concentrations ! found near the coasts due to increased lithogenic particles ! and let s say it unknown processes (precipitation, ...) ! ----------------------------------------------------------- zlamfac = MAX( 0.e0, ( gphit(ji,jj) + 55.) / 30. ) zlamfac = MIN( 1. , zlamfac ) #if ! defined key_kriest zlam1b = ( 80.* ( trn(ji,jj,jk,jpdoc) + 35.e-6 ) & & + 698.* trn(ji,jj,jk,jppoc) + 1.05e4 * trn(ji,jj,jk,jpgoc) ) & & * zdiss(ji,jj,jk) + 1E-4 * (1.-zlamfac) & & + xlam1 * MAX( 0.e0, ( trn(ji,jj,jk,jpfer) * 1.e9 - 1.) ) #else zlam1b = ( 80.* (trn(ji,jj,jk,jpdoc) + 35E-6) & & + 698.* trn(ji,jj,jk,jppoc) ) & & * zdiss(ji,jj,jk) + 1E-4 * (1.-zlamfac) & & + xlam1 * MAX( 0.e0, ( trn(ji,jj,jk,jpfer) * 1.e9 - 1.) ) #endif # if defined key_off_degrad xaggdfe(ji,jj,jk) = zlam1b * zstep * 0.5 * ( trn(ji,jj,jk,jpfer) - zfeequi ) * facvol(ji,jj,jk) # else xaggdfe(ji,jj,jk) = zlam1b * zstep * 0.5 * ( trn(ji,jj,jk,jpfer) - zfeequi ) # endif END DO END DO END DO ! END SUBROUTINE p4z_rem #else !!====================================================================== !! Dummy module : No PISCES bio-model !!====================================================================== CONTAINS SUBROUTINE p4z_rem ! Empty routine END SUBROUTINE p4z_rem #endif !!====================================================================== END MODULE p4zrem