- Timestamp:
- 2021-01-07T23:09:56+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zlim.F90
r13233 r14276 63 63 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanofer !: Limitation of Fe uptake by nanophyto 64 64 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatfer !: Limitation of Fe uptake by diatoms 65 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqfuncfecd, xqfuncfecn 65 66 66 67 ! Coefficient for iron limitation following Flynn and Hipkin (1999) … … 90 91 ! 91 92 INTEGER :: ji, jj, jk 92 REAL(wp) :: zlim1, zlim2, zlim3, zlim4, z no3, zferlim, zcoef93 REAL(wp) :: zlim1, zlim2, zlim3, zlim4, zcoef 93 94 REAL(wp) :: z1_trbdia, z1_trbphy, ztem1, ztem2, zetot1, zetot2 94 REAL(wp) :: zdenom, zratio, zironmin 95 REAL(wp) :: zdenom, zratio, zironmin, zbactno3, zbactnh4 95 96 REAL(wp) :: zconc1d, zconc1dnh4, zconc0n, zconc0nnh4 96 97 REAL(wp) :: fananof, fadiatf, znutlim, zfalim 98 REAL(wp) :: znutlimtot, zlimno3, zlimnh4, zbiron 97 99 !!--------------------------------------------------------------------- 98 100 ! 99 101 IF( ln_timing ) CALL timing_start('p4z_lim') 100 102 ! 101 sizena(:,:,:) = 0.0 ; sizeda(:,:,:) = 0.0103 sizena(:,:,:) = 1.0 ; sizeda(:,:,:) = 1.0 102 104 ! 103 105 DO jk = 1, jpkm1 104 106 DO jj = 1, jpj 105 107 DO ji = 1, jpi 106 107 ! Tuning of the iron concentration to a minimum level that108 ! is set to the detection limit109 ! --------------------------------------------------------110 zno3 = trb(ji,jj,jk,jpno3) / 40.e-6111 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 115 108 ! Computation of a variable Ks of diatoms taking into account 116 109 ! that increasing biomass is made of generally bigger cells … … 134 127 135 128 ! 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) 137 131 fananof = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 138 132 139 133 ! Diatoms 140 znutlim = biron(ji,jj,jk)/ concdfe(ji,jj,jk)134 znutlim = zbiron / concdfe(ji,jj,jk) 141 135 fadiatf = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 142 136 … … 144 138 ! heterotrophic bacteria 145 139 ! ------------------------------------------------- 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 ) 149 145 ! 150 zlim1 = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk)146 zlim1 = zbactno3 + zbactnh4 151 147 zlim2 = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + concbnh4 ) 152 148 zlim3 = trb(ji,jj,jk,jpfer) / ( concbfe + trb(ji,jj,jk,jpfer) ) … … 166 162 ! Limitation of Fe uptake (Quota formalism) 167 163 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) ) 169 165 170 166 ! 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 ) 174 172 ! 175 173 zlim1 = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) … … 181 179 ! proposed by Flynn and Hipkin (1999) 182 180 zironmin = xcoef1 * trb(ji,jj,jk,jpnch) * z1_trbphy + xcoef2 * zlim1 + xcoef3 * xnanono3(ji,jj,jk) 181 xqfuncfecn(ji,jj,jk) = zironmin + qnfelim 183 182 zlim3 = MAX( 0.,( zratio - zironmin ) / qnfelim ) 184 183 xnanopo4(ji,jj,jk) = zlim2 … … 190 189 ! Limitation of Fe uptake (Quota formalism) 191 190 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) ) 193 192 194 193 ! 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 ) 198 199 ! 199 200 zlim1 = xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) … … 206 207 ! proposed by Flynn and Hipkin (1999) 207 208 zironmin = xcoef1 * trb(ji,jj,jk,jpdch) * z1_trbdia + xcoef2 * zlim1 + xcoef3 * xdiatno3(ji,jj,jk) 209 xqfuncfecd(ji,jj,jk) = zironmin + qdfelim 208 210 zlim4 = MAX( 0., ( zratio - zironmin ) / qdfelim ) 209 211 xdiatpo4(ji,jj,jk) = zlim2 … … 238 240 DO jj = 1, jpj 239 241 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) 242 243 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) 245 246 ztem2 = tsn(ji,jj,jk,jp_tem) - 10. 246 247 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) ) 248 249 249 250 xfracal(ji,jj,jk) = caco3r * MIN( zlim1, zlim2, zlim3 ) & … … 375 376 & xlimbac (jpi,jpj,jpk), xlimbacl(jpi,jpj,jpk), & 376 377 & concnfe (jpi,jpj,jpk), concdfe (jpi,jpj,jpk), & 378 & xqfuncfecn(jpi,jpj,jpk), xqfuncfecd(jpi,jpj,jpk), & 377 379 & xlimsi (jpi,jpj,jpk), STAT=p4z_lim_alloc ) 378 380 !
Note: See TracChangeset
for help on using the changeset viewer.