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 – NEMO

Changeset 8003


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
Files:
34 edited

Legend:

Unmodified
Added
Removed
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zagg.F90

    r7180 r8003  
    3535CONTAINS 
    3636 
    37 #if ! defined key_kriest 
    3837   !!---------------------------------------------------------------------- 
    3938   !!   'standard parameterisation'                  ??? 
     
    6665               ! 
    6766               zstep = xstep  
    68 # if defined key_degrad 
    69                zstep = zstep * facvol(ji,jj,jk) 
    70 # endif 
    7167               zfact = zstep * xdiss(ji,jj,jk) 
    7268               !  Part I : Coagulation dependent on turbulence 
     
    121117 
    122118#else 
    123    !!---------------------------------------------------------------------- 
    124    !!   'Kriest parameterisation'        key_kriest          ??? 
    125    !!---------------------------------------------------------------------- 
    126  
    127    SUBROUTINE p4z_agg ( kt, knt ) 
    128       !!--------------------------------------------------------------------- 
    129       !!                ***  ROUTINE p4z_agg  *** 
    130       !! 
    131       !! ** Purpose :   Compute aggregation of particles 
    132       !! 
    133       !! ** Method  : - ??? 
    134       !!--------------------------------------------------------------------- 
    135       ! 
    136       INTEGER, INTENT(in) :: kt, knt 
    137       ! 
    138       INTEGER  :: ji, jj, jk 
    139       REAL(wp) :: zagg1, zagg2, zagg3, zagg4, zagg5, zfract, zaggsi, zaggsh 
    140       REAL(wp) :: zagg , zaggdoc, zaggdoc1, znumdoc 
    141       REAL(wp) :: znum , zeps, zfm, zgm, zsm 
    142       REAL(wp) :: zdiv , zdiv1, zdiv2, zdiv3, zdiv4, zdiv5 
    143       REAL(wp) :: zval1, zval2, zval3, zval4 
    144       REAL(wp) :: zfact 
    145       CHARACTER (len=25) :: charout 
    146       !!--------------------------------------------------------------------- 
    147       ! 
    148       IF( nn_timing == 1 )  CALL timing_start('p4z_agg') 
    149       ! 
    150       !  Exchange between organic matter compartments due to coagulation/disaggregation 
    151       !  --------------------------------------------------- 
    152  
    153       zval1 = 1. + xkr_zeta 
    154       zval2 = 1. + xkr_eta 
    155       zval3 = 3. + xkr_eta 
    156       zval4 = 4. + xkr_eta 
    157  
    158       DO jk = 1,jpkm1 
    159          DO jj = 1,jpj 
    160             DO ji = 1,jpi 
    161                IF( tmask(ji,jj,jk) /= 0.e0 ) THEN 
    162  
    163                   znum = trb(ji,jj,jk,jppoc)/(trb(ji,jj,jk,jpnum)+rtrn) / xkr_massp 
    164                   !-------------- To avoid sinking speed over 50 m/day ------- 
    165                   znum  = min(xnumm(jk),znum) 
    166                   znum  = MAX( 1.1,znum) 
    167                   !------------------------------------------------------------ 
    168                   zeps  = ( zval1 * znum - 1.) / ( znum - 1.) 
    169                   zdiv  = MAX( 1.e-4, ABS( zeps - zval3) ) * SIGN( 1., zeps - zval3 ) 
    170                   zdiv1 = MAX( 1.e-4, ABS( zeps - 4.   ) ) * SIGN( 1., zeps - 4.    ) 
    171                   zdiv2 = zeps - 2. 
    172                   zdiv3 = zeps - 3. 
    173                   zdiv4 = zeps - zval2 
    174                   zdiv5 = 2.* zeps - zval4 
    175                   zfm   = xkr_frac**( 1.- zeps ) 
    176                   zsm   = xkr_frac**xkr_eta 
    177  
    178                   !    Part I : Coagulation dependant on turbulence 
    179                   !    ---------------------------------------------- 
    180  
    181                   zagg1 =  0.163 * trb(ji,jj,jk,jpnum)**2               & 
    182                      &            * 2.*( (zfm-1.)*(zfm*xkr_mass_max**3-xkr_mass_min**3)    & 
    183                      &            * (zeps-1)/zdiv1 + 3.*(zfm*xkr_mass_max-xkr_mass_min)    & 
    184                      &            * (zfm*xkr_mass_max**2-xkr_mass_min**2)                  & 
    185                      &            * (zeps-1.)**2/(zdiv2*zdiv3))  
    186                   zagg2 =  2*0.163*trb(ji,jj,jk,jpnum)**2*zfm*                       & 
    187                      &                   ((xkr_mass_max**3+3.*(xkr_mass_max**2          & 
    188                      &                    *xkr_mass_min*(zeps-1.)/zdiv2                 & 
    189                      &                    +xkr_mass_max*xkr_mass_min**2*(zeps-1.)/zdiv3)    & 
    190                      &                    +xkr_mass_min**3*(zeps-1)/zdiv1)                  & 
    191                      &                    -zfm*xkr_mass_max**3*(1.+3.*((zeps-1.)/           & 
    192                      &                    (zeps-2.)+(zeps-1.)/zdiv3)+(zeps-1.)/zdiv1))     
    193  
    194                   zagg3 =  0.163*trb(ji,jj,jk,jpnum)**2*zfm**2*8. * xkr_mass_max**3   
    195                    
    196                  !    Aggregation of small into large particles 
    197                  !    Part II : Differential settling 
    198                  !    ---------------------------------------------- 
    199  
    200                   zagg4 =  2.*3.141*0.125*trb(ji,jj,jk,jpnum)**2*                       & 
    201                      &                 xkr_wsbio_min*(zeps-1.)**2                         & 
    202                      &                 *(xkr_mass_min**2*((1.-zsm*zfm)/(zdiv3*zdiv4)      & 
    203                      &                 -(1.-zfm)/(zdiv*(zeps-1.)))-                       & 
    204                      &                 ((zfm*zfm*xkr_mass_max**2*zsm-xkr_mass_min**2)     & 
    205                      &                 *xkr_eta)/(zdiv*zdiv3*zdiv5) )    
    206  
    207                   zagg5 =   2.*3.141*0.125*trb(ji,jj,jk,jpnum)**2                         & 
    208                      &                 *(zeps-1.)*zfm*xkr_wsbio_min                        & 
    209                      &                 *(zsm*(xkr_mass_min**2-zfm*xkr_mass_max**2)         & 
    210                      &                 /zdiv3-(xkr_mass_min**2-zfm*zsm*xkr_mass_max**2)    & 
    211                      &                 /zdiv)   
    212  
    213                   ! 
    214                   !     Fractionnation by swimming organisms 
    215                   !     ------------------------------------ 
    216  
    217                   zfract = 2.*3.141*0.125*trb(ji,jj,jk,jpmes)*12./0.12/0.06**3*trb(ji,jj,jk,jpnum)  & 
    218                     &      * (0.01/xkr_mass_min)**(1.-zeps)*0.1**2  & 
    219                     &      * 10000.*xstep 
    220  
    221                   !     Aggregation of DOC to small particles 
    222                   !     -------------------------------------- 
    223  
    224                   zaggdoc = 0.83 * trb(ji,jj,jk,jpdoc) * xstep * xdiss(ji,jj,jk) * trb(ji,jj,jk,jpdoc)   & 
    225                      &        + 0.005 * 231. * trb(ji,jj,jk,jpdoc) * xstep * trb(ji,jj,jk,jpdoc) 
    226                   zaggdoc1 = 271. * trb(ji,jj,jk,jppoc) * xstep * xdiss(ji,jj,jk) * trb(ji,jj,jk,jpdoc)  & 
    227                      &  + 0.02 * 16706. * trb(ji,jj,jk,jppoc) * xstep * trb(ji,jj,jk,jpdoc) 
    228  
    229 # if defined key_degrad 
    230                    zagg1   = zagg1   * facvol(ji,jj,jk)                  
    231                    zagg2   = zagg2   * facvol(ji,jj,jk)                  
    232                    zagg3   = zagg3   * facvol(ji,jj,jk)                  
    233                    zagg4   = zagg4   * facvol(ji,jj,jk)                  
    234                    zagg5   = zagg5   * facvol(ji,jj,jk)                  
    235                    zaggdoc = zaggdoc * facvol(ji,jj,jk)                  
    236                    zaggdoc1 = zaggdoc1 * facvol(ji,jj,jk) 
    237 # endif 
    238                   zaggsh = ( zagg1 + zagg2 + zagg3 ) * rfact2 * xdiss(ji,jj,jk) / 1000. 
    239                   zaggsi = ( zagg4 + zagg5 ) * xstep / 10. 
    240                   zagg = 0.5 * xkr_stick * ( zaggsh + zaggsi ) 
    241                   ! 
    242                   znumdoc = trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
    243                   tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zaggdoc + zaggdoc1 
    244                   tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zfract + zaggdoc / xkr_massp - zagg 
    245                   tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc1 
    246  
    247                ENDIF 
    248             END DO 
    249          END DO 
    250       END DO 
    251       ! 
    252       IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
    253          WRITE(charout, FMT="('agg')") 
    254          CALL prt_ctl_trc_info(charout) 
    255          CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
    256       ENDIF 
    257       ! 
    258       IF( nn_timing == 1 )  CALL timing_stop('p4z_agg') 
    259       ! 
    260    END SUBROUTINE p4z_agg 
    261  
    262 #endif 
    263  
    264 #else 
    265119   !!====================================================================== 
    266120   !!  Dummy module :                                   No PISCES bio-model 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90

    r7617 r8003  
    7272      REAL(wp) ::   zdenom1, zscave, zaggdfea, zaggdfeb, zcoag 
    7373      REAL(wp) ::   ztrc, zdust 
    74 #if ! defined key_kriest 
    7574      REAL(wp) ::   zdenom2 
    76 #endif 
    7775      REAL(wp), POINTER, DIMENSION(:,:,:) :: zTL1, zFe3, ztotlig, precip 
    7876      REAL(wp), POINTER, DIMENSION(:,:,:) :: zFeL1, zFeL2, zTL2, zFe2, zFeP 
     
    274272            DO ji = 1, jpi 
    275273               zstep = xstep 
    276 # if defined key_degrad 
    277                zstep = zstep * facvol(ji,jj,jk) 
    278 # endif 
    279274               ! Scavenging rate of iron. This scavenging rate depends on the load of particles of sea water.  
    280275               ! This parameterization assumes a simple second order kinetics (k[Particles][Fe]). 
     
    303298                  ENDIF 
    304299               ENDIF 
    305 #if defined key_kriest 
    306                ztrc   = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6  
    307 #else 
    308300               ztrc   = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6  
    309 #endif 
    310301               IF( ln_dust )  zdust  = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) ! dust in kg/m2/s 
    311302               zlam1b = 3.e-5 + xlamdust * zdust + xlam1 * ztrc 
     
    316307               ! --------------------------------------------------------- 
    317308               zdenom1 = xlam1 * trb(ji,jj,jk,jppoc) / zlam1b 
    318 #if ! defined key_kriest 
    319309               zdenom2 = xlam1 * trb(ji,jj,jk,jpgoc) / zlam1b 
    320 #endif 
    321310 
    322311               !  Increased scavenging for very high iron concentrations found near the coasts  
     
    338327               zaggdfea = zlam1a * zstep * zfecollc 
    339328               ! 
    340 #if defined key_kriest 
    341                zaggdfeb = 0. 
    342 #else 
    343329               zlam1b = 3.53E3 *   trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 
    344330               zaggdfeb = zlam1b * zstep * zfecollc 
    345 #endif 
    346331               ! precipitation of Fe3+, creation of nanoparticles 
    347332               precip(ji,jj,jk) = max( 0., (zfeequi - fe3sol) ) * kfep * zstep 
     
    350335               &                     - zcoag - precip(ji,jj,jk) 
    351336               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea 
    352 #if ! defined key_kriest  
    353337               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * zdenom2 + zaggdfeb 
    354 #endif 
    355338               zscav3d(ji,jj,jk)  = zscave 
    356339               zcoll3d(ji,jj,jk)  = zaggdfea + zaggdfeb 
    357340#if defined key_ligand 
    358341               zaggliga = zlam1a * zstep * zligco 
    359 #   if defined key_kriest 
    360                zaggligb = 0. 
    361 #   else 
    362342               zaggligb = zlam1b * zstep * zligco 
    363 #   endif 
    364343               tra(ji,jj,jk,jpfep) = tra(ji,jj,jk,jpfep) + precip(ji,jj,jk) 
    365344               tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) - zaggliga - zaggligb 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90

    r6966 r8003  
    158158            zkgwan = 0.251 * zws 
    159159            zkgwan = zkgwan * xconv * ( 1.- fr_i(ji,jj) ) * tmask(ji,jj,1) 
    160 # if defined key_degrad 
    161             zkgwan = zkgwan * facvol(ji,jj,1) 
    162 #endif  
    163160            ! compute gas exchange for CO2 and O2 
    164161            zkgco2(ji,jj) = zkgwan * SQRT( 660./ zsch_co2 ) 
     
    227224         ! 
    228225         CALL wrk_dealloc( jpi, jpj, zw2d ) 
    229       ELSE 
    230          IF( ln_diatrc ) THEN 
    231             trc2d(:,:,jp_pcs0_2d    ) = oce_co2(:,:) / e1e2t(:,:) * rfact2r 
    232             trc2d(:,:,jp_pcs0_2d + 1) = zoflx(:,:) * 1000 * tmask(:,:,1) 
    233             trc2d(:,:,jp_pcs0_2d + 2) = zkgco2(:,:) * tmask(:,:,1) 
    234             trc2d(:,:,jp_pcs0_2d + 3) = ( zpco2atm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) 
    235          ENDIF 
    236226      ENDIF 
    237227      ! 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zligand.F90

    r7627 r8003  
    7878               ! --------------------------------------------------------- 
    7979               zstep   = xstep 
    80 # if defined key_degrad 
    81                zstep = zstep * facvol(ji,jj,jk) 
    82 # endif 
    8380               zstep2  = zstep / 365. ! per year 
    8481               ! production from remineralisation of organic matter 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90

    r7617 r8003  
    120120               !       CACO3 GETS DISSOLVED EVEN IN THE CASE OF OVERSATURATION) 
    121121               zdispot = kdca * zexcess * trb(ji,jj,jk,jpcal) 
    122 # if defined key_degrad 
    123                zdispot = zdispot * facvol(ji,jj,jk) 
    124 # endif 
    125122               !  CHANGE OF [CO3--] , [ALK], PARTICULATE [CACO3], 
    126123               !       AND [SUM(CO2)] DUE TO CACO3 DISSOLUTION/PRECIPITATION 
     
    144141             CALL iom_put( "AOU"   , MAX(0., zwork(:,:,:) ) ) 
    145142         ENDIF 
    146       ELSE 
    147          IF( ln_diatrc ) THEN 
    148             trc3d(:,:,:,jp_pcs0_3d    ) = -1. * LOG10( hi(:,:,:) ) * tmask(:,:,:) 
    149             trc3d(:,:,:,jp_pcs0_3d + 1) = zco3(:,:,:)              * tmask(:,:,:) 
    150             trc3d(:,:,:,jp_pcs0_3d + 2) = zco3sat(:,:,:)           * tmask(:,:,:) 
    151          ENDIF 
    152143      ENDIF 
    153144         ! 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90

    r7617 r8003  
    7676      REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotn, zgraztotf 
    7777      REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zgrasrat, zgrasratn 
    78 #if defined key_kriest 
    79       REAL znumpoc 
    80 #endif 
    8178      REAL(wp) :: zrespz2, ztortz2, zgrazd, zgrazz, zgrazpof 
    8279      REAL(wp) :: zgrazn, zgrazpoc, zgraznf, zgrazf 
    8380      REAL(wp) :: zgrazfffp, zgrazfffg, zgrazffep, zgrazffeg 
     81      REAL(wp) :: zbeta, zepsherf 
    8482      CHARACTER (len=25) :: charout 
    8583      REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d, zfezoo2 
     
    104102            DO ji = 1, jpi 
    105103               zcompam   = MAX( ( trb(ji,jj,jk,jpmes) - 1.e-9 ), 0.e0 ) 
    106 # if defined key_degrad 
    107                zstep     = xstep * facvol(ji,jj,jk) 
    108 # else 
    109104               zstep     = xstep 
    110 # endif 
    111105               zfact     = zstep * tgfunc2(ji,jj,jk) * zcompam 
    112106 
     
    148142               !  ---------------------------------- 
    149143               !  ---------------------------------- 
    150 # if ! defined key_kriest 
    151144               zgrazffeg = grazflux  * zstep * wsbio4(ji,jj,jk)      & 
    152145               &           * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes) 
    153146               zgrazfffg = zgrazffeg * trb(ji,jj,jk,jpbfe) / (trb(ji,jj,jk,jpgoc) + rtrn) 
    154 # endif 
    155147               zgrazffep = grazflux  * zstep *  wsbio3(ji,jj,jk)     & 
    156148               &           * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpmes) 
    157149               zgrazfffp = zgrazffep * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 
    158150              ! 
    159 # if ! defined key_kriest 
    160151              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 
    161152              ! Compute the proportion of filter feeders 
     
    179170              &   + zgrazpoc + zgrazffep + zgrazffeg 
    180171              zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg 
    181 # else 
    182               zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep 
    183               ! Compute the proportion of filter feeders 
    184               zproport  = zgrazffep / ( zgraztot + rtrn ) 
    185               zgrazffep = zproport * zgrazffep 
    186               zgrazfffp = zproport * zgrazfffp 
    187               zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep 
    188               zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk) + zgrazpoc + zgrazffep 
    189               zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp 
    190 # endif 
    191172 
    192173              ! Total grazing ( grazing by microzoo is already computed in p4zmicro ) 
     
    198179               zgrasratn =  ( zgraztotn +rtrn )/ ( zgraztot + rtrn ) 
    199180               zepshert  = MIN( 1., zgrasratn, zgrasrat / ferat3) 
    200                zepsherv  = zepshert * MIN( epsher2, (1. - unass2) * zgrasrat / ferat3, (1. - unass2) * zgrasratn ) 
     181               zbeta = 1./ (epsher2 - 0.2) 
     182               zepsherf = 0.2 + 1./ (zbeta + 0.04 * 12. * zfood *1E6 ) 
     183               zepsherv  = zepshert * MIN( zepsherf, (1. - unass2) * zgrasrat / ferat3, (1. - unass2) * zgrasratn ) 
    201184               zgrarem2  = zgraztot * ( 1. - zepsherv - unass2 ) & 
    202185                &       + ( 1. - epsher2 - unass2 ) / ( 1. - epsher2 ) * ztortz2 
     
    232215               tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazf 
    233216 
    234 #if defined key_kriest 
    235               znumpoc = trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
    236               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffep + zgrapoc2 
    237               tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc + zgrapoc2 * xkr_dmeso      & 
    238                  &   + zmortzgoc * xkr_dmeso - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn ) 
    239               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortzgoc - zgrazfffp - zgrazpof    & 
    240                  &                 + zgraztotf * unass2 
    241               zfracal = trb(ji,jj,jk,jpcal) / (trb(ji,jj,jk,jppoc) + rtrn ) 
    242               zgrazcal = ( zgrazffep + zgrazpoc ) * (1. - part2) * zfracal 
    243 #else 
    244217              tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac 
    245218              prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zfrac 
     
    253226              zfracal = trb(ji,jj,jk,jpcal) / (trb(ji,jj,jk,jpgoc) + rtrn ) 
    254227              zgrazcal = zgrazffeg * (1. - part2) * zfracal 
    255 #endif 
    256228 
    257229               ! calcite production 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90

    r7617 r8003  
    7878      REAL(wp) :: zgrazp, zgrazm, zgrazsd 
    7979      REAL(wp) :: zgrazmf, zgrazsf, zgrazpf 
     80      REAL(wp) :: zbeta, zepsherf 
    8081      REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d, zfezoo 
    8182#if defined key_ligand 
     
    99100               zcompaz = MAX( ( trb(ji,jj,jk,jpzoo) - 1.e-9 ), 0.e0 ) 
    100101               zstep   = xstep 
    101 # if defined key_degrad 
    102                zstep = zstep * facvol(ji,jj,jk) 
    103 # endif 
    104102               zfact   = zstep * tgfunc2(ji,jj,jk) * zcompaz 
    105103 
     
    146144               zgrasratn = ( zgraztotn + rtrn ) / ( zgraztot + rtrn ) 
    147145               zepshert  =  MIN( 1., zgrasratn, zgrasrat / ferat3) 
    148                zepsherv  = zepshert * MIN( epsher, (1. - unass) * zgrasrat / ferat3, (1. - unass) * zgrasratn ) 
     146               zbeta = 1./ (epsher - 0.2) 
     147               zepsherf = 0.2 + 1./ (zbeta + 0.04 * 12. * zfood * 1E6 ) 
     148               zepsherv  = zepshert * MIN( zepsherf, (1. - unass) * zgrasrat / ferat3, (1. - unass) * zgrasratn ) 
    149149               zgrafer   = zgraztot * MAX( 0. , ( 1. - unass ) * zgrasrat - ferat3 * zepsherv )  
    150150               zgrarem   = zgraztot * ( 1. - zepsherv - unass ) 
     
    169169               tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarsig 
    170170               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zgrarsig 
    171 #if defined key_kriest 
    172                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zgrapoc * xkr_dmicro 
    173 #endif 
     171 
    174172               !   Update the arrays TRA which contain the biological sources and sinks 
    175173               !   -------------------------------------------------------------------- 
     
    197195               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca 
    198196               tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 
    199 #if defined key_kriest 
    200                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zmortz * xkr_dmicro & 
    201                                                          - zgrazm * trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
    202 #endif 
    203197            END DO 
    204198         END DO 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmort.F90

    r7180 r8003  
    8787               zcompaph = MAX( ( trb(ji,jj,jk,jpphy) - 1e-8 ), 0.e0 ) 
    8888               zstep    = xstep 
    89 # if defined key_degrad 
    90                zstep    = zstep * facvol(ji,jj,jk) 
    91 # endif 
    9289               !     When highly limited by macronutrients, very small cells  
    9390               !     dominate the community. As a consequence, aggregation 
     
    121118               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca 
    122119               tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 
    123 #if defined key_kriest 
    124                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp 
    125                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + ztortp * xkr_dnano + zrespp * xkr_ddiat 
    126                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zmortp * zfactfe 
    127 #else 
    128120               tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zfracal * zmortp 
    129121               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + ( 1. - zfracal ) * zmortp 
     
    132124               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ( 1. - zfracal ) * zmortp * zfactfe 
    133125               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zfracal * zmortp * zfactfe 
    134 #endif 
    135126            END DO 
    136127         END DO 
     
    181172               !     ------------------------------------------------------------ 
    182173               zstep   = xstep 
    183 # if defined key_degrad 
    184                zstep = zstep * facvol(ji,jj,jk) 
    185 # endif 
    186174               !  Phytoplankton respiration  
    187175               !     ------------------------ 
     
    206194               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zmortp2 * zfactsi 
    207195               tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zmortp2 * zfactsi 
    208 #if defined key_kriest 
    209                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp2   
    210                tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + ztortp2 * xkr_ddiat + zrespp2 * xkr_daggr 
    211                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zmortp2 * zfactfe 
    212 #else 
    213196               tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zrespp2 + 0.5 * ztortp2 
    214197               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + 0.5 * ztortp2 
     
    217200               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 0.5 * ztortp2 * zfactfe 
    218201               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ( zrespp2 + 0.5 * ztortp2 ) * zfactfe 
    219 #endif 
    220202            END DO 
    221203         END DO 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90

    r6966 r8003  
    251251           IF( iom_use( "PAR"   ) ) CALL iom_put( "PAR"  , emoy(:,:,:) * tmask(:,:,:) )  ! Photosynthetically Available Radiation 
    252252        ENDIF 
    253       ELSE 
    254          IF( ln_diatrc ) THEN        ! save output diagnostics 
    255             trc2d(:,:,  jp_pcs0_2d + 10) = heup(:,:  ) * tmask(:,:,1) 
    256             trc3d(:,:,:,jp_pcs0_3d + 3)  = etot(:,:,:) * tmask(:,:,:) 
    257          ENDIF 
    258253      ENDIF 
    259254      ! 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zpoc.F90

    r7627 r8003  
    6565      REAL(wp) ::   zremip, zremig, zdep, zorem, zorem2, zofer 
    6666      REAL(wp) ::   zsizek, zsizek1, alphat, remint, solgoc, zpoc 
    67 #if ! defined key_kriest 
    6867      REAL(wp) ::   zofer2, zofer3 
    69 #endif 
    7068      REAL(wp) ::   zstep, zrfact2 
    7169      CHARACTER (len=25) :: charout 
     
    108106      END DO 
    109107 
    110 #if ! defined key_kriest 
    111108! ----------------------------------------------------------------------- 
    112109! Lability parameterization. This is the big particles part (GOC) 
     
    200197            DO ji = 1, jpi 
    201198               zstep   = xstep 
    202 # if defined key_degrad 
    203                zstep = zstep * facvol(ji,jj,jk) 
    204 # endif 
    205199               ! POC disaggregation by turbulence and bacterial activity.  
    206200               ! -------------------------------------------------------- 
     
    371365         END DO 
    372366      END DO 
    373 #endif 
    374367 
    375368 
     
    379372               IF (tmask(ji,jj,jk) == 1.) THEN 
    380373                 zstep   = xstep 
    381 # if defined key_degrad 
    382                  zstep = zstep * facvol(ji,jj,jk) 
    383 # endif 
    384374                 ! POC disaggregation by turbulence and bacterial activity.  
    385375                 ! -------------------------------------------------------- 
     
    387377                 zorem           = zremip * trb(ji,jj,jk,jppoc) 
    388378                 zofer           = zremip * trb(ji,jj,jk,jpsfe) 
    389 #if defined key_kriest 
    390                  zorem2          = zremip * trb(ji,jj,jk,jpnum) 
    391 #endif 
    392379 
    393380                 ! Update the appropriate tracers trends 
     
    399386                 zfolimi(ji,jj,jk)   = zfolimi(ji,jj,jk) + zofer 
    400387                 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zorem 
    401 #if defined key_kriest 
    402                  tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zorem2 
    403 #endif 
    404388                 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zofer 
    405389 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90

    r7617 r8003  
    488488          CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 
    489489       ENDIF 
    490      ELSE 
    491         IF( ln_diatrc ) THEN 
    492            zfact = 1.e+3 * rfact2r 
    493            trc3d(:,:,:,jp_pcs0_3d + 4)  = zprorcan(:,:,:) * zfact * tmask(:,:,:) 
    494            trc3d(:,:,:,jp_pcs0_3d + 5)  = zprorcad(:,:,:) * zfact * tmask(:,:,:) 
    495            trc3d(:,:,:,jp_pcs0_3d + 6)  = zpronewn(:,:,:) * zfact * tmask(:,:,:) 
    496            trc3d(:,:,:,jp_pcs0_3d + 7)  = zpronewd(:,:,:) * zfact * tmask(:,:,:) 
    497            trc3d(:,:,:,jp_pcs0_3d + 8)  = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) 
    498            trc3d(:,:,:,jp_pcs0_3d + 9)  = zprofed (:,:,:) * zfact * tmask(:,:,:) 
    499 #  if ! defined key_kriest 
    500            trc3d(:,:,:,jp_pcs0_3d + 10) = zprofen (:,:,:) * zfact * tmask(:,:,:) 
    501 #  endif 
    502         ENDIF 
    503      ENDIF 
     490    ENDIF 
    504491 
    505492     IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90

    r7627 r8003  
    8080      REAL(wp), POINTER, DIMENSION(:,:  ) :: ztempbac 
    8181      REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zdepprod, zdepeff, zfacsi, zfacsib 
    82       REAL(wp), POINTER, DIMENSION(:,:,:) :: znitr, zolimi,  zfecbact 
     82      REAL(wp), POINTER, DIMENSION(:,:,:) :: znitr, zolimi,  zfebact 
    8383      !!--------------------------------------------------------------------- 
    8484      ! 
     
    9595      ! Initialisation of temprary arrys 
    9696      zdepprod(:,:,:) = 1._wp 
    97       zdepeff (:,:,:) = 0.3_wp 
     97      zdepeff (:,:,:) = 0.4_wp 
    9898      ztempbac(:,:)   = 0._wp 
    9999      zfebact (:,:,:) = 0._wp 
     
    117117                  zdepbac (ji,jj,jk) = zdepmin**0.683 * ztempbac(ji,jj) 
    118118                  zdepprod(ji,jj,jk) = zdepmin**0.273 
    119                   zdepeff (ji,jj,jk) = 0.3 * zdepmin**0.3 
     119!                  zdepeff (ji,jj,jk) = 0.3 * zdepmin**0.3 
    120120               ENDIF 
    121121            END DO 
     
    139139            DO ji = 1, jpi 
    140140               zstep   = xstep 
    141 # if defined key_degrad 
    142                zstep = zstep * facvol(ji,jj,jk) 
    143 # endif 
    144141               ! DOC ammonification. Depends on depth, phytoplankton biomass 
    145142               ! and a limitation term which is supposed to be a parameterization 
     
    177174            DO ji = 1, jpi 
    178175               zstep   = xstep 
    179 # if defined key_degrad 
    180                zstep = zstep * facvol(ji,jj,jk) 
    181 # endif 
    182176               ! NH4 nitrification to NO3. Ceased for oxygen concentrations 
    183177               ! below 2 umol/L. Inhibited at strong light  
     
    214208                  &              * trb(ji,jj,jk,jpfer) / ( xkferb + trb(ji,jj,jk,jpfer) )    & 
    215209                  &              * zdepprod(ji,jj,jk) * zdepeff(ji,jj,jk) * zdepbac(ji,jj,jk) 
    216 #if defined key_kriest 
    217                tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.15 
    218                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.15 
    219                zfebact(ji,jj,jk)   = zbactfer * 0.15 
    220 #else 
    221210               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.39 
    222211               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.3 
    223212               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer*0.09 
    224213               zfebact(ji,jj,jk)   = zbactfer * 0.39 
    225 #endif 
    226214            END DO 
    227215         END DO 
     
    242230            DO ji = 1, jpi 
    243231               zstep   = xstep 
    244 # if defined key_degrad 
    245                zstep = zstep * facvol(ji,jj,jk) 
    246 # endif 
    247232               zdep     = MAX( hmld(ji,jj), heup_01(ji,jj) ) 
    248233               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/P4Z/p4zsbc.F90

    r7617 r8003  
    476476         END DO 
    477477         IF( cp_cfg == 'orca' .AND. jp_cfg == 2 ) THEN 
    478             ii0 = 176   ;   ii1 =  176        ! Southern Island : Kerguelen 
    479             ij0 =  37   ;   ij1 =   37  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
     478            ii0 = 177   ;   ii1 =  177        ! Southern Island : Kerguelen 
     479            ij0 =  38   ;   ij1 =   38  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
    480480            ! 
    481481            ii0 = 119   ;   ii1 =  119        ! South Georgia 
    482             ij0 =  29   ;   ij1 =   29  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
    483             ! 
    484             ii0 = 111   ;   ii1 =  111        ! Falklands 
    485             ij0 =  35   ;   ij1 =   35  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
    486             ! 
    487             ii0 = 168   ;   ii1 =  168        ! Crozet 
     482            ij0 =  28   ;   ij1 =   28  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
     483            ! 
     484            ii0 = 167   ;   ii1 =  167        ! Crozet 
    488485            ij0 =  40   ;   ij1 =   40  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
    489486            ! 
     
    491488            ij0 =  28   ;   ij1 =   28  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
    492489            ! 
    493             ii0 = 140   ;   ii1 =  140        ! Bouvet Island 
     490            ii0 = 144   ;   ii1 =  144        ! Bouvet Island 
    494491            ij0 =  33   ;   ij1 =   33  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
    495492            ! 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90

    r7617 r8003  
    243243           IF( tmask(ji,jj,1) == 1 ) THEN 
    244244              ikt = mbkt(ji,jj) 
    245 # if defined key_kriest 
    246               zflx =    trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj)    * 1E3 * 1E6 / 1E4 
    247 # else 
    248245              zflx = (  trb(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj)   & 
    249246                &     + trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) )  * 1E3 * 1E6 / 1E4 
    250 #endif 
    251247              zflx  = LOG10( MAX( 1E-3, zflx ) ) 
    252248              zo2   = LOG10( MAX( 10. , trb(ji,jj,ikt,jpoxy) * 1E6 ) ) 
     
    272268            IF( tmask(ji,jj,1) == 1 ) THEN 
    273269               ikt = mbkt(ji,jj)  
    274 # if defined key_kriest 
    275                zwork1(ji,jj) = trb(ji,jj,ikt,jpgsi) * zwscal (ji,jj) 
    276                zwork2(ji,jj) = trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) 
    277 # else 
    278270               zwork1(ji,jj) = trb(ji,jj,ikt,jpgsi) * zwsbio4(ji,jj) 
    279271               zwork2(ji,jj) = trb(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj) + trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj)  
    280 # endif 
    281272               ! For calcite, burial efficiency is made a function of saturation 
    282273               zfactcal      = MIN( excess(ji,jj,ikt), 0.2 ) 
     
    304295            zws4 = zwsbio4(ji,jj) * zdep 
    305296            zwsc = zwscal (ji,jj) * zdep 
    306 # if defined key_kriest 
    307             zsiloss = trb(ji,jj,ikt,jpgsi) * zws4 
    308 # else 
    309297            zsiloss = trb(ji,jj,ikt,jpgsi) * zwsc 
    310 # endif 
    311298            zcaloss = trb(ji,jj,ikt,jpcal) * zwsc 
    312299            ! 
     
    336323#endif 
    337324            zrivno3 = 1. - zbureff(ji,jj) 
    338 # if ! defined key_kriest 
    339325            tra(ji,jj,ikt,jpgoc) = tra(ji,jj,ikt,jpgoc) - trb(ji,jj,ikt,jpgoc) * zws4  
    340326            tra(ji,jj,ikt,jppoc) = tra(ji,jj,ikt,jppoc) - trb(ji,jj,ikt,jppoc) * zws3 
     
    345331            tra(ji,jj,ikt,jpfep) = tra(ji,jj,ikt,jpfep) - trn(ji,jj,ikt,jpfep) * zwssfep 
    346332#   endif 
    347 # else 
    348             tra(ji,jj,ikt,jpnum) = tra(ji,jj,ikt,jpnum) - trb(ji,jj,ikt,jpnum) * zws4  
    349             tra(ji,jj,ikt,jppoc) = tra(ji,jj,ikt,jppoc) - trb(ji,jj,ikt,jppoc) * zws3 
    350             tra(ji,jj,ikt,jpsfe) = tra(ji,jj,ikt,jpsfe) - trb(ji,jj,ikt,jpsfe) * zws3 
    351             zwstpoc = trb(ji,jj,ikt,jppoc) * zws3  
    352 #   if defined key_ligand 
    353             tra(ji,jj,ikt,jpfep) = tra(ji,jj,ikt,jpfep) - trn(ji,jj,ikt,jpfep) * zwssfep 
    354 #   endif 
    355 # endif 
    356333 
    357334#if ! defined key_sed 
     
    384361               zlim = ( 1.- xnanono3(ji,jj,jk) - xnanonh4(ji,jj,jk) ) 
    385362               IF( zlim <= 0.2 )   zlim = 0.01 
    386 #if defined key_degrad 
    387                zfact = zlim * rfact2 * facvol(ji,jj,jk) 
    388 #else 
    389363               zfact = zlim * rfact2 
    390 #endif 
    391364               ztrfer = biron(ji,jj,jk)       / ( concfediaz + biron(ji,jj,jk)       ) 
    392365               ztrpo4 = trb  (ji,jj,jk,jppo4) / ( concnnh4   + trb  (ji,jj,jk,jppo4) )  
     
    431404            IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", sdenit (:,:) * 1.e+3 * rno3 ) 
    432405         ENDIF 
    433       ELSE 
    434          IF( ln_diatrc )  & 
    435             &  trc2d(:,:,jp_pcs0_2d + 12) = nitrpot(:,:,1) * nitrfix * rno3 * 1.e+3 * rfact2r * fse3t(:,:,1) * tmask(:,:,1) 
    436406      ENDIF 
    437407      ! 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsink.F90

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

    r6966 r8003  
    7171      INTEGER ::   ji, jj, jk, jnt, jn, jl 
    7272      REAL(wp) ::  ztra 
    73 #if defined key_kriest 
    74       REAL(wp) ::  zcoef1, zcoef2 
    75 #endif 
    7673      CHARACTER (len=25) :: charout 
    7774      !!--------------------------------------------------------------------- 
     
    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      ! 
     
    214200      !! ** input   :   file 'namelist.trc.s' containing the following 
    215201      !!             namelist: natext, natbio, natsms 
    216       !!                       natkriest ("key_kriest") 
    217202      !!---------------------------------------------------------------------- 
    218203#if defined key_ligand 
     
    221206#else 
    222207      NAMELIST/nampisbio/ nrdttrc, wsbio, xkmort, ferat3, wsbio2, 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 
     
    258240      ENDIF 
    259241 
    260 #if defined key_kriest 
    261  
    262       !                               ! nampiskrp : kriest parameters 
    263       !                               ! ----------------------------- 
    264       REWIND( numnatp_ref )              ! Namelist nampiskrp in reference namelist : Pisces Kriest 
    265       READ  ( numnatp_ref, nampiskrp, IOSTAT = ios, ERR = 903) 
    266 903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiskrp in reference namelist', lwp ) 
    267  
    268       REWIND( numnatp_cfg )              ! Namelist nampiskrp in configuration namelist : Pisces Kriest 
    269       READ  ( numnatp_cfg, nampiskrp, IOSTAT = ios, ERR = 904 ) 
    270 904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiskrp in configuration namelist', lwp ) 
    271       IF(lwm) WRITE ( numonp, nampiskrp ) 
    272  
    273       IF(lwp) THEN 
    274          WRITE(numout,*) 
    275          WRITE(numout,*) ' Namelist : nampiskrp' 
    276          WRITE(numout,*) '    Sinking  exponent                        xkr_eta      = ', xkr_eta 
    277          WRITE(numout,*) '    N content exponent                       xkr_zeta     = ', xkr_zeta 
    278          WRITE(numout,*) '    N content factor                         xkr_ncontent = ', xkr_ncontent 
    279          WRITE(numout,*) '    Minimum mass for Aggregates              xkr_mass_min = ', xkr_mass_min 
    280          WRITE(numout,*) '    Maximum mass for Aggregates              xkr_mass_max = ', xkr_mass_max 
    281          WRITE(numout,*) 
    282      ENDIF 
    283  
    284  
    285      ! Computation of some variables 
    286      xkr_massp = xkr_ncontent * 7.625 * xkr_mass_min**xkr_zeta 
    287  
    288 #endif 
    289  
    290242      REWIND( numnatp_ref )              ! Namelist nampisdmp in reference namelist : Pisces damping 
    291243      READ  ( numnatp_ref, nampisdmp, IOSTAT = ios, ERR = 905) 
     
    484436            &                    + trn(:,:,:,jpzoo) + trn(:,:,:,jpmes)  & 
    485437            &                    + trn(:,:,:,jppoc)                     & 
    486 #if ! defined key_kriest 
    487438            &                    + trn(:,:,:,jpgoc)                     & 
    488 #endif 
    489439            &                    + trn(:,:,:,jpdoc)                     ) * cvol(:,:,:)  ) 
    490440         ! 
     
    498448            &                    + trn(:,:,:,jpzoo) + trn(:,:,:,jpmes)  & 
    499449            &                    + trn(:,:,:,jppoc)                     & 
    500 #if ! defined key_kriest 
    501450            &                    + trn(:,:,:,jpgoc)                     & 
    502 #endif 
    503451            &                    + trn(:,:,:,jpdoc)                     ) * cvol(:,:,:)  ) 
    504452         po4budget = po4budget / areatot 
     
    526474         ferbudget = glob_sum( (   trn(:,:,:,jpfer) + trn(:,:,:,jpnfe)  & 
    527475            &                    + trn(:,:,:,jpdfe)                     & 
    528 #if ! defined key_kriest 
    529476            &                    + trn(:,:,:,jpbfe)                     & 
    530 #endif 
    531477#if defined key_ligand 
    532478            &                    + trn(:,:,:,jpfep)                     & 
  • 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)                     & 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/SED/sed.F90

    r5215 r8003  
    4040 
    4141   USE p4zsink , ONLY :  sinking    =>   sinking         !: sinking flux for POC 
    42 #if ! defined key_kriest 
    4342   USE p4zsink , ONLY :  sinking2   =>   sinking2        !: sinking flux for GOC 
    44 #endif 
    4543   USE p4zsink , ONLY :  sinkcal    =>   sinkcal         !: sinking flux for calcite 
    4644   USE p4zsink , ONLY :  sinksil    =>   sinksil         !: sinking flux for opal ( dsi ) 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/SED/seddta.F90

    r5215 r8003  
    5555 
    5656      REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zdta 
    57 #if ! defined key_kriest 
    5857      REAL(wp), DIMENSION(:)  , ALLOCATABLE :: zdtap, zdtag 
    59 #endif  
    6058 
    6159 
     
    9896 
    9997 
    100 #if ! defined key_kriest    
    10198      ! Initialization of temporaries arrays   
    10299      ALLOCATE( zdtap(jpoce) )    ;   zdtap(:)    = 0.  
    103100      ALLOCATE( zdtag(jpoce) )    ;   zdtag(:)    = 0.   
    104 #endif 
    105101 
    106102 
     
    122118                  trc_data(ji,jj,5)  = trn  (ji,jj,ikt,jpoxy) 
    123119                  trc_data(ji,jj,6)  = trn  (ji,jj,ikt,jpsil) 
    124 #   if ! defined key_kriest 
    125120                  trc_data(ji,jj,7 ) = sinksil (ji,jj,ikt) 
    126121                  trc_data(ji,jj,8 ) = sinking (ji,jj,ikt) 
     
    129124                  trc_data(ji,jj,11) = tsn     (ji,jj,ikt,jp_tem) 
    130125                  trc_data(ji,jj,12) = tsn     (ji,jj,ikt,jp_sal) 
    131 #   else 
    132                   trc_data(ji,jj,7 ) = sinksil (ji,jj,ikt) 
    133                   trc_data(ji,jj,8 ) = sinking (ji,jj,ikt) 
    134                   trc_data(ji,jj,9 ) = sinkcal (ji,jj,ikt) 
    135                   trc_data(ji,jj,10) = tsn     (ji,jj,ikt,jp_tem) 
    136                   trc_data(ji,jj,11) = tsn     (ji,jj,ikt,jp_sal)        
    137 #   endif 
    138126               ENDIF 
    139127            ENDDO 
     
    147135         CALL iom_get( numbio, jpdom_data, 'O2BOT'      , trc_data(:,:,5 ) ) 
    148136         CALL iom_get( numbio, jpdom_data, 'SIBOT'      , trc_data(:,:,6 ) ) 
    149 #   if ! defined key_kriest 
    150137         CALL iom_get( numbio, jpdom_data, 'OPALFLXBOT' , trc_data(:,:,7 ) )  
    151138         CALL iom_get( numbio, jpdom_data, 'POCFLXBOT'  , trc_data(:,:,8 ) )  
     
    154141         CALL iom_get( numoce, jpdom_data, 'TBOT'       , trc_data(:,:,11) )  
    155142         CALL iom_get( numoce, jpdom_data, 'SBOT'       , trc_data(:,:,12) )  
    156 #   else 
    157          CALL iom_get( numbio, jpdom_data, 'OPALFLXBOT' , trc_data(:,:,7 ) )  
    158          CALL iom_get( numbio, jpdom_data, 'POCFLXBOT'  , trc_data(:,:,8 ) )  
    159          CALL iom_get( numbio, jpdom_data, 'CACO3FLXBOT', trc_data(:,:,9 ) )  
    160          CALL iom_get( numoce, jpdom_data, 'TBOT'       , trc_data(:,:,10) )  
    161          CALL iom_get( numoce, jpdom_data, 'SBOT'       , trc_data(:,:,11) )  
    162 #   endif 
    163143#endif 
    164144 
     
    186166         !  Solid components :  
    187167         !----------------------- 
    188 #if ! defined key_kriest 
    189168         !  Sinking fluxes for OPAL in mol.m-2.s-1 ; conversion in mol.cm-2.s-1 
    190169         CALL pack_arr ( jpoce, rainrm_dta(1:jpoce,jsopal), trc_data(1:jpi,1:jpj,7), iarroce(1:jpoce) )  
     
    200179         CALL pack_arr ( jpoce,  temp(1:jpoce), trc_data(1:jpi,1:jpj,11), iarroce(1:jpoce) ) 
    201180         CALL pack_arr ( jpoce,  salt(1:jpoce), trc_data(1:jpi,1:jpj,12), iarroce(1:jpoce) ) 
    202 #else 
    203          !  Sinking fluxes for OPAL in mol.m-2.s-1 ; conversion in mol.cm-2.s-1 
    204          CALL pack_arr ( jpoce, rainrm_dta(1:jpoce,jsopal), trc_data(1:jpi,1:jpj,7), iarroce(1:jpoce) )  
    205          rainrm_dta(1:jpoce,jsopal) = rainrm_dta(1:jpoce,jsopal) * 1e-4 
    206          !  Sinking fluxes for POC in mol.m-2.s-1 ; conversion in mol.cm-2.s-1 
    207          CALL pack_arr ( jpoce, rainrm_dta(1:jpoce,jspoc), trc_data(1:jpi,1:jpj,8) , iarroce(1:jpoce) )       
    208          rainrm_dta(1:jpoce,jspoc) = rainrm_dta(1:jpoce,jspoc) * 1e-4 
    209          !  Sinking fluxes for Calcite in mol.m-2.s-1 ; conversion in mol.cm-2.s-1 
    210          CALL pack_arr ( jpoce,  rainrm_dta(1:jpoce,jscal), trc_data(1:jpi,1:jpj,9), iarroce(1:jpoce) ) 
    211          rainrm_dta(1:jpoce,jscal) = rainrm_dta(1:jpoce,jscal) * 1e-4 
    212          ! vector temperature [°C] and salinity  
    213          CALL pack_arr ( jpoce,  temp(1:jpoce), trc_data(1:jpi,1:jpj,10), iarroce(1:jpoce) ) 
    214          CALL pack_arr ( jpoce,  salt(1:jpoce), trc_data(1:jpi,1:jpj,11), iarroce(1:jpoce) ) 
    215  
    216 #endif 
    217181         
    218182         ! Clay rain rate in [mol/(cm**2.s)]  
     
    252216 
    253217      DEALLOCATE( zdta )  
    254 #if ! defined key_kriest 
    255218      DEALLOCATE( zdtap    ) ;  DEALLOCATE( zdtag    )  
    256 #endif       
    257219 
    258220      IF( kt == nitsedend )   THEN 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/par_pisces.F90

    r6453 r8003  
    3838#elif defined key_pisces 
    3939   !!--------------------------------------------------------------------- 
    40    !!   'key_pisces' & 'key_kriest'                 PISCES bio-model + ??? 
     40   !!   'key_pisces'                                PISCES bio-model + ??? 
    4141   !!--------------------------------------------------------------------- 
    4242   LOGICAL, PUBLIC, PARAMETER ::   lk_pisces      = .TRUE.  !: PISCES flag  
    4343   INTEGER, PUBLIC, PARAMETER ::   nn_p4z         =  2      !: p4z flag  
    44 #  if defined key_kriest 
    45    LOGICAL, PUBLIC, PARAMETER ::   lk_kriest      = .TRUE.  !: Kriest flag  
    46    INTEGER, PUBLIC, PARAMETER ::   jp_kriest      =  1  
    47    INTEGER, PUBLIC, PARAMETER ::   jp_kriest_diag =  7 
    48 #  else 
    49    LOGICAL, PUBLIC, PARAMETER ::   lk_kriest      = .FALSE.  !: Kriest flag  
    50    INTEGER, PUBLIC, PARAMETER ::   jp_kriest      =  2  
    51    INTEGER, PUBLIC, PARAMETER ::   jp_kriest_diag =  0 
    52 #  endif 
    5344#  if defined key_ligand 
    5445   LOGICAL, PUBLIC, PARAMETER ::   lk_ligand      = .TRUE.  !: Kriest flag  
     
    6051   INTEGER, PUBLIC, PARAMETER ::   jp_ligand_diag =  0 
    6152#  endif 
    62    INTEGER, PUBLIC, PARAMETER ::   jp_pisces      =  22 + jp_kriest + jp_ligand            !: number of passive tracers 
     53   INTEGER, PUBLIC, PARAMETER ::   jp_pisces      =  24 + jp_ligand            !: number of passive tracers 
    6354   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_2d   =  13                                    !: additional 2d output  
    64    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_3d   =  13 + jp_kriest_diag + jp_ligand_diag  !: additional 3d output  
     55   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_3d   =  13 + jp_ligand_diag  !: additional 3d output  
    6556   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_trd  =   1                                    !: number of sms trends for PISCES 
    6657 
     
    9081   INTEGER, PUBLIC, PARAMETER ::   jpno3 = 21    !: Nitrates Concentration 
    9182   INTEGER, PUBLIC, PARAMETER ::   jpnh4 = 22    !: Ammonium Concentration 
    92 #  if defined key_kriest 
    93    INTEGER, PUBLIC, PARAMETER ::   jpnum = 23    !: Number of particles in the aggregates 
    94 #  else 
    9583   INTEGER, PUBLIC, PARAMETER ::   jpgoc = 23    !: Big OM particles Concentration 
    9684   INTEGER, PUBLIC, PARAMETER ::   jpbfe = 24    !: Big iron particles Concentration 
    97 #  endif 
    9885#  if defined key_ligand 
    99    INTEGER, PUBLIC, PARAMETER ::   jplgw = 22 + jp_kriest + 1    !: Weak Ligands 
    100    INTEGER, PUBLIC, PARAMETER ::   jpfep = 22 + jp_kriest + 2    !: Fe nanoparticle 
     86   INTEGER, PUBLIC, PARAMETER ::   jplgw = 24 + 1    !: Weak Ligands 
     87   INTEGER, PUBLIC, PARAMETER ::   jpfep = 24 + 2    !: Fe nanoparticle 
    10188#  endif 
    10289 
    10390#elif defined key_pisces_quota  
    10491   !!--------------------------------------------------------------------- 
    105    !!   'key_pisces' & 'key_kriest'                 PISCES bio-model + ??? 
     92   !!   'key_pisces'                                PISCES bio-model + ??? 
    10693   !!--------------------------------------------------------------------- 
    10794   LOGICAL, PUBLIC, PARAMETER ::   lk_pisces     = .TRUE.  !: PISCES flag  
    10895   INTEGER, PUBLIC, PARAMETER ::   nn_p4z        =  3  !: p4z flag  
    109 #  if defined key_kriest 
    110    LOGICAL, PUBLIC, PARAMETER ::   lk_kriest     = .TRUE. !: Kriest flag  
    111    INTEGER, PUBLIC, PARAMETER ::   jp_kriest      =  1 
    112    INTEGER, PUBLIC, PARAMETER ::   jp_kriest_diag =  7 
    113 #  else 
    114    LOGICAL, PUBLIC, PARAMETER ::   lk_kriest     = .FALSE. !: Kriest flag  
    115    INTEGER, PUBLIC, PARAMETER ::   jp_kriest      =  4 
    116    INTEGER, PUBLIC, PARAMETER ::   jp_kriest_diag =  7 
    117 #  endif 
    11896#  if defined key_ligand 
    11997   LOGICAL, PUBLIC, PARAMETER ::   lk_ligand      = .TRUE.  !: Kriest flag  
     
    125103   INTEGER, PUBLIC, PARAMETER ::   jp_ligand_diag =  0 
    126104#  endif 
    127    INTEGER, PUBLIC, PARAMETER ::   jp_pisces      =  35 + jp_kriest + jp_ligand            !: number of passive tracers 
     105   INTEGER, PUBLIC, PARAMETER ::   jp_pisces      =  39 + jp_ligand            !: number of passive tracers 
    128106   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_2d   =  13     !: additional 2d output  
    129    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_3d   =  13 + jp_kriest_diag + jp_ligand_diag  !: additional 3d output  
     107   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_3d   =  20 + jp_ligand_diag  !: additional 3d output  
    130108   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_trd  =   1     !: number of sms trends for PISCES 
    131109 
     
    168146   INTEGER, PUBLIC, PARAMETER ::   jppfe = 34    !: small particulate organic phosphorus concentration 
    169147   INTEGER, PUBLIC, PARAMETER ::   jppch = 35    !: small particulate organic phosphorus concentration 
    170 #  if defined key_kriest 
    171    INTEGER, PUBLIC, PARAMETER ::   jpnum = 36    !: Number of particles in the aggregates 
    172 #  else 
    173148   INTEGER, PUBLIC, PARAMETER ::   jpgoc = 36    !: Big carbon particles Concentration 
    174149   INTEGER, PUBLIC, PARAMETER ::   jpgon = 37    !: Big nitrogen particles Concentration 
    175150   INTEGER, PUBLIC, PARAMETER ::   jpgop = 38    !: Big phosphorus particles Concentration 
    176151   INTEGER, PUBLIC, PARAMETER ::   jpbfe = 39    !: Big iron particles Concentration 
    177 #  endif 
    178152#  if defined key_ligand 
    179    INTEGER, PUBLIC, PARAMETER ::   jplgw = 35 + jp_kriest + 1    !: Weak Ligands 
    180    INTEGER, PUBLIC, PARAMETER ::   jpfep = 35 + jp_kriest + 2    !: Fe nanoparticle 
     153   INTEGER, PUBLIC, PARAMETER ::   jplgw = 39 + 1    !: Weak Ligands 
     154   INTEGER, PUBLIC, PARAMETER ::   jpfep = 39 + 2    !: Fe nanoparticle 
    181155#  endif 
    182156 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90

    r6455 r8003  
    107107   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tgfunc2   !: Temp. dependancy of mesozooplankton rates 
    108108 
    109 #if defined key_kriest 
    110    !!*  Kriest parameter for aggregation 
    111    REAL(wp) ::   xkr_eta                            !: Sinking  exponent  
    112    REAL(wp) ::   xkr_zeta                           !:  N content exponent  
    113    REAL(wp) ::   xkr_ncontent                       !:  N content factor    
    114    REAL(wp) ::   xkr_massp                          !:  
    115    REAL(wp) ::   xkr_mass_min, xkr_mass_max         !:  Minimum, Maximum mass for Aggregates  
    116 #endif 
    117  
    118109#endif 
    119110 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/trcice_pisces.F90

    r6453 r8003  
    55   !!====================================================================== 
    66   !! History :  3.5  ! 2013    (M. Vancoppenolle, O. Aumont, G. Madec), original code 
    7    !! Comment ! probably not properly done when the second particle export 
    8    !! scheme (kriest) is used 
    97   !!---------------------------------------------------------------------- 
    108#if defined key_pisces || defined key_pisces_reduced 
     
    107105      zpisc(jppo4,1) =  5.77e-7_wp / po4r  
    108106      zpisc(jppoc,1) =  1.27e-6_wp   
    109 #  if ! defined key_kriest 
    110107      zpisc(jpgoc,1) =  5.23e-8_wp   
    111108      zpisc(jpbfe,1) =  9.84e-13_wp  
    112 #  else 
    113       zpisc(jpnum,1) = 0. ! could not get this value since did not use it 
    114 #  endif 
    115109      zpisc(jpsil,1) =  7.36e-6_wp   
    116110      zpisc(jpdsi,1) =  1.07e-7_wp  
     
    154148      zpisc(jppo4,2) =  4.09e-7_wp / po4r  
    155149      zpisc(jppoc,2) =  4.05e-7_wp   
    156 #  if ! defined key_kriest 
    157150      zpisc(jpgoc,2) =  2.84e-8_wp   
    158151      zpisc(jpbfe,2) =  7.03e-13_wp  
    159 #  else 
    160       zpisc(jpnum,2) =  0.00e-00_wp  
    161 #  endif 
    162152      zpisc(jpsil,2) =  6.87e-6_wp   
    163153      zpisc(jpdsi,2) =  1.73e-7_wp  
     
    202192      zpisc(jppo4,3) =  1.88e-6_wp / po4r   
    203193      zpisc(jppoc,3) =  1.13e-6_wp   
    204 #  if ! defined key_kriest 
    205194      zpisc(jpgoc,3) =  2.89e-8_wp   
    206195      zpisc(jpbfe,3) =  5.63e-13_wp  
    207 #  else 
    208       zpisc(jpnum,3) =  0.00e-00_wp  
    209 #  endif 
    210196      zpisc(jpsil,3) =  4.96e-5_wp   
    211197      zpisc(jpdsi,3) =  5.63e-7_wp  
     
    250236      zpisc(jppo4,4) = 2.85e-9_wp / po4r 
    251237      zpisc(jppoc,4) = 4.84e-7_wp 
    252 #  if ! defined key_kriest 
    253238      zpisc(jpgoc,4) = 1.05e-8_wp 
    254239      zpisc(jpbfe,4) = 4.97e-13_wp 
    255 #  else 
    256       zpisc(jpnum,4) = 0. ! could not get this value 
    257 #  endif 
    258240      zpisc(jpsil,4) = 4.91e-5_wp 
    259241      zpisc(jpdsi,4) = 3.25e-7_wp 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90

    r7180 r8003  
    142142         trn(:,:,:,jppon) = bioma0 
    143143         trn(:,:,:,jppop) = bioma0 
    144 #  if ! defined key_kriest 
    145144         trn(:,:,:,jpgoc) = bioma0 
    146145         trn(:,:,:,jpgon) = bioma0 
    147146         trn(:,:,:,jpgop) = bioma0 
    148147         trn(:,:,:,jpbfe) = bioma0 * 5.e-6 
    149 #  else 
    150          trn(:,:,:,jpnum) = bioma0 / ( 6. * xkr_massp ) 
    151 #  endif 
    152148         trn(:,:,:,jpsil) = silic1 
    153149         trn(:,:,:,jpdsi) = bioma0 * 0.15 
     
    293289         trn(:,:,:,jppo4) = po4 / po4r 
    294290         trn(:,:,:,jppoc) = bioma0 
    295 #  if ! defined key_kriest 
    296291         trn(:,:,:,jpgoc) = bioma0 
    297292         trn(:,:,:,jpbfe) = bioma0 * 5.e-6 
    298 #  else 
    299          trn(:,:,:,jpnum) = bioma0 / ( 6. * xkr_massp ) 
    300 #  endif 
    301293         trn(:,:,:,jpsil) = silic1 
    302294         trn(:,:,:,jpdsi) = bioma0 * 0.15 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/trcnam_pisces.F90

    r6453 r8003  
    4646      !! ** input   :   file 'namelist.trc.sms' containing the following 
    4747      !!             namelist: natext, natbio, natsms 
    48       !!                       natkriest ("key_kriest") 
    4948      !!---------------------------------------------------------------------- 
    5049      !! 
     
    7776      IF(lwm) CALL ctl_opn( numonp     , 'output.namelist.pis' , 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 
    7877      ! 
    79       IF( .NOT.lk_iomput .AND. ln_diatrc ) THEN 
    80          ! 
    81          ! Namelist nampisdia 
    82          ! ------------------- 
    83          REWIND( numnatp_ref )              ! Namelist nampisdia in reference namelist : Pisces diagnostics 
    84          READ  ( numnatp_ref, nampisdia, IOSTAT = ios, ERR = 901) 
    85 901      IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisdia in reference namelist', lwp ) 
    86  
    87          REWIND( numnatp_cfg )              ! Namelist nampisdia in configuration namelist : Pisces diagnostics 
    88          READ  ( numnatp_cfg, nampisdia, IOSTAT = ios, ERR = 902 ) 
    89 902      IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisdia in configuration namelist', lwp ) 
    90          IF(lwm) WRITE ( numonp, nampisdia ) 
    91  
    92          DO jl = 1, jp_pisces_2d 
    93             jn = jp_pcs0_2d + jl - 1 
    94             ctrc2d(jn) = pisdia2d(jl)%sname 
    95             ctrc2l(jn) = pisdia2d(jl)%lname 
    96             ctrc2u(jn) = pisdia2d(jl)%units 
    97          END DO 
    98  
    99          DO jl = 1, jp_pisces_3d 
    100             jn = jp_pcs0_3d + jl - 1 
    101             ctrc3d(jn) = pisdia3d(jl)%sname 
    102             ctrc3l(jn) = pisdia3d(jl)%lname 
    103             ctrc3u(jn) = pisdia3d(jl)%units 
    104          END DO 
    105  
    106          IF(lwp) THEN                   ! control print 
    107             WRITE(numout,*) 
    108             WRITE(numout,*) ' Namelist : natadd' 
    109             DO jl = 1, jp_pisces_3d 
    110                jn = jp_pcs0_3d + jl - 1 
    111                WRITE(numout,*) '  3d diag nb : ', jn, '    short name : ', ctrc3d(jn), & 
    112                  &             '  long name  : ', ctrc3l(jn), '   unit : ', ctrc3u(jn) 
    113             END DO 
    114             WRITE(numout,*) ' ' 
    115  
    116             DO jl = 1, jp_pisces_2d 
    117                jn = jp_pcs0_2d + jl - 1 
    118                WRITE(numout,*) '  2d diag nb : ', jn, '    short name : ', ctrc2d(jn), & 
    119                  &             '  long name  : ', ctrc2l(jn), '   unit : ', ctrc2u(jn) 
    120             END DO 
    121             WRITE(numout,*) ' ' 
    122          ENDIF 
    123          ! 
    124       ENDIF 
    125  
    126 #if defined key_pisces_reduced 
    127  
    128       IF( ( .NOT.lk_iomput .AND. ln_diabio ) .OR. lk_trdmld_trc ) THEN 
    129          ! 
    130          ! Namelist nampisdbi 
    131          ! ------------------- 
    132          REWIND( numnatp_ref )              ! Namelist nampisdbi in reference namelist : Pisces add. diagnostics 
    133          READ  ( numnatp_ref, nampisdbi, IOSTAT = ios, ERR = 903) 
    134 903      IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisdbi in reference namelist', lwp ) 
    135  
    136          REWIND( numnatp_cfg )              ! Namelist nampisdbi in configuration namelist : Pisces add. diagnostics 
    137          READ  ( numnatp_cfg, nampisdbi, IOSTAT = ios, ERR = 904 ) 
    138 904      IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisdbi in configuration namelist', lwp ) 
    139          IF(lwm) WRITE ( numonp, nampisdbi ) 
    140  
    141          DO jl = 1, jp_pisces_trd 
    142             jn = jp_pcs0_trd + jl - 1 
    143             ctrbio(jl) = pisdiabio(jl)%sname 
    144             ctrbil(jl) = pisdiabio(jl)%lname 
    145             ctrbiu(jl) = pisdiabio(jl)%units 
    146          END DO 
    147  
    148          IF(lwp) THEN                   ! control print 
    149             WRITE(numout,*) 
    150             WRITE(numout,*) ' Namelist : nampisdbi' 
    151             DO jl = 1, jp_pisces_trd 
    152                jn = jp_pcs0_trd + jl - 1 
    153                WRITE(numout,*) '  biological trend No : ', jn, '    short name : ', ctrbio(jn), & 
    154                  &             '  long name  : ', ctrbio(jn), '   unit : ', ctrbio(jn) 
    155             END DO 
    156             WRITE(numout,*) ' ' 
    157          END IF 
    158          ! 
    159       END IF 
    160  
    161 #endif 
    162  
    16378   END SUBROUTINE trc_nam_pisces 
    16479 
Note: See TracChangeset for help on using the changeset viewer.