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

Ignore:
Timestamp:
2021-01-07T23:09:56+01:00 (3 years ago)
Author:
aumont
Message:

numerous updates to PISCES, PISCES-QUOTA and the sediment module

File:
1 edited

Legend:

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

    r13233 r14276  
    6666      REAL(wp) ::  zsiloss, zcaloss, zws3, zws4, zwsc, zdep 
    6767      REAL(wp) ::  zwstpoc, zwstpon, zwstpop 
    68       REAL(wp) ::  ztrfer, ztrpo4s, ztrdp, zwdust, zmudia, ztemp 
     68      REAL(wp) ::  ztrpo4s, ztrdp, zwdust, zmudia, ztemp 
    6969      REAL(wp) ::  xdiano3, xdianh4 
    7070      ! 
     
    7373      REAL(wp), DIMENSION(jpi,jpj    ) :: zwsbio3, zwsbio4 
    7474      REAL(wp), DIMENSION(jpi,jpj    ) :: zsedcal, zsedsi, zsedc 
    75       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zsoufer, zlight 
    76       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrpo4, ztrdop, zirondep, zpdep 
    77       REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: zsidep, zironice 
     75      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zsoufer, zlight, ztrfer 
     76      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrpo4, ztrdop, zirondep, zpdep, zsidep 
     77      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: zironice 
    7878      !!--------------------------------------------------------------------- 
    7979      ! 
     
    137137      IF( ln_dust ) THEN 
    138138         !                                               
    139          ALLOCATE( zsidep(jpi,jpj), zpdep(jpi,jpj,jpk), zirondep(jpi,jpj,jpk) ) 
     139         ALLOCATE( zsidep(jpi,jpj,jpk), zpdep(jpi,jpj,jpk), zirondep(jpi,jpj,jpk) ) 
    140140 
    141141         ! Iron, P and Si deposition at the surface 
     
    154154         ! and the solubility are hard coded 
    155155         ! ---------------------------------------------------------------- 
    156          zsidep(:,:)   = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 28.1  
    157          zpdep (:,:,1) = 0.1 * 0.021 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 31. / po4r  
     156         ! Si crustal abundance is about 26.9% by mass and 7.5% is soluble 
     157         ! (see for instance, Tegen and Kohfeld, 2006). 
     158         zsidep(:,:,1) = 0.269 * 0.075 * dust(:,:) * rfact2 / e3t_n(:,:,1) / 28.1  
     159         ! P Crustal abundance is about 0.1% by mass and about 10% of it soluble 
     160         ! (Paytan and McLaughlin, 2007). 
     161         zpdep (:,:,1) = 0.1 * 1.e-3 * dust(:,:) * rfact2 / e3t_n(:,:,1) / 31. / po4r  
    158162 
    159163         ! Iron solubilization of particles in the water column 
     
    168172         DO jk = 2, jpkm1 
    169173            zirondep(:,:,jk) = dust(:,:) * mfrac * zwdust * rfact2 * EXP( -gdept_n(:,:,jk) / (250. * wdust) ) 
    170             zpdep   (:,:,jk) = zirondep(:,:,jk) * 0.38 / po4r 
     174            zpdep   (:,:,jk) = zirondep(:,:,jk) * 1.e-3 / mfrac * 55.85 / 31. 
     175            zsidep  (:,:,jk) = zirondep(:,:,jk) * 0.269 / mfrac * 55.85 / 28.1 
    171176         END DO 
    172177 
    173178         ! Solubilization of particles in the water column (Si, P, Fe) 
    174          tra(:,:,1,jpsil) = tra(:,:,1,jpsil) + zsidep  (:,:) 
    175179         DO jk = 1, jpkm1 
    176180            tra(:,:,jk,jppo4) = tra(:,:,jk,jppo4) + zpdep   (:,:,jk) 
    177181            tra(:,:,jk,jpfer) = tra(:,:,jk,jpfer) + zirondep(:,:,jk)  
     182            tra(:,:,jk,jpsil) = tra(:,:,jk,jpsil) + zsidep  (:,:,jk) 
    178183         ENDDO 
    179184         !  
     
    299304                 zflx = (  trb(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj)   & 
    300305                   &     + trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) ) * 1E6 
    301                  zbureff(ji,jj) = 0.013 + 0.53 * zflx**2 / ( 7.0 + zflx )**2 
     306                 zbureff(ji,jj) = 0.013 + 0.13 * zflx**2 / ( 7.0 + zflx )**2 
    302307              ENDIF 
    303308            END DO 
     
    306311      ENDIF 
    307312 
    308       ! Fraction of dSi that is remineralized in the sediments. This is  
    309       ! set so that the burial in sediments equals the total input of Si 
    310       ! by rivers and dust (sedsilfrac) 
    311       ! ---------------------------------------------------------------- 
     313      ! Fraction of dSi that is dissolved in the sediments. This fraction is   
     314      ! set to a constant value in p4zsbc 
     315      ! -------------------------------------------------------------------- 
    312316      IF( .NOT.lk_sed )  zrivsil = 1._wp - sedsilfrac 
    313317 
     
    331335         ! modeled. The amount of CaCO3 that dissolves in the sediments 
    332336         ! is computed using a metamodel constructed from Archer (1996) 
    333          ! ------------------------------------------------------------ 
     337         ! A minimum set to sedcalfrac is preserved. This value is defined 
     338         ! in p4zsbc 
     339         ! --------------------------------------------------------------- 
    334340         DO jj = 1, jpj 
    335341            DO ji = 1, jpi 
     
    341347               tra(ji,jj,ikt,jpsil) = tra(ji,jj,ikt,jpsil) + zsiloss * zrivsil  
    342348               ! 
    343                zfactcal = MIN( excess(ji,jj,ikt), 0.2 ) 
    344                zfactcal = MIN( 1., 1.3 * ( 0.2 - zfactcal ) / ( 0.4 - zfactcal ) ) 
     349               zfactcal = MAX(-0.1, MIN( excess(ji,jj,ikt), 0.2 ) ) 
     350               zfactcal = 0.3 + 0.7 * MIN( 1., (0.1 + zfactcal) / ( 0.5 - zfactcal ) ) 
    345351               zrivalk  = sedcalfrac * zfactcal 
    346352               tra(ji,jj,ikt,jptal) =  tra(ji,jj,ikt,jptal) + zcaloss * zrivalk * 2.0 
     
    394400               zws4 = zwsbio4(ji,jj) * zdep 
    395401               zws3 = zwsbio3(ji,jj) * zdep 
     402               ! Fraction that is permanently buried in the sediments 
    396403               zrivno3 = 1. - zbureff(ji,jj) 
    397404               zwstpoc = trb(ji,jj,ikt,jpgoc) * zws4 + trb(ji,jj,ikt,jppoc) * zws3 
     405               ! Denitrification in the sediments 
    398406               zpdenit  = MIN( 0.5 * ( trb(ji,jj,ikt,jpno3) - rtrn ) / rdenit, zdenit2d(ji,jj) * zwstpoc * zrivno3 ) 
     407               ! Fraction that is not denitrified 
    399408               z1pdenit = zwstpoc * zrivno3 - zpdenit 
     409               ! Oxic remineralization of organic matter in the sediments 
    400410               zolimit = MIN( ( trb(ji,jj,ikt,jpoxy) - rtrn ) / o2ut, z1pdenit * ( 1.- nitrfac(ji,jj,ikt) ) ) 
     411               ! The fraction that cannot be denitrified nor oxidized by O2 
     412               ! is released back to the water column as DOC 
    401413               tra(ji,jj,ikt,jpdoc) = tra(ji,jj,ikt,jpdoc) + z1pdenit - zolimit 
     414               ! Update of the tracers concentrations 
    402415               tra(ji,jj,ikt,jppo4) = tra(ji,jj,ikt,jppo4) + zpdenit + zolimit 
    403416               tra(ji,jj,ikt,jpnh4) = tra(ji,jj,ikt,jpnh4) + zpdenit + zolimit 
     
    408421               sdenit(ji,jj) = rdenit * zpdenit * e3t_n(ji,jj,ikt) 
    409422               zsedc(ji,jj)   = (1. - zrivno3) * zwstpoc * e3t_n(ji,jj,ikt) 
     423               ! PISCES-QUOTA (p5z) 
    410424               IF( ln_p5z ) THEN 
    411425                  zwstpop              = trb(ji,jj,ikt,jpgop) * zws4 + trb(ji,jj,ikt,jppop) * zws3 
     
    421435      ! Nitrogen fixation process : light limitation of diazotrophy 
    422436      ! Small source of iron from particulate inorganic iron (photochemistry) 
     437      ! This is a purely adhoc param. 
    423438      !---------------------------------------------------------------------- 
    424439      DO jk = 1, jpkm1 
    425440         zlight (:,:,jk) =  ( 1.- EXP( -etot_ndcy(:,:,jk) / diazolight ) ) * ( 1. - fr_i(:,:) )  
    426          zsoufer(:,:,jk) = zlight(:,:,jk) * 2E-11 / ( 2E-11 + biron(:,:,jk) ) 
     441         zsoufer(:,:,jk) = zlight(:,:,jk) * 1E-10 / ( 1E-10 + biron(:,:,jk) ) 
    427442      ENDDO 
    428443 
     
    438453            DO jj = 1, jpj 
    439454               DO ji = 1, jpi 
    440                   ! Potential nitrogen fixation dependant on temperature and iron 
     455                  ! Potential nitrogen fixation dependant on temperature 
    441456                  ztemp = tsn(ji,jj,jk,jp_tem) 
    442                   zmudia = MAX( 0.,-0.001096*ztemp**2 + 0.057*ztemp -0.637 ) * 7.625 
    443                   xdianh4 = trb(ji,jj,jk,jpnh4) / ( concnnh4 + trb(ji,jj,jk,jpnh4) ) 
    444                   xdiano3 = trb(ji,jj,jk,jpno3) / ( concnno3 + trb(ji,jj,jk,jpno3) ) * (1. - xdianh4) 
    445                   zlim = ( 1.- xdiano3 - xdianh4 ) 
    446                   ! Nitrogen fixation is almost fully halted when the N  
    447                   ! limitation term (xdiano3+xdianh4) is > 0.9 
    448                   IF( zlim <= 0.1 )   zlim = 0.01 
     457                  zmudia = MAX( 0.,-0.001096*ztemp**2 + 0.057*ztemp -0.637 ) / rno3 
     458                  ! Nitrogen fixation is inhibited when enough NO3 and/or NH4 
     459                  zlim = ( 1.- xnanonh4(ji,jj,jk) - xnanono3(ji,jj,jk) ) 
    449460                  zfact = zlim * rfact2 
    450                   ztrfer = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 
    451                   ztrpo4(ji,jj,jk) = trb(ji,jj,jk,jppo4) / ( 1E-6 + trb(ji,jj,jk,jppo4) ) 
     461                  ! Nitrogen fixation limitation by PO4 and Fe 
     462                  ztrfer(ji,jj,jk) = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 
     463                  ztrpo4(ji,jj,jk) = trb(ji,jj,jk,jppo4) / ( concnnh4 + trb(ji,jj,jk,jppo4) ) 
    452464                  ztrdp = ztrpo4(ji,jj,jk) 
    453                   nitrpot(ji,jj,jk) =  zmudia * r1_rday * zfact * MIN( ztrfer, ztrdp ) * zlight(ji,jj,jk) 
     465                  nitrpot(ji,jj,jk) =  zmudia * r1_rday * zfact * MIN( ztrfer(ji,jj,jk), ztrdp ) * zlight(ji,jj,jk) 
    454466               END DO 
    455467            END DO 
     
    460472            DO jj = 1, jpj 
    461473               DO ji = 1, jpi 
    462                   ! Potential nitrogen fixation dependant on temperature and iron 
     474                  ! Potential nitrogen fixation dependant on temperature 
    463475                  ztemp = tsn(ji,jj,jk,jp_tem) 
    464476                  zmudia = MAX( 0.,-0.001096*ztemp**2 + 0.057*ztemp -0.637 ) * 7.625 
     477                  ! Nitrogen fixation is inhibited when enough NO3 and/or NH4 
    465478                  xdianh4 = trb(ji,jj,jk,jpnh4) / ( concnnh4 + trb(ji,jj,jk,jpnh4) ) 
    466479                  xdiano3 = trb(ji,jj,jk,jpno3) / ( concnno3 + trb(ji,jj,jk,jpno3) ) * (1. - xdianh4) 
    467480                  zlim = ( 1.- xdiano3 - xdianh4 ) 
    468  
    469                   ! Nitrogen fixation is almost fully halted when the N  
    470                   ! limitation term (xdiano3+xdianh4) is > 0.9 
    471                   IF( zlim <= 0.1 )   zlim = 0.01 
    472481                  zfact = zlim * rfact2 
    473                   ztrfer = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 
     482                  ! Nitrogen fixation limitation by PO4/DOP and Fe 
     483                  ztrfer(ji,jj,jk) = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 
    474484                  ztrpo4(ji,jj,jk) = trb(ji,jj,jk,jppo4) / ( 1E-6 + trb(ji,jj,jk,jppo4) ) 
    475485                  ztrdop(ji,jj,jk) = trb(ji,jj,jk,jpdop) / ( 1E-6 + trb(ji,jj,jk,jpdop) ) * (1. - ztrpo4(ji,jj,jk)) 
    476486                  ztrdp = ztrpo4(ji,jj,jk) + ztrdop(ji,jj,jk) 
    477                   nitrpot(ji,jj,jk) =  zmudia * r1_rday * zfact * MIN( ztrfer, ztrdp ) * zlight(ji,jj,jk) 
     487                  nitrpot(ji,jj,jk) =  zmudia * r1_rday * zfact * MIN( ztrfer(ji,jj,jk), ztrdp ) * zlight(ji,jj,jk) 
    478488               END DO 
    479489            END DO 
     
    490500                  zfact = nitrpot(ji,jj,jk) * nitrfix 
    491501                  ! 1/3 of the diazotrophs growth is supposed to be excreted 
    492                   ! as NH4. 1/3 as DOC and the rest is routed POC and GOC as  
     502                  ! as NH4. 1/3 as DOC and the rest is routed to POC/GOC as  
    493503                  ! a result of mortality by predation. Completely adhoc param  
    494504                  tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zfact / 3.0 
     
    499509                  tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zfact * 1.0 / 3.0 * 1.0 / 3.0 
    500510                  tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + ( o2ut + o2nit ) * zfact * 2.0 / 3.0 + o2nit * zfact / 3.0 
    501                   ! Fe/c of diazotrophs is assumed to be 30umol Fe/mol C 
    502                   tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - 30E-6 * zfact * 1.0 / 3.0 
    503                   tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 30E-6 * zfact * 1.0 / 3.0 * 2.0 / 3.0 
    504                   tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + 30E-6 * zfact * 1.0 / 3.0 * 1.0 / 3.0 
    505                   tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday 
     511                  ! Fe/c of diazotrophs is assumed to be 30umol Fe/mol C at max 
     512                  tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0 
     513                  tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0 * 2.0 / 3.0 
     514                  tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0 * 1.0 / 3.0 
     515                  tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + 0.005 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday 
     516                  tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + concdnh4 / ( concdnh4 + trb(ji,jj,jk,jppo4) ) & 
     517                  &                     * 0.001 * trb(ji,jj,jk,jpdoc) * xstep 
    506518              END DO 
    507519            END DO  
     
    533545                  tra(ji,jj,jk,jpgop) = tra(ji,jj,jk,jpgop) + 16.0 / 46.0 * zfact * 1.0 / 3.0 * 1.0 /3.0 
    534546                  tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + ( o2ut + o2nit ) * zfact * 2.0 / 3.0 + o2nit * zfact / 3.0 
    535                   ! Fe/c of diazotrophs is assumed to be 30umol Fe/mol C 
    536                   tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - 30E-6 * zfact * 1.0 / 3.0  
    537                   tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 30E-6 * zfact * 1.0 / 3.0 * 2.0 / 3.0 
    538                   tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + 30E-6 * zfact * 1.0 / 3.0 * 1.0 / 3.0 
     547                  ! Fe/c of diazotrophs is assumed to be 30umol Fe/mol C at max 
     548                  tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0  
     549                  tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0 * 2.0 / 3.0 
     550                  tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0 * 1.0 / 3.0 
    539551                  tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday 
    540552              END DO 
     
    558570            IF( iom_use("SedSi" ) )  CALL iom_put( "SedSi",  zsedsi (:,:) * zfact ) ! Permanent burial of bSi in sediments 
    559571            IF( iom_use("SedC" ) )   CALL iom_put( "SedC",   zsedc  (:,:) * zfact ) ! Permanent burial of OC in sediments 
    560             IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", sdenit (:,:) * zfact * rno3 ) ! Denitrification in the sediments 
     572!            IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", sdenit (:,:) * zfact * rno3 ) ! Denitrification in the sediments 
     573            IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", zdenit2d(:,:) ) ! Denitrification in the sediments 
    561574         ENDIF 
    562575      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.