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

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 8003 for branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zagg.F90 – NEMO

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

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

File:
1 edited

Legend:

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

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