- Timestamp:
- 2021-11-28T18:59:49+01:00 (3 years ago)
- Location:
- NEMO/branches/2021/ticket2632_r14588_theta_sbcblk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/ticket2632_r14588_theta_sbcblk
- Property svn:externals
-
old new 9 9 10 10 # SETTE 11 ^/utils/CI/sette@14244 sette 11 ^/utils/CI/sette@HEAD sette 12
-
- Property svn:externals
-
NEMO/branches/2021/ticket2632_r14588_theta_sbcblk/src/TOP/PISCES/P4Z/p5zlim.F90
r13434 r15548 2 2 !!====================================================================== 3 3 !! *** MODULE p5zlim *** 4 !! TOP : PISCES with variable stoichiometry 4 !! TOP : PISCES-QUOTA : Computes the various nutrient limitation terms 5 !! of phytoplankton 5 6 !!====================================================================== 6 7 !! History : 1.0 ! 2004 (O. Aumont) Original code … … 14 15 USE oce_trc ! Shared ocean-passive tracers variables 15 16 USE trc ! Tracers defined 16 USE p4zlim 17 USE p4zlim ! Nutrient limitation 17 18 USE sms_pisces ! PISCES variables 18 19 USE iom ! I/O manager … … 21 22 PRIVATE 22 23 23 PUBLIC p5z_lim 24 PUBLIC p5z_lim_init 25 PUBLIC p5z_lim_alloc 24 PUBLIC p5z_lim ! called in p4zbio.F90 25 PUBLIC p5z_lim_init ! called in trcsms_pisces.F90 26 PUBLIC p5z_lim_alloc ! called in trcini_pisces.F90 26 27 27 28 !! * Shared module variables 28 REAL(wp), PUBLIC :: concpno3 !: NO3 , PO4 half saturation29 REAL(wp), PUBLIC :: concpnh4 !: NH4 half saturation for p hyto30 REAL(wp), PUBLIC :: concnpo4 !: NH4 half saturation for diatoms31 REAL(wp), PUBLIC :: concppo4 !: NH4 half saturation for diatoms32 REAL(wp), PUBLIC :: concdpo4 !: NH4 half saturation for diatoms33 REAL(wp), PUBLIC :: concpfer !: Iron half saturation for nanophyto29 REAL(wp), PUBLIC :: concpno3 !: NO3 half saturation for picophyto 30 REAL(wp), PUBLIC :: concpnh4 !: NH4 half saturation for picophyto 31 REAL(wp), PUBLIC :: concnpo4 !: PO4 half saturation for nanophyto 32 REAL(wp), PUBLIC :: concppo4 !: PO4 half saturation for picophyto 33 REAL(wp), PUBLIC :: concdpo4 !: PO4 half saturation for diatoms 34 REAL(wp), PUBLIC :: concpfer !: Iron half saturation for picophyto 34 35 REAL(wp), PUBLIC :: concbpo4 !: PO4 half saturation for bacteria 35 REAL(wp), PUBLIC :: xsizepic !: Minimum size criteria for diatoms36 REAL(wp), PUBLIC :: xsizerp !: Size ratio for nanophytoplankton36 REAL(wp), PUBLIC :: xsizepic !: Minimum size criteria for picophyto 37 REAL(wp), PUBLIC :: xsizerp !: Size ratio for picophytoplankton 37 38 REAL(wp), PUBLIC :: qfnopt !: optimal Fe quota for nanophyto 38 REAL(wp), PUBLIC :: qfpopt !: optimal Fe quota for nanophyto39 REAL(wp), PUBLIC :: qfpopt !: optimal Fe quota for picophyto 39 40 REAL(wp), PUBLIC :: qfdopt !: optimal Fe quota for diatoms 40 REAL(wp), PUBLIC :: qnnmin !: optimal Fe quota for diatoms41 REAL(wp), PUBLIC :: qnnmax !: optimal Fe quota for diatoms42 REAL(wp), PUBLIC :: qpnmin !: optimal Fe quota for diatoms43 REAL(wp), PUBLIC :: qpnmax !: optimal Fe quota for diatoms44 REAL(wp), PUBLIC :: qnpmin !: optimal Fe quota for diatoms45 REAL(wp), PUBLIC :: qnpmax !: optimal Fe quota for diatoms46 REAL(wp), PUBLIC :: qppmin !: optimal Fe quota for diatoms47 REAL(wp), PUBLIC :: qppmax !: optimal Fe quota for diatoms48 REAL(wp), PUBLIC :: qndmin !: optimal Fequota for diatoms49 REAL(wp), PUBLIC :: qndmax !: optimal Fequota for diatoms50 REAL(wp), PUBLIC :: qpdmin !: optimal Fequota for diatoms51 REAL(wp), PUBLIC :: qpdmax !: optimal Fequota for diatoms52 REAL(wp), PUBLIC :: qfnmax !: optimal Fe quota for diatoms53 REAL(wp), PUBLIC :: qfpmax !: optimal Fe quota for diatoms54 REAL(wp), PUBLIC :: qfdmax !: optimalFe quota for diatoms55 REAL(wp), PUBLIC :: zpsinh456 REAL(wp), PUBLIC :: zpsino357 REAL(wp), PUBLIC :: zpsiuptk41 REAL(wp), PUBLIC :: qnnmin !: minimum N quota for nanophyto 42 REAL(wp), PUBLIC :: qnnmax !: maximum N quota for nanophyto 43 REAL(wp), PUBLIC :: qpnmin !: minimum P quota for nanophyto 44 REAL(wp), PUBLIC :: qpnmax !: maximum P quota for nanophyto 45 REAL(wp), PUBLIC :: qnpmin !: minimum N quota for nanophyto 46 REAL(wp), PUBLIC :: qnpmax !: maximum N quota for nanophyto 47 REAL(wp), PUBLIC :: qppmin !: minimum P quota for nanophyto 48 REAL(wp), PUBLIC :: qppmax !: maximum P quota for nanophyto 49 REAL(wp), PUBLIC :: qndmin !: minimum N quota for diatoms 50 REAL(wp), PUBLIC :: qndmax !: maximum N quota for diatoms 51 REAL(wp), PUBLIC :: qpdmin !: minimum P quota for diatoms 52 REAL(wp), PUBLIC :: qpdmax !: maximum P quota for diatoms 53 REAL(wp), PUBLIC :: qfnmax !: maximum Fe quota for nanophyto 54 REAL(wp), PUBLIC :: qfpmax !: maximum Fe quota for picophyto 55 REAL(wp), PUBLIC :: qfdmax !: maximum Fe quota for diatoms 56 REAL(wp), PUBLIC :: xpsinh4 !: respiration cost of NH4 assimilation 57 REAL(wp), PUBLIC :: xpsino3 !: respiration cost of NO3 assimilation 58 REAL(wp), PUBLIC :: xpsiuptk !: Mean respiration cost 58 59 59 60 !!* Allometric variations of the quotas 60 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqnnmin !: ??? 61 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqnnmax !: ??? 62 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqpnmin !: ??? 63 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqpnmax !: ??? 64 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqnpmin !: ??? 65 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqnpmax !: ??? 66 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqppmin !: ??? 67 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqppmax !: ??? 68 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqndmin !: ??? 69 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqndmax !: ??? 70 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqpdmin !: ??? 71 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqpdmax !: ??? 72 73 !!* Phytoplankton limitation terms 74 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpicono3 !: ??? 75 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpiconh4 !: ??? 76 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpicopo4 !: ??? 77 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanodop !: ??? 78 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpicodop !: ??? 79 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatdop !: ??? 80 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanofer !: ??? 81 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpicofer !: ??? 82 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatfer !: ??? 83 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimpic !: ??? 84 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimpfe !: ??? 85 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fvnuptk 86 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fvpuptk 87 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fvduptk 88 89 ! Coefficient for iron limitation 61 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqnnmin !: Minimum N quota of nanophyto 62 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqnnmax !: Maximum N quota of nanophyto 63 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqpnmin !: Minimum P quota of nanophyto 64 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqpnmax !: Maximum P quota of picophyto 65 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqnpmin !: Minimum N quota of picophyto 66 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqnpmax !: Maximum N quota of picophyto 67 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqppmin !: Minimum P quota of picophyto 68 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqppmax !: Maximum P quota of picophyto 69 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqndmin !: Minimum N quota of diatoms 70 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqndmax !: Maximum N quota of diatoms 71 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqpdmin !: Minimum P quota of diatoms 72 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqpdmax !: Maximum P quota of diatoms 73 74 !!* Phytoplankton nutrient limitation terms 75 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpicono3 !: Limitation of NO3 uptake by picophyto 76 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpiconh4 !: Limitation of NH4 uptake by picophyto 77 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpicopo4 !: Limitation of PO4 uptake by picophyto 78 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanodop !: Limitation of DOP uptake by nanophyto 79 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpicodop !: Limitation of DOP uptake by picophyto 80 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatdop !: Limitation of DOP uptake by diatoms 81 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpicofer !: Limitation of Fe uptake by picophyto 82 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimpic !: Limitation of picophyto PP by nutrients 83 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimpics !: Limitation of picophyto PP by nutrients 84 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimphys !: Limitation of nanophyto PP by nutrients 85 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimdias !: Limitation of diatoms PP by nutrients 86 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimpfe !: Limitation of picophyto PP by Fe 87 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fvnuptk !: Maximum potential uptake rate of nanophyto 88 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fvpuptk !: Maximum potential uptake rate of picophyto 89 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fvduptk !: Maximum potential uptake rate of diatoms 90 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqfuncfecp !: 91 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimnpn, xlimnpp, xlimnpd 92 93 ! Coefficient for iron limitation following Flynn and Hipkin (1999) 90 94 REAL(wp) :: xcoef1 = 0.00167 / 55.85 91 95 REAL(wp) :: xcoef2 = 1.21E-5 * 14. / 55.85 / 7.625 * 0.5 * 1.5 … … 106 110 !! 107 111 !! ** Purpose : Compute the co-limitations by the various nutrients 108 !! for the various phytoplankton species 112 !! for the various phytoplankton species. Quota based 113 !! approach. The quota model is derived from theoretical 114 !! models proposed by Pahlow and Oschlies (2009) and 115 !! Flynn (2001). Various adaptations from several 116 !! publications by these authors have been also adopted. 109 117 !! 110 !! ** Method : - ??? 118 !! ** Method : Quota based approach. The quota model is derived from 119 !! theoretical models by Pahlow and Oschlies (2009) and 120 !! Flynn (2001). Various adaptations from several publications 121 !! by these authors have been also adopted. 111 122 !!--------------------------------------------------------------------- 112 123 ! … … 117 128 REAL(wp) :: zlim1, zlim2, zlim3, zlim4, zno3, zferlim 118 129 REAL(wp) :: z1_trndia, z1_trnpic, z1_trnphy, ztem1, ztem2, zetot1 119 REAL(wp) :: zratio, zration, zratiof, znutlim, zfalim 130 REAL(wp) :: zratio, zration, zratiof, znutlim, zfalim, zxpsiuptk 120 131 REAL(wp) :: zconc1d, zconc1dnh4, zconc0n, zconc0nnh4, zconc0npo4, zconc0dpo4 121 132 REAL(wp) :: zconc0p, zconc0pnh4, zconc0ppo4, zconcpfe, zconcnfe, zconcdfe 122 133 REAL(wp) :: fanano, fananop, fananof, fadiat, fadiatp, fadiatf 123 REAL(wp) :: fapico, fapicop, fapicof 124 REAL(wp) :: zrpho, zrass, zcoef, zfuptk, zratchl 134 REAL(wp) :: fapico, fapicop, fapicof, zlimpo4, zlimdop 135 REAL(wp) :: zrpho, zrass, zcoef, zfuptk, zratchl, ztrn, ztrp 125 136 REAL(wp) :: zfvn, zfvp, zfvf, zsizen, zsizep, zsized, znanochl, zpicochl, zdiatchl 126 REAL(wp) :: zqfemn, zqfemp, zqfemd, zbactno3, zbactnh4 137 REAL(wp) :: zqfemn, zqfemp, zqfemd, zbactno3, zbactnh4, zbiron 138 REAL(wp) :: znutlimtot, zlimno3, zlimnh4, zlim1f, zsizetmp 139 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zrassn, zrassp, zrassd 127 140 !!--------------------------------------------------------------------- 128 141 ! … … 130 143 ! 131 144 zratchl = 6.0 132 ! 133 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 134 ! 135 ! Tuning of the iron concentration to a minimum level that is set to the detection limit 136 !------------------------------------- 137 zno3 = tr(ji,jj,jk,jpno3,Kbb) / 40.e-6 138 zferlim = MAX( 3e-11 * zno3 * zno3, 5e-12 ) 139 zferlim = MIN( zferlim, 7e-11 ) 140 tr(ji,jj,jk,jpfer,Kbb) = MAX( tr(ji,jj,jk,jpfer,Kbb), zferlim ) 141 142 ! Computation of the mean relative size of each community 145 sizena(:,:,:) = 0.0 ; sizepa(:,:,:) = 0.0 ; sizeda(:,:,:) = 0.0 146 ! 147 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 148 ! Computation of the Chl/C ratio of each phytoplankton group 143 149 ! ------------------------------------------------------- 144 150 z1_trnphy = 1. / ( tr(ji,jj,jk,jpphy,Kbb) + rtrn ) … … 149 155 zdiatchl = tr(ji,jj,jk,jpdch,Kbb) * z1_trndia 150 156 151 ! Computation of a variable Ks for iron on diatoms taking into account 152 ! that increasing biomass is made of generally bigger cells 157 ! Computation of a variable Ks for the different phytoplankton 158 ! group as a function of their relative size. Allometry 159 ! from Edwards et al. (2012) 153 160 !------------------------------------------------ 161 162 ! diatoms 154 163 zsized = sized(ji,jj,jk)**0.81 155 164 zconcdfe = concdfer * zsized … … 158 167 zconc0dpo4 = concdpo4 * zsized 159 168 160 zsizep = 1. 169 ! picophytoplankton 170 zsizep = sizep(ji,jj,jk)**0.81 161 171 zconcpfe = concpfer * zsizep 162 172 zconc0p = concpno3 * zsizep … … 164 174 zconc0ppo4 = concppo4 * zsizep 165 175 166 zsizen = 1. 176 ! nanophytoplankton 177 zsizen = sizen(ji,jj,jk)**0.81 167 178 zconcnfe = concnfer * zsizen 168 179 zconc0n = concnno3 * zsizen … … 173 184 ! From Talmy et al. (2014) and Maranon et al. (2013) 174 185 ! ------------------------------------------------------- 175 xqnnmin(ji,jj,jk) = qnnmin 186 xqnnmin(ji,jj,jk) = qnnmin * sizen(ji,jj,jk)**(-0.36) 176 187 xqnnmax(ji,jj,jk) = qnnmax 177 xqndmin(ji,jj,jk) = qndmin * sized(ji,jj,jk)**(-0. 27)188 xqndmin(ji,jj,jk) = qndmin * sized(ji,jj,jk)**(-0.36) 178 189 xqndmax(ji,jj,jk) = qndmax 179 xqnpmin(ji,jj,jk) = qnpmin 190 xqnpmin(ji,jj,jk) = qnpmin * sizep(ji,jj,jk)**(-0.36) 180 191 xqnpmax(ji,jj,jk) = qnpmax 181 192 … … 183 194 ! Based on the different papers by Pahlow et al., and Smith et al. 184 195 ! ----------------------------------------------------------------- 196 zbiron = ( 75.0 * ( 1.0 - plig(ji,jj,jk) ) + plig(ji,jj,jk) ) * biron(ji,jj,jk) 197 198 ! Nanophytoplankton 185 199 znutlim = MAX( tr(ji,jj,jk,jpnh4,Kbb) / zconc0nnh4, & 186 200 & tr(ji,jj,jk,jpno3,Kbb) / zconc0n) … … 188 202 znutlim = tr(ji,jj,jk,jppo4,Kbb) / zconc0npo4 189 203 fananop = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 190 znutlim = biron(ji,jj,jk)/ zconcnfe204 znutlim = zbiron / zconcnfe 191 205 fananof = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 206 207 ! Picophytoplankton 192 208 znutlim = MAX( tr(ji,jj,jk,jpnh4,Kbb) / zconc0pnh4, & 193 209 & tr(ji,jj,jk,jpno3,Kbb) / zconc0p) … … 195 211 znutlim = tr(ji,jj,jk,jppo4,Kbb) / zconc0ppo4 196 212 fapicop = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 197 znutlim = biron(ji,jj,jk)/ zconcpfe213 znutlim = zbiron / zconcpfe 198 214 fapicof = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 215 216 ! Diatoms 199 217 znutlim = MAX( tr(ji,jj,jk,jpnh4,Kbb) / zconc1dnh4, & 200 218 & tr(ji,jj,jk,jpno3,Kbb) / zconc1d ) … … 202 220 znutlim = tr(ji,jj,jk,jppo4,Kbb) / zconc0dpo4 203 221 fadiatp = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 204 znutlim = biron(ji,jj,jk)/ zconcdfe222 znutlim = zbiron / zconcdfe 205 223 fadiatf = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 206 ! 207 ! Michaelis-Menten Limitation term for nutrients Small bacteria 224 225 ! 226 ! Michaelis-Menten Limitation term by nutrients of 227 ! heterotrophic bacteria 208 228 ! ------------------------------------------------------------- 209 zbactnh4 = tr(ji,jj,jk,jpnh4,Kbb) / ( concbnh4 + tr(ji,jj,jk,jpnh4,Kbb) ) 210 zbactno3 = tr(ji,jj,jk,jpno3,Kbb) / ( concbno3 + tr(ji,jj,jk,jpno3,Kbb) ) * (1. - zbactnh4) 229 zlimnh4 = tr(ji,jj,jk,jpnh4,Kbb) / ( concbnh4 + tr(ji,jj,jk,jpnh4,Kbb) ) 230 zlimno3 = tr(ji,jj,jk,jpno3,Kbb) / ( concbno3 + tr(ji,jj,jk,jpno3,Kbb) ) 231 znutlimtot = ( tr(ji,jj,jk,jpnh4,Kbb) + tr(ji,jj,jk,jpno3,Kbb) ) & 232 & / ( concbno3 + tr(ji,jj,jk,jpnh4,Kbb) + tr(ji,jj,jk,jpno3,Kbb) ) 233 zbactnh4 = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 234 zbactno3 = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 211 235 ! 212 236 zlim1 = zbactno3 + zbactnh4 … … 214 238 zlim3 = biron(ji,jj,jk) / ( concbfe + biron(ji,jj,jk) ) 215 239 zlim4 = tr(ji,jj,jk,jpdoc,Kbb) / ( xkdoc + tr(ji,jj,jk,jpdoc,Kbb) ) 240 241 ! Xlimbac is used for DOC solubilization whereas xlimbacl 242 ! is used for all the other bacterial-dependent term 243 ! ------------------------------------------------------- 216 244 xlimbacl(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) 217 245 xlimbac (ji,jj,jk) = xlimbacl(ji,jj,jk) * zlim4 … … 219 247 ! Michaelis-Menten Limitation term for nutrients Small flagellates 220 248 ! ----------------------------------------------- 221 zfalim = (1.-fanano) / fanano 222 xnanonh4(ji,jj,jk) = (1. - fanano) * tr(ji,jj,jk,jpnh4,Kbb) / ( zfalim * zconc0nnh4 + tr(ji,jj,jk,jpnh4,Kbb) ) 223 xnanono3(ji,jj,jk) = (1. - fanano) * tr(ji,jj,jk,jpno3,Kbb) / ( zfalim * zconc0n + tr(ji,jj,jk,jpno3,Kbb) ) & 224 & * (1. - xnanonh4(ji,jj,jk)) 225 ! 226 zfalim = (1.-fananop) / fananop 227 xnanopo4(ji,jj,jk) = (1. - fananop) * tr(ji,jj,jk,jppo4,Kbb) / ( tr(ji,jj,jk,jppo4,Kbb) + zfalim * zconc0npo4 ) 228 xnanodop(ji,jj,jk) = tr(ji,jj,jk,jpdop,Kbb) / ( tr(ji,jj,jk,jpdop,Kbb) + xkdoc ) & 229 & * ( 1.0 - xnanopo4(ji,jj,jk) ) 230 xnanodop(ji,jj,jk) = 0. 231 ! 249 ztrn = tr(ji,jj,jk,jpnh4,Kbb) + tr(ji,jj,jk,jpno3,Kbb) 250 ztrp = tr(ji,jj,jk,jppo4,Kbb) + tr(ji,jj,jk,jpdop,Kbb) 251 ! 252 ! Limitation of N based nutrients uptake (NO3 and NH4) 253 zfalim = (1.-fanano) / fanano 254 zlimnh4 = tr(ji,jj,jk,jpnh4,Kbb) / ( zconc0n + tr(ji,jj,jk,jpnh4,Kbb) ) 255 zlimno3 = tr(ji,jj,jk,jpno3,Kbb) / ( zconc0n + tr(ji,jj,jk,jpno3,Kbb) ) 256 znutlimtot = (1. - fanano) * ztrn / ( zfalim * zconc0n + ztrn ) 257 xnanonh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 258 xnanono3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 259 ! 260 ! Limitation of P based nutrients (PO4 and DOP) 261 zfalim = (1.-fananop) / fananop 262 zlimpo4 = tr(ji,jj,jk,jppo4,Kbb) / ( tr(ji,jj,jk,jppo4,Kbb) + zconc0npo4 ) 263 zlimdop = tr(ji,jj,jk,jpdop,Kbb) / ( tr(ji,jj,jk,jpdop,Kbb) + zconc0npo4 ) 264 znutlimtot = (1. - fananop) * ztrp / ( zfalim * zconc0npo4 + ztrp ) 265 xnanopo4(ji,jj,jk) = znutlimtot * 100.0 * zlimpo4 / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 266 xnanodop(ji,jj,jk) = znutlimtot * zlimdop / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 267 ! 268 ! Limitation of Fe uptake 232 269 zfalim = (1.-fananof) / fananof 233 xnanofer(ji,jj,jk) = (1. - fananof) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * zconcnfe ) 234 ! 270 xnanofer(ji,jj,jk) = (1. - fananof) * zbiron / ( zbiron + zfalim * zconcnfe ) 271 ! 272 ! The minimum iron quota depends on the size of PSU, respiration 273 ! and the reduction of nitrate following the parameterization 274 ! proposed by Flynn and Hipkin (1999) 235 275 zratiof = tr(ji,jj,jk,jpnfe,Kbb) * z1_trnphy 236 276 zqfemn = xcoef1 * znanochl + xcoef2 + xcoef3 * xnanono3(ji,jj,jk) 277 xqfuncfecn(ji,jj,jk) = zqfemn + qfnopt 237 278 ! 238 279 zration = tr(ji,jj,jk,jpnph,Kbb) * z1_trnphy 239 zration = MIN(xqnnmax(ji,jj,jk), MAX( 2. *xqnnmin(ji,jj,jk), zration ))240 fvnuptk(ji,jj,jk) = 1. / zpsiuptk * rno3 * 2.* xqnnmin(ji,jj,jk) / (zration + rtrn) &280 zration = MIN(xqnnmax(ji,jj,jk), MAX( xqnnmin(ji,jj,jk), zration )) 281 fvnuptk(ji,jj,jk) = 2.5 * xpsiuptk * xqnnmin(ji,jj,jk) / (zration + rtrn) & 241 282 & * MAX(0., (1. - zratchl * znanochl / 12. ) ) 242 283 ! 243 zlim1 = max(0., (zration - 2. *xqnnmin(ji,jj,jk) ) &244 & / (xqnnmax(ji,jj,jk) - 2. *xqnnmin(ji,jj,jk) ) ) * xqnnmax(ji,jj,jk) &284 zlim1 = max(0., (zration - xqnnmin(ji,jj,jk) ) & 285 & / (xqnnmax(ji,jj,jk) - xqnnmin(ji,jj,jk) ) ) * xqnnmax(ji,jj,jk) & 245 286 & / (zration + rtrn) 246 zlim3 = MAX( 0.,( zratiof - zqfemn ) / qfnopt ) 247 xlimnfe(ji,jj,jk) = MIN( 1., zlim3 ) 248 xlimphy(ji,jj,jk) = MIN( 1., zlim1, zlim3 ) 287 ! The value of the optimal quota in the formulation below 288 ! has been found by solving a non linear equation 289 zlim1f = max(0., ( 1.13 - xqnnmin(ji,jj,jk) ) & 290 & / (xqnnmax(ji,jj,jk) - xqnnmin(ji,jj,jk) ) ) * xqnnmax(ji,jj,jk) 291 zlim3 = MAX( 0.,( zratiof - zqfemn ) / qfnopt ) 292 ! computation of the various limitation terms of nanophyto 293 ! growth and PP 294 xlimnfe (ji,jj,jk) = MIN( 1., zlim3 ) 295 xlimphy (ji,jj,jk) = MIN( 1., zlim1, zlim3 ) 296 xlimphys(ji,jj,jk) = MIN( 1., zlim1/( zlim1f + rtrn ), zlim3 ) 297 xlimnpn (ji,jj,jk) = MIN( 1., zlim1) 249 298 ! 250 299 ! Michaelis-Menten Limitation term for nutrients picophytoplankton 251 300 ! ---------------------------------------------------------------- 301 ! Limitation of N based nutrients uptake (NO3 and NH4) 252 302 zfalim = (1.-fapico) / fapico 253 xpiconh4(ji,jj,jk) = (1. - fapico) * tr(ji,jj,jk,jpnh4,Kbb) / ( zfalim * zconc0pnh4 + tr(ji,jj,jk,jpnh4,Kbb) ) 254 xpicono3(ji,jj,jk) = (1. - fapico) * tr(ji,jj,jk,jpno3,Kbb) / ( zfalim * zconc0p + tr(ji,jj,jk,jpno3,Kbb) ) & 255 & * (1. - xpiconh4(ji,jj,jk)) 256 ! 303 zlimnh4 = tr(ji,jj,jk,jpnh4,Kbb) / ( zconc0p + tr(ji,jj,jk,jpnh4,Kbb) ) 304 zlimno3 = tr(ji,jj,jk,jpno3,Kbb) / ( zconc0p + tr(ji,jj,jk,jpno3,Kbb) ) 305 znutlimtot = (1. - fapico) * ztrn / ( zfalim * zconc0p + ztrn ) 306 xpiconh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 307 xpicono3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 308 ! 309 ! Limitation of P based nutrients uptake (PO4 and DOP) 257 310 zfalim = (1.-fapicop) / fapicop 258 xpicopo4(ji,jj,jk) = (1. - fapicop) * tr(ji,jj,jk,jppo4,Kbb) / ( tr(ji,jj,jk,jppo4,Kbb) + zfalim * zconc0ppo4 ) 259 xpicodop(ji,jj,jk) = tr(ji,jj,jk,jpdop,Kbb) / ( tr(ji,jj,jk,jpdop,Kbb) + xkdoc ) & 260 & * ( 1.0 - xpicopo4(ji,jj,jk) ) 261 xpicodop(ji,jj,jk) = 0. 311 zlimpo4 = tr(ji,jj,jk,jppo4,Kbb) / ( tr(ji,jj,jk,jppo4,Kbb) + zconc0ppo4 ) 312 zlimdop = tr(ji,jj,jk,jpdop,Kbb) / ( tr(ji,jj,jk,jpdop,Kbb) + zconc0ppo4 ) 313 znutlimtot = (1. - fapicop) * ztrp / ( zfalim * zconc0ppo4 + ztrp) 314 xpicopo4(ji,jj,jk) = znutlimtot * 100.0 * zlimpo4 / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 315 xpicodop(ji,jj,jk) = znutlimtot * zlimdop / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 262 316 ! 263 317 zfalim = (1.-fapicof) / fapicof 264 xpicofer(ji,jj,jk) = (1. - fapicof) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * zconcpfe ) 265 ! 266 zratiof = tr(ji,jj,jk,jppfe,Kbb) * z1_trnpic 318 xpicofer(ji,jj,jk) = (1. - fapicof) * zbiron / ( zbiron + zfalim * zconcpfe ) 319 ! 320 ! The minimum iron quota depends on the size of PSU, respiration 321 ! and the reduction of nitrate following the parameterization 322 ! proposed by Flynn and Hipkin (1999) 323 zratiof = tr(ji,jj,jk,jppfe,Kbb) * z1_trnpic 267 324 zqfemp = xcoef1 * zpicochl + xcoef2 + xcoef3 * xpicono3(ji,jj,jk) 325 xqfuncfecp(ji,jj,jk) = zqfemp + qfpopt 268 326 ! 269 327 zration = tr(ji,jj,jk,jpnpi,Kbb) * z1_trnpic 270 zration = MIN(xqnpmax(ji,jj,jk), MAX( 2. *xqnpmin(ji,jj,jk), zration ))271 fvpuptk(ji,jj,jk) = 1. / zpsiuptk * rno3 * 2.* xqnpmin(ji,jj,jk) / (zration + rtrn) &328 zration = MIN(xqnpmax(ji,jj,jk), MAX( xqnpmin(ji,jj,jk), zration )) 329 fvpuptk(ji,jj,jk) = 2.5 * xpsiuptk * xqnpmin(ji,jj,jk) / (zration + rtrn) & 272 330 & * MAX(0., (1. - zratchl * zpicochl / 12. ) ) 273 331 ! 274 zlim1 = max(0., (zration - 2. *xqnpmin(ji,jj,jk) ) &275 & / (xqnpmax(ji,jj,jk) - 2. *xqnpmin(ji,jj,jk) ) ) * xqnpmax(ji,jj,jk) &332 zlim1 = max(0., (zration - xqnpmin(ji,jj,jk) ) & 333 & / (xqnpmax(ji,jj,jk) - xqnpmin(ji,jj,jk) ) ) * xqnpmax(ji,jj,jk) & 276 334 & / (zration + rtrn) 335 ! The value of the optimal quota in the formulation below 336 ! has been found by solving a non linear equation 337 zlim1f = max(0., (1.29 - xqnpmin(ji,jj,jk) ) & 338 & / (xqnpmax(ji,jj,jk) - xqnpmin(ji,jj,jk) ) ) * xqnpmax(ji,jj,jk) 277 339 zlim3 = MAX( 0.,( zratiof - zqfemp ) / qfpopt ) 278 xlimpfe(ji,jj,jk) = MIN( 1., zlim3 ) 279 xlimpic(ji,jj,jk) = MIN( 1., zlim1, zlim3 ) 340 341 ! computation of the various limitation terms of picophyto 342 ! growth and PP 343 xlimpfe (ji,jj,jk) = MIN( 1., zlim3 ) 344 xlimpic (ji,jj,jk) = MIN( 1., zlim1, zlim3 ) 345 xlimnpp (ji,jj,jk) = MIN( 1., zlim1 ) 346 xlimpics(ji,jj,jk) = MIN( 1., zlim1/( zlim1f + rtrn ), zlim3 ) 347 348 280 349 ! 281 350 ! Michaelis-Menten Limitation term for nutrients Diatoms 282 351 ! ------------------------------------------------------ 352 ! 353 ! Limitation of N based nutrients uptake (NO3 and NH4) 283 354 zfalim = (1.-fadiat) / fadiat 284 xdiatnh4(ji,jj,jk) = (1. - fadiat) * tr(ji,jj,jk,jpnh4,Kbb) / ( zfalim * zconc1dnh4 + tr(ji,jj,jk,jpnh4,Kbb) ) 285 xdiatno3(ji,jj,jk) = (1. - fadiat) * tr(ji,jj,jk,jpno3,Kbb) / ( zfalim * zconc1d + tr(ji,jj,jk,jpno3,Kbb) ) & 286 & * (1. - xdiatnh4(ji,jj,jk)) 287 ! 355 zlimnh4 = tr(ji,jj,jk,jpnh4,Kbb) / ( zconc1d + tr(ji,jj,jk,jpnh4,Kbb) ) 356 zlimno3 = tr(ji,jj,jk,jpno3,Kbb) / ( zconc1d + tr(ji,jj,jk,jpno3,Kbb) ) 357 znutlimtot = (1.0 - fadiat) * ztrn / ( zfalim * zconc1d + ztrn ) 358 xdiatnh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 359 xdiatno3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 360 ! 361 ! Limitation of P based nutrients uptake (PO4 and DOP) 288 362 zfalim = (1.-fadiatp) / fadiatp 289 xdiatpo4(ji,jj,jk) = (1. - fadiatp) * tr(ji,jj,jk,jppo4,Kbb) / ( tr(ji,jj,jk,jppo4,Kbb) + zfalim * zconc0dpo4 ) 290 xdiatdop(ji,jj,jk) = tr(ji,jj,jk,jpdop,Kbb) / ( tr(ji,jj,jk,jpdop,Kbb) + xkdoc ) & 291 & * ( 1.0 - xdiatpo4(ji,jj,jk) ) 292 xdiatdop(ji,jj,jk) = 0. 293 ! 363 zlimpo4 = tr(ji,jj,jk,jppo4,Kbb) / ( tr(ji,jj,jk,jppo4,Kbb) + zconc0dpo4 ) 364 zlimdop = tr(ji,jj,jk,jpdop,Kbb) / ( tr(ji,jj,jk,jpdop,Kbb) + zconc0dpo4 ) 365 znutlimtot = (1. - fadiatp) * ztrp / ( zfalim * zconc0dpo4 + ztrp ) 366 xdiatpo4(ji,jj,jk) = znutlimtot * 100.0 * zlimpo4 / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 367 xdiatdop(ji,jj,jk) = znutlimtot * zlimdop / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 368 ! 369 ! Limitation of Fe uptake 294 370 zfalim = (1.-fadiatf) / fadiatf 295 xdiatfer(ji,jj,jk) = (1. - fadiatf) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * zconcdfe ) 296 ! 371 xdiatfer(ji,jj,jk) = (1. - fadiatf) * zbiron / ( zbiron + zfalim * zconcdfe ) 372 ! 373 ! The minimum iron quota depends on the size of PSU, respiration 374 ! and the reduction of nitrate following the parameterization 375 ! proposed by Flynn and Hipkin (1999) 297 376 zratiof = tr(ji,jj,jk,jpdfe,Kbb) * z1_trndia 298 377 zqfemd = xcoef1 * zdiatchl + xcoef2 + xcoef3 * xdiatno3(ji,jj,jk) 378 xqfuncfecd(ji,jj,jk) = zqfemd + qfdopt 299 379 ! 300 380 zration = tr(ji,jj,jk,jpndi,Kbb) * z1_trndia 301 zration = MIN(xqndmax(ji,jj,jk), MAX( 2. *xqndmin(ji,jj,jk), zration ))302 fvduptk(ji,jj,jk) = 1. / zpsiuptk * rno3 * 2.* xqndmin(ji,jj,jk) / (zration + rtrn) &381 zration = MIN(xqndmax(ji,jj,jk), MAX( xqndmin(ji,jj,jk), zration )) 382 fvduptk(ji,jj,jk) = 2.5 * xpsiuptk * xqndmin(ji,jj,jk) / (zration + rtrn) & 303 383 & * MAX(0., (1. - zratchl * zdiatchl / 12. ) ) 304 384 ! 305 zlim1 = max(0., (zration - 2. *xqndmin(ji,jj,jk) ) &306 & / (xqndmax(ji,jj,jk) - 2. *xqndmin(ji,jj,jk) ) ) &385 zlim1 = max(0., (zration - xqndmin(ji,jj,jk) ) & 386 & / (xqndmax(ji,jj,jk) - xqndmin(ji,jj,jk) ) ) & 307 387 & * xqndmax(ji,jj,jk) / (zration + rtrn) 308 zlim3 = tr(ji,jj,jk,jpsil,Kbb) / ( tr(ji,jj,jk,jpsil,Kbb) + xksi(ji,jj) + rtrn ) 388 ! The value of the optimal quota in the formulation below 389 ! has been found by solving a non linear equation 390 zlim1f = max(0., (1.13 - xqndmin(ji,jj,jk) ) & 391 & / (xqndmax(ji,jj,jk) - xqndmin(ji,jj,jk) ) ) & 392 & * xqndmax(ji,jj,jk) 393 zlim3 = tr(ji,jj,jk,jpsil,Kbb) / ( tr(ji,jj,jk,jpsil,Kbb) + xksi(ji,jj) ) 309 394 zlim4 = MAX( 0., ( zratiof - zqfemd ) / qfdopt ) 395 ! computation of the various limitation terms of diatoms 396 ! growth and PP 310 397 xlimdfe(ji,jj,jk) = MIN( 1., zlim4 ) 311 398 xlimdia(ji,jj,jk) = MIN( 1., zlim1, zlim3, zlim4 ) 399 xlimdias(ji,jj,jk) = MIN (1.0, zlim1 / (zlim1f + rtrn ), zlim3, zlim4 ) 312 400 xlimsi(ji,jj,jk) = MIN( zlim1, zlim4 ) 401 xlimnpd(ji,jj,jk) = MIN( 1., zlim1 ) 313 402 END_3D 403 314 404 ! 315 405 ! Compute the phosphorus quota values. It is based on Litchmann et al., 2004 and Daines et al, 2013. … … 318 408 ! phytoplankton (see Daines et al., 2013). 319 409 ! -------------------------------------------------------------------------------------------------- 320 DO_3D( 1, 1, 1, 1, 1, jpkm1)321 ! Size estimation of nanophytoplankton 322 ! ------------------------------------323 zfvn = 2. * fvnuptk(ji,jj,jk)324 sizen(ji,jj,jk) = MAX(1., MIN(xsizern, 1.0 / ( MAX(rtrn, zfvn) )) )325 410 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 411 ! Size estimation of nanophytoplankton based on total biomass 412 ! Assumes that larger biomass implies addition of larger cells 413 ! ------------------------------------------------------------ 414 zcoef = tr(ji,jj,jk,jpphy,Kbb) - MIN(xsizephy, tr(ji,jj,jk,jpphy,Kbb) ) 415 sizena(ji,jj,jk) = 1. + ( xsizern -1.0 ) * zcoef / ( xsizephy + zcoef ) 326 416 ! N/P ratio of nanophytoplankton 327 417 ! ------------------------------ 328 zfuptk = 0.23 * zfvn 329 zrpho = 2.24 * tr(ji,jj,jk,jpnch,Kbb) / ( tr(ji,jj,jk,jpnph,Kbb) * rno3 * 15. + rtrn ) 330 zrass = 1. - 0.2 - zrpho - zfuptk 331 xqpnmax(ji,jj,jk) = ( zfuptk + zrpho ) * 0.0128 * 16. + zrass * 1./ 7.2 * 16. 332 xqpnmax(ji,jj,jk) = xqpnmax(ji,jj,jk) * tr(ji,jj,jk,jpnph,Kbb) / ( tr(ji,jj,jk,jpphy,Kbb) + rtrn ) + 0.13 333 xqpnmin(ji,jj,jk) = 0.13 + 0.23 * 0.0128 * 16. 334 335 ! Size estimation of picophytoplankton 336 ! ------------------------------------ 337 zfvn = 2. * fvpuptk(ji,jj,jk) 338 sizep(ji,jj,jk) = MAX(1., MIN(xsizerp, 1.0 / ( MAX(rtrn, zfvn) ) ) ) 418 zfuptk = 0.2 + 0.12 / ( 3.0 * sizen(ji,jj,jk) + rtrn ) 419 ! Computed from Inomura et al. (2020) using Pavlova Lutheri 420 zrpho = 11.55 * tr(ji,jj,jk,jpnch,Kbb) / ( tr(ji,jj,jk,jpphy,Kbb) * 12. + rtrn ) 421 zrass = MAX(0.62/4., ( 1. - zrpho - zfuptk ) * xlimnpn(ji,jj,jk) ) 422 zrassn(ji,jj,jk) = zrass 423 xqpnmin(ji,jj,jk) = ( 0.0 + 0.0078 + 0.62/4. * 0.0783 ) * 16. 424 xqpnmax(ji,jj,jk) = ( zrpho * 0.0089 + zrass * 0.0783 ) * 16. 425 xqpnmax(ji,jj,jk) = xqpnmax(ji,jj,jk) + (0.033 + 0.0078 ) * 16. 426 xqpnmax(ji,jj,jk) = MIN( qpnmax, xqpnmax(ji,jj,jk) ) 427 428 ! Size estimation of picophytoplankton based on total biomass 429 ! Assumes that larger biomass implies addition of larger cells 430 ! ------------------------------------------------------------ 431 zcoef = tr(ji,jj,jk,jppic,Kbb) - MIN(xsizepic, tr(ji,jj,jk,jppic,Kbb) ) 432 sizepa(ji,jj,jk) = 1. + ( xsizerp -1.0 ) * zcoef / ( xsizepic + zcoef ) 339 433 340 434 ! N/P ratio of picophytoplankton 341 435 ! ------------------------------ 342 zfuptk = 0.35 * zfvn 343 zrpho = 2.24 * tr(ji,jj,jk,jppch,Kbb) / ( tr(ji,jj,jk,jpnpi,Kbb) * rno3 * 15. + rtrn ) 344 zrass = 1. - 0.4 - zrpho - zfuptk 345 xqppmax(ji,jj,jk) = (zrpho + zfuptk) * 0.0128 * 16. + zrass * 1./ 9. * 16. 346 xqppmax(ji,jj,jk) = xqppmax(ji,jj,jk) * tr(ji,jj,jk,jpnpi,Kbb) / ( tr(ji,jj,jk,jppic,Kbb) + rtrn ) + 0.13 347 xqppmin(ji,jj,jk) = 0.13 348 349 ! Size estimation of diatoms 350 ! -------------------------- 351 zfvn = 2. * fvduptk(ji,jj,jk) 352 sized(ji,jj,jk) = MAX(1., MIN(xsizerd, 1.0 / ( MAX(rtrn, zfvn) ) ) ) 436 zfuptk = 0.2 + 0.12 / ( 0.8 * sizep(ji,jj,jk) + rtrn ) 437 ! Computed from Inomura et al. (2020) using a synechococcus 438 zrpho = 13.4 * tr(ji,jj,jk,jppch,Kbb) / ( tr(ji,jj,jk,jppic,Kbb) * 12. + rtrn ) 439 zrass = MAX(0.4/4., ( 1. - zrpho - zfuptk ) * xlimnpp(ji,jj,jk) ) 440 zrassp(ji,jj,jk) = zrass 441 xqppmin(ji,jj,jk) = ( (0.0 + 0.0078 ) + 0.4/4. * 0.0517 ) * 16. 442 xqppmax(ji,jj,jk) = ( zrpho * 0.0076 + zrass * 0.0517 ) * 16. 443 xqppmax(ji,jj,jk) = xqppmax(ji,jj,jk) + (0.033 + 0.0078 ) * 16 444 xqppmax(ji,jj,jk) = MIN( qppmax, xqppmax(ji,jj,jk) ) 445 446 ! Size estimation of diatoms based on total biomass 447 ! Assumes that larger biomass implies addition of larger cells 448 ! ------------------------------------------------------------ 353 449 zcoef = tr(ji,jj,jk,jpdia,Kbb) - MIN(xsizedia, tr(ji,jj,jk,jpdia,Kbb) ) 354 sized(ji,jj,jk) = 1. + xsizerd * zcoef *1E6 / ( 1. + zcoef * 1E6 ) 355 450 sizeda(ji,jj,jk) = 1. + ( xsizerd - 1.0 ) * zcoef / ( xsizedia + zcoef ) 356 451 ! N/P ratio of diatoms 357 452 ! -------------------- 358 zfuptk = 0.2 * zfvn 359 zrpho = 2.24 * tr(ji,jj,jk,jpdch,Kbb) / ( tr(ji,jj,jk,jpndi,Kbb) * rno3 * 15. + rtrn ) 360 zrass = 1. - 0.2 - zrpho - zfuptk 361 xqpdmax(ji,jj,jk) = ( zfuptk + zrpho ) * 0.0128 * 16. + zrass * 1./ 7.2 * 16. 362 xqpdmax(ji,jj,jk) = xqpdmax(ji,jj,jk) * tr(ji,jj,jk,jpndi,Kbb) / ( tr(ji,jj,jk,jpdia,Kbb) + rtrn ) + 0.13 363 xqpdmin(ji,jj,jk) = 0.13 + 0.2 * 0.0128 * 16. 364 453 zfuptk = 0.2 + 0.12 / ( 5.0 * sized(ji,jj,jk) + rtrn ) 454 ! Computed from Inomura et al. (2020) using a synechococcus 455 zrpho = 8.08 * tr(ji,jj,jk,jpdch,Kbb) / ( tr(ji,jj,jk,jpndi,Kbb) * 12. + rtrn ) 456 zrass = MAX(0.66/4., ( 1. - zrpho - zfuptk ) * xlimnpd(ji,jj,jk) ) 457 zrassd(ji,jj,jk)=zrass 458 xqpdmin(ji,jj,jk) = ( ( 0.0 + 0.0078 ) + 0.66/4. * 0.0783 ) * 16. 459 xqpdmax(ji,jj,jk) = ( zrpho * 0.0135 + zrass * 0.0783 ) * 16. 460 xqpdmax(ji,jj,jk) = xqpdmax(ji,jj,jk) + ( 0.0078 + 0.033 ) * 16. 461 xqpdmax(ji,jj,jk) = MIN(qpdmax, xqpdmax(ji,jj,jk) ) 365 462 END_3D 366 463 367 464 ! Compute the fraction of nanophytoplankton that is made of calcifiers 465 ! This is a purely adhoc formulation described in Aumont et al. (2015) 466 ! This fraction depends on nutrient limitation, light, temperature 368 467 ! -------------------------------------------------------------------- 369 DO_3D( 1, 1, 1, 1, 1, jpkm1)468 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 370 469 zlim1 = tr(ji,jj,jk,jpnh4,Kbb) / ( tr(ji,jj,jk,jpnh4,Kbb) + concnnh4 ) + tr(ji,jj,jk,jpno3,Kbb) & 371 470 & / ( tr(ji,jj,jk,jpno3,Kbb) + concnno3 ) * ( 1.0 - tr(ji,jj,jk,jpnh4,Kbb) & 372 471 & / ( tr(ji,jj,jk,jpnh4,Kbb) + concnnh4 ) ) 373 472 zlim2 = tr(ji,jj,jk,jppo4,Kbb) / ( tr(ji,jj,jk,jppo4,Kbb) + concnpo4 ) 374 zlim3 = tr(ji,jj,jk,jpfer,Kbb) / ( tr(ji,jj,jk,jpfer,Kbb) + 5.E-11 )375 ztem1 = MAX( 0., ts(ji,jj,jk,jp_tem,Kmm) )473 zlim3 = tr(ji,jj,jk,jpfer,Kbb) / ( tr(ji,jj,jk,jpfer,Kbb) + 6.E-11 ) 474 ztem1 = MAX( 0., ts(ji,jj,jk,jp_tem,Kmm) + 1.8 ) 376 475 ztem2 = ts(ji,jj,jk,jp_tem,Kmm) - 10. 377 zetot1 = MAX( 0., etot(ji,jj,jk) - 1.) / ( 4. + etot(ji,jj,jk) ) * 20. / ( 20. + etot(ji,jj,jk) ) 378 379 ! xfracal(ji,jj,jk) = caco3r * MIN( zlim1, zlim2, zlim3 ) & 380 xfracal(ji,jj,jk) = caco3r & 381 & * ztem1 / ( 1. + ztem1 ) * MAX( 1., tr(ji,jj,jk,jpphy,Kbb)*1E6 ) & 476 zetot1 = MAX( 0., etot_ndcy(ji,jj,jk) - 1.) / ( 4. + etot_ndcy(ji,jj,jk) ) * 30. / ( 30. + etot_ndcy(ji,jj,jk) ) 477 478 xfracal(ji,jj,jk) = caco3r * xlimphy(ji,jj,jk) & 479 & * ztem1 / ( 0.1 + ztem1 ) * MAX( 1., tr(ji,jj,jk,jpphy,Kbb)*1E6 ) & 382 480 & * ( 1. + EXP(-ztem2 * ztem2 / 25. ) ) & 383 481 & * zetot1 * MIN( 1., 50. / ( hmld(ji,jj) + rtrn ) ) … … 385 483 END_3D 386 484 ! 387 DO_3D( 1, 1, 1, 1, 1, jpkm1)485 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 388 486 ! denitrification factor computed from O2 levels 389 487 nitrfac(ji,jj,jk) = MAX( 0.e0, 0.4 * ( 6.e-6 - tr(ji,jj,jk,jpoxy,Kbb) ) & … … 403 501 CALL iom_put( "SIZEP" , sizep (:,:,:) * tmask(:,:,:) ) ! Iron limitation term 404 502 CALL iom_put( "SIZED" , sized (:,:,:) * tmask(:,:,:) ) ! Iron limitation term 503 CALL iom_put( "RASSN" , zrassn (:,:,:) * tmask(:,:,:) ) ! Iron limitation term 504 CALL iom_put( "RASSP" , zrassp (:,:,:) * tmask(:,:,:) ) ! Iron limitation term 505 CALL iom_put( "RASSD" , zrassd (:,:,:) * tmask(:,:,:) ) ! Iron limitation term 405 506 ENDIF 406 507 ! … … 416 517 !! ** Purpose : Initialization of nutrient limitation parameters 417 518 !! 418 !! ** Method : Read the namp islim and nampisquota namelists and check519 !! ** Method : Read the namp5zlim and nampisquota namelists and check 419 520 !! the parameters called at the first timestep (nittrc000) 420 521 !! 421 !! ** input : Namelist namp islim522 !! ** input : Namelist namp5zlim 422 523 !! 423 524 !!---------------------------------------------------------------------- … … 436 537 ! 437 538 READ ( numnatp_ref, namp5zlim, IOSTAT = ios, ERR = 901) 438 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp islim in reference namelist' )539 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp5zlim in reference namelist' ) 439 540 ! 440 541 READ ( numnatp_cfg, namp5zlim, IOSTAT = ios, ERR = 902 ) 441 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp islim in configuration namelist' )542 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp5zlim in configuration namelist' ) 442 543 IF(lwm) WRITE ( numonp, namp5zlim ) 443 544 ! … … 505 606 ENDIF 506 607 ! 507 zpsino3 = 2.3 * rno3 508 zpsinh4 = 1.8 * rno3 509 zpsiuptk = 2.3 * rno3 608 ! Metabolic cost of nitrate and ammonium utilisation 609 xpsino3 = 2.3 * rno3 610 xpsinh4 = 1.8 * rno3 611 xpsiuptk = 1.0 / 6.625 510 612 ! 511 613 nitrfac(:,:,jpk) = 0._wp … … 537 639 & xpicopo4(jpi,jpj,jpk), xpicodop(jpi,jpj,jpk), & 538 640 & xnanodop(jpi,jpj,jpk), xdiatdop(jpi,jpj,jpk), & 539 & xnanofer(jpi,jpj,jpk), xdiatfer(jpi,jpj,jpk), &540 641 & xpicofer(jpi,jpj,jpk), xlimpfe (jpi,jpj,jpk), & 541 642 & fvnuptk (jpi,jpj,jpk), fvduptk (jpi,jpj,jpk), & 643 & xlimphys(jpi,jpj,jpk), xlimdias(jpi,jpj,jpk), & 644 & xlimnpp (jpi,jpj,jpk), xlimnpn (jpi,jpj,jpk), & 645 & xlimnpd (jpi,jpj,jpk), & 646 & xlimpics(jpi,jpj,jpk), xqfuncfecp(jpi,jpj,jpk), & 542 647 & fvpuptk (jpi,jpj,jpk), xlimpic (jpi,jpj,jpk), STAT=ierr(1) ) 543 648 !
Note: See TracChangeset
for help on using the changeset viewer.