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 13200 for NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zmeso.F90 – NEMO

Ignore:
Timestamp:
2020-07-02T08:58:10+02:00 (4 years ago)
Author:
aumont
Message:

minor bug fixes for calcite production and diagnostics

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zmeso.F90

    r12759 r13200  
    8080      REAL(wp) :: zepsherf, zepshert, zepsherq, zepsherv, zgrarsig, zgraztotc, zgraztotn, zgraztotf 
    8181      REAL(wp) :: zmigreltime, zprcaca, zmortz, zgrasratf, zgrasratn 
    82       REAL(wp) :: zrespz, ztortz, zgrazd, zgrazz, zgrazpof, zgrazn, zgrazpoc, zgraznf, zgrazf 
     82      REAL(wp) :: zrespz, ztortz, zgrazdc, zgrazz, zgrazpof, zgraznc, zgrazpoc, zgraznf, zgrazdf 
    8383      REAL(wp) :: zgrazfffp, zgrazfffg, zgrazffep, zgrazffeg, zrum, zcodel, zargu, zval 
    8484      REAL(wp) :: zsigma, zdiffdn, ztmp1, ztmp2, ztmp3, ztmp4, ztmptot 
    8585      CHARACTER (len=25) :: charout 
    8686      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zfezoo2 
    87       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrarem, zgraref, zgrapoc, zgrapof 
    88       REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zgramigrem, zgramigref, zgramigpoc, zgramigpof, zstrn 
     87      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrarem, zgraref, zgrapoc, zgrapof, zgrabsi 
     88      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zgramigrem, zgramigref, zgramigpoc, zgramigpof 
     89      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zstrn, zgramigbsi 
    8990      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   zw3d, zz2ligprod 
    9091      !!--------------------------------------------------------------------- 
     
    9596      zfezoo2 (:,:,:) = 0._wp   ;  zgrarem(:,:,:) = 0._wp 
    9697      zgraref (:,:,:) = 0._wp   ;  zgrapof(:,:,:) = 0._wp 
     98      zgrabsi (:,:,:) = 0._wp 
    9799      ! 
    98100      IF (ln_ligand) THEN 
     
    171173               ! to be close enough to have potential interference 
    172174               ! ----------------------------------------------------------- 
    173                zdiffdn = exp( -ABS(log(1.5 * sizen(ji,jj,jk) / (5.0 * sized(ji,jj,jk) + rtrn )) )**2 / zsigma**2 ) 
     175               zdiffdn = exp( -ABS(log(1.67 * sizen(ji,jj,jk) / (5.0 * sized(ji,jj,jk) + rtrn )) )**2 / zsigma**2 ) 
    174176               ztmp1 = xpref2n * zcompaph * ( zcompaph + zdiffdn * zcompadi ) / ( 1.0 + zdiffdn ) 
    175177               ztmp2 = xpref2c * zcompapoc**2 
     
    184186               !   Mesozooplankton regular grazing on the different preys 
    185187               !   ------------------------------------------------------ 
    186                zgrazd    = zgraze2  * ztmp3 * zdenom 
    187                zgrazn    = zgraze2  * ztmp1 * zdenom 
     188               zgrazdc   = zgraze2  * ztmp3 * zdenom 
     189               zgraznc   = zgraze2  * ztmp1 * zdenom 
    188190               zgrazpoc  = zgraze2  * ztmp2 * zdenom 
    189191               zgrazz    = zgraze2  * ztmp4 * zdenom 
    190192 
    191                zgraznf   = zgrazn   * trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) + rtrn) 
    192                zgrazf    = zgrazd   * trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) + rtrn) 
     193               zgraznf   = zgraznc  * trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) + rtrn) 
     194               zgrazdf   = zgrazdc  * trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) + rtrn) 
    193195               zgrazpof  = zgrazpoc * trb(ji,jj,jk,jpsfe) / ( trb(ji,jj,jk,jppoc) + rtrn) 
    194196 
     
    205207               zgrazfffp = zgrazffep * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 
    206208                
    207                zgraztotc = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 
     209               zgraztotc = zgrazdc + zgrazz + zgraznc + zgrazpoc + zgrazffep + zgrazffeg 
    208210               ! Compute the proportion of filter feeders. It is assumed steady state. 
    209211               ! ---------------------------------------------------------------------   
     
    226228               zgrazfffp = zproport * zgrazfffp 
    227229               zgrazfffg = zproport * zgrazfffg 
    228                zgraztotc = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 
    229                zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk)   & 
     230               zgraztotc = zgrazdc + zgrazz + zgraznc + zgrazpoc + zgrazffep + zgrazffeg 
     231               zgraztotn = zgrazdc * quotad(ji,jj,jk) + zgrazz + zgraznc * quotan(ji,jj,jk)   & 
    230232               &   + zgrazpoc + zgrazffep + zgrazffeg 
    231                zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg 
     233               zgraztotf = zgrazdf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg 
    232234 
    233235               ! Total grazing ( grazing by microzoo is already computed in p4zmicro ) 
     
    257259               zmortzgoc = unass2 / ( 1. - epsher2 ) * ztortz + zrespz 
    258260               tra(ji,jj,jk,jpmes) = tra(ji,jj,jk,jpmes) - zmortz + zepsherv * zgraztotc 
    259                tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zgrazd 
     261               tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zgrazdc 
    260262               tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) - zgrazz 
    261                tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) - zgrazn 
    262                tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) - zgrazn * trb(ji,jj,jk,jpnch) / ( trb(ji,jj,jk,jpphy) + rtrn ) 
    263                tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) - zgrazd * trb(ji,jj,jk,jpdch) / ( trb(ji,jj,jk,jpdia) + rtrn ) 
    264                tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zgrazd * trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn ) 
    265                tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zgrazd * trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn ) 
     263               tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) - zgraznc 
     264               tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) - zgraznc * trb(ji,jj,jk,jpnch) / ( trb(ji,jj,jk,jpphy) + rtrn ) 
     265               tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) - zgrazdc * trb(ji,jj,jk,jpdch) / ( trb(ji,jj,jk,jpdia) + rtrn ) 
     266               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zgrazdc * trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn ) 
     267               zgrabsi(ji,jj,jk)   = zgrazdc * trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn ) 
    266268               tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) - zgraznf 
    267                tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazf 
     269               tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazdf 
    268270               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac 
    269271               prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zfrac 
     
    273275               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe 
    274276               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) - zgrazfffg - zfracfe 
     277 
    275278               ! Calcite remineralization due to zooplankton activity 
    276                ! part2 of the ingested calcite is dissolving in the acidic gut 
    277                zfracal = trb(ji,jj,jk,jpcal) / (trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + rtrn ) 
    278                zgrazcal = (zgrazffeg + zgrazpoc) * (1. - part2) * zfracal 
     279               ! part2 of the ingested calcite is not dissolving in the  
     280               ! acidic gut 
     281               ! ------------------------------------------------------ 
     282               zfracal = trb(ji,jj,jk,jpcal) / ( trb(ji,jj,jk,jpgoc) + rtrn ) 
     283               zgrazcal = zgrazffeg * (1. - part2) * zfracal 
    279284               ! calcite production by zooplankton activity 
    280                zprcaca = xfracal(ji,jj,jk) * zgrazn 
     285               zprcaca = xfracal(ji,jj,jk) * zgraznc 
    281286               prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca  ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo) 
    282287               ! 
     
    304309      IF (ln_dvm_meso) THEN 
    305310         ALLOCATE( zgramigrem(jpi,jpj), zgramigref(jpi,jpj), zgramigpoc(jpi,jpj), zgramigpof(jpi,jpj) ) 
     311         ALLOCATE( zgramigbsi(jpi,jpj) ) 
    306312         ALLOCATE( zstrn(jpi,jpj) ) 
    307313         zgramigrem(:,:) = 0.0    ;   zgramigref(:,:) = 0.0 
    308          zgramigpoc(:,:)  = 0.0   ;   zgramigpof(:,:) = 0.0 
     314         zgramigpoc(:,:) = 0.0    ;   zgramigpof(:,:) = 0.0 
     315         zgramigbsi(:,:) = 0.0 
    309316 
    310317         ! compute the day length depending on latitude and the day 
     
    340347                     zgramigpof(ji,jj) = zgramigpof(ji,jj) + xfracmig * zgrapof(ji,jj,jk) * (1. - zmigreltime )   & 
    341348                     &                   * e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 
     349                     zgramigbsi(ji,jj) = zgramigbsi(ji,jj) + xfracmig * zgrabsi(ji,jj,jk) * (1. - zmigreltime )   & 
     350                     &                   * e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 
    342351 
    343352                     zgrarem(ji,jj,jk) = zgrarem(ji,jj,jk) * ( (1.0 - xfracmig) + xfracmig * zmigreltime ) 
     
    345354                     zgrapoc(ji,jj,jk) = zgrapoc(ji,jj,jk) * ( (1.0 - xfracmig) + xfracmig * zmigreltime ) 
    346355                     zgrapof(ji,jj,jk) = zgrapof(ji,jj,jk) * ( (1.0 - xfracmig) + xfracmig * zmigreltime ) 
     356                     zgrabsi(ji,jj,jk) = zgrabsi(ji,jj,jk) * ( (1.0 - xfracmig) + xfracmig * zmigreltime ) 
    347357                  ENDIF 
    348358               END DO 
     
    361371                  zgrapoc(ji,jj,jkt) = zgrapoc(ji,jj,jkt) + zgramigpoc(ji,jj) / e3t_n(ji,jj,jkt) 
    362372                  zgrapof(ji,jj,jkt) = zgrapof(ji,jj,jkt) + zgramigpof(ji,jj) / e3t_n(ji,jj,jkt) 
     373                  zgrabsi(ji,jj,jkt) = zgrabsi(ji,jj,jkt) + zgramigbsi(ji,jj) / e3t_n(ji,jj,jkt) 
    363374               ENDIF 
    364375            END DO 
     
    367378         ! Deallocate temporary variables 
    368379         ! ------------------------------ 
    369          DEALLOCATE( zgramigrem, zgramigref, zgramigpoc, zgramigpof ) 
     380         DEALLOCATE( zgramigrem, zgramigref, zgramigpoc, zgramigpof, zgramigbsi ) 
    370381         DEALLOCATE( zstrn ) 
    371382 
     
    397408               prodgoc(ji,jj,jk)   = prodgoc(ji,jj,jk)   + zgrapoc(ji,jj,jk) 
    398409               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zgrapof(ji,jj,jk) 
     410               tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zgrabsi(ji,jj,jk) 
    399411            END DO 
    400412         END DO 
Note: See TracChangeset for help on using the changeset viewer.