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

Ignore:
Timestamp:
2020-04-17T00:17:29+02:00 (4 years ago)
Author:
aumont
Message:

make parameterizations in PISCES-operationnal more similar to thos of PISCES-QUOTA (prey switching, optimal allocation, size, ...)

File:
1 edited

Legend:

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

    r12537 r12759  
    6161   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   concdfe    !: Limitation of diatoms uptake of Fe 
    6262   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   concnfe    !: Limitation of Nano uptake of Fe 
     63   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanofer   !: Limitation of Fe uptake by nanophyto 
     64   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatfer   !: Limitation of Fe uptake by diatoms 
    6365 
    6466   ! Coefficient for iron limitation following Flynn and Hipkin (1999) 
     
    8688      ! 
    8789      INTEGER  ::   ji, jj, jk 
    88       REAL(wp) ::   zlim1, zlim2, zlim3, zlim4, zno3, zferlim 
    89       REAL(wp) ::   zconcd, zconcd2, zconcn, zconcn2 
     90      REAL(wp) ::   zlim1, zlim2, zlim3, zlim4, zno3, zferlim, zcoef 
    9091      REAL(wp) ::   z1_trbdia, z1_trbphy, ztem1, ztem2, zetot1, zetot2 
    9192      REAL(wp) ::   zdenom, zratio, zironmin 
    9293      REAL(wp) ::   zconc1d, zconc1dnh4, zconc0n, zconc0nnh4    
     94      REAL(wp) ::   fananof, fadiatf, znutlim, zfalim 
    9395      !!--------------------------------------------------------------------- 
    9496      ! 
    9597      IF( ln_timing )   CALL timing_start('p4z_lim') 
     98      ! 
     99      sizena(:,:,:) = 0.0  ;  sizeda(:,:,:) = 0.0 
    96100      ! 
    97101      DO jk = 1, jpkm1 
     
    110114               ! that increasing biomass is made of generally bigger cells 
    111115               !------------------------------------------------------------ 
    112                zconcd   = MAX( 0.e0 , trb(ji,jj,jk,jpdia) - xsizedia ) 
    113                zconcd2  = trb(ji,jj,jk,jpdia) - zconcd 
    114                zconcn   = MAX( 0.e0 , trb(ji,jj,jk,jpphy) - xsizephy ) 
    115                zconcn2  = trb(ji,jj,jk,jpphy) - zconcn 
    116116               z1_trbphy   = 1. / ( trb(ji,jj,jk,jpphy) + rtrn ) 
    117117               z1_trbdia   = 1. / ( trb(ji,jj,jk,jpdia) + rtrn ) 
    118118 
    119                concdfe(ji,jj,jk) = MAX( concdfer, ( zconcd2 * concdfer + concdfer * xsizerd * zconcd ) * z1_trbdia ) 
    120                zconc1d           = MAX( concdno3, ( zconcd2 * concdno3 + concdno3 * xsizerd * zconcd ) * z1_trbdia ) 
    121                zconc1dnh4        = MAX( concdnh4, ( zconcd2 * concdnh4 + concdnh4 * xsizerd * zconcd ) * z1_trbdia ) 
    122  
    123                concnfe(ji,jj,jk) = MAX( concnfer, ( zconcn2 * concnfer + concnfer * xsizern * zconcn ) * z1_trbphy ) 
    124                zconc0n           = MAX( concnno3, ( zconcn2 * concnno3 + concnno3 * xsizern * zconcn ) * z1_trbphy ) 
    125                zconc0nnh4        = MAX( concnnh4, ( zconcn2 * concnnh4 + concnnh4 * xsizern * zconcn ) * z1_trbphy ) 
     119               concnfe(ji,jj,jk) = concnfer * sizen(ji,jj,jk)**0.81 
     120               zconc0n           = concnno3 * sizen(ji,jj,jk)**0.81 
     121               zconc0nnh4        = concnnh4 * sizen(ji,jj,jk)**0.81 
     122 
     123               concdfe(ji,jj,jk) = concdfer * sized(ji,jj,jk)**0.81  
     124               zconc1d           = concdno3 * sized(ji,jj,jk)**0.81  
     125               zconc1dnh4        = concdnh4 * sized(ji,jj,jk)**0.81   
     126 
     127               ! Computation of the optimal allocation parameters 
     128               ! Based on the different papers by Pahlow et al., and  
     129               ! Smith et al. 
     130               ! --------------------------------------------------- 
     131 
     132               ! Nanophytoplankton 
     133               znutlim = biron(ji,jj,jk) / concnfe(ji,jj,jk) 
     134               fananof = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
     135 
     136               ! Diatoms 
     137               znutlim = biron(ji,jj,jk) / concdfe(ji,jj,jk) 
     138               fadiatf = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    126139 
    127140               ! Michaelis-Menten Limitation term by nutrients of 
     
    144157               ! Michaelis-Menten Limitation term by nutrients: Nanophyto 
    145158               ! -------------------------------------------------------- 
     159               ! Limitation of Fe uptake 
     160               zfalim = (1.-fananof) / fananof 
     161               xnanofer(ji,jj,jk) = (1. - fananof) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * concnfe(ji,jj,jk) ) 
     162 
     163               ! Limitation of nanophytoplankton growth 
    146164               zdenom = 1. /  ( zconc0n * zconc0nnh4 + zconc0nnh4 * trb(ji,jj,jk,jpno3) + zconc0n * trb(ji,jj,jk,jpnh4) ) 
    147165               xnanono3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * zconc0nnh4 * zdenom 
     
    163181               !   Michaelis-Menten Limitation term by nutrients : Diatoms 
    164182               !   ------------------------------------------------------- 
     183               ! Limitation of Fe uptake 
     184               zfalim = (1.-fadiatf) / fadiatf 
     185               xdiatfer(ji,jj,jk) = (1. - fadiatf) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * concdfe(ji,jj,jk) ) 
     186 
     187               ! Limitation of diatoms growth 
    165188               zdenom   = 1. / ( zconc1d * zconc1dnh4 + zconc1dnh4 * trb(ji,jj,jk,jpno3) + zconc1d * trb(ji,jj,jk,jpnh4) ) 
    166189               xdiatno3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * zconc1dnh4 * zdenom 
     
    184207         END DO 
    185208      END DO 
     209 
     210      ! Size estimation of phytoplankton based on total biomass 
     211      ! Assumes that larger biomass implies addition of larger cells 
     212      ! ------------------------------------------------------------ 
     213      DO jk = 1, jpkm1 
     214         DO jj = 1, jpj 
     215            DO ji = 1, jpi 
     216               zcoef = trb(ji,jj,jk,jpphy) - MIN(xsizephy, trb(ji,jj,jk,jpphy) ) 
     217               sizena(ji,jj,jk) = 1. + ( xsizern -1.0 ) * zcoef / ( xsizephy + zcoef ) 
     218               zcoef = trb(ji,jj,jk,jpdia) - MIN(xsizedia, trb(ji,jj,jk,jpdia) ) 
     219               sizeda(ji,jj,jk) = 1. + ( xsizerd - 1.0 ) * zcoef / ( xsizedia + zcoef ) 
     220 
     221            END DO 
     222         END DO 
     223      END DO 
     224 
    186225 
    187226      ! Compute the fraction of nanophytoplankton that is made of calcifiers 
     
    235274        IF( iom_use( "LNFe"    ) )   CALL iom_put( "LNFe"   , xlimnfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
    236275        IF( iom_use( "LDFe"    ) )   CALL iom_put( "LDFe"   , xlimdfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     276        IF( iom_use( "SIZEN"   ) )   CALL iom_put( "SIZEN"  , sizen(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     277        IF( iom_use( "SIZED"   ) )   CALL iom_put( "SIZED"  , sized(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
    237278      ENDIF 
    238279      ! 
     
    315356         &      xnanonh4(jpi,jpj,jpk), xdiatnh4(jpi,jpj,jpk),       & 
    316357         &      xnanopo4(jpi,jpj,jpk), xdiatpo4(jpi,jpj,jpk),       & 
     358         &      xnanofer(jpi,jpj,jpk), xdiatfer(jpi,jpj,jpk),       & 
    317359         &      xlimphy (jpi,jpj,jpk), xlimdia (jpi,jpj,jpk),       & 
    318360         &      xlimnfe (jpi,jpj,jpk), xlimdfe (jpi,jpj,jpk),       & 
Note: See TracChangeset for help on using the changeset viewer.