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

    r13233 r14276  
    6363   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanofer   !: Limitation of Fe uptake by nanophyto 
    6464   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatfer   !: Limitation of Fe uptake by diatoms 
     65   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xqfuncfecd, xqfuncfecn 
    6566 
    6667   ! Coefficient for iron limitation following Flynn and Hipkin (1999) 
     
    9091      ! 
    9192      INTEGER  ::   ji, jj, jk 
    92       REAL(wp) ::   zlim1, zlim2, zlim3, zlim4, zno3, zferlim, zcoef 
     93      REAL(wp) ::   zlim1, zlim2, zlim3, zlim4, zcoef 
    9394      REAL(wp) ::   z1_trbdia, z1_trbphy, ztem1, ztem2, zetot1, zetot2 
    94       REAL(wp) ::   zdenom, zratio, zironmin 
     95      REAL(wp) ::   zdenom, zratio, zironmin, zbactno3, zbactnh4 
    9596      REAL(wp) ::   zconc1d, zconc1dnh4, zconc0n, zconc0nnh4    
    9697      REAL(wp) ::   fananof, fadiatf, znutlim, zfalim 
     98      REAL(wp) ::   znutlimtot, zlimno3, zlimnh4, zbiron 
    9799      !!--------------------------------------------------------------------- 
    98100      ! 
    99101      IF( ln_timing )   CALL timing_start('p4z_lim') 
    100102      ! 
    101       sizena(:,:,:) = 0.0  ;  sizeda(:,:,:) = 0.0 
     103      sizena(:,:,:) = 1.0  ;  sizeda(:,:,:) = 1.0 
    102104      ! 
    103105      DO jk = 1, jpkm1 
    104106         DO jj = 1, jpj 
    105107            DO ji = 1, jpi 
    106                 
    107                ! Tuning of the iron concentration to a minimum level that  
    108                ! is set to the detection limit 
    109                ! -------------------------------------------------------- 
    110                zno3    = trb(ji,jj,jk,jpno3) / 40.e-6 
    111                zferlim = MAX( 3e-11 * zno3 * zno3, 5e-12 ) 
    112                zferlim = MIN( zferlim, 7e-11 ) 
    113                trb(ji,jj,jk,jpfer) = MAX( trb(ji,jj,jk,jpfer), zferlim ) 
    114  
    115108               ! Computation of a variable Ks of diatoms taking into account 
    116109               ! that increasing biomass is made of generally bigger cells 
     
    134127 
    135128               ! Nanophytoplankton 
    136                znutlim = biron(ji,jj,jk) / concnfe(ji,jj,jk) 
     129               zbiron = ( 75.0 * ( 1.0 - plig(ji,jj,jk) ) + plig(ji,jj,jk) ) * biron(ji,jj,jk) 
     130               znutlim = zbiron / concnfe(ji,jj,jk) 
    137131               fananof = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    138132 
    139133               ! Diatoms 
    140                znutlim = biron(ji,jj,jk) / concdfe(ji,jj,jk) 
     134               znutlim = zbiron / concdfe(ji,jj,jk) 
    141135               fadiatf = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    142136 
     
    144138               ! heterotrophic bacteria 
    145139               ! ------------------------------------------------- 
    146                zdenom = 1. /  ( concbno3 * concbnh4 + concbnh4 * trb(ji,jj,jk,jpno3) + concbno3 * trb(ji,jj,jk,jpnh4) ) 
    147                xnanono3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * concbnh4 * zdenom 
    148                xnanonh4(ji,jj,jk) = trb(ji,jj,jk,jpnh4) * concbno3 * zdenom 
     140               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( concbno3 + trb(ji,jj,jk,jpnh4) ) 
     141               zlimno3 = trb(ji,jj,jk,jpno3) / ( concbno3 + trb(ji,jj,jk,jpno3) ) 
     142               znutlimtot = ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) / ( concbno3 + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 
     143               zbactnh4 = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
     144               zbactno3 = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
    149145               ! 
    150                zlim1    = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) 
     146               zlim1    = zbactno3 + zbactnh4 
    151147               zlim2    = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + concbnh4 ) 
    152148               zlim3    = trb(ji,jj,jk,jpfer) / ( concbfe + trb(ji,jj,jk,jpfer) ) 
     
    166162               ! Limitation of Fe uptake (Quota formalism) 
    167163               zfalim = (1.-fananof) / fananof 
    168                xnanofer(ji,jj,jk) = (1. - fananof) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * concnfe(ji,jj,jk) ) 
     164               xnanofer(ji,jj,jk) = (1. - fananof) * zbiron / ( zbiron + zfalim * concnfe(ji,jj,jk) ) 
    169165 
    170166               ! Limitation of nanophytoplankton growth 
    171                zdenom = 1. /  ( zconc0n * zconc0nnh4 + zconc0nnh4 * trb(ji,jj,jk,jpno3) + zconc0n * trb(ji,jj,jk,jpnh4) ) 
    172                xnanono3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * zconc0nnh4 * zdenom 
    173                xnanonh4(ji,jj,jk) = trb(ji,jj,jk,jpnh4) * zconc0n    * zdenom 
     167               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( zconc0n + trb(ji,jj,jk,jpnh4) ) 
     168               zlimno3 = trb(ji,jj,jk,jpno3) / ( zconc0n + trb(ji,jj,jk,jpno3) ) 
     169               znutlimtot = ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) / ( zconc0n + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 
     170               xnanonh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
     171               xnanono3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
    174172               ! 
    175173               zlim1    = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) 
     
    181179               ! proposed by Flynn and Hipkin (1999) 
    182180               zironmin = xcoef1 * trb(ji,jj,jk,jpnch) * z1_trbphy + xcoef2 * zlim1 + xcoef3 * xnanono3(ji,jj,jk) 
     181               xqfuncfecn(ji,jj,jk) = zironmin + qnfelim 
    183182               zlim3    = MAX( 0.,( zratio - zironmin ) / qnfelim ) 
    184183               xnanopo4(ji,jj,jk) = zlim2 
     
    190189               ! Limitation of Fe uptake (Quota formalism) 
    191190               zfalim = (1.-fadiatf) / fadiatf 
    192                xdiatfer(ji,jj,jk) = (1. - fadiatf) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * concdfe(ji,jj,jk) ) 
     191               xdiatfer(ji,jj,jk) = (1. - fadiatf) * zbiron / ( zbiron + zfalim * concdfe(ji,jj,jk) ) 
    193192 
    194193               ! Limitation of diatoms growth 
    195                zdenom   = 1. / ( zconc1d * zconc1dnh4 + zconc1dnh4 * trb(ji,jj,jk,jpno3) + zconc1d * trb(ji,jj,jk,jpnh4) ) 
    196                xdiatno3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * zconc1dnh4 * zdenom 
    197                xdiatnh4(ji,jj,jk) = trb(ji,jj,jk,jpnh4) * zconc1d    * zdenom 
     194               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( zconc1d + trb(ji,jj,jk,jpnh4) ) 
     195               zlimno3 = trb(ji,jj,jk,jpno3) / ( zconc1d + trb(ji,jj,jk,jpno3) ) 
     196               znutlimtot = ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) / ( zconc1d + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 
     197               xdiatnh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn )  
     198               xdiatno3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
    198199               ! 
    199200               zlim1    = xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) 
     
    206207               ! proposed by Flynn and Hipkin (1999) 
    207208               zironmin = xcoef1 * trb(ji,jj,jk,jpdch) * z1_trbdia + xcoef2 * zlim1 + xcoef3 * xdiatno3(ji,jj,jk) 
     209               xqfuncfecd(ji,jj,jk) = zironmin + qdfelim 
    208210               zlim4    = MAX( 0., ( zratio - zironmin ) / qdfelim ) 
    209211               xdiatpo4(ji,jj,jk) = zlim2 
     
    238240         DO jj = 1, jpj 
    239241            DO ji = 1, jpi 
    240                zlim1 =  ( trb(ji,jj,jk,jpno3) * concnnh4 + trb(ji,jj,jk,jpnh4) * concnno3 )    & 
    241                   &   / ( concnno3 * concnnh4 + concnnh4 * trb(ji,jj,jk,jpno3) + concnno3 * trb(ji,jj,jk,jpnh4) )  
     242               zlim1  = xnanonh4(ji,jj,jk) + xnanono3(ji,jj,jk)  
    242243               zlim2  = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + concnnh4 ) 
    243                zlim3  = trb(ji,jj,jk,jpfer) / ( trb(ji,jj,jk,jpfer) +  5.E-11   ) 
    244                ztem1  = MAX( 0., tsn(ji,jj,jk,jp_tem) ) 
     244               zlim3  = trb(ji,jj,jk,jpfer) / ( trb(ji,jj,jk,jpfer) +  6.E-11   ) 
     245               ztem1  = MAX( 0., tsn(ji,jj,jk,jp_tem) + 1.8) 
    245246               ztem2  = tsn(ji,jj,jk,jp_tem) - 10. 
    246247               zetot1 = MAX( 0., etot_ndcy(ji,jj,jk) - 1.) / ( 4. + etot_ndcy(ji,jj,jk) )  
    247                zetot2 = 30. / ( 30. + etot_ndcy(ji,jj,jk) )  
     248               zetot2 = 30. / ( 30.0 + etot_ndcy(ji,jj,jk) ) 
    248249 
    249250               xfracal(ji,jj,jk) = caco3r * MIN( zlim1, zlim2, zlim3 )                  & 
     
    375376         &      xlimbac (jpi,jpj,jpk), xlimbacl(jpi,jpj,jpk),       & 
    376377         &      concnfe (jpi,jpj,jpk), concdfe (jpi,jpj,jpk),       & 
     378         &      xqfuncfecn(jpi,jpj,jpk), xqfuncfecd(jpi,jpj,jpk),   & 
    377379         &      xlimsi  (jpi,jpj,jpk), STAT=p4z_lim_alloc ) 
    378380      ! 
Note: See TracChangeset for help on using the changeset viewer.