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 8003 for branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z – NEMO

Ignore:
Timestamp:
2017-05-09T12:14:45+02:00 (7 years ago)
Author:
aumont
Message:

modification in the code to remove unnecessary parts such as kriest and non iomput options

Location:
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zagg.F90

    r7190 r8003  
    3636CONTAINS 
    3737 
    38 #if ! defined key_kriest 
    3938   !!---------------------------------------------------------------------- 
    4039   !!   'standard particles parameterisation'                  ??? 
     
    6867               ! 
    6968               zstep = xstep  
    70 # if defined key_degrad 
    71                zstep = zstep * facvol(ji,jj,jk) 
    72 # endif 
    7369               zfact = zstep * xdiss(ji,jj,jk) 
    7470               !  Part I : Coagulation dependent on turbulence 
     
    146142 
    147143#else 
    148    !!---------------------------------------------------------------------- 
    149    !!   'Kriest parameterisation'        key_kriest          ??? 
    150    !!---------------------------------------------------------------------- 
    151  
    152    SUBROUTINE p5z_agg ( kt, knt ) 
    153       !!--------------------------------------------------------------------- 
    154       !!                ***  ROUTINE p5z_agg  *** 
    155       !! 
    156       !! ** Purpose :   Compute aggregation of particles 
    157       !! 
    158       !! ** Method  : - ??? 
    159       !!--------------------------------------------------------------------- 
    160       ! 
    161       INTEGER, INTENT(in) :: kt, knt 
    162       ! 
    163       INTEGER  :: ji, jj, jk 
    164       REAL(wp) :: zagg1, zagg2, zagg3, zagg4, zagg5, zfract, zaggsi, zaggsh 
    165       REAL(wp) :: zagg , zaggdoc, zaggdoc1, znumdoc 
    166       REAL(wp) :: znum , zeps, zfm, zgm, zsm, zfactn, zfactp 
    167       REAL(wp) :: zdiv , zdiv1, zdiv2, zdiv3, zdiv4, zdiv5 
    168       REAL(wp) :: zval1, zval2, zval3, zval4 
    169       CHARACTER (len=25) :: charout 
    170       !!--------------------------------------------------------------------- 
    171       ! 
    172       IF( nn_timing == 1 )  CALL timing_start('p5z_agg') 
    173       ! 
    174       !  Exchange between organic matter compartments due to coagulation/disaggregation 
    175       !  --------------------------------------------------- 
    176  
    177       zval1 = 1. + xkr_zeta 
    178       zval2 = 1. + xkr_eta 
    179       zval3 = 3. + xkr_eta 
    180       zval4 = 4. + xkr_eta 
    181  
    182       DO jk = 1,jpkm1 
    183          DO jj = 1,jpj 
    184             DO ji = 1,jpi 
    185                IF( tmask(ji,jj,jk) /= 0.e0 ) THEN 
    186  
    187                   znum = trb(ji,jj,jk,jppoc)/(trb(ji,jj,jk,jpnum)+rtrn) / xkr_massp 
    188                   !-------------- To avoid sinking speed over 50 m/day ------- 
    189                   znum  = min(xnumm(jk),znum) 
    190                   znum  = MAX( 1.1,znum) 
    191                   !------------------------------------------------------------ 
    192                   zeps  = ( zval1 * znum - 1.) / ( znum - 1.) 
    193                   zdiv  = MAX( 1.e-4, ABS( zeps - zval3) ) * SIGN( 1., zeps - zval3 ) 
    194                   zdiv1 = MAX( 1.e-4, ABS( zeps - 4.   ) ) * SIGN( 1., zeps - 4.    ) 
    195                   zdiv2 = zeps - 2. 
    196                   zdiv3 = zeps - 3. 
    197                   zdiv4 = zeps - zval2 
    198                   zdiv5 = 2.* zeps - zval4 
    199                   zfm   = xkr_frac**( 1.- zeps ) 
    200                   zsm   = xkr_frac**xkr_eta 
    201  
    202                   !    Part I : Coagulation dependant on turbulence 
    203                   !    ---------------------------------------------- 
    204                   zagg1 =  0.163  * trb(ji,jj,jk,jpnum)**2                                 & 
    205                      &            * 2.*( (zfm-1.)*(zfm*xkr_mass_max**3-xkr_mass_min**3)    & 
    206                      &            * (zeps-1)/zdiv1 + 3.*(zfm*xkr_mass_max-xkr_mass_min)    & 
    207                      &            * (zfm*xkr_mass_max**2-xkr_mass_min**2)                  & 
    208                      &            * (zeps-1.)**2/(zdiv2*zdiv3))  
    209                   zagg2 =  2*0.163*trb(ji,jj,jk,jpnum)**2*zfm                        & 
    210                      &            * ((xkr_mass_max**3+3.*(xkr_mass_max**2            & 
    211                      &            * xkr_mass_min*(zeps-1.)/zdiv2                     & 
    212                      &            + xkr_mass_max*xkr_mass_min**2*(zeps-1.)/zdiv3)    & 
    213                      &            + xkr_mass_min**3*(zeps-1)/zdiv1)                  & 
    214                      &            - zfm*xkr_mass_max**3*(1.+3.*((zeps-1.)            & 
    215                      &            / (zeps-2.)+(zeps-1.)/zdiv3)+(zeps-1.)/zdiv1))     
    216  
    217                   zagg3 =  0.163*trb(ji,jj,jk,jpnum)**2*zfm**2*8. * xkr_mass_max**3   
    218                    
    219                  !    Aggregation of small into large particles 
    220                  !    Part II : Differential settling 
    221                  !    ---------------------------------------------- 
    222                   zagg4 =  2.*3.141*0.125*trb(ji,jj,jk,jpnum)**2*                       & 
    223                      &                 xkr_wsbio_min*(zeps-1.)**2                         & 
    224                      &                 *(xkr_mass_min**2*((1.-zsm*zfm)/(zdiv3*zdiv4)      & 
    225                      &                 -(1.-zfm)/(zdiv*(zeps-1.)))-                       & 
    226                      &                 ((zfm*zfm*xkr_mass_max**2*zsm-xkr_mass_min**2)     & 
    227                      &                 *xkr_eta)/(zdiv*zdiv3*zdiv5) )    
    228  
    229                   zagg5 =   2.*3.141*0.125*trb(ji,jj,jk,jpnum)**2                         & 
    230                      &                 *(zeps-1.)*zfm*xkr_wsbio_min                        & 
    231                      &                 *(zsm*(xkr_mass_min**2-zfm*xkr_mass_max**2)         & 
    232                      &                 /zdiv3-(xkr_mass_min**2-zfm*zsm*xkr_mass_max**2)    & 
    233                      &                 /zdiv)   
    234  
    235                   ! 
    236                   !     Fractionnation by swimming organisms 
    237                   !     ------------------------------------ 
    238                   zfract = 2.*3.141*0.125*trb(ji,jj,jk,jpmes)*12./0.12/0.06**3*trb(ji,jj,jk,jpnum)  & 
    239                     &      * (0.01/xkr_mass_min)**(1.-zeps)*0.1**2  & 
    240                     &      * 10000.*xstep 
    241  
    242                   !     Aggregation of DOC to small particles 
    243                   !     -------------------------------------- 
    244                   zaggdoc = 0.83 * trb(ji,jj,jk,jpdoc) * xstep * xdiss(ji,jj,jk) * trb(ji,jj,jk,jpdoc)   & 
    245                      &        + 0.005 * 231. * trb(ji,jj,jk,jpdoc) * xstep * trb(ji,jj,jk,jpdoc) 
    246                   zaggdoc1 = 271. * trb(ji,jj,jk,jppoc) * xstep * xdiss(ji,jj,jk) * trb(ji,jj,jk,jpdoc)  & 
    247                      &  + 0.02 * 16706. * trb(ji,jj,jk,jppoc) * xstep * trb(ji,jj,jk,jpdoc) 
    248  
    249 # if defined key_degrad 
    250                    zagg1   = zagg1   * facvol(ji,jj,jk)                  
    251                    zagg2   = zagg2   * facvol(ji,jj,jk)                  
    252                    zagg3   = zagg3   * facvol(ji,jj,jk)                  
    253                    zagg4   = zagg4   * facvol(ji,jj,jk)                  
    254                    zagg5   = zagg5   * facvol(ji,jj,jk)                  
    255                    zaggdoc = zaggdoc * facvol(ji,jj,jk)                  
    256                    zaggdoc1 = zaggdoc1 * facvol(ji,jj,jk) 
    257 # endif 
    258                   zaggsh = ( zagg1 + zagg2 + zagg3 ) * rfact2 * xdiss(ji,jj,jk) / 1000. 
    259                   zaggsi = ( zagg4 + zagg5 ) * xstep / 10. 
    260                   zagg = 0.5 * xkr_stick * ( zaggsh + zaggsi ) 
    261                   ! 
    262                   znumdoc = trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
    263                   tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zaggdoc + zaggdoc1 
    264                   zfactn  = trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 
    265                   tra(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) + ( zaggdoc + zaggdoc1 ) * zfactn 
    266                   zfactp  = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 
    267                   tra(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) + ( zaggdoc + zaggdoc1 ) * zfactp 
    268                   tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zfract + zaggdoc / xkr_massp - zagg 
    269                   tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc1 
    270  
    271                ENDIF 
    272             END DO 
    273          END DO 
    274       END DO 
    275      ! 
    276      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
    277          WRITE(charout, FMT="('agg')") 
    278          CALL prt_ctl_trc_info(charout) 
    279          CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
    280      ENDIF 
    281      ! 
    282      CALL wrk_dealloc( jpi, jpj, jpk, znum3d ) 
    283      ! 
    284      IF( nn_timing == 1 )  CALL timing_stop('p5z_agg') 
    285      ! 
    286    END SUBROUTINE p5z_agg 
    287  
    288 #endif 
    289  
    290 #else 
    291144   !!====================================================================== 
    292145   !!  Dummy module :                                   No PISCES bio-model 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zlim.F90

    r7617 r8003  
    384384               zfuptk = 0.35 * zfvn 
    385385               zrpho = 2.24 * trb(ji,jj,jk,jppch) / ( trb(ji,jj,jk,jpnpi) * rno3 * 15. + rtrn ) 
    386                zrass = (1. - 0.4 - zrpho - zfuptk) 
     386               zrass = (1. - 0.3 - zrpho - zfuptk) 
    387387               xqppmax(ji,jj,jk) =  (zrpho + zfuptk) * 0.0128 * 16. + zrass * 1./ 10.9 * 16. + 0.13 
    388388               xqppmax(ji,jj,jk) = xqppmax(ji,jj,jk) * trb(ji,jj,jk,jpnpi) / ( trb(ji,jj,jk,jppic) + rtrn ) 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zmeso.F90

    r7617 r8003  
    8585      REAL(wp) :: zbeta, zrespz, ztortz, zgrasratp, zgrasratn, zgrasratf 
    8686      REAL(wp) :: ztmp1, ztmp2, ztmp3, ztmp4, ztmp5, ztmptot 
    87 #if defined key_kriest 
    88       REAL znumpoc 
    89 #endif 
    9087      REAL(wp) :: zgrazdc, zgrazz, zgrazm, zgrazpof, zgrazcal, zfracal 
    9188      REAL(wp) :: zgraznc, zgrazpoc, zgrazpon, zgrazpop, zgraznf, zgrazdf 
     
    119116            DO ji = 1, jpi 
    120117               zcompam   = MAX( ( trb(ji,jj,jk,jpmes) - 1.e-9 ), 0.e0 ) 
    121 # if defined key_degrad 
    122                zstep     = xstep * facvol(ji,jj,jk) 
    123 # else 
    124118               zstep     = xstep 
    125 # endif 
    126119               zfact     = zstep * tgfunc2(ji,jj,jk) * zcompam 
    127120 
     
    192185               !   Mesozooplankton flux feeding on GOC 
    193186               !   ---------------------------------- 
    194 # if ! defined key_kriest 
    195187               zgrazffeg = grazflux  * zstep * wsbio4(ji,jj,jk)      & 
    196188               &           * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes) 
     
    198190               zgrazffng = zgrazffeg * trb(ji,jj,jk,jpgon) / (trb(ji,jj,jk,jpgoc) + rtrn) 
    199191               zgrazffpg = zgrazffeg * trb(ji,jj,jk,jpgop) / (trb(ji,jj,jk,jpgoc) + rtrn) 
    200 # endif 
    201192               zgrazffep = grazflux  * zstep *  wsbio3(ji,jj,jk)     & 
    202193               &           * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpmes) 
     
    205196               zgrazffpp = zgrazffep * trb(ji,jj,jk,jppop) / (trb(ji,jj,jk,jppoc) + rtrn) 
    206197               ! 
    207 # if ! defined key_kriest 
    208198               zgraztotc  = zgrazdc + zgrazz + zgraznc + zgrazm + zgrazpoc + zgrazffep + zgrazffeg 
    209199 
     
    237227               zgraztotp  = zgrazdp + (zgrazz + zgrazm) * po4rat3 + zgraznp + zgrazpop  & 
    238228               &            + zgrazffpp + zgrazffpg 
    239  
    240 # else 
    241                zgraztotc  = zgrazdc + zgrazz + zgrazm + zgraznc + zgrazpoc + zgrazffep 
    242  
    243                !   Compute the proportion of filter feeders 
    244                !   ---------------------------------------- 
    245                zproport  = zgrazffep / ( zgraztotc + rtrn ) 
    246                zgrazffep = zproport * zgrazffep   ;   zgrazfffp = zproport * zgrazfffp 
    247                zgrazffnp = zproport * zgrazffnp   ;   zgrazffpp = zproport * zgrazffpp 
    248                zgraztotc = zgrazdc + zgrazz + zgrazm + zgraznc + zgrazpoc + zgrazffep 
    249                zgraztotf = zgrazdf + zgraznf + (zgrazz + zgrazm) * ferat3 + zgrazpof + zgrazfffp 
    250                zgraztotn = zgrazdn + (zgrazz + zgrazm) * no3rat3 + zgraznn + zgrazpon + zgrazffnp 
    251                zgraztotp = zgrazdp + (zgrazz + zgrazm) * po4rat3 + zgraznp + zgrazpop + zgrazffpp 
    252 # endif 
    253229 
    254230               ! Total grazing ( grazing by microzoo is already computed in p5zmicro ) 
     
    355331               tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zgrazdc * trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn ) 
    356332 
    357 #if defined key_kriest 
    358                znumpoc = trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
    359                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zgrapoc 
    360                tra(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) - zgrazpon - zgrazffnp + zgrapon 
    361                tra(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) - zgrazpop - zgrazffpp + zgrapop 
    362                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc + zgrapoc * xkr_dmeso      & 
    363                &   - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn ) 
    364                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazfffp - zgrazpof    & 
    365                &   + zgrapof 
    366                zfracal = trb(ji,jj,jk,jpcal) / (trb(ji,jj,jk,jppoc) + rtrn ) 
    367                zgrazcal = ( zgrazffep + zgrazpoc ) * (1. - part2) * zfracal 
    368 #else 
    369333               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfracc 
    370334               prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zfracc 
     
    381345               zfracal = trb(ji,jj,jk,jpcal) / ( trb(ji,jj,jk,jpgoc) + rtrn ) 
    382346               zgrazcal = zgrazffeg * (1. - part2) * zfracal 
    383 #endif 
     347 
    384348               !  calcite production 
    385349               !  ------------------ 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zmicro.F90

    r7617 r8003  
    114114               zcompaz = MAX( ( trb(ji,jj,jk,jpzoo) - 1.e-9 ), 0.e0 ) 
    115115               zstep   = xstep 
    116 # if defined key_degrad 
    117                zstep = zstep * facvol(ji,jj,jk) 
    118 # endif 
    119116               zfact   = zstep * tgfunc2(ji,jj,jk) * zcompaz 
    120117 
     
    275272               tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zepsherv * zgraztotc - zrespirc   & 
    276273               &                     - ztortz - zgrazz 
     274               IF (mig(ji) == 72 .and. mjg(jj) == 74 .and. jk == 1) THEN 
     275                 write(0,*) 'plante ',zfood, zepsherv, zgraztotc * rday/rfact2/trn(ji,jj,jk,jpzoo),   & 
     276                 &       zrespirc * rday/rfact2/trn(ji,jj,jk,jpzoo) 
     277               ENDIF 
    277278               tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) - zgraznc 
    278279               tra(ji,jj,jk,jpnph) = tra(ji,jj,jk,jpnph) - zgraznn 
     
    298299               tra(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) + po4rat3 * ztortz + zgrapop - zgrazpop 
    299300               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * ztortz  + zgrapof - zgrazpof 
    300 #if defined key_kriest 
    301                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zgrapoc * xkr_dmicro 
    302 #endif 
    303301               ! 
    304302               ! calcite production 
     
    311309               &                     + rno3 * zgraren 
    312310               tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 
    313 #if defined key_kriest 
    314                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + ztortz * xkr_dmicro & 
    315                                                          - zgrazpoc * trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
    316 #endif 
    317311            END DO 
    318312         END DO 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zmort.F90

    r7180 r8003  
    8989               zcompaph = MAX( ( trb(ji,jj,jk,jpphy) - 1e-9 ), 0.e0 ) 
    9090               zstep    = xstep 
    91 # if defined key_degrad 
    92                zstep    = zstep * facvol(ji,jj,jk) 
    93 # endif 
    9491               !   Squared mortality of Phyto similar to a sedimentation term during 
    9592               !   blooms (Doney et al. 1996) 
     
    120117               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca 
    121118               tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 
    122 #if defined key_kriest 
    123                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp 
    124                tra(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) + zmortp * zfactn 
    125                tra(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) + zmortp * zfactp 
    126                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + ztortp * xkr_dnano + zrespp * xkr_ddiat 
    127                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zmortp * zfactfe 
    128 #else 
    129119               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp 
    130120               tra(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) + zmortp * zfactn 
     
    132122               prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zmortp 
    133123               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zmortp * zfactfe 
    134 #endif 
    135124            END DO 
    136125         END DO 
     
    169158               zcompaph = MAX( ( trb(ji,jj,jk,jppic) - 1e-9 ), 0.e0 ) 
    170159               zstep    = xstep 
    171 # if defined key_degrad 
    172                zstep    = zstep * facvol(ji,jj,jk) 
    173 # endif 
    174160               !  Squared mortality of Phyto similar to a sedimentation term during 
    175161               !  blooms (Doney et al. 1996) 
     
    192178               tra(ji,jj,jk,jppch) = tra(ji,jj,jk,jppch) - zmortp * zfactch 
    193179               tra(ji,jj,jk,jppfe) = tra(ji,jj,jk,jppfe) - zmortp * zfactfe 
    194 #if defined key_kriest 
    195                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp 
    196                tra(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) + zmortp * zfactn 
    197                tra(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) + zmortp * zfactp 
    198                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + ztortp * xkr_dnano + zrespp * xkr_ddiat 
    199                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zmortp * zfactfe 
    200 #else 
    201180               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp 
    202181               tra(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) + zmortp * zfactn 
     
    204183               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zmortp * zfactfe 
    205184               prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zmortp 
    206 #endif 
    207185            END DO 
    208186         END DO 
     
    249227               !   ------------------------------------------------------------- 
    250228               zstep   = xstep 
    251 # if defined key_degrad 
    252                zstep = zstep * facvol(ji,jj,jk) 
    253 # endif 
    254229               !  Phytoplankton squared mortality 
    255230               !  ------------------------------- 
     
    277252               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zmortp2 * zfactsi 
    278253               tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zmortp2 * zfactsi 
    279 #if defined key_kriest 
    280                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp2   
    281                tra(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) + zmortp2 * zfactn 
    282                tra(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) + zmortp2 * zfactp 
    283                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + ztortp2 * xkr_ddiat + zrespp2 * xkr_daggr 
    284                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zmortp2 * zfactfe 
    285 #else 
    286254               tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zrespp2  
    287255               tra(ji,jj,jk,jpgon) = tra(ji,jj,jk,jpgon) + zrespp2 * zfactn 
     
    294262               prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + ztortp2 
    295263               prodgoc(ji,jj,jk) = prodgoc(ji,jj,jk) + zrespp2 
    296 #endif 
    297264            END DO 
    298265         END DO 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zpoc.F90

    r7627 r8003  
    7070      REAL(wp) ::   zsizek, zsizek1, alphat, remint 
    7171      REAL(wp) ::   solgoc, zpoc 
    72 #if ! defined key_kriest 
    7372      REAL(wp) ::   zofer2, zofer3 
    74 #endif 
    7573      REAL(wp) ::   step, zrfact2 
    7674      CHARACTER (len=25) :: charout 
     
    111109      END DO 
    112110 
    113 #if ! defined key_kriest 
    114111! ----------------------------------------------------------------------- 
    115112! Lability parameterization. This is the big particles part (GOC) 
     
    203200            DO ji = 1, jpi 
    204201               zstep   = xstep 
    205 # if defined key_degrad 
    206                zstep = zstep * facvol(ji,jj,jk) 
    207 # endif 
    208202               ! POC disaggregation by turbulence and bacterial activity.  
    209203               ! -------------------------------------------------------- 
     
    380374         END DO 
    381375      END DO 
    382 #endif 
    383376 
    384377      DO jk = 1, jpkm1 
     
    386379            DO ji = 1, jpi 
    387380               zstep   = xstep 
    388 # if defined key_degrad 
    389                zstep = zstep * facvol(ji,jj,jk) 
    390 # endif 
    391381               ! POC disaggregation by turbulence and bacterial activity.  
    392382               ! -------------------------------------------------------- 
     
    397387               zopop  = xremipp / xremipc * zremip * trb(ji,jj,jk,jppop) 
    398388               zofer  = zremip * trb(ji,jj,jk,jpsfe) 
    399 #if defined key_kriest 
    400                zopoc2 = xremipc * zremip * trb(ji,jj,jk,jpnum) 
    401 #endif 
    402389 
    403390               ! Update the appropriate tracers trends 
     
    411398               tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + zopop  
    412399               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zofer  
    413 #if defined key_kriest 
    414                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zopoc2 
    415 #endif 
    416400            END DO 
    417401         END DO 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zprod.F90

    r7617 r8003  
    518518#endif 
    519519           ENDIF 
    520          ELSE 
    521               trc3d(:,:,:,jp_pcs0_3d + 4)  = zprorcan(:,:,:) * zrfact2 * tmask(:,:,:) 
    522               trc3d(:,:,:,jp_pcs0_3d + 5)  = zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) 
    523               trc3d(:,:,:,jp_pcs0_3d + 6)  = zpronewn(:,:,:) * zrfact2 * tmask(:,:,:) 
    524               trc3d(:,:,:,jp_pcs0_3d + 7)  = zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) 
    525               trc3d(:,:,:,jp_pcs0_3d + 8)  = zprosid(:,:,:)  * zrfact2 * tmask(:,:,:) 
    526               trc3d(:,:,:,jp_pcs0_3d + 9)  = zprofed (:,:,:) * zrfact2 * tmask(:,:,:) 
    527 #  if ! defined key_kriest 
    528               trc3d(:,:,:,jp_pcs0_3d + 10) = zprofen (:,:,:) * zrfact2 * tmask(:,:,:) 
    529 #  endif 
    530520         ENDIF 
    531521         ! 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zrem.F90

    r7627 r8003  
    137137            DO ji = 1, jpi 
    138138               zstep   = xstep 
    139 # if defined key_degrad 
    140                zstep = zstep * facvol(ji,jj,jk) 
    141 # endif 
    142139               ! DOC ammonification. Depends on depth, phytoplankton biomass 
    143140               ! and a limitation term which is supposed to be a parameterization 
     
    188185            DO ji = 1, jpi 
    189186               zstep   = xstep 
    190 # if defined key_degrad 
    191                zstep = zstep * facvol(ji,jj,jk) 
    192 # endif 
    193187               ! NH4 nitrification to NO3. Ceased for oxygen concentrations 
    194188               ! below 2 umol/L. Inhibited at strong light  
     
    226220                  &              * biron(ji,jj,jk) / ( xkferb + biron(ji,jj,jk) )    & 
    227221                  &              * zdepprod(ji,jj,jk) * zdepeff(ji,jj,jk) * zdepbac(ji,jj,jk) 
    228 #if defined key_kriest 
    229                tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.05 
    230                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.05 
    231                zfebact(ji,jj,jk)   = zbactfer * 0.15 
    232 #else 
    233222               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.39 
    234223               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.3 
    235224               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer*0.09 
    236225               zfebact(ji,jj,jk)   = zbactfer * 0.39 
    237 #endif 
    238226            END DO 
    239227         END DO 
     
    254242            DO ji = 1, jpi 
    255243               zstep   = xstep 
    256 # if defined key_degrad 
    257                zstep = zstep * facvol(ji,jj,jk) 
    258 # endif 
    259244               zdep     = MAX( hmld(ji,jj), heup_01(ji,jj) ) 
    260245               zsatur   = MAX( rtrn, ( sio3eq(ji,jj,jk) - trb(ji,jj,jk,jpsil) ) / ( sio3eq(ji,jj,jk) + rtrn ) ) 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zsed.F90

    r7617 r8003  
    244244           IF( tmask(ji,jj,1) == 1 ) THEN 
    245245              ikt = mbkt(ji,jj) 
    246 # if defined key_kriest 
    247               zflx =    trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj)    * 1E3 * 1E6 / 1E4 
    248 # else 
    249246              zflx = (  trb(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj)   & 
    250247                &     + trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) )  * 1E3 * 1E6 / 1E4 
    251 #endif 
    252248              zflx  = LOG10( MAX( 1E-3, zflx ) ) 
    253249              zo2   = LOG10( MAX( 10. , trb(ji,jj,ikt,jpoxy) * 1E6 ) ) 
     
    273269            IF( tmask(ji,jj,1) == 1 ) THEN 
    274270               ikt = mbkt(ji,jj)  
    275 # if defined key_kriest 
    276                zwork1(ji,jj) = trb(ji,jj,ikt,jpgsi) * zwscal (ji,jj) 
    277                zwork2(ji,jj) = trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) 
    278 # else 
    279271               zwork1(ji,jj) = trb(ji,jj,ikt,jpgsi) * zwsbio4(ji,jj) 
    280272               zwork2(ji,jj) = trb(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj) + trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj)  
    281 # endif 
    282273               ! For calcite, burial efficiency is made a function of saturation 
    283274               zfactcal      = MIN( excess(ji,jj,ikt), 0.2 ) 
     
    305296            zws4 = zwsbio4(ji,jj) * zdep 
    306297            zwsc = zwscal (ji,jj) * zdep 
    307 # if defined key_kriest 
    308             zsiloss = trb(ji,jj,ikt,jpgsi) * zws4 
    309 # else 
    310298            zsiloss = trb(ji,jj,ikt,jpgsi) * zwsc 
    311 # endif 
    312299            zcaloss = trb(ji,jj,ikt,jpcal) * zwsc 
    313300            ! 
     
    336323#endif 
    337324            zrivno3 = 1. - zbureff(ji,jj) 
    338 # if ! defined key_kriest 
    339325            trb(ji,jj,ikt,jpgoc) = trb(ji,jj,ikt,jpgoc) - trb(ji,jj,ikt,jpgoc) * zws4 
    340326            trb(ji,jj,ikt,jppoc) = trb(ji,jj,ikt,jppoc) - trb(ji,jj,ikt,jppoc) * zws3 
     
    351337            trn(ji,jj,ikt,jpfep) = trn(ji,jj,ikt,jpfep) - trn(ji,jj,ikt,jpfep) * zwssfep 
    352338#   endif 
    353 # else 
    354             trb(ji,jj,ikt,jpnum) = trb(ji,jj,ikt,jpnum) - trb(ji,jj,ikt,jpnum) * zws4 
    355             trb(ji,jj,ikt,jppoc) = trb(ji,jj,ikt,jppoc) - trb(ji,jj,ikt,jppoc) * zws3 
    356             trb(ji,jj,ikt,jppon) = trb(ji,jj,ikt,jppon) - trb(ji,jj,ikt,jppon) * zws3 
    357             trb(ji,jj,ikt,jppop) = trb(ji,jj,ikt,jppop) - trb(ji,jj,ikt,jppop) * zws3 
    358             trb(ji,jj,ikt,jpsfe) = trb(ji,jj,ikt,jpsfe) - trb(ji,jj,ikt,jpsfe) * zws3 
    359             zwstpop = trb(ji,jj,ikt,jppop) * zws3 
    360             zwstpon = trb(ji,jj,ikt,jppon) * zws3 
    361             zwstpoc = trb(ji,jj,ikt,jppoc) * zws3  
    362 #   if defined key_ligand 
    363             trn(ji,jj,ikt,jpfep) = trn(ji,jj,ikt,jpfep) - trn(ji,jj,ikt,jpfep) * zwssfep 
    364 #   endif 
    365 # endif 
    366339 
    367340#if ! defined key_sed 
     
    405378               zlim = ( 1.- xdiano3 - xdianh4 ) 
    406379               IF( zlim <= 0.1 )   zlim = 0.01 
    407 #if defined key_degrad 
    408                zfact = zlim * rfact2 * facvol(ji,jj,jk) 
    409 #else 
    410380               zfact = zlim * rfact2 
    411 #endif 
    412381               ztrfer = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 
    413382               ztrpo4(ji,jj,jk) = trb(ji,jj,jk,jppo4) / ( 1E-6 + trb(ji,jj,jk,jppo4) ) 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zsink.F90

    r6841 r8003  
    4040   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sinkcal, sinksil   !: CaCO3 and BSi sinking fluxes 
    4141   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sinkfer            !: Small BFe sinking fluxes 
    42 #if ! defined key_kriest 
    4342   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sinkfer2           !: Big iron sinking fluxes 
    44 #endif 
    4543#if defined key_ligand 
    4644   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sinkfep      !: Fep sinking fluxes 
     
    4947 
    5048   INTEGER  :: ik100 
    51  
    52 #if  defined key_kriest 
    53    REAL(wp) ::  xkr_sfact    !: Sinking factor 
    54    REAL(wp) ::  xkr_stick    !: Stickiness 
    55    REAL(wp) ::  xkr_nnano    !: Nbr of cell in nano size class 
    56    REAL(wp) ::  xkr_ndiat    !: Nbr of cell in diatoms size class 
    57    REAL(wp) ::  xkr_nmicro   !: Nbr of cell in microzoo size class 
    58    REAL(wp) ::  xkr_nmeso    !: Nbr of cell in mesozoo  size class 
    59    REAL(wp) ::  xkr_naggr    !: Nbr of cell in aggregates  size class 
    60  
    61    REAL(wp) ::  xkr_frac  
    62  
    63    REAL(wp), PUBLIC ::  xkr_dnano       !: Size of particles in nano pool 
    64    REAL(wp), PUBLIC ::  xkr_ddiat       !: Size of particles in diatoms pool 
    65    REAL(wp), PUBLIC ::  xkr_dmicro      !: Size of particles in microzoo pool 
    66    REAL(wp), PUBLIC ::  xkr_dmeso       !: Size of particles in mesozoo pool 
    67    REAL(wp), PUBLIC ::  xkr_daggr       !: Size of particles in aggregates pool 
    68    REAL(wp), PUBLIC ::  xkr_wsbio_min   !: min vertical particle speed 
    69    REAL(wp), PUBLIC ::  xkr_wsbio_max   !: max vertical particle speed 
    70  
    71    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   xnumm   !:  maximum number of particles in aggregates 
    72 #endif 
    7349 
    7450   !!* Substitution 
     
    8157CONTAINS 
    8258 
    83 #if ! defined key_kriest 
    8459   !!---------------------------------------------------------------------- 
    8560   !!   'standard sinking parameterisation'                  ??? 
     
    308283   END SUBROUTINE p5z_sink_init 
    309284 
    310 #else 
    311    !!---------------------------------------------------------------------- 
    312    !!   'Kriest sinking parameterisation'        key_kriest          ??? 
    313    !!---------------------------------------------------------------------- 
    314  
    315    SUBROUTINE p5z_sink ( kt, knt ) 
    316       !!--------------------------------------------------------------------- 
    317       !!                ***  ROUTINE p5z_sink  *** 
    318       !! 
    319       !! ** Purpose :   Compute vertical flux of particulate matter due to 
    320       !!              gravitational sinking - Kriest parameterization 
    321       !! 
    322       !! ** Method  : - ??? 
    323       !!--------------------------------------------------------------------- 
    324       ! 
    325       INTEGER, INTENT(in) :: kt, knt 
    326       ! 
    327       INTEGER  :: ji, jj, jk, jit, niter1, niter2 
    328       REAL(wp) :: znum , zeps, zfm, zgm, zsm, zfactn, zfactp 
    329       REAL(wp) :: zdiv , zdiv1, zdiv2, zdiv3, zdiv4, zdiv5 
    330       REAL(wp) :: zval1, zval2, zval3, zval4 
    331       CHARACTER (len=25) :: charout 
    332       REAL(wp), POINTER, DIMENSION(:,:,:) :: znum3d  
    333       REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d 
    334       REAL(wp), POINTER, DIMENSION(:,:  ) :: zw2d 
    335       !!--------------------------------------------------------------------- 
    336       ! 
    337       IF( nn_timing == 1 )  CALL timing_start('p5z_sink') 
    338       ! 
    339       CALL wrk_alloc( jpi, jpj, jpk, znum3d ) 
    340       ! 
    341       !     Initialisation of variables used to compute Sinking Speed 
    342       !     --------------------------------------------------------- 
    343  
    344       znum3d(:,:,:) = 0.e0 
    345       zval1 = 1. + xkr_zeta 
    346       zval2 = 1. + xkr_zeta + xkr_eta 
    347       zval3 = 1. + xkr_eta 
    348  
    349       !     Computation of the vertical sinking speed : Kriest et Evans, 2000 
    350       !     ----------------------------------------------------------------- 
    351  
    352       DO jk = 1, jpkm1 
    353          DO jj = 1, jpj 
    354             DO ji = 1, jpi 
    355                IF( tmask(ji,jj,jk) /= 0.e0 ) THEN 
    356                   znum = trb(ji,jj,jk,jppoc) / ( trb(ji,jj,jk,jpnum) + rtrn ) / xkr_massp 
    357                   ! -------------- To avoid sinking speed over 50 m/day ------- 
    358                   znum  = MIN( xnumm(jk), znum ) 
    359                   znum  = MAX( 1.1      , znum ) 
    360                   znum3d(ji,jj,jk) = znum 
    361                   !------------------------------------------------------------ 
    362                   zeps  = ( zval1 * znum - 1. )/ ( znum - 1. ) 
    363                   zfm   = xkr_frac**( 1. - zeps ) 
    364                   zgm   = xkr_frac**( zval1 - zeps ) 
    365                   zdiv  = MAX( 1.e-4, ABS( zeps - zval2 ) ) * SIGN( 1., ( zeps - zval2 ) ) 
    366                   zdiv1 = zeps - zval3 
    367                   wsbio3(ji,jj,jk) = xkr_wsbio_min * ( zeps - zval1 ) / zdiv    & 
    368                      &             - xkr_wsbio_max *   zgm * xkr_eta  / zdiv 
    369                   wsbio4(ji,jj,jk) = xkr_wsbio_min *   ( zeps-1. )    / zdiv1   & 
    370                      &             - xkr_wsbio_max *   zfm * xkr_eta  / zdiv1 
    371                   IF( znum == 1.1)   wsbio3(ji,jj,jk) = wsbio4(ji,jj,jk) 
    372                ENDIF 
    373             END DO 
    374          END DO 
    375       END DO 
    376  
    377       wscal(:,:,:) = MAX( wsbio3(:,:,:), 30._wp ) 
    378 #if defined key_ligand 
    379       wsfep (:,:,:) = wfep 
    380 #endif 
    381  
    382       !   INITIALIZE TO ZERO ALL THE SINKING ARRAYS 
    383       !   ----------------------------------------- 
    384  
    385       sinking (:,:,:) = 0.e0 
    386       sinkingn(:,:,:) = 0.e0 
    387       sinkingp(:,:,:) = 0.e0 
    388       sinking2(:,:,:) = 0.e0 
    389       sinkcal (:,:,:) = 0.e0 
    390       sinkfer (:,:,:) = 0.e0 
    391       sinksil (:,:,:) = 0.e0 
    392 #if defined key_ligand 
    393       sinkfep(:,:,:) = 0.e0 
    394 #endif 
    395  
    396      !   Compute the sedimentation term using p4zsink2 for all the sinking particles 
    397      !   ----------------------------------------------------- 
    398  
    399       niter1 = niter1max 
    400       niter2 = niter2max 
    401  
    402       DO jit = 1, niter1 
    403         CALL p4z_sink2( wsbio3, sinking , jppoc, niter1 ) 
    404         CALL p4z_sink2( wsbio3, sinkingn, jppon, niter1 ) 
    405         CALL p4z_sink2( wsbio3, sinkingp, jppop, niter1 ) 
    406         CALL p4z_sink2( wsbio3, sinkfer , jpsfe, niter1 ) 
    407         CALL p4z_sink2( wscal , sinksil , jpgsi, niter1 ) 
    408         CALL p4z_sink2( wscal , sinkcal , jpcal, niter1 ) 
    409 #if defined key_ligand 
    410         CALL p4z_sink2( wsfep , sinkfep , jpfep, niter1 ) 
    411 #endif 
    412       END DO 
    413  
    414       DO jit = 1, niter2 
    415         CALL p4z_sink2( wsbio4, sinking2, jpnum, niter2 ) 
    416       END DO 
    417  
    418      ! Total carbon export per year 
    419      IF( iom_use( "tcexp" ) .OR. ( ln_check_mass .AND. kt == nitend .AND. knt == nrdttrc )  )  & 
    420         &   t_oce_co2_exp = glob_sum( ( sinking(:,:,ik100) + sinking2(:,:,ik100) ) * e1e2t(:,:) * tmask(:,:,1) ) 
    421      ! 
    422      IF( lk_iomput ) THEN 
    423        IF( knt == nrdttrc ) THEN 
    424           CALL wrk_alloc( jpi, jpj,      zw2d ) 
    425           CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 
    426           zfact = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s 
    427           ! 
    428           IF( iom_use( "EPC100" ) )  THEN 
    429               zw2d(:,:) = ( sinking(:,:,ik100) + sinking2(:,:,ik100) ) * zfact * tmask(:,:,1) ! Export of carbon at 100m 
    430               CALL iom_put( "EPC100"  , zw2d ) 
    431           ENDIF 
    432           IF( iom_use( "EPFE100" ) )  THEN 
    433               zw2d(:,:) = ( sinkfer(:,:,ik100) + sinkfer2(:,:,ik100) ) * zfact * tmask(:,:,1) ! Export of iron at 100m 
    434               CALL iom_put( "EPFE100"  , zw2d ) 
    435           ENDIF 
    436           IF( iom_use( "EPCAL100" ) )  THEN 
    437               zw2d(:,:) = sinkcal(:,:,ik100) * zfact * tmask(:,:,1) ! Export of calcite at 100m 
    438               CALL iom_put( "EPCAL100"  , zw2d ) 
    439           ENDIF 
    440           IF( iom_use( "EPSI100" ) )  THEN 
    441               zw2d(:,:) =  sinksil(:,:,ik100) * zfact * tmask(:,:,1) ! Export of bigenic silica at 100m 
    442               CALL iom_put( "EPSI100"  , zw2d ) 
    443           ENDIF 
    444           IF( iom_use( "EXPC" ) )  THEN 
    445               zw3d(:,:,:) = ( sinking(:,:,:) + sinking2(:,:,:) ) * zfact * tmask(:,:,:) ! Export of carbon in the water column 
    446               CALL iom_put( "EXPC"  , zw3d ) 
    447           ENDIF 
    448           IF( iom_use( "EXPFE" ) )  THEN 
    449               zw3d(:,:,:) = ( sinkfer(:,:,:) + sinkfer2(:,:,:) ) * zfact * tmask(:,:,:) ! Export of iron  
    450               CALL iom_put( "EXPFE"  , zw3d ) 
    451           ENDIF 
    452           IF( iom_use( "EXPCAL" ) )  THEN 
    453               zw3d(:,:,:) = sinkcal(:,:,:) * zfact * tmask(:,:,:) ! Export of calcite  
    454               CALL iom_put( "EXPCAL"  , zw3d ) 
    455           ENDIF 
    456           IF( iom_use( "EXPSI" ) )  THEN 
    457               zw3d(:,:,:) = sinksil(:,:,:) * zfact * tmask(:,:,:) ! Export of bigenic silica 
    458               CALL iom_put( "EXPSI"  , zw3d ) 
    459           ENDIF 
    460           IF( iom_use( "XNUM" ) )  THEN 
    461               zw3d(:,:,:) =  znum3d(:,:,:) * tmask(:,:,:) !  Number of particles on aggregats 
    462               CALL iom_put( "XNUM"  , zw3d ) 
    463           ENDIF 
    464           IF( iom_use( "WSC" ) )  THEN 
    465               zw3d(:,:,:) = wsbio3(:,:,:) * tmask(:,:,:) ! Sinking speed of carbon particles 
    466               CALL iom_put( "WSC"  , zw3d ) 
    467           ENDIF 
    468           IF( iom_use( "WSN" ) )  THEN 
    469               zw3d(:,:,:) = wsbio4(:,:,:) * tmask(:,:,:) ! Sinking speed of particles number 
    470               CALL iom_put( "WSN"  , zw3d ) 
    471           ENDIF 
    472           IF( iom_use( "tcexp" ) )  CALL iom_put( "tcexp" , t_oce_co2_exp * zfact )   ! molC/s 
    473           !  
    474           CALL wrk_dealloc( jpi, jpj,      zw2d ) 
    475           CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 
    476         ENDIF 
    477      ELSE 
    478         IF( ln_diatrc ) THEN 
    479             zfact = 1.e3 * rfact2r 
    480             trc2d(:,:,jp_pcs0_2d + 4) = sinking (:,:,ik100) * zfact * tmask(:,:,1) 
    481             trc2d(:,:,jp_pcs0_2d + 5) = sinking2(:,:,ik100) * zfact * tmask(:,:,1) 
    482             trc2d(:,:,jp_pcs0_2d + 6) = sinkfer (:,:,ik100) * zfact * tmask(:,:,1) 
    483             trc2d(:,:,jp_pcs0_2d + 7) = sinkfer2(:,:,ik100) * zfact * tmask(:,:,1) 
    484             trc2d(:,:,jp_pcs0_2d + 8) = sinksil (:,:,ik100) * zfact * tmask(:,:,1) 
    485             trc2d(:,:,jp_pcs0_2d + 9) = sinkcal (:,:,ik100) * zfact * tmask(:,:,1) 
    486         ENDIF 
    487      ENDIF 
    488      ! 
    489      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
    490          WRITE(charout, FMT="('sink')") 
    491          CALL prt_ctl_trc_info(charout) 
    492          CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
    493      ENDIF 
    494      ! 
    495      CALL wrk_dealloc( jpi, jpj, jpk, znum3d ) 
    496      ! 
    497      IF( nn_timing == 1 )  CALL timing_stop('p5z_sink') 
    498      ! 
    499    END SUBROUTINE p5z_sink 
    500  
    501  
    502    SUBROUTINE p5z_sink_init 
    503       !!---------------------------------------------------------------------- 
    504       !!                  ***  ROUTINE p5z_sink_init  *** 
    505       !! 
    506       !! ** Purpose :   Initialization of sinking parameters 
    507       !!                Kriest parameterization only 
    508       !! 
    509       !! ** Method  :   Read the nampiskrs namelist and check the parameters 
    510       !!      called at the first timestep  
    511       !! 
    512       !! ** input   :   Namelist nampiskrs 
    513       !!---------------------------------------------------------------------- 
    514       INTEGER  ::   jk, jn, kiter 
    515       INTEGER  ::   ios                 ! Local integer output status for namelist read 
    516       REAL(wp) ::   znum, zdiv 
    517       REAL(wp) ::   zws, zwr, zwl,wmax, znummax 
    518       REAL(wp) ::   zmin, zmax, zl, zr, xacc 
    519       ! 
    520       NAMELIST/nampiskrs/ xkr_sfact, xkr_stick ,  & 
    521          &                xkr_nnano, xkr_ndiat, xkr_nmicro, xkr_nmeso, xkr_naggr 
    522       !!---------------------------------------------------------------------- 
    523       ! 
    524       IF( nn_timing == 1 )  CALL timing_start('p5z_sink_init') 
    525       ! 
    526  
    527       REWIND( numnatp_ref )              ! Namelist nampiskrs in reference namelist : Pisces sinking Kriest 
    528       READ  ( numnatp_ref, nampiskrs, IOSTAT = ios, ERR = 901) 
    529 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiskrs in reference namelist', lwp ) 
    530  
    531       REWIND( numnatp_cfg )              ! Namelist nampiskrs in configuration namelist : Pisces sinking Kriest 
    532       READ  ( numnatp_cfg, nampiskrs, IOSTAT = ios, ERR = 902 ) 
    533 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiskrs in configuration namelist', lwp ) 
    534       IF(lwm) WRITE ( numonp, nampiskrs ) 
    535  
    536       IF(lwp) THEN 
    537          WRITE(numout,*) 
    538          WRITE(numout,*) ' Namelist : nampiskrs' 
    539          WRITE(numout,*) '    Sinking factor                           xkr_sfact    = ', xkr_sfact 
    540          WRITE(numout,*) '    Stickiness                               xkr_stick    = ', xkr_stick 
    541          WRITE(numout,*) '    Nbr of cell in nano size class           xkr_nnano    = ', xkr_nnano 
    542          WRITE(numout,*) '    Nbr of cell in diatoms size class        xkr_ndiat    = ', xkr_ndiat 
    543          WRITE(numout,*) '    Nbr of cell in microzoo size class       xkr_nmicro   = ', xkr_nmicro 
    544          WRITE(numout,*) '    Nbr of cell in mesozoo size class        xkr_nmeso    = ', xkr_nmeso 
    545          WRITE(numout,*) '    Nbr of cell in aggregates size class     xkr_naggr    = ', xkr_naggr 
    546       ENDIF 
    547  
    548  
    549       ! max and min vertical particle speed 
    550       xkr_wsbio_min = xkr_sfact * xkr_mass_min**xkr_eta 
    551       xkr_wsbio_max = xkr_sfact * xkr_mass_max**xkr_eta 
    552       IF (lwp) WRITE(numout,*) ' max and min vertical particle speed ', xkr_wsbio_min, xkr_wsbio_max 
    553  
    554       ! 
    555       !    effect of the sizes of the different living pools on particle numbers 
    556       !    nano = 2um-20um -> mean size=6.32 um -> ws=2.596 -> xnum=xnnano=2.337 
    557       !    diat and microzoo = 10um-200um -> 44.7 -> 8.732 -> xnum=xndiat=3.718 
    558       !    mesozoo = 200um-2mm -> 632.45 -> 45.14 -> xnum=xnmeso=7.147 
    559       !    aggregates = 200um-10mm -> 1414 -> 74.34 -> xnum=xnaggr=9.877 
    560       !    doc aggregates = 1um 
    561       ! ---------------------------------------------------------- 
    562  
    563       xkr_dnano = 1. / ( xkr_massp * xkr_nnano ) 
    564       xkr_ddiat = 1. / ( xkr_massp * xkr_ndiat ) 
    565       xkr_dmicro = 1. / ( xkr_massp * xkr_nmicro ) 
    566       xkr_dmeso = 1. / ( xkr_massp * xkr_nmeso ) 
    567       xkr_daggr = 1. / ( xkr_massp * xkr_naggr ) 
    568  
    569       !!--------------------------------------------------------------------- 
    570       !!    'key_kriest'                                                  ??? 
    571       !!--------------------------------------------------------------------- 
    572       !  COMPUTATION OF THE VERTICAL PROFILE OF MAXIMUM SINKING SPEED 
    573       !  Search of the maximum number of particles in aggregates for each k-level. 
    574       !  Bissection Method 
    575       !-------------------------------------------------------------------- 
    576       IF (lwp) THEN 
    577         WRITE(numout,*) 
    578         WRITE(numout,*)'    kriest : Compute maximum number of particles in aggregates' 
    579       ENDIF 
    580  
    581       xacc     =  0.001_wp 
    582       kiter    = 50 
    583       zmin     =  1.10_wp 
    584       zmax     = xkr_mass_max / xkr_mass_min 
    585       xkr_frac = zmax 
    586  
    587       DO jk = 1,jpk 
    588          zl = zmin 
    589          zr = zmax 
    590          wmax = 0.5 * fse3t(1,1,jk) * rday * float(niter1max) / rfact2 
    591          zdiv = xkr_zeta + xkr_eta - xkr_eta * zl 
    592          znum = zl - 1. 
    593          zwl =  xkr_wsbio_min * xkr_zeta / zdiv & 
    594             & - ( xkr_wsbio_max * xkr_eta * znum * & 
    595             &     xkr_frac**( -xkr_zeta / znum ) / zdiv ) & 
    596             & - wmax 
    597  
    598          zdiv = xkr_zeta + xkr_eta - xkr_eta * zr 
    599          znum = zr - 1. 
    600          zwr =  xkr_wsbio_min * xkr_zeta / zdiv & 
    601             & - ( xkr_wsbio_max * xkr_eta * znum * & 
    602             &     xkr_frac**( -xkr_zeta / znum ) / zdiv ) & 
    603             & - wmax 
    604 iflag:   DO jn = 1, kiter 
    605             IF    ( zwl == 0._wp ) THEN   ;   znummax = zl 
    606             ELSEIF( zwr == 0._wp ) THEN   ;   znummax = zr 
    607             ELSE 
    608                znummax = ( zr + zl ) / 2. 
    609                zdiv = xkr_zeta + xkr_eta - xkr_eta * znummax 
    610                znum = znummax - 1. 
    611                zws =  xkr_wsbio_min * xkr_zeta / zdiv & 
    612                   & - ( xkr_wsbio_max * xkr_eta * znum * & 
    613                   &     xkr_frac**( -xkr_zeta / znum ) / zdiv ) & 
    614                   & - wmax 
    615                IF( zws * zwl < 0. ) THEN   ;   zr = znummax 
    616                ELSE                        ;   zl = znummax 
    617                ENDIF 
    618                zdiv = xkr_zeta + xkr_eta - xkr_eta * zl 
    619                znum = zl - 1. 
    620                zwl =  xkr_wsbio_min * xkr_zeta / zdiv & 
    621                   & - ( xkr_wsbio_max * xkr_eta * znum * & 
    622                   &     xkr_frac**( -xkr_zeta / znum ) / zdiv ) & 
    623                   & - wmax 
    624  
    625                zdiv = xkr_zeta + xkr_eta - xkr_eta * zr 
    626                znum = zr - 1. 
    627                zwr =  xkr_wsbio_min * xkr_zeta / zdiv & 
    628                   & - ( xkr_wsbio_max * xkr_eta * znum * & 
    629                   &     xkr_frac**( -xkr_zeta / znum ) / zdiv ) & 
    630                   & - wmax 
    631                ! 
    632                IF ( ABS ( zws )  <= xacc ) EXIT iflag 
    633                ! 
    634             ENDIF 
    635             ! 
    636          END DO iflag 
    637  
    638          xnumm(jk) = znummax 
    639          IF (lwp) WRITE(numout,*) '       jk = ', jk, ' wmax = ', wmax,' xnum max = ', xnumm(jk) 
    640          ! 
    641       END DO 
    642       ! 
    643       ik100 = 10        !  last level where depth less than 100 m 
    644       DO jk = jpkm1, 1, -1 
    645          IF( gdept_1d(jk) > 100. )  ik100 = jk - 1 
    646       END DO 
    647       IF (lwp) WRITE(numout,*) 
    648       IF (lwp) WRITE(numout,*) ' Level corresponding to 100m depth ',  ik100 + 1 
    649       IF (lwp) WRITE(numout,*) 
    650       ! 
    651       t_oce_co2_exp = 0._wp 
    652       ! 
    653       IF( nn_timing == 1 )  CALL timing_stop('p5z_sink_init') 
    654       ! 
    655   END SUBROUTINE p5z_sink_init 
    656  
    657 #endif 
    658  
    659285   SUBROUTINE p4z_sink2( pwsink, psinkflx, jp_tra, kiter ) 
    660286      !!--------------------------------------------------------------------- 
     
    782408 
    783409         &      sinkcal(jpi,jpj,jpk) , sinksil (jpi,jpj,jpk)   ,     &     
    784 #if defined key_kriest 
    785          &      xnumm(jpk)                                                        ,     &                 
    786 #else 
    787410         &      sinkfer2(jpi,jpj,jpk)                                             ,     &                 
    788 #endif 
    789411#if defined key_ligand 
    790412         &      wsfep(jpi,jpj,jpk)  , sinkfep(jpi,jpj,jpk)     ,     & 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zsms.F90

    r7190 r8003  
    7272      INTEGER ::   ji,jj,jk,knt, jn, jl 
    7373      REAL(wp) ::  ztra 
    74 #if defined key_kriest 
    75       REAL(wp) ::  zcoef1, zcoef2 
    76 #endif 
    7774      CHARACTER (len=25) :: charout 
    7875      !!--------------------------------------------------------------------- 
     
    166163         ENDIF 
    167164      END DO 
    168  
    169 #if defined key_kriest 
    170       !  
    171       zcoef1 = 1.e0 / xkr_massp 
    172       zcoef2 = 1.e0 / xkr_massp / 1.1 
    173       DO jk = 1,jpkm1 
    174          trb(:,:,jk,jpnum) = MAX(  trb(:,:,jk,jpnum), trb(:,:,jk,jppoc) * zcoef1 / xnumm(jk)  ) 
    175          trb(:,:,jk,jpnum) = MIN(  trb(:,:,jk,jpnum), trb(:,:,jk,jppoc) * zcoef2              ) 
    176       END DO 
    177       ! 
    178 #endif 
    179165      ! 
    180166      ! 
     
    213199      !! ** input   :   file 'namelist.trc.s' containing the following 
    214200      !!             namelist: natext, natbio, natsms 
    215       !!                       natkriest ("key_kriest") 
    216201      !!---------------------------------------------------------------------- 
    217202#if defined key_ligand 
     
    221206      NAMELIST/nampisbio/ nrdttrc, wsbio, xkmort, ferat3, no3rat3, po4rat3, wsbio2,    & 
    222207      &                   wsbio2max, wsbio2scale, niter1max, niter2max 
    223 #endif 
    224 #if defined key_kriest 
    225       NAMELIST/nampiskrp/ xkr_eta, xkr_zeta, xkr_ncontent, xkr_mass_min, xkr_mass_max 
    226208#endif 
    227209      NAMELIST/nampisdmp/ ln_pisdmp, nn_pisdmp 
     
    257239      ENDIF 
    258240 
    259 #if defined key_kriest 
    260  
    261       !                               ! nampiskrp : kriest parameters 
    262       !                               ! ----------------------------- 
    263       REWIND( numnatp_ref )              ! Namelist nampiskrp in reference namelist : Pisces Kriest 
    264       READ  ( numnatp_ref, nampiskrp, IOSTAT = ios, ERR = 903) 
    265 903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiskrp in reference namelist', lwp ) 
    266  
    267       REWIND( numnatp_cfg )              ! Namelist nampiskrp in configuration namelist : Pisces Kriest 
    268       READ  ( numnatp_cfg, nampiskrp, IOSTAT = ios, ERR = 904 ) 
    269 904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiskrp in configuration namelist', lwp ) 
    270       IF(lwm) WRITE ( numonp, nampiskrp ) 
    271  
    272       IF(lwp) THEN 
    273          WRITE(numout,*) 
    274          WRITE(numout,*) ' Namelist : nampiskrp' 
    275          WRITE(numout,*) '    Sinking  exponent                        xkr_eta      = ', xkr_eta 
    276          WRITE(numout,*) '    N content exponent                       xkr_zeta     = ', xkr_zeta 
    277          WRITE(numout,*) '    N content factor                         xkr_ncontent = ', xkr_ncontent 
    278          WRITE(numout,*) '    Minimum mass for Aggregates              xkr_mass_min = ', xkr_mass_min 
    279          WRITE(numout,*) '    Maximum mass for Aggregates              xkr_mass_max = ', xkr_mass_max 
    280          WRITE(numout,*) 
    281      ENDIF 
    282  
    283  
    284      ! Computation of some variables 
    285      xkr_massp = xkr_ncontent * 7.625 * xkr_mass_min**xkr_zeta 
    286  
    287 #endif 
    288  
    289241      REWIND( numnatp_ref )              ! Namelist nampisdmp in reference namelist : Pisces damping 
    290242      READ  ( numnatp_ref, nampisdmp, IOSTAT = ios, ERR = 905) 
     
    492444            &                    + (trn(:,:,:,jpzoo) + trn(:,:,:,jpmes)) * no3rat3  & 
    493445            &                    + trn(:,:,:,jppon) + trn(:,:,:,jpnpi) & 
    494 #if ! defined key_kriest 
    495446            &                    + trn(:,:,:,jpgon)                     & 
    496 #endif 
    497447            &                    + trn(:,:,:,jpdon)                     ) * cvol(:,:,:)  )  
    498448         !  
     
    506456            &                    + (trn(:,:,:,jpzoo) + trn(:,:,:,jpmes)) * po4rat3  & 
    507457            &                    + trn(:,:,:,jppop) + trn(:,:,:,jpppi)  & 
    508 #if ! defined key_kriest 
    509458            &                    + trn(:,:,:,jpgop)                     & 
    510 #endif 
    511459            &                    + trn(:,:,:,jpdop)                     ) * cvol(:,:,:)  ) 
    512460         po4budget = po4budget / areatot 
     
    535483         ferbudget = glob_sum( (   trn(:,:,:,jpfer) + trn(:,:,:,jpnfe)  & 
    536484            &                    + trn(:,:,:,jpdfe) + trn(:,:,:,jppfe)  & 
    537 #if ! defined key_kriest 
    538485            &                    + trn(:,:,:,jpbfe)                     & 
    539 #endif 
    540486#if defined key_ligand 
    541487            &                    + trn(:,:,:,jpfep)                     & 
Note: See TracChangeset for help on using the changeset viewer.