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 2823 for branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsink.F90 – NEMO

Ignore:
Timestamp:
2011-08-09T13:11:24+02:00 (13 years ago)
Author:
cetlod
Message:

Add new parameterisation in PISCES, see ticket #854

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsink.F90

    r2715 r2823  
    66   !! History :   1.0  !  2004     (O. Aumont) Original code 
    77   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90 
     8   !!             3.4  !  2011-06  (O. Aumont, C. Ethe) Change aggregation formula 
     9   !!---------------------------------------------------------------------- 
    810#if defined key_pisces 
    911   !!---------------------------------------------------------------------- 
    1012   !!   p4z_sink       :  Compute vertical flux of particulate matter due to gravitational sinking 
    1113   !!---------------------------------------------------------------------- 
    12    USE trc 
    13    USE oce_trc         ! 
    14    USE sms_pisces 
    15    USE prtctl_trc 
    16    USE iom 
     14   USE oce_trc         !  shared variables between ocean and passive tracers 
     15   USE trc             !  passive tracers common variables  
     16   USE sms_pisces      !  PISCES Source Minus Sink variables 
     17   USE prtctl_trc      !  print control for debugging 
     18   USE iom             !  I/O manager 
    1719 
    1820   IMPLICIT NONE 
     
    9193      REAL(wp) :: zdiv , zdiv1, zdiv2, zdiv3, zdiv4, zdiv5 
    9294      REAL(wp) :: zval1, zval2, zval3, zval4 
    93 #if defined key_diatrc 
    9495      REAL(wp) :: zrfact2 
    9596      INTEGER  :: ik1 
    96 #endif 
    9797      CHARACTER (len=25) :: charout 
    9898      !!--------------------------------------------------------------------- 
     
    193193                     &            * (zeps-1)/zdiv1 + 3.*(zfm*xkr_mass_max-xkr_mass_min)    & 
    194194                     &            * (zfm*xkr_mass_max**2-xkr_mass_min**2)                  & 
    195                      &            * (zeps-1.)**2/(zdiv2*zdiv3))            & 
    196 # if defined key_degrad 
    197                      &                 *facvol(ji,jj,jk)       & 
    198 # endif 
    199                      &    ) 
    200  
    201                   zagg2 = (  2*0.163*trn(ji,jj,jk,jpnum)**2*zfm*                       & 
     195                     &            * (zeps-1.)**2/(zdiv2*zdiv3))        
     196 
     197                  zagg2 =  2*0.163*trn(ji,jj,jk,jpnum)**2*zfm*                       & 
    202198                     &                   ((xkr_mass_max**3+3.*(xkr_mass_max**2          & 
    203199                     &                    *xkr_mass_min*(zeps-1.)/zdiv2                 & 
     
    205201                     &                    +xkr_mass_min**3*(zeps-1)/zdiv1)                  & 
    206202                     &                    -zfm*xkr_mass_max**3*(1.+3.*((zeps-1.)/           & 
    207                      &                    (zeps-2.)+(zeps-1.)/zdiv3)+(zeps-1.)/zdiv1))      & 
    208 #    if defined key_degrad 
    209                      &                 *facvol(ji,jj,jk)             & 
    210 #    endif 
    211                      &    ) 
    212  
    213                   zagg3 = (  0.163*trn(ji,jj,jk,jpnum)**2*zfm**2*8. * xkr_mass_max**3   & 
    214 #    if defined key_degrad 
    215                      &                 *facvol(ji,jj,jk)             & 
    216 #    endif 
    217                      &    ) 
    218  
    219                   zaggsh = ( zagg1 + zagg2 + zagg3 ) * rfact2 * xdiss(ji,jj,jk) / 1000. 
     203                     &                    (zeps-2.)+(zeps-1.)/zdiv3)+(zeps-1.)/zdiv1))     
     204 
     205                  zagg3 =  0.163*trn(ji,jj,jk,jpnum)**2*zfm**2*8. * xkr_mass_max**3   
    220206 
    221207                 !    Aggregation of small into large particles 
     
    223209                 !    ---------------------------------------------- 
    224210 
    225                   zagg4 = ( 2.*3.141*0.125*trn(ji,jj,jk,jpnum)**2*                       & 
     211                  zagg4 = 2.*3.141*0.125*trn(ji,jj,jk,jpnum)**2*                       & 
    226212                     &                 xkr_wsbio_min*(zeps-1.)**2                         & 
    227213                     &                 *(xkr_mass_min**2*((1.-zsm*zfm)/(zdiv3*zdiv4)      & 
    228214                     &                 -(1.-zfm)/(zdiv*(zeps-1.)))-                       & 
    229215                     &                 ((zfm*zfm*xkr_mass_max**2*zsm-xkr_mass_min**2)     & 
    230                      &                 *xkr_eta)/(zdiv*zdiv3*zdiv5) )                     & 
    231 # if defined key_degrad 
    232                      &                 *facvol(ji,jj,jk)        & 
    233 # endif 
    234                      &    ) 
    235  
    236                   zagg5 = (  2.*3.141*0.125*trn(ji,jj,jk,jpnum)**2                         & 
     216                     &                 *xkr_eta)/(zdiv*zdiv3*zdiv5) )    
     217 
     218                  zagg5 =   2.*3.141*0.125*trn(ji,jj,jk,jpnum)**2                         & 
    237219                     &                 *(zeps-1.)*zfm*xkr_wsbio_min                        & 
    238220                     &                 *(zsm*(xkr_mass_min**2-zfm*xkr_mass_max**2)         & 
    239221                     &                 /zdiv3-(xkr_mass_min**2-zfm*zsm*xkr_mass_max**2)    & 
    240                      &                 /zdiv)                   & 
    241 # if defined key_degrad 
    242                      &                 *facvol(ji,jj,jk)        & 
    243 # endif 
    244                      &    ) 
     222                     &                 /zdiv)   
    245223 
    246224                  zaggsi = ( zagg4 + zagg5 ) * xstep / 10. 
     
    253231                  zaggdoc = ( 0.4 * trn(ji,jj,jk,jpdoc)               & 
    254232                     &        + 1018.  * trn(ji,jj,jk,jppoc)  ) * xstep    & 
     233                     &        * xdiss(ji,jj,jk) * trn(ji,jj,jk,jpdoc) 
     234 
    255235# if defined key_degrad 
    256                      &        * facvol(ji,jj,jk)                              & 
     236                   zagg1   = zagg1   * facvol(ji,jj,jk)                  
     237                   zagg2   = zagg2   * facvol(ji,jj,jk)                  
     238                   zagg3   = zagg3   * facvol(ji,jj,jk)                  
     239                   zagg4   = zagg4   * facvol(ji,jj,jk)                  
     240                   zagg5   = zagg5   * facvol(ji,jj,jk)                  
     241                   zaggdoc = zaggdoc * facvol(ji,jj,jk)                  
    257242# endif 
    258                      &        * xdiss(ji,jj,jk) * trn(ji,jj,jk,jpdoc) 
    259  
     243                  zaggsh = ( zagg1 + zagg2 + zagg3 ) * rfact2 * xdiss(ji,jj,jk) / 1000. 
     244                  zaggsi = ( zagg4 + zagg5 ) * xstep / 10. 
     245                  zagg = 0.5 * xkr_stick * ( zaggsh + zaggsi ) 
     246                  ! 
    260247                  znumdoc = trn(ji,jj,jk,jpnum) / ( trn(ji,jj,jk,jppoc) + rtrn ) 
    261248                  tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zaggdoc 
     
    335322      !!---------------------------------------------------------------------- 
    336323      ! 
    337       REWIND( numnat )                     ! read nampiskrs 
    338       READ  ( numnat, nampiskrs ) 
     324      REWIND( numnatp )                     ! read nampiskrs 
     325      READ  ( numnat,( nampiskrs ) 
    339326 
    340327      IF(lwp) THEN 
     
    457444      INTEGER  ::   ji, jj, jk 
    458445      REAL(wp) ::   zagg1, zagg2, zagg3, zagg4 
    459       REAL(wp) ::   zagg , zaggfe, zaggdoc, zaggdoc2 
    460       REAL(wp) ::   zfact, zwsmax, zstep 
    461 #if defined key_diatrc 
     446      REAL(wp) ::   zagg , zaggfe, zaggdoc, zaggdoc2, zaggdoc3 
     447      REAL(wp) ::   zfact, zwsmax, zmax, zstep 
    462448      REAL(wp) ::   zrfact2 
    463449      INTEGER  ::   ik1 
    464 #endif 
    465450      CHARACTER (len=25) :: charout 
    466451      !!--------------------------------------------------------------------- 
     
    471456      DO jk = 1, jpkm1 
    472457         DO jj = 1, jpj 
    473             DO ji=1,jpi 
    474                zfact = MAX( 0., fsdepw(ji,jj,jk+1) - hmld(ji,jj) ) / 4000._wp 
     458            DO ji = 1,jpi 
     459               zmax  = MAX( heup(ji,jj), hmld(ji,jj) ) 
     460               zfact = MAX( 0., fsdepw(ji,jj,jk+1) - zmax ) / 5000._wp 
    475461               wsbio4(ji,jj,jk) = wsbio2 + ( 200.- wsbio2 ) * zfact 
    476462            END DO 
     
    533519               zfact = zstep * xdiss(ji,jj,jk) 
    534520               !  Part I : Coagulation dependent on turbulence 
    535                zagg1 = 940.* zfact * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jppoc) 
    536                zagg2 = 1.054e4 * zfact * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpgoc) 
     521               zagg1 = 354.  * zfact * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jppoc) 
     522               zagg2 = 4452. * zfact * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpgoc) 
    537523 
    538524               ! Part II : Differential settling 
    539525 
    540526               !  Aggregation of small into large particles 
    541                zagg3 = 0.66 * zstep * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpgoc) 
    542                zagg4 = 0.e0 * zstep * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jppoc) 
     527               zagg3 =  4.7 * zstep * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpgoc) 
     528               zagg4 =  0.4 * zstep * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jppoc) 
    543529 
    544530               zagg   = zagg1 + zagg2 + zagg3 + zagg4 
     
    546532 
    547533               ! Aggregation of DOC to small particles 
    548                zaggdoc = ( 80.* trn(ji,jj,jk,jpdoc) + 698. * trn(ji,jj,jk,jppoc) ) *  zfact * trn(ji,jj,jk,jpdoc)  
    549                zaggdoc2 = 1.05e4 * zfact * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpdoc) 
     534               zaggdoc  = ( 0.83 * trn(ji,jj,jk,jpdoc) + 271. * trn(ji,jj,jk,jppoc) ) * zfact * trn(ji,jj,jk,jpdoc) 
     535               zaggdoc2 = 1.07e4 * zfact * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpdoc) 
     536               zaggdoc3 =   0.02 * ( 16706. * trn(ji,jj,jk,jppoc) + 231. * trn(ji,jj,jk,jpdoc) ) * zstep * trn(ji,jj,jk,jpdoc) 
    550537 
    551538               !  Update the trends 
    552                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zagg + zaggdoc 
     539               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zagg + zaggdoc + zaggdoc3 
    553540               tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zagg + zaggdoc2 
    554541               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zaggfe 
    555542               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zaggfe 
    556                tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc2 
     543               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc2 - zaggdoc3 
    557544               ! 
    558545            END DO 
Note: See TracChangeset for help on using the changeset viewer.