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/p4zfechem.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/p4zfechem.F90

    r11536 r13200  
    5151      INTEGER  ::   ji, jj, jk, jic, jn 
    5252      REAL(wp) ::   zdep, zlam1a, zlam1b, zlamfac 
    53       REAL(wp) ::   zkeq, zfeequi, zfesatur, zfecoll, fe3sol 
    54       REAL(wp) ::   zdenom1, zscave, zaggdfea, zaggdfeb, zcoag 
    55       REAL(wp) ::   ztrc, zdust 
    56       REAL(wp) ::   zdenom2 
    57       REAL(wp) ::   zzFeL1, zzFeL2, zzFe2, zzFeP, zzFe3, zzstrn2 
    58       REAL(wp) ::   zrum, zcodel, zargu, zlight 
    59       REAL(wp) ::   zkox, zkph1, zkph2, zph, zionic, ztligand 
    60       REAL(wp) ::   za, zb, zc, zkappa1, zkappa2, za0, za1, za2 
    61       REAL(wp) ::   zxs, zfunc, zp, zq, zd, zr, zphi, zfff, zp3, zq2 
    62       REAL(wp) ::   ztfe, zoxy, zhplus, zxlam 
    63       REAL(wp) ::   zaggliga, zaggligb 
    64       REAL(wp) ::   dissol, zligco 
    65       REAL(wp) :: zrfact2 
     53      REAL(wp) ::   zkeq, zfeequi, zfesatur, zfecoll, fe3sol, zligco 
     54      REAL(wp) ::   zdenom1, zscave, zaggdfea, zaggdfeb, zcoag, ztrc, zdust 
     55      REAL(wp) ::   zdenom2, ztfe, zhplus, zxlam, zaggliga, zaggligb 
     56      REAL(wp) ::   zrfact2 
    6657      CHARACTER (len=25) :: charout 
    6758      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zTL1, zFe3, ztotlig, precip, zFeL1 
     
    7162      IF( ln_timing )   CALL timing_start('p4z_fechem') 
    7263      ! 
    73       zFe3 (:,:,:) = 0. 
    74       zFeL1(:,:,:) = 0. 
     64      zFe3 (:,:,:) = 0.   ;   zFeL1(:,:,:) = 0. 
    7565      zTL1 (:,:,:) = 0. 
    7666 
     
    124114               ! 
    125115               zfeequi = zFe3(ji,jj,jk) * 1E-9 
    126                zhplus  = max( rtrn, hi(ji,jj,jk) ) 
    127                fe3sol  = fesol(ji,jj,jk,1) * ( zhplus**3 + fesol(ji,jj,jk,2) * zhplus**2  & 
    128                   &         + fesol(ji,jj,jk,3) * zhplus + fesol(ji,jj,jk,4)     & 
    129                   &         + fesol(ji,jj,jk,5) / zhplus ) 
    130116               zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9 
    131117               ! precipitation of Fe3+, creation of nanoparticles 
     
    133119               ! 
    134120               ztrc   = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6  
    135                IF( ln_dust )  zdust  = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) & 
    136                &  * EXP( -gdept_n(ji,jj,jk) / 540. ) 
     121               IF( ln_dust )  zdust  = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) 
    137122               IF (ln_ligand) THEN 
    138123                  zxlam  = xlam1 * MAX( 1.E-3, EXP(-2 * etot(ji,jj,jk) / 10. ) * (1. - EXP(-2 * trb(ji,jj,jk,jpoxy) / 100.E-6 ) )) 
     
    149134               zdenom2 = zxlam * trb(ji,jj,jk,jpgoc) / zlam1b 
    150135 
    151                !  Increased scavenging for very high iron concentrations found near the coasts  
    152                !  due to increased lithogenic particles and let say it is unknown processes (precipitation, ...) 
     136               ! Increased scavenging for very high iron concentrations found near the coasts  
     137               ! due to increased lithogenic particles and let say it is unknown processes (precipitation, ...) 
    153138               !  ----------------------------------------------------------- 
    154139               zlamfac = MAX( 0.e0, ( gphit(ji,jj) + 55.) / 30. ) 
     
    157142               zcoag   = 1E-4 * ( 1. - zlamfac ) * zdep * xstep * trb(ji,jj,jk,jpfer) 
    158143 
    159                !  Compute the coagulation of colloidal iron. This parameterization  
    160                !  could be thought as an equivalent of colloidal pumping. 
    161                !  It requires certainly some more work as it is very poorly constrained. 
    162                !  ---------------------------------------------------------------- 
     144               ! Compute the coagulation of colloidal iron. This parameterization  
     145               ! could be thought as an equivalent of colloidal pumping. 
     146               ! It requires certainly some more work as it is very poorly constrained. 
     147               ! ---------------------------------------------------------------- 
    163148               zlam1a   = ( 0.369  * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4  * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk)    & 
    164                    &      + ( 114.   * 0.3 * trb(ji,jj,jk,jpdoc) ) 
     149                   &    + ( 114.   * 0.3 * trb(ji,jj,jk,jpdoc) ) 
    165150               zaggdfea = zlam1a * xstep * zfecoll 
    166151               ! 
     
    188173            DO jj = 1, jpj 
    189174               DO ji = 1, jpi 
     175 
     176                  ! Coagulation of ligands due to various processes (Brownian, shear, diff. sedimentation 
     177                  ! Coefficients are taken from the p4zagg 
     178                  ! ------------------------------------------------------------------------------------- 
    190179                  zlam1a   = ( 0.369  * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4  * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk)    & 
    191180                      &    + ( 114.   * 0.3 * trb(ji,jj,jk,jpdoc) ) 
    192181                  ! 
    193182                  zlam1b   = 3.53E3 *   trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 
     183 
     184                  ! 50% of the ligands are supposed to be in the colloidal size fraction 
    194185                  zligco   = 0.5 * trn(ji,jj,jk,jplgw) 
    195186                  zaggliga = zlam1a * xstep * zligco 
     
    206197      !  Output of some diagnostics variables 
    207198      !     --------------------------------- 
    208       IF( lk_iomput ) THEN 
    209          IF( knt == nrdttrc ) THEN 
    210             zrfact2 = 1.e3 * rfact2r  ! conversion from mol/L/timestep into mol/m3/s 
    211             IF( iom_use("Fe3")    )  CALL iom_put("Fe3"    , zFe3   (:,:,:)       * tmask(:,:,:) )   ! Fe3+ 
    212             IF( iom_use("FeL1")   )  CALL iom_put("FeL1"   , zFeL1  (:,:,:)       * tmask(:,:,:) )   ! FeL1 
    213             IF( iom_use("TL1")    )  CALL iom_put("TL1"    , zTL1   (:,:,:)       * tmask(:,:,:) )   ! TL1 
    214             IF( iom_use("Totlig") )  CALL iom_put("Totlig" , ztotlig(:,:,:)       * tmask(:,:,:) )   ! TL 
    215             IF( iom_use("Biron")  )  CALL iom_put("Biron"  , biron  (:,:,:)  * 1e9 * tmask(:,:,:) )   ! biron 
    216             IF( iom_use("FESCAV") )  CALL iom_put("FESCAV" , zscav3d(:,:,:)  * 1e9 * tmask(:,:,:) * zrfact2 ) 
    217             IF( iom_use("FECOLL") )  CALL iom_put("FECOLL" , zcoll3d(:,:,:)  * 1e9 * tmask(:,:,:) * zrfact2 ) 
    218             IF( iom_use("LGWCOLL"))  CALL iom_put("LGWCOLL", zlcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 
    219          ENDIF 
     199      IF( lk_iomput .AND. knt == nrdttrc ) THEN 
     200         zrfact2 = 1.e3 * rfact2r  ! conversion from mol/L/timestep into mol/m3/s 
     201         IF( iom_use("Fe3")    )  CALL iom_put("Fe3"    , zFe3   (:,:,:)       * tmask(:,:,:) )   ! Fe3+ 
     202         IF( iom_use("FeL1")   )  CALL iom_put("FeL1"   , zFeL1  (:,:,:)       * tmask(:,:,:) )   ! FeL1 
     203         IF( iom_use("TL1")    )  CALL iom_put("TL1"    , zTL1   (:,:,:)       * tmask(:,:,:) )   ! TL1 
     204         IF( iom_use("Totlig") )  CALL iom_put("Totlig" , ztotlig(:,:,:)       * tmask(:,:,:) )   ! TL 
     205         IF( iom_use("Biron")  )  CALL iom_put("Biron"  , biron  (:,:,:)  * 1e9 * tmask(:,:,:) )   ! biron 
     206         IF( iom_use("FESCAV") )  CALL iom_put("FESCAV" , zscav3d(:,:,:)  * 1e9 * tmask(:,:,:) * zrfact2 ) 
     207         IF( iom_use("FECOLL") )  CALL iom_put("FECOLL" , zcoll3d(:,:,:)  * 1e9 * tmask(:,:,:) * zrfact2 ) 
     208         IF( iom_use("LGWCOLL"))  CALL iom_put("LGWCOLL", zlcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 
    220209      ENDIF 
    221210 
Note: See TracChangeset for help on using the changeset viewer.