New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 7646 for trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90 – NEMO

Ignore:
Timestamp:
2017-02-06T10:25:03+01:00 (7 years ago)
Author:
timgraham
Message:

Merge of dev_merge_2016 into trunk. UPDATE TO ARCHFILES NEEDED for XIOS2.
LIM_SRC_s/limrhg.F90 to follow in next commit due to change of kind (I'm unable to do it in this commit).
Merged using the following steps:

1) svn merge --reintegrate svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk .
2) Resolve minor conflicts in sette.sh and namelist_cfg for ORCA2LIM3 (due to a change in trunk after branch was created)
3) svn commit
4) svn switch svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk
5) svn merge svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/2016/dev_merge_2016 .
6) At this stage I checked out a clean copy of the branch to compare against what is about to be committed to the trunk.
6) svn commit #Commit code to the trunk

In this commit I have also reverted a change to Fcheck_archfile.sh which was causing problems on the Paris machine.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90

    r6945 r7646  
    88   !!             3.4  !  2011-06  (O. Aumont, C. Ethe) Quota model for iron 
    99   !!---------------------------------------------------------------------- 
    10 #if defined key_pisces 
    11    !!---------------------------------------------------------------------- 
    12    !!   'key_top'       and                                      TOP models 
    13    !!   'key_pisces'                                       PISCES bio-model 
    14    !!---------------------------------------------------------------------- 
    1510   !!   p4z_rem       :  Compute remineralization/dissolution of organic compounds 
    1611   !!   p4z_rem_init  :  Initialisation of parameters for remineralisation 
     
    2015   USE trc             !  passive tracers common variables  
    2116   USE sms_pisces      !  PISCES Source Minus Sink variables 
    22    USE p4zopt          !  optical model 
    2317   USE p4zche          !  chemical model 
    2418   USE p4zprod         !  Growth rate of the 2 phyto groups 
    25    USE p4zmeso         !  Sources and sinks of mesozooplankton 
    26    USE p4zint          !  interpolation and computation of various fields 
    2719   USE p4zlim 
    2820   USE prtctl_trc      !  print control for debugging 
     
    3830 
    3931   !! * Shared module variables 
     32   REAL(wp), PUBLIC ::  xremikc    !: remineralisation rate of DOC  
     33   REAL(wp), PUBLIC ::  xremikn    !: remineralisation rate of DON  
     34   REAL(wp), PUBLIC ::  xremikp    !: remineralisation rate of DOP  
    4035   REAL(wp), PUBLIC ::  xremik     !: remineralisation rate of POC  
    41    REAL(wp), PUBLIC ::  xremip     !: remineralisation rate of DOC 
    4236   REAL(wp), PUBLIC ::  nitrif     !: NH4 nitrification rate  
    4337   REAL(wp), PUBLIC ::  xsirem     !: remineralisation rate of POC  
    4438   REAL(wp), PUBLIC ::  xsiremlab  !: fast remineralisation rate of POC  
    4539   REAL(wp), PUBLIC ::  xsilab     !: fraction of labile biogenic silica  
    46  
     40   REAL(wp), PUBLIC ::  feratb     !: Fe/C quota in bacteria 
     41   REAL(wp), PUBLIC ::  xkferb     !: Half-saturation constant for bacteria Fe/C 
    4742 
    4843   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   denitr     !: denitrification array 
    49    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   denitnh4   !: -    -    -    -   - 
    5044 
    5145   !!---------------------------------------------------------------------- 
     
    6862      ! 
    6963      INTEGER  ::   ji, jj, jk 
    70       REAL(wp) ::   zremip, zremik, zsiremin  
     64      REAL(wp) ::   zremik, zremikc, zremikn, zremikp, zsiremin, zfact  
    7165      REAL(wp) ::   zsatur, zsatur2, znusil, znusil2, zdep, zdepmin, zfactdep 
    72       REAL(wp) ::   zbactfer, zorem, zorem2, zofer, zolimit 
    73       REAL(wp) ::   zosil, ztem 
    74 #if ! defined key_kriest 
    75       REAL(wp) ::   zofer2 
    76 #endif 
    77       REAL(wp) ::   zonitr, zstep, zfact 
     66      REAL(wp) ::   zbactfer, zolimit, zonitr, zrfact2 
     67      REAL(wp) ::   zosil, ztem, zdenitnh4, zolimic, zolimin, zolimip, zdenitrn, zdenitrp 
    7868      CHARACTER (len=25) :: charout 
    7969      REAL(wp), POINTER, DIMENSION(:,:  ) :: ztempbac 
    80       REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zolimi, zdepprod, zw3d 
     70      REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zolimi, zdepprod, zfacsi, zw3d, zfacsib 
    8171      !!--------------------------------------------------------------------- 
    8272      ! 
     
    8575      ! Allocate temporary workspace 
    8676      CALL wrk_alloc( jpi, jpj,      ztempbac                  ) 
    87       CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi ) 
     77      CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi, zfacsi, zfacsib ) 
    8878 
    8979      ! Initialisation of temprary arrys 
    9080      zdepprod(:,:,:) = 1._wp 
    9181      ztempbac(:,:)   = 0._wp 
     82      zfacsib(:,:,:)  = xsilab / ( 1.0 - xsilab ) 
     83      zfacsi(:,:,:)   = xsilab 
    9284 
    9385      ! Computation of the mean phytoplankton concentration as 
     
    112104      END DO 
    113105 
     106      IF( ln_p4z ) THEN 
     107         DO jk = 1, jpkm1 
     108            DO jj = 1, jpj 
     109               DO ji = 1, jpi 
     110                  ! DOC ammonification. Depends on depth, phytoplankton biomass 
     111                  ! and a limitation term which is supposed to be a parameterization of the bacterial activity.  
     112                  zremik = xremik * xstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk)  
     113                  zremik = MAX( zremik, 2.74e-4 * xstep ) 
     114                  ! Ammonification in oxic waters with oxygen consumption 
     115                  ! ----------------------------------------------------- 
     116                  zolimit = zremik * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc)  
     117                  zolimi(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit )  
     118                  ! Ammonification in suboxic waters with denitrification 
     119                  ! ------------------------------------------------------- 
     120                  denitr(ji,jj,jk)  = MIN(  ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit,   & 
     121                     &                     zremik * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc)  ) 
     122                  ! 
     123                  zolimi (ji,jj,jk) = MAX( 0.e0, zolimi (ji,jj,jk) ) 
     124                  denitr (ji,jj,jk) = MAX( 0.e0, denitr (ji,jj,jk) ) 
     125                  ! 
     126                  tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) 
     127                  tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) 
     128                  tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr (ji,jj,jk) * rdenit 
     129                  tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zolimi (ji,jj,jk) - denitr(ji,jj,jk) 
     130                  tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimi (ji,jj,jk) * o2ut 
     131                  tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) 
     132                  tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimi(ji,jj,jk)    & 
     133                  &                     + ( rdenit + 1.) * denitr(ji,jj,jk) ) 
     134               END DO 
     135            END DO 
     136         END DO 
     137      ELSE 
     138         DO jk = 1, jpkm1 
     139            DO jj = 1, jpj 
     140               DO ji = 1, jpi 
     141                  ! DOC ammonification. Depends on depth, phytoplankton biomass 
     142                  ! and a limitation term which is supposed to be a parameterization of the bacterial activity.  
     143                  ! ----------------------------------------------------------------- 
     144                  zremik = xstep / 1.e-6 * MAX(0.01, xlimbac(ji,jj,jk)) * zdepbac(ji,jj,jk)  
     145                  zremik = MAX( zremik, 2.74e-4 * xstep / xremikc ) 
     146 
     147                  zremikc = xremikc * zremik 
     148                  zremikn = xremikn / xremikc 
     149                  zremikp = xremikp / xremikc 
     150 
     151                  ! Ammonification in oxic waters with oxygen consumption 
     152                  ! ----------------------------------------------------- 
     153                  zolimit = zremikc * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc)  
     154                  zolimic = MAX( 0.e0, MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit ) )  
     155                  zolimi(ji,jj,jk) = zolimic 
     156                  zolimin = zremikn * zolimic * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 
     157                  zolimip = zremikp * zolimic * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn )  
     158 
     159                  ! Ammonification in suboxic waters with denitrification 
     160                  ! ------------------------------------------------------- 
     161                  zolimit = zremikc * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) 
     162                  denitr(ji,jj,jk)  = MIN(  ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, zolimit ) 
     163                  denitr(ji,jj,jk) = MAX( 0.e0, denitr(ji,jj,jk) ) 
     164                  zdenitrn  = zremikn * denitr(ji,jj,jk) * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 
     165                  zdenitrp  = zremikp * denitr(ji,jj,jk) * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 
     166 
     167                  tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimip + zdenitrp 
     168                  tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimin + zdenitrn 
     169                  tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr(ji,jj,jk) * rdenit 
     170                  tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zolimic - denitr(ji,jj,jk) 
     171                  tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) - zolimin - zdenitrn 
     172                  tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) - zolimip - zdenitrp 
     173                  tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimic * o2ut 
     174                  tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimic + denitr(ji,jj,jk) 
     175                  tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimin + ( rdenit + 1.) * zdenitrn ) 
     176               END DO 
     177            END DO 
     178         END DO 
     179         ! 
     180      ENDIF 
     181 
     182 
    114183      DO jk = 1, jpkm1 
    115184         DO jj = 1, jpj 
    116185            DO ji = 1, jpi 
    117                zstep   = xstep 
    118 # if defined key_degrad 
    119                zstep = zstep * facvol(ji,jj,jk) 
    120 # endif 
    121                ! DOC ammonification. Depends on depth, phytoplankton biomass 
    122                ! and a limitation term which is supposed to be a parameterization 
    123                !     of the bacterial activity.  
    124                zremik = xremik * zstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk)  
    125                zremik = MAX( zremik, 2.74e-4 * xstep ) 
    126                ! Ammonification in oxic waters with oxygen consumption 
    127                ! ----------------------------------------------------- 
    128                zolimit = zremik * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc)  
    129                zolimi(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit )  
    130                ! Ammonification in suboxic waters with denitrification 
    131                ! ------------------------------------------------------- 
    132                denitr(ji,jj,jk)  = MIN(  ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit,   & 
    133                   &                     zremik * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc)  ) 
    134                ! 
    135                zolimi (ji,jj,jk) = MAX( 0.e0, zolimi (ji,jj,jk) ) 
    136                denitr (ji,jj,jk) = MAX( 0.e0, denitr (ji,jj,jk) ) 
    137                ! 
    138             END DO 
    139          END DO 
    140       END DO 
    141  
    142  
    143       DO jk = 1, jpkm1 
    144          DO jj = 1, jpj 
    145             DO ji = 1, jpi 
    146                zstep   = xstep 
    147 # if defined key_degrad 
    148                zstep = zstep * facvol(ji,jj,jk) 
    149 # endif 
    150186               ! NH4 nitrification to NO3. Ceased for oxygen concentrations 
    151187               ! below 2 umol/L. Inhibited at strong light  
    152188               ! ---------------------------------------------------------- 
    153                zonitr  =nitrif * zstep * trb(ji,jj,jk,jpnh4) / ( 1.+ emoy(ji,jj,jk) ) * ( 1.- nitrfac(ji,jj,jk) )  
    154                denitnh4(ji,jj,jk) = nitrif * zstep * trb(ji,jj,jk,jpnh4) * nitrfac(ji,jj,jk)  
     189               zonitr  = nitrif * xstep * trb(ji,jj,jk,jpnh4) * ( 1.- nitrfac(ji,jj,jk) )  & 
     190               &         / ( 1.+ emoy(ji,jj,jk) ) * ( 1. + fr_i(ji,jj) * emoy(ji,jj,jk) )  
     191               zdenitnh4 = nitrif * xstep * trb(ji,jj,jk,jpnh4) * nitrfac(ji,jj,jk) 
    155192               ! Update of the tracers trends 
    156193               ! ---------------------------- 
    157                tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zonitr - denitnh4(ji,jj,jk) 
    158                tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr - rdenita * denitnh4(ji,jj,jk) 
     194               tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zonitr - zdenitnh4 
     195               tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr - rdenita * zdenitnh4 
    159196               tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr 
    160                tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * denitnh4(ji,jj,jk) 
     197               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * zdenitnh4 
    161198            END DO 
    162199         END DO 
     
    177214               ! studies (especially at Papa) have shown this uptake to be significant 
    178215               ! ---------------------------------------------------------- 
    179                zbactfer = 10.e-6 *  rfact2 * prmax(ji,jj,jk) * xlimbacl(ji,jj,jk)             & 
    180                   &              * trb(ji,jj,jk,jpfer) / ( 2.5E-10 + trb(ji,jj,jk,jpfer) )    & 
     216               zbactfer = feratb *  rfact2 * prmax(ji,jj,jk) * xlimbacl(ji,jj,jk)             & 
     217                  &              * trb(ji,jj,jk,jpfer) / ( xkferb + trb(ji,jj,jk,jpfer) )    & 
    181218                  &              * zdepprod(ji,jj,jk) * zdepbac(ji,jj,jk) 
    182 #if defined key_kriest 
    183                tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.05 
    184                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.05 
    185 #else 
    186219               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.16 
    187220               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.12 
    188221               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer*0.04 
    189 #endif 
    190222            END DO 
    191223         END DO 
     
    198230       ENDIF 
    199231 
     232      ! Initialization of the array which contains the labile fraction 
     233      ! of bSi. Set to a constant in the upper ocean 
     234      ! --------------------------------------------------------------- 
     235 
    200236      DO jk = 1, jpkm1 
    201237         DO jj = 1, jpj 
    202238            DO ji = 1, jpi 
    203                zstep   = xstep 
    204 # if defined key_degrad 
    205                zstep = zstep * facvol(ji,jj,jk) 
    206 # endif 
    207                ! POC disaggregation by turbulence and bacterial activity.  
    208                ! -------------------------------------------------------- 
    209                zremip = xremip * zstep * tgfunc(ji,jj,jk) * ( 1.- 0.55 * nitrfac(ji,jj,jk) )  
    210  
    211                ! POC disaggregation rate is reduced in anoxic zone as shown by 
    212                ! sediment traps data. In oxic area, the exponent of the martin s 
    213                ! law is around -0.87. In anoxic zone, it is around -0.35. This 
    214                ! means a disaggregation constant about 0.5 the value in oxic zones 
    215                ! ----------------------------------------------------------------- 
    216                zorem  = zremip * trb(ji,jj,jk,jppoc) 
    217                zofer  = zremip * trb(ji,jj,jk,jpsfe) 
    218 #if ! defined key_kriest 
    219                zorem2 = zremip * trb(ji,jj,jk,jpgoc) 
    220                zofer2 = zremip * trb(ji,jj,jk,jpbfe) 
    221 #else 
    222                zorem2 = zremip * trb(ji,jj,jk,jpnum) 
    223 #endif 
    224  
    225                ! Update the appropriate tracers trends 
    226                ! ------------------------------------- 
    227  
    228                tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zorem 
    229                tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zofer 
    230 #if defined key_kriest 
    231                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zorem 
    232                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zorem2 
    233                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zofer 
    234 #else 
    235                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zorem2 - zorem 
    236                tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) - zorem2 
    237                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zofer2 - zofer 
    238                tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) - zofer2 
    239 #endif 
    240  
    241             END DO 
    242          END DO 
    243       END DO 
    244  
    245        IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
    246          WRITE(charout, FMT="('rem3')") 
    247          CALL prt_ctl_trc_info(charout) 
    248          CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
    249        ENDIF 
    250  
    251       DO jk = 1, jpkm1 
    252          DO jj = 1, jpj 
    253             DO ji = 1, jpi 
    254                zstep   = xstep 
    255 # if defined key_degrad 
    256                zstep = zstep * facvol(ji,jj,jk) 
    257 # endif 
     239               zdep     = MAX( hmld(ji,jj), heup_01(ji,jj) ) 
     240               zsatur   = MAX( rtrn, ( sio3eq(ji,jj,jk) - trb(ji,jj,jk,jpsil) ) / ( sio3eq(ji,jj,jk) + rtrn ) ) 
     241               zsatur2  = ( 1. + tsn(ji,jj,jk,jp_tem) / 400.)**37 
     242               znusil   = 0.225  * ( 1. + tsn(ji,jj,jk,jp_tem) / 15.) * zsatur + 0.775 * zsatur2 * zsatur**9.25 
    258243               ! Remineralization rate of BSi depedant on T and saturation 
    259244               ! --------------------------------------------------------- 
    260                zsatur   = ( sio3eq(ji,jj,jk) - trb(ji,jj,jk,jpsil) ) / ( sio3eq(ji,jj,jk) + rtrn ) 
    261                zsatur   = MAX( rtrn, zsatur ) 
    262                zsatur2  = ( 1. + tsn(ji,jj,jk,jp_tem) / 400.)**37 
    263                znusil   = 0.225  * ( 1. + tsn(ji,jj,jk,jp_tem) / 15.) * zsatur + 0.775 * zsatur2 * zsatur**9.25 
    264                znusil2  = 0.225  * ( 1. + tsn(ji,jj,1,jp_tem) / 15.) + 0.775 * zsatur2 
    265  
    266                ! Two classes of BSi are considered : a labile fraction and  
    267                ! a more refractory one. The ratio between both fractions is 
    268                ! constant and specified in the namelist. 
    269                ! ---------------------------------------------------------- 
    270                zdep     = MAX( hmld(ji,jj), heup(ji,jj) )  
    271                zdep     = MAX( 0., gdept_n(ji,jj,jk) - zdep ) 
    272                ztem     = MAX( tsn(ji,jj,1,jp_tem), 0. ) 
    273                zfactdep = xsilab * EXP(-( xsiremlab - xsirem ) * znusil2 * zdep / wsbio2 ) * ztem / ( ztem + 10. ) 
    274                zsiremin = ( xsiremlab * zfactdep + xsirem * ( 1. - zfactdep ) ) * zstep * znusil 
     245               IF ( gdept_n(ji,jj,jk) > zdep ) THEN 
     246                  zfacsib(ji,jj,jk) = zfacsib(ji,jj,jk-1) * EXP( -0.5 * ( xsiremlab - xsirem )  & 
     247                  &                   * znusil * e3t_n(ji,jj,jk) / wsbio4(ji,jj,jk) ) 
     248                  zfacsi(ji,jj,jk)  = zfacsib(ji,jj,jk) / ( 1.0 + zfacsib(ji,jj,jk) ) 
     249                  zfacsib(ji,jj,jk) = zfacsib(ji,jj,jk) * EXP( -0.5 * ( xsiremlab - xsirem )    & 
     250                  &                   * znusil * e3t_n(ji,jj,jk) / wsbio4(ji,jj,jk) ) 
     251               ENDIF 
     252               zsiremin = ( xsiremlab * zfacsi(ji,jj,jk) + xsirem * ( 1. - zfacsi(ji,jj,jk) ) ) * xstep * znusil 
    275253               zosil    = zsiremin * trb(ji,jj,jk,jpgsi) 
    276254               ! 
     
    283261 
    284262      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
    285          WRITE(charout, FMT="('rem4')") 
     263         WRITE(charout, FMT="('rem3')") 
    286264         CALL prt_ctl_trc_info(charout) 
    287265         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
    288266       ENDIF 
    289  
    290       ! Update the arrays TRA which contain the biological sources and sinks 
    291       ! -------------------------------------------------------------------- 
    292  
    293       DO jk = 1, jpkm1 
    294          tra(:,:,jk,jppo4) = tra(:,:,jk,jppo4) + zolimi (:,:,jk) + denitr(:,:,jk) 
    295          tra(:,:,jk,jpnh4) = tra(:,:,jk,jpnh4) + zolimi (:,:,jk) + denitr(:,:,jk) 
    296          tra(:,:,jk,jpno3) = tra(:,:,jk,jpno3) - denitr (:,:,jk) * rdenit 
    297          tra(:,:,jk,jpdoc) = tra(:,:,jk,jpdoc) - zolimi (:,:,jk) - denitr(:,:,jk) 
    298          tra(:,:,jk,jpoxy) = tra(:,:,jk,jpoxy) - zolimi (:,:,jk) * o2ut 
    299          tra(:,:,jk,jpdic) = tra(:,:,jk,jpdic) + zolimi (:,:,jk) + denitr(:,:,jk) 
    300          tra(:,:,jk,jptal) = tra(:,:,jk,jptal) + rno3 * ( zolimi(:,:,jk) + ( rdenit + 1.) * denitr(:,:,jk) ) 
    301       END DO 
    302267 
    303268      IF( knt == nrdttrc ) THEN 
     
    316281          CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 
    317282       ENDIF 
    318  
    319       IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
    320          WRITE(charout, FMT="('rem6')") 
    321          CALL prt_ctl_trc_info(charout) 
    322          CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
    323       ENDIF 
    324283      ! 
    325284      CALL wrk_dealloc( jpi, jpj,      ztempbac                  ) 
    326       CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi ) 
     285      CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi, zfacsi, zfacsib ) 
    327286      ! 
    328287      IF( nn_timing == 1 )  CALL timing_stop('p4z_rem') 
     
    343302      !! 
    344303      !!---------------------------------------------------------------------- 
    345       NAMELIST/nampisrem/ xremik, xremip, nitrif, xsirem, xsiremlab, xsilab 
     304      NAMELIST/nampisrem/ xremik, nitrif, xsirem, xsiremlab, xsilab, feratb, xkferb, &  
     305         &                xremikc, xremikn, xremikp 
    346306      INTEGER :: ios                 ! Local integer output status for namelist read 
    347307 
     
    359319         WRITE(numout,*) ' Namelist parameters for remineralization, nampisrem' 
    360320         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
    361          WRITE(numout,*) '    remineralisation rate of POC              xremip    =', xremip 
    362          WRITE(numout,*) '    remineralization rate of DOC              xremik    =', xremik 
     321         IF( ln_p4z ) THEN 
     322            WRITE(numout,*) '    remineralization rate of DOC              xremik    =', xremik 
     323         ELSE 
     324            WRITE(numout,*) '    remineralization rate of DOC              xremikc   =', xremikc 
     325            WRITE(numout,*) '    remineralization rate of DON              xremikn   =', xremikn 
     326            WRITE(numout,*) '    remineralization rate of DOP              xremikp   =', xremikp 
     327         ENDIF 
    363328         WRITE(numout,*) '    remineralization rate of Si               xsirem    =', xsirem 
    364329         WRITE(numout,*) '    fast remineralization rate of Si          xsiremlab =', xsiremlab 
    365330         WRITE(numout,*) '    fraction of labile biogenic silica        xsilab    =', xsilab 
    366331         WRITE(numout,*) '    NH4 nitrification rate                    nitrif    =', nitrif 
     332         WRITE(numout,*) '    Bacterial Fe/C ratio                      feratb    =', feratb 
     333         WRITE(numout,*) '    Half-saturation constant for bact. Fe/C   xkferb    =', xkferb 
    367334      ENDIF 
    368335      ! 
    369336      denitr  (:,:,:) = 0._wp 
    370       denitnh4(:,:,:) = 0._wp 
    371337      ! 
    372338   END SUBROUTINE p4z_rem_init 
     
    377343      !!                     ***  ROUTINE p4z_rem_alloc  *** 
    378344      !!---------------------------------------------------------------------- 
    379       ALLOCATE( denitr(jpi,jpj,jpk), denitnh4(jpi,jpj,jpk), STAT=p4z_rem_alloc ) 
     345      ALLOCATE( denitr(jpi,jpj,jpk), STAT=p4z_rem_alloc ) 
    380346      ! 
    381347      IF( p4z_rem_alloc /= 0 )   CALL ctl_warn('p4z_rem_alloc: failed to allocate arrays') 
    382348      ! 
    383349   END FUNCTION p4z_rem_alloc 
    384  
    385 #else 
    386    !!====================================================================== 
    387    !!  Dummy module :                                   No PISCES bio-model 
    388    !!====================================================================== 
    389 CONTAINS 
    390    SUBROUTINE p4z_rem                    ! Empty routine 
    391    END SUBROUTINE p4z_rem 
    392 #endif  
    393350 
    394351   !!====================================================================== 
Note: See TracChangeset for help on using the changeset viewer.