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 7176 for branches – NEMO

Changeset 7176 for branches


Ignore:
Timestamp:
2016-11-03T16:15:42+01:00 (7 years ago)
Author:
cetlod
Message:

new top interface : merge aggregation routines (p4z & p5z )

Location:
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z
Files:
1 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zagg.F90

    r7162 r7176  
    88   !!             3.4  !  2011-06  (O. Aumont, C. Ethe) Change aggregation formula 
    99   !!             3.5  !  2012-07  (O. Aumont) Introduce potential time-splitting 
     10   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    1011   !!---------------------------------------------------------------------- 
    1112   !!---------------------------------------------------------------------- 
     
    3940      INTEGER, INTENT(in) :: kt, knt 
    4041      INTEGER  ::   ji, jj, jk 
    41       REAL(wp) ::   zagg1, zagg2, zagg3, zagg4 
    42       REAL(wp) ::   zagg , zaggfe, zaggdoc, zaggdoc2, zaggdoc3 
    43       REAL(wp) ::   zfact 
     42      REAL(wp) ::   zagg, zagg1, zagg2, zagg3, zagg4 
     43      REAL(wp) ::   zaggpoc1, zaggpoc2, zaggpoc3, zaggpoc4 
     44      REAL(wp) ::   zaggpoc , zaggfe, zaggdoc, zaggdoc2, zaggdoc3 
     45      REAL(wp) ::   zaggpon , zaggdon, zaggdon2, zaggdon3 
     46      REAL(wp) ::   zaggpop, zaggdop, zaggdop2, zaggdop3 
     47      REAL(wp) ::   zaggtmp, zfact, zmax 
    4448      CHARACTER (len=25) :: charout 
    4549      !!--------------------------------------------------------------------- 
     
    5054      !  Exchange between organic matter compartments due to coagulation/disaggregation 
    5155      !  --------------------------------------------------- 
    52       DO jk = 1, jpkm1 
    53          DO jj = 1, jpj 
    54             DO ji = 1, jpi 
    55                ! 
    56                zfact = xstep * xdiss(ji,jj,jk) 
    57                !  Part I : Coagulation dependent on turbulence 
    58                zagg1 = 25.9  * zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc) 
    59                zagg2 = 4452. * zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc) 
     56      IF( ln_p4z ) THEN 
     57         ! 
     58         DO jk = 1, jpkm1 
     59            DO jj = 1, jpj 
     60               DO ji = 1, jpi 
     61                  ! 
     62                  zfact = xstep * xdiss(ji,jj,jk) 
     63                  !  Part I : Coagulation dependent on turbulence 
     64                  zagg1 = 25.9  * zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc) 
     65                  zagg2 = 4452. * zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc) 
    6066 
    61                ! Part II : Differential settling 
     67                  ! Part II : Differential settling 
    6268 
    63                !  Aggregation of small into large particles 
    64                zagg3 =  47.1 * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc) 
    65                zagg4 =  3.3  * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc) 
     69                  !  Aggregation of small into large particles 
     70                  zagg3 =  47.1 * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc) 
     71                  zagg4 =  3.3  * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc) 
    6672 
    67                zagg   = zagg1 + zagg2 + zagg3 + zagg4 
    68                zaggfe = zagg * trb(ji,jj,jk,jpsfe) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
     73                  zagg   = zagg1 + zagg2 + zagg3 + zagg4 
     74                  zaggfe = zagg * trb(ji,jj,jk,jpsfe) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
    6975 
    70                ! Aggregation of DOC to POC :  
    71                ! 1st term is shear aggregation of DOC-DOC 
    72                ! 2nd term is shear aggregation of DOC-POC 
    73                ! 3rd term is differential settling of DOC-POC 
    74                zaggdoc  = ( ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * zfact       & 
    75                &            + 2.4 * xstep * trb(ji,jj,jk,jppoc) ) * 0.3 * trb(ji,jj,jk,jpdoc) 
    76                ! transfer of DOC to GOC :  
    77                ! 1st term is shear aggregation 
    78                ! 2nd term is differential settling  
    79                zaggdoc2 = ( 3.53E3 * zfact + 0.1 * xstep ) * trb(ji,jj,jk,jpgoc) * 0.3 * trb(ji,jj,jk,jpdoc) 
    80                ! tranfer of DOC to POC due to brownian motion 
    81                zaggdoc3 =  114. * 0.3 * trb(ji,jj,jk,jpdoc) *xstep * 0.3 * trb(ji,jj,jk,jpdoc) 
     76                  ! Aggregation of DOC to POC :  
     77                  ! 1st term is shear aggregation of DOC-DOC 
     78                  ! 2nd term is shear aggregation of DOC-POC 
     79                  ! 3rd term is differential settling of DOC-POC 
     80                  zaggdoc  = ( ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * zfact       & 
     81                  &            + 2.4 * xstep * trb(ji,jj,jk,jppoc) ) * 0.3 * trb(ji,jj,jk,jpdoc) 
     82                  ! transfer of DOC to GOC :  
     83                  ! 1st term is shear aggregation 
     84                  ! 2nd term is differential settling  
     85                  zaggdoc2 = ( 3.53E3 * zfact + 0.1 * xstep ) * trb(ji,jj,jk,jpgoc) * 0.3 * trb(ji,jj,jk,jpdoc) 
     86                  ! tranfer of DOC to POC due to brownian motion 
     87                  zaggdoc3 =  114. * 0.3 * trb(ji,jj,jk,jpdoc) *xstep * 0.3 * trb(ji,jj,jk,jpdoc) 
    8288 
    83                !  Update the trends 
    84                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zagg + zaggdoc + zaggdoc3 
    85                tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zagg + zaggdoc2 
    86                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zaggfe 
    87                tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zaggfe 
    88                tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc2 - zaggdoc3 
    89                ! 
    90                conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zagg + zaggdoc + zaggdoc3 
    91                prodgoc(ji,jj,jk) = prodgoc(ji,jj,jk) + zagg + zaggdoc2 
    92                ! 
     89                  !  Update the trends 
     90                  tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zagg + zaggdoc + zaggdoc3 
     91                  tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zagg + zaggdoc2 
     92                  tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zaggfe 
     93                  tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zaggfe 
     94                  tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc2 - zaggdoc3 
     95                  ! 
     96                  conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zagg + zaggdoc + zaggdoc3 
     97                  prodgoc(ji,jj,jk) = prodgoc(ji,jj,jk) + zagg + zaggdoc2 
     98                  ! 
     99               END DO 
    93100            END DO 
    94101         END DO 
    95       END DO 
     102      ELSE    ! ln_p5z 
     103        ! 
     104         DO jk = 1, jpkm1 
     105            DO jj = 1, jpj 
     106               DO ji = 1, jpi 
     107                  ! 
     108                  zfact = xstep * xdiss(ji,jj,jk) 
     109                  !  Part I : Coagulation dependent on turbulence 
     110                  zaggtmp = 25.9  * zfact * trb(ji,jj,jk,jppoc) 
     111                  zaggpoc1 = zaggtmp * trb(ji,jj,jk,jppoc) 
     112                  zaggtmp = 4452. * zfact * trb(ji,jj,jk,jpgoc) 
     113                  zaggpoc2 = zaggtmp * trb(ji,jj,jk,jppoc) 
     114 
     115                  ! Part II : Differential settling 
     116    
     117                  !  Aggregation of small into large particles 
     118                  zaggtmp =  47.1 * xstep * trb(ji,jj,jk,jpgoc) 
     119                  zaggpoc3 = zaggtmp * trb(ji,jj,jk,jppoc) 
     120                  zaggtmp =  3.3  * xstep * trb(ji,jj,jk,jppoc) 
     121                  zaggpoc4 = zaggtmp * trb(ji,jj,jk,jppoc) 
     122 
     123                  zaggpoc   = zaggpoc1 + zaggpoc2 + zaggpoc3 + zaggpoc4 
     124                  zaggpon = zaggpoc * trb(ji,jj,jk,jppon) / ( trb(ji,jj,jk,jppoc) + rtrn) 
     125                  zaggpop = zaggpoc * trb(ji,jj,jk,jppop) / ( trb(ji,jj,jk,jppoc) + rtrn) 
     126                  zaggfe = zaggpoc * trb(ji,jj,jk,jpsfe) / ( trb(ji,jj,jk,jppoc)  + rtrn ) 
     127 
     128                  ! Aggregation of DOC to POC :  
     129                  ! 1st term is shear aggregation of DOC-DOC 
     130                  ! 2nd term is shear aggregation of DOC-POC 
     131                  ! 3rd term is differential settling of DOC-POC 
     132                  zaggtmp = ( ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * zfact       & 
     133                  &            + 2.4 * xstep * trb(ji,jj,jk,jppoc) ) 
     134                  zaggdoc  = zaggtmp * 0.3 * trb(ji,jj,jk,jpdoc) 
     135                  zaggdon  = zaggtmp * 0.3 * trb(ji,jj,jk,jpdon) 
     136                  zaggdop  = zaggtmp * 0.3 * trb(ji,jj,jk,jpdop) 
     137 
     138                  ! transfer of DOC to GOC :  
     139                  ! 1st term is shear aggregation 
     140                  ! 2nd term is differential settling  
     141                  zaggtmp = ( 3.53E3 * zfact + 0.1 * xstep ) * trb(ji,jj,jk,jpgoc) 
     142                  zaggdoc2 = zaggtmp * 0.3 * trb(ji,jj,jk,jpdoc) 
     143                  zaggdon2 = zaggtmp * 0.3 * trb(ji,jj,jk,jpdon) 
     144                  zaggdop2 = zaggtmp * 0.3 * trb(ji,jj,jk,jpdop) 
     145 
     146                  ! tranfer of DOC to POC due to brownian motion 
     147                  zaggtmp = ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) * xstep 
     148                  zaggdoc3 =  zaggtmp * 0.3 * trb(ji,jj,jk,jpdoc) 
     149                  zaggdon3 =  zaggtmp * 0.3 * trb(ji,jj,jk,jpdon) 
     150                  zaggdop3 =  zaggtmp * 0.3 * trb(ji,jj,jk,jpdop) 
     151 
     152                  !  Update the trends 
     153                  tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zaggpoc + zaggdoc + zaggdoc3 
     154                  tra(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) - zaggpon + zaggdon + zaggdon3 
     155                  tra(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) - zaggpop + zaggdop + zaggdop3 
     156                  tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zaggpoc + zaggdoc2 
     157                  tra(ji,jj,jk,jpgon) = tra(ji,jj,jk,jpgon) + zaggpon + zaggdon2 
     158                  tra(ji,jj,jk,jpgop) = tra(ji,jj,jk,jpgop) + zaggpop + zaggdop2 
     159                  tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zaggfe 
     160                  tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zaggfe 
     161                  tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc2 - zaggdoc3 
     162                  tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) - zaggdon - zaggdon2 - zaggdon3 
     163                  tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) - zaggdop - zaggdop2 - zaggdop3 
     164                  ! 
     165                  conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zaggpoc + zaggdoc + zaggdoc3 
     166                  prodgoc(ji,jj,jk) = prodgoc(ji,jj,jk) + zaggpoc + zaggdoc2 
     167                  ! 
     168               END DO 
     169            END DO 
     170         END DO 
     171         ! 
     172      ENDIF 
    96173      ! 
    97174      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zbio.F90

    r7162 r7176  
    2525   USE p5zmicro        !  Sources and sinks of microzooplankton 
    2626   USE p5zmeso         !  Sources and sinks of mesozooplankton 
    27    USE p5zagg          !  Aggregation of particles 
    2827   USE p4zrem          !  Remineralisation of organic matter 
    2928   USE p4zpoc          !  Remineralization of organic particles 
     
    9089         CALL p4z_micro( kt, knt )           ! microzooplankton 
    9190         CALL p4z_meso ( kt, knt )           ! mesozooplankton 
    92          CALL p4z_agg  ( kt, knt )     ! Aggregation of particles 
    9391      ELSE 
    9492         CALL p5z_lim  ( kt, knt )     ! co-limitations by the various nutrients 
     
    9997         CALL p5z_micro( kt, knt )           ! microzooplankton 
    10098         CALL p5z_meso ( kt, knt )           ! mesozooplankton 
    101          CALL p5z_agg  ( kt, knt )     ! Aggregation of particles 
    10299      ENDIF 
    103100      ! 
     101      CALL p4z_agg  ( kt, knt )     ! Aggregation of particles 
    104102      CALL p4z_rem     ( kt, knt )     ! remineralization terms of organic matter+scavenging of Fe 
    105103      CALL p4z_poc     ( kt, knt )     ! Remineralization of organic particles 
Note: See TracChangeset for help on using the changeset viewer.