Changeset 12759
- Timestamp:
- 2020-04-17T00:17:29+02:00 (3 years ago)
- Location:
- NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/cfgs/SHARED/namelist_pisces_ref
r12525 r12759 69 69 concdfer = 3.E-9 ! Iron half saturation for diatoms 70 70 concbfe = 1.E-11 ! Iron half-saturation for DOC remin. 71 concbnh4 = 2.E-8 ! NH4 half saturation for DOC remin.71 concbnh4 = 6.E-8 ! NH4 half saturation for DOC remin. 72 72 concbno3 = 2.E-7 ! Nitrate half saturation for DOC remin. 73 73 xsizedia = 1.E-6 ! Minimum size criteria for diatoms 74 74 xsizephy = 1.E-6 ! Minimum size criteria for phyto 75 75 xsizern = 3.0 ! Size ratio for nanophytoplankton 76 xsizerd = 3.0 ! Size ratio for diatoms77 xksi1 = 4.E-6 ! half saturation constant for Si uptake76 xsizerd = 4.0 ! Size ratio for diatoms 77 xksi1 = 8.E-6 ! half saturation constant for Si uptake 78 78 xksi2 = 20E-6 ! half saturation constant for Si/C 79 79 xkdoc = 417.E-6 ! half-saturation constant of DOC remineralization … … 160 160 fecnm = 40E-6 ! Maximum Fe/C in nanophytoplankton 161 161 fecdm = 40E-6 ! Maximum Fe/C in diatoms 162 grosip = 0.1 3! mean Si/C ratio162 grosip = 0.11 ! mean Si/C ratio 163 163 / 164 164 !----------------------------------------------------------------------- … … 203 203 !----------------------------------------------------------------------- 204 204 part2 = 0.75 ! part of calcite not dissolved in mesozoo guts 205 grazrat2 = 0. 75 ! maximal mesozoo grazing rate206 resrat2 = 0.005 ! exsudationrate of mesozooplankton207 mzrat2 = 0.0 3! mesozooplankton mortality rate205 grazrat2 = 0.55 ! maximal mesozoo grazing rate 206 resrat2 = 0.005 ! Linear mortality rate of mesozooplankton 207 mzrat2 = 0.025 ! mesozooplankton mortality rate 208 208 xpref2d = 1. ! mesozoo preference for diatoms 209 209 xpref2n = 0.3 ! mesozoo preference for nanophyto. … … 230 230 grazrat2 = 0.75 ! maximal mesozoo grazing rate 231 231 bmetexc2 = .true. ! Metabolic use of excess carbon 232 resrat2 = 0.005 ! exsudationrate of mesozooplankton232 resrat2 = 0.005 ! Linear mortality rate of mesozooplankton 233 233 mzrat2 = 0.03 ! mesozooplankton mortality rate 234 234 xpref2d = 1. ! meso preference for diatoms … … 259 259 !----------------------------------------------------------------------- 260 260 part = 0.5 ! part of calcite not dissolved in microzoo guts 261 grazrat = 3.0 ! maximal zoo grazing rate262 resrat = 0.03 ! exsudationrate of zooplankton263 mzrat = 0.00 4! zooplankton mortality rate261 grazrat = 2.0 ! maximal zoo grazing rate 262 resrat = 0.03 ! Linear mortality rate of zooplankton 263 mzrat = 0.005 ! zooplankton mortality rate 264 264 xprefc = 0.1 ! Microzoo preference for POM 265 265 xprefn = 1. ! Microzoo preference for Nanophyto 266 xprefd = 0. 6! Microzoo preference for Diatoms266 xprefd = 0.8 ! Microzoo preference for Diatoms 267 267 xthreshdia = 1.E-8 ! Diatoms feeding threshold for microzooplankton 268 268 xthreshphy = 1.E-8 ! Nanophyto feeding threshold for microzooplankton … … 270 270 xthresh = 3.E-7 ! Food threshold for feeding 271 271 xkgraz = 20.E-6 ! half sturation constant for grazing 272 epsher = 0.3 273 epshermin = 0.3 272 epsher = 0.35 ! Efficiency of microzoo growth 273 epshermin = 0.35 ! Minimum efficiency of microzoo growth 274 274 sigma1 = 0.6 ! Fraction of microzoo excretion as DOM 275 275 unass = 0.3 ! non assimilated fraction of phyto by zoo … … 281 281 grazrat = 3.0 ! maximal zoo grazing rate 282 282 bmetexc = .true. ! Metabolic use of excess carbon 283 resrat = 0.03 ! exsudationrate of zooplankton283 resrat = 0.03 ! Linear mortality rate of zooplankton 284 284 mzrat = 0.004 ! zooplankton mortality rate 285 285 xprefc = 0.1 ! Microzoo preference for POM … … 332 332 &nampispoc ! parameters for organic particles 333 333 !----------------------------------------------------------------------- 334 xremip = 0.03 5! remineralisation rate of POC334 xremip = 0.03 ! remineralisation rate of POC 335 335 jcpoc = 15 ! Number of lability classes 336 336 rshape = 1.0 ! Shape of the gamma function -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zbio.F90
r12537 r12759 107 107 108 108 ! Update of the size of the different phytoplankton groups 109 sized(:,:,:) = sizeda(:,:,:) 110 sizen(:,:,:) = sizena(:,:,:) 109 111 IF (ln_p5z) THEN 110 sized(:,:,:) = sizeda(:,:,:)111 sizen(:,:,:) = sizena(:,:,:)112 112 sizep(:,:,:) = sizepa(:,:,:) 113 113 ENDIF -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zlim.F90
r12537 r12759 61 61 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: concdfe !: Limitation of diatoms uptake of Fe 62 62 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 63 65 64 66 ! Coefficient for iron limitation following Flynn and Hipkin (1999) … … 86 88 ! 87 89 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 90 91 REAL(wp) :: z1_trbdia, z1_trbphy, ztem1, ztem2, zetot1, zetot2 91 92 REAL(wp) :: zdenom, zratio, zironmin 92 93 REAL(wp) :: zconc1d, zconc1dnh4, zconc0n, zconc0nnh4 94 REAL(wp) :: fananof, fadiatf, znutlim, zfalim 93 95 !!--------------------------------------------------------------------- 94 96 ! 95 97 IF( ln_timing ) CALL timing_start('p4z_lim') 98 ! 99 sizena(:,:,:) = 0.0 ; sizeda(:,:,:) = 0.0 96 100 ! 97 101 DO jk = 1, jpkm1 … … 110 114 ! that increasing biomass is made of generally bigger cells 111 115 !------------------------------------------------------------ 112 zconcd = MAX( 0.e0 , trb(ji,jj,jk,jpdia) - xsizedia )113 zconcd2 = trb(ji,jj,jk,jpdia) - zconcd114 zconcn = MAX( 0.e0 , trb(ji,jj,jk,jpphy) - xsizephy )115 zconcn2 = trb(ji,jj,jk,jpphy) - zconcn116 116 z1_trbphy = 1. / ( trb(ji,jj,jk,jpphy) + rtrn ) 117 117 z1_trbdia = 1. / ( trb(ji,jj,jk,jpdia) + rtrn ) 118 118 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.) ) ) 126 139 127 140 ! Michaelis-Menten Limitation term by nutrients of … … 144 157 ! Michaelis-Menten Limitation term by nutrients: Nanophyto 145 158 ! -------------------------------------------------------- 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 146 164 zdenom = 1. / ( zconc0n * zconc0nnh4 + zconc0nnh4 * trb(ji,jj,jk,jpno3) + zconc0n * trb(ji,jj,jk,jpnh4) ) 147 165 xnanono3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * zconc0nnh4 * zdenom … … 163 181 ! Michaelis-Menten Limitation term by nutrients : Diatoms 164 182 ! ------------------------------------------------------- 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 165 188 zdenom = 1. / ( zconc1d * zconc1dnh4 + zconc1dnh4 * trb(ji,jj,jk,jpno3) + zconc1d * trb(ji,jj,jk,jpnh4) ) 166 189 xdiatno3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * zconc1dnh4 * zdenom … … 184 207 END DO 185 208 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 186 225 187 226 ! Compute the fraction of nanophytoplankton that is made of calcifiers … … 235 274 IF( iom_use( "LNFe" ) ) CALL iom_put( "LNFe" , xlimnfe(:,:,:) * tmask(:,:,:) ) ! Iron limitation term 236 275 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 237 278 ENDIF 238 279 ! … … 315 356 & xnanonh4(jpi,jpj,jpk), xdiatnh4(jpi,jpj,jpk), & 316 357 & xnanopo4(jpi,jpj,jpk), xdiatpo4(jpi,jpj,jpk), & 358 & xnanofer(jpi,jpj,jpk), xdiatfer(jpi,jpj,jpk), & 317 359 & xlimphy (jpi,jpj,jpk), xlimdia (jpi,jpj,jpk), & 318 360 & xlimnfe (jpi,jpj,jpk), xlimdfe (jpi,jpj,jpk), & -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zmeso.F90
r12538 r12759 79 79 REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2, zfracal, zgrazcal 80 80 REAL(wp) :: zepsherf, zepshert, zepsherq, zepsherv, zgrarsig, zgraztotc, zgraztotn, zgraztotf 81 REAL(wp) :: zmigreltime, zprcaca, zmortz, zgrasrat , zgrasratn81 REAL(wp) :: zmigreltime, zprcaca, zmortz, zgrasratf, zgrasratn 82 82 REAL(wp) :: zrespz, ztortz, zgrazd, zgrazz, zgrazpof, zgrazn, zgrazpoc, zgraznf, zgrazf 83 83 REAL(wp) :: zgrazfffp, zgrazfffg, zgrazffep, zgrazffeg, zrum, zcodel, zargu, zval 84 REAL(wp) :: zsigma, zdiffdn, ztmp1, ztmp2, ztmp3, ztmp4, ztmptot 84 85 CHARACTER (len=25) :: charout 85 86 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zfezoo2 … … 153 154 zgraze2 = grazrat2 * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes) * (1. - nitrfac(ji,jj,jk)) 154 155 155 ! The grazing pressure on each prey is computed assuming passive switching. This 156 ! is equivalent to assuming that mesozooplankton have an opportunistic feeding 157 ! behaviour. 158 ! ----------------------------------------------------------------------------- 159 zgrazd = zgraze2 * xpref2d * zcompadi * zdenom2 160 zgrazz = zgraze2 * xpref2z * zcompaz * zdenom2 161 zgrazn = zgraze2 * xpref2n * zcompaph * zdenom2 162 zgrazpoc = zgraze2 * xpref2c * zcompapoc * zdenom2 156 ! An active switching parameterization is used here. 157 ! We don't use the KTW parameterization proposed by 158 ! Vallina et al. because it tends to produce too steady biomass 159 ! composition and the variance of Chl is too low as it grazes 160 ! too strongly on winning organisms. We use a generalized 161 ! switching parameterization proposed by Morozov and 162 ! Petrovskii (2013) 163 ! ------------------------------------------------------------ 164 ! The width of the selection window is increased when preys 165 ! have low abundance, .i.e. zooplankton become less specific 166 ! to avoid starvation. 167 ! ---------------------------------------------------------- 168 zsigma = 1.0 - zdenom**2/(0.05**2+zdenom**2) 169 zsigma = 0.5 + 1.0 * zsigma 170 ! Nanophytoplankton and diatoms are the only preys considered 171 ! to be close enough to have potential interference 172 ! ----------------------------------------------------------- 173 zdiffdn = exp( -ABS(log(1.5 * sizen(ji,jj,jk) / (5.0 * sized(ji,jj,jk) + rtrn )) )**2 / zsigma**2 ) 174 ztmp1 = xpref2n * zcompaph * ( zcompaph + zdiffdn * zcompadi ) / ( 1.0 + zdiffdn ) 175 ztmp2 = xpref2c * zcompapoc**2 176 ztmp3 = xpref2d * zcompadi * ( zdiffdn * zcompadi + zcompaph ) / ( 1.0 + zdiffdn ) 177 ztmp4 = xpref2z * zcompaz**2 178 ztmptot = ztmp1 + ztmp2 + ztmp3 + ztmp4 + rtrn 179 ztmp1 = ztmp1 / ztmptot 180 ztmp2 = ztmp2 / ztmptot 181 ztmp3 = ztmp3 / ztmptot 182 ztmp4 = ztmp4 / ztmptot 183 184 ! Mesozooplankton regular grazing on the different preys 185 ! ------------------------------------------------------ 186 zgrazd = zgraze2 * ztmp3 * zdenom 187 zgrazn = zgraze2 * ztmp1 * zdenom 188 zgrazpoc = zgraze2 * ztmp2 * zdenom 189 zgrazz = zgraze2 * ztmp4 * zdenom 163 190 164 191 zgraznf = zgrazn * trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) + rtrn) … … 215 242 ! Fulton, 2012) 216 243 ! ----------------------------------------------------------------------------------- 217 zgrasrat 244 zgrasratf = ( zgraztotf + rtrn )/ ( zgraztotc + rtrn ) 218 245 zgrasratn = ( zgraztotn + rtrn )/ ( zgraztotc + rtrn ) 219 zepshert = MIN( 1., zgrasratn, zgrasrat / ferat3)246 zepshert = MIN( 1., zgrasratn, zgrasratf / ferat3) 220 247 zbeta = MAX(0., (epsher2 - epsher2min) ) 221 248 zepsherf = epsher2min + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta ) … … 263 290 zgrarem(ji,jj,jk) = zgraztotc * ( 1. - zepsherv - unass2 ) & 264 291 & + ( 1. - epsher2 - unass2 ) / ( 1. - epsher2 ) * ztortz 265 zgraref(ji,jj,jk) = zgraztotc * MAX( 0. , ( 1. - unass2 ) * zgrasrat - ferat3 * zepsherv ) &292 zgraref(ji,jj,jk) = zgraztotc * MAX( 0. , ( 1. - unass2 ) * zgrasratf - ferat3 * zepsherv ) & 266 293 & + ferat3 * ( ( 1. - epsher2 - unass2 ) /( 1. - epsher2 ) * ztortz ) 267 294 zgrapoc(ji,jj,jk) = zgraztotc * unass2 + zmortzgoc -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zmicro.F90
r12537 r12759 68 68 INTEGER :: ji, jj, jk 69 69 REAL(wp) :: zcompadi, zcompaz , zcompaph, zcompapoc 70 REAL(wp) :: zgraze , zdenom, zdenom2 71 REAL(wp) :: zfact , zfood, zfoodlim, zbeta 70 REAL(wp) :: zgraze , zdenom, zdenom2, zfact, zfood, zfoodlim, zbeta 72 71 REAL(wp) :: zepsherf, zepshert, zepsherq, zepsherv, zgrarsig, zgraztotc, zgraztotn, zgraztotf 73 72 REAL(wp) :: zgrarem, zgrafer, zgrapoc, zprcaca, zmortz 74 REAL(wp) :: zrespz, ztortz, zgrasrat , zgrasratn75 REAL(wp) :: zgraz p, zgrazm, zgrazsd76 REAL(wp) :: z grazmf, zgrazsf, zgrazpf73 REAL(wp) :: zrespz, ztortz, zgrasratf, zgrasratn 74 REAL(wp) :: zgraznc, zgrazpoc, zgrazdc, zgrazpof, zgrazdf, zgraznf 75 REAL(wp) :: zsigma, zdiffdn, ztmp1, ztmp2, ztmp3, ztmptot, zproport 77 76 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zfezoo 78 77 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zw3d, zzligprod … … 92 91 zcompaz = MAX( ( trb(ji,jj,jk,jpzoo) - 1.e-9 ), 0.e0 ) 93 92 zfact = xstep * tgfunc2(ji,jj,jk) * zcompaz 93 94 ! Proportion of nano and diatoms that are within the size range 95 ! accessible to microzooplankton. 96 zproport = min(1.0, exp(-1.1 * MAX(0., ( sized(ji,jj,jk) - 1.8 ))**0.8 )) 94 97 95 98 ! linear mortality of mesozooplankton … … 113 116 ! big for microzooplankton. 114 117 ! -------------------------------------------------------- 115 zcompadi = MIN( MAX( ( trb(ji,jj,jk,jpdia) - xthreshdia ), 0.e0 ), xsizedia)118 zcompadi = zproport * MAX( ( trb(ji,jj,jk,jpdia) - xthreshdia ), 0.e0 ) 116 119 zcompaph = MAX( ( trb(ji,jj,jk,jpphy) - xthreshphy ), 0.e0 ) 117 120 zcompapoc = MAX( ( trb(ji,jj,jk,jppoc) - xthreshpoc ), 0.e0 ) … … 130 133 zgraze = grazrat * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpzoo) * (1. - nitrfac(ji,jj,jk)) 131 134 132 ! The grazing pressure on each prey is computed assuming passive switching. This 133 ! is equivalent to assuming that microzooplankton have an opportunistic feeding 134 ! behaviour. 135 ! ----------------------------------------------------------------------------- 136 zgrazp = zgraze * xprefn * zcompaph * zdenom2 137 zgrazm = zgraze * xprefc * zcompapoc * zdenom2 138 zgrazsd = zgraze * xprefd * zcompadi * zdenom2 139 140 zgrazpf = zgrazp * trb(ji,jj,jk,jpnfe) / (trb(ji,jj,jk,jpphy) + rtrn) 141 zgrazmf = zgrazm * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 142 zgrazsf = zgrazsd * trb(ji,jj,jk,jpdfe) / (trb(ji,jj,jk,jpdia) + rtrn) 143 ! 144 zgraztotc = zgrazp + zgrazm + zgrazsd 145 zgraztotf = zgrazpf + zgrazsf + zgrazmf 146 zgraztotn = zgrazp * quotan(ji,jj,jk) + zgrazm + zgrazsd * quotad(ji,jj,jk) 135 ! An active switching parameterization is used here. 136 ! We don't use the KTW parameterization proposed by 137 ! Vallina et al. because it tends to produce too steady biomass 138 ! composition and the variance of Chl is too low as it grazes 139 ! too strongly on winning organisms. We use a generalized 140 ! switching parameterization proposed by Morozov and 141 ! Petrovskii (2013) 142 ! ------------------------------------------------------------ 143 ! The width of the selection window is increased when preys 144 ! have low abundance, .i.e. zooplankton become less specific 145 ! to avoid starvation. 146 ! ---------------------------------------------------------- 147 zsigma = 1.0 - zdenom**2/(0.05**2+zdenom**2) 148 zsigma = 0.5 + 1.0*zsigma 149 zdiffdn = exp( -ABS(log(1.67 * sizen(ji,jj,jk) / (5.0 * sized(ji,jj,jk) + rtrn )) )**2 / zsigma**2) 150 ztmp1 = xprefn * zcompaph * ( zcompaph + zdiffdn * zcompadi ) / ( 1.0 + zdiffdn ) 151 ztmp2 = xprefd * zcompadi * ( zdiffdn * zcompaph + zcompadi ) / ( 1.0 + zdiffdn ) 152 ztmp3 = xprefc * zcompapoc**2 153 ztmptot = ztmp1 + ztmp2 + ztmp3 + rtrn 154 ztmp1 = ztmp1 / ztmptot 155 ztmp2 = ztmp2 / ztmptot 156 ztmp3 = ztmp3 / ztmptot 157 158 zgraznc = zgraze * ztmp1 * zdenom 159 zgrazdc = zgraze * ztmp2 * zdenom 160 zgrazpoc = zgraze * ztmp3 * zdenom 161 162 zgraznf = zgraznc * trb(ji,jj,jk,jpnfe) / (trb(ji,jj,jk,jpphy) + rtrn) 163 zgrazpof = zgrazpoc * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 164 zgrazdf = zgrazdc * trb(ji,jj,jk,jpdfe) / (trb(ji,jj,jk,jpdia) + rtrn) 165 ! 166 zgraztotc = zgraznc + zgrazpoc + zgrazdc 167 zgraztotf = zgraznf + zgrazdf + zgrazpof 168 zgraztotn = zgraznc * quotan(ji,jj,jk) + zgrazpoc + zgrazdc * quotad(ji,jj,jk) 147 169 148 170 ! Grazing by microzooplankton … … 157 179 ! Fulton, 2012) 158 180 ! ----------------------------------------------------------------------------- 159 zgrasrat 181 zgrasratf = ( zgraztotf + rtrn ) / ( zgraztotc + rtrn ) 160 182 zgrasratn = ( zgraztotn + rtrn ) / ( zgraztotc + rtrn ) 161 zepshert = MIN( 1., zgrasratn, zgrasrat / ferat3)183 zepshert = MIN( 1., zgrasratn, zgrasratf / ferat3) 162 184 zbeta = MAX(0., (epsher - epshermin) ) 163 185 zepsherf = epshermin + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta ) 164 186 zepsherq = 0.5 + (1.0 - 0.5) * zepshert * ( 1.0 + 1.0 ) / ( zepshert + 1.0 ) 165 187 zepsherv = zepsherf * zepshert * zepsherq 166 zgrafer = zgraztotc * MAX( 0. , ( 1. - unass ) * zgrasrat - ferat3 * zepsherv )188 zgrafer = zgraztotc * MAX( 0. , ( 1. - unass ) * zgrasratf - ferat3 * zepsherv ) 167 189 zgrarem = zgraztotc * ( 1. - zepsherv - unass ) 168 190 zgrapoc = zgraztotc * unass … … 190 212 zmortz = ztortz + zrespz 191 213 tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) - zmortz + zepsherv * zgraztotc 192 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) - zgraz p193 tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zgraz sd194 tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) - zgraz p* trb(ji,jj,jk,jpnch)/(trb(ji,jj,jk,jpphy)+rtrn)195 tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) - zgraz sd* trb(ji,jj,jk,jpdch)/(trb(ji,jj,jk,jpdia)+rtrn)196 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zgraz sd* trb(ji,jj,jk,jpdsi)/(trb(ji,jj,jk,jpdia)+rtrn)197 tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zgraz sd* trb(ji,jj,jk,jpdsi)/(trb(ji,jj,jk,jpdia)+rtrn)198 tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) - zgraz pf199 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgraz sf200 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortz - zgraz m214 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) - zgraznc 215 tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zgrazdc 216 tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) - zgraznc * trb(ji,jj,jk,jpnch)/(trb(ji,jj,jk,jpphy)+rtrn) 217 tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) - zgrazdc * trb(ji,jj,jk,jpdch)/(trb(ji,jj,jk,jpdia)+rtrn) 218 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zgrazdc * trb(ji,jj,jk,jpdsi)/(trb(ji,jj,jk,jpdia)+rtrn) 219 tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zgrazdc * trb(ji,jj,jk,jpdsi)/(trb(ji,jj,jk,jpdia)+rtrn) 220 tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) - zgraznf 221 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazdf 222 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortz - zgrazpoc 201 223 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zmortz 202 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zgraz m203 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz - zgraz mf224 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zgrazpoc 225 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz - zgrazpof 204 226 ! 205 227 ! Calcite remineralization due to zooplankton activity 206 228 ! part of the ingested calcite is dissolving in the acidic gut 207 zprcaca = xfracal(ji,jj,jk) * zgraz p229 zprcaca = xfracal(ji,jj,jk) * zgraznc 208 230 prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo) 209 231 ! -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zprod.F90
r12537 r12759 68 68 REAL(wp) :: zratio, zmax, zsilim, ztn, zadap, zlim, zsilfac2, zsiborn 69 69 REAL(wp) :: zprod, zproreg, zproreg2, zprochln, zprochld 70 REAL(wp) :: z maxday, zdocprod, zpislopen, zpisloped71 REAL(wp) :: z mxltst, zmxlday70 REAL(wp) :: zdocprod, zpislopen, zpisloped, zfact 71 REAL(wp) :: zratiosi, zmaxsi, zlimfac, zsizetmp 72 72 REAL(wp) :: zrum, zcodel, zargu, zval, zfeup, chlcnm_n, chlcdm_n 73 REAL(wp) :: zfact74 73 CHARACTER (len=25) :: charout 75 74 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zw2d 76 75 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d 77 REAL(wp), DIMENSION(jpi,jpj ) :: zstrn , zmixnano, zmixdiat76 REAL(wp), DIMENSION(jpi,jpj ) :: zstrn 78 77 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprmaxn,zprmaxd 79 78 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpislopeadn, zpislopeadd, zysopt … … 129 128 ENDIF 130 129 zmxl_chl(ji,jj,jk) = zval / 24. 131 zmxl_fac(ji,jj,jk) = 1. 5 * zval / ( 12. +zval )130 zmxl_fac(ji,jj,jk) = 1.0 - exp( -0.26 * zval ) 132 131 ENDIF 133 132 END DO … … 153 152 zconctemp = MAX( 0.e0 , trb(ji,jj,jk,jpdia) - xsizedia ) 154 153 zconctemp2 = trb(ji,jj,jk,jpdia) - zconctemp 155 ! 154 156 155 ! The initial slope of the PI curve can be increased for nano 157 156 ! to account for photadaptation, for instance in the DCM … … 197 196 zval = MIN( xnanopo4(ji,jj,jk), ( xnanonh4(ji,jj,jk) + xnanono3(ji,jj,jk) ) ) & 198 197 & * zprmaxn(ji,jj,jk) / ( zprbio(ji,jj,jk) + rtrn ) 199 quotan(ji,jj,jk) = MIN( 1., 0. 2 + 0.8* zval )198 quotan(ji,jj,jk) = MIN( 1., 0.3 + 0.7 * zval ) 200 199 zval = MIN( xdiatpo4(ji,jj,jk), ( xdiatnh4(ji,jj,jk) + xdiatno3(ji,jj,jk) ) ) & 201 200 & * zprmaxd(ji,jj,jk) / ( zprdia(ji,jj,jk) + rtrn ) 202 quotad(ji,jj,jk) = MIN( 1., 0. 2 + 0.8* zval )203 END DO 204 END DO 205 END DO 206 207 208 DO jk = 1, jpkm1 209 DO jj = 1, jpj 210 DO ji = 1, jpi 211 212 201 quotad(ji,jj,jk) = MIN( 1., 0.3 + 0.7 * zval ) 202 END DO 203 END DO 204 END DO 205 206 207 DO jk = 1, jpkm1 208 DO jj = 1, jpj 209 DO ji = 1, jpi 210 211 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 213 212 ! Si/C of diatoms 214 213 ! ------------------------ … … 217 216 ! to mimic the very high ratios observed in the Southern Ocean (zsilfac2) 218 217 ! ----------------------------------------------------------------------- 219 zlim = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi1 ) 220 zsilim = MIN( zprdia(ji,jj,jk) / ( zprmaxd(ji,jj,jk) + rtrn ), xlimsi(ji,jj,jk) ) 221 zsilfac = 4.4 * EXP( -4.23 * zsilim ) * MAX( 0.e0, MIN( 1., 2.2 * ( zlim - 0.5 ) ) ) + 1.e0 222 zsiborn = trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) 223 IF (gphit(ji,jj) < -30 ) THEN 224 zsilfac2 = 1. + 2. * zsiborn / ( zsiborn + xksi2**3 ) 225 ELSE 226 zsilfac2 = 1. + zsiborn / ( zsiborn + xksi2**3 ) 227 ENDIF 228 zysopt(ji,jj,jk) = grosip * zlim * zsilfac * zsilfac2 218 zlim = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi1 ) 219 zsilim = xlimdia(ji,jj,jk) * zprdia(ji,jj,jk) / ( zprmaxd(ji,jj,jk) + rtrn ) 220 zsiborn = trb(ji,jj,1,jpsil) * trb(ji,jj,1,jpsil) * trb(ji,jj,1,jpsil) 221 IF (gphit(ji,jj) < -30 ) THEN 222 zsilfac2 = 1. + 2. * zsiborn / ( zsiborn + xksi2**3 ) 223 ELSE 224 zsilfac2 = 1. + zsiborn / ( zsiborn + xksi2**3 ) 225 ENDIF 226 zratiosi = 1.0 - trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn ) / ( zsilfac2 * grosip * 3.0 + rtrn ) 227 zratiosi = MAX(0., MIN(1.0, zratiosi) ) 228 zmaxsi = (1.0 + 0.1**4) * zratiosi**4 / ( zratiosi**4 + 0.1**4 ) 229 IF ( xlimsi(ji,jj,jk) /= xlimdia(ji,jj,jk) ) THEN 230 zysopt(ji,jj,jk) = zlim * zsilfac2 * grosip * 1.0 * zmaxsi 231 ELSE 232 zysopt(ji,jj,jk) = zlim * zsilfac2 * grosip * 1.0 * zsilim**0.7 * zmaxsi 233 ENDIF 229 234 ENDIF 230 235 END DO … … 255 260 ! New production (uptake of NO3) 256 261 zpronewn(ji,jj,jk) = zprorcan(ji,jj,jk)* xnanono3(ji,jj,jk) / ( xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) + rtrn ) 257 ! 258 zratio = trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) * fecnm + rtrn ) 262 263 ! Size computation 264 ! Size is made a function of the limitation of of phytoplankton growth 265 ! Strongly limited cells are supposed to be smaller. sizena is the 266 ! size at time step t+1 and is thus updated at the end of the 267 ! current time step 268 ! -------------------------------------------------------------------- 269 zlimfac = xlimphy(ji,jj,jk) * zprchln(ji,jj,jk) / ( zprmaxn(ji,jj,jk) + rtrn ) 270 zsizetmp = 1.0 + 1.3 * ( xsizern - 1.0 ) * zlimfac**3/(0.3 + zlimfac**3) 271 sizena(ji,jj,jk) = min(xsizern, max( sizena(ji,jj,jk), zsizetmp ) ) 259 272 260 273 ! Iron uptake rates of nanophytoplankton. Upregulation … … 262 275 ! formulation used in quota formulations. Uptake is downregulated 263 276 ! when the quota is close to the maximum quota 264 zmax = MAX( 0., ( 1. - zratio ) / ABS( 1.05 - zratio ) ) 277 zratio = 1.0 - MIN(1.0,trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) * fecnm + rtrn ) ) 278 zmax = MAX( 0., MIN( 1.0, zratio**2/ (0.05**2+zratio**2) ) ) 265 279 zprofen(ji,jj,jk) = fecnm * zprmaxn(ji,jj,jk) * ( 1.0 - fr_i(ji,jj) ) & 266 & * ( 4. - 4.5 * xlimnfe(ji,jj,jk) / ( xlimnfe(ji,jj,jk) + 0.5 ) )&267 & * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concnfe(ji,jj,jk) )&268 & 280 & * (1. + 0.8 * xnanono3(ji,jj,jk) / ( rtrn + xnanono3(ji,jj,jk) & 281 & + xnanonh4(ji,jj,jk) ) * (1. - xnanofer(ji,jj,jk) ) ) & 282 & * xnanofer(ji,jj,jk) * zmax * trb(ji,jj,jk,jpphy) * rfact2 269 283 ! production terms of diatoms (C) 270 284 zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * trb(ji,jj,jk,jpdia) * rfact2 … … 272 286 ! New production (uptake of NO3) 273 287 zpronewd(ji,jj,jk) = zprorcad(ji,jj,jk) * xdiatno3(ji,jj,jk) / ( xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) + rtrn ) 288 289 ! Size computation 290 ! Size is made a function of the limitation of of phytoplankton growth 291 ! Strongly limited cells are supposed to be smaller. sizeda is 292 ! size at time step t+1 and is thus updated at the end of the 293 ! current time step. 294 ! -------------------------------------------------------------------- 295 zlimfac = zprchld(ji,jj,jk) * xlimdia(ji,jj,jk) / ( zprmaxd(ji,jj,jk) + rtrn ) 296 zsizetmp = 1.0 + 1.3 * ( xsizerd - 1.0 ) * zlimfac**3/(0.3 + zlimfac**3) 297 sizeda(ji,jj,jk) = min(xsizerd, max( sizeda(ji,jj,jk), zsizetmp ) ) 274 298 275 299 ! Iron uptake rates of nanophytoplankton. Upregulation … … 277 301 ! formulation used in quota formulations. Uptake is downregulated 278 302 ! when the quota is close to the maximum quota 279 zratio = trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) * fecdm + rtrn)280 zmax = MAX( 0., ( 1. - zratio ) / ABS( 1.05 - zratio) )281 zprofed(ji,jj,jk) = fecdm * zprmaxd(ji,jj,jk) * ( 282 & * ( 4. - 4.5 * xlimdfe(ji,jj,jk) / ( xlimdfe(ji,jj,jk) + 0.5 ) )&283 & * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concdfe(ji,jj,jk) )&284 & 303 zratio = 1.0 - MIN(1.0, trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) * fecdm + rtrn ) ) 304 zmax = MAX( 0., MIN( 1.0, zratio**2/ (0.05**2+zratio**2) ) ) 305 zprofed(ji,jj,jk) = fecdm * zprmaxd(ji,jj,jk) * (1.0 - fr_i(ji,jj) ) & 306 & * (1. + 0.8 * xdiatno3(ji,jj,jk) / ( rtrn + xdiatno3(ji,jj,jk) & 307 & + xdiatnh4(ji,jj,jk) ) * (1. - xdiatfer(ji,jj,jk) ) ) & 308 & * xdiatfer(ji,jj,jk) * zmax * trb(ji,jj,jk,jpdia) * rfact2 285 309 ENDIF 286 310 END DO … … 336 360 tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) + zprorcad(ji,jj,jk) * texcretd 337 361 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * texcretd 338 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcretd 362 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zprmaxd(ji,jj,jk) * zysopt(ji,jj,jk) & 363 & * rfact2 * trb(ji,jj,jk,jpdia) 339 364 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zdocprod 340 365 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + o2ut * ( zproreg + zproreg2) & … … 343 368 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) 344 369 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zfeup 345 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - texcretd * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) 370 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - zprmaxd(ji,jj,jk) * zysopt(ji,jj,jk) & 371 & * rfact2 * trb(ji,jj,jk,jpdia) 346 372 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk) 347 373 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zpronewn(ji,jj,jk) + zpronewd(ji,jj,jk) ) & … … 401 427 ENDIF 402 428 IF( iom_use( "PBSi" ) ) THEN 403 zw3d(:,:,:) = zpr orcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) ! biogenic silica production429 zw3d(:,:,:) = zprmaxd(:,:,:) * 1.E3 * tmask(:,:,:) * zysopt(:,:,:) * trb(:,:,:,jpdia) ! biogenic silica production 404 430 CALL iom_put( "PBSi" , zw3d ) 405 431 ENDIF -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zsms.F90
r12537 r12759 320 320 ENDIF 321 321 ! 322 ! PISCES size proxy 323 IF( iom_varid( numrtr, 'sized', ldstop = .FALSE. ) > 0 ) THEN 324 CALL iom_get( numrtr, jpdom_autoglo, 'sized' , sized(:,:,:) ) 325 ELSE 326 sized(:,:,:) = 1. 327 ENDIF 328 IF( iom_varid( numrtr, 'sizen', ldstop = .FALSE. ) > 0 ) THEN 329 CALL iom_get( numrtr, jpdom_autoglo, 'sizen' , sizen(:,:,:) ) 330 ELSE 331 sizen(:,:,:) = 1. 332 ENDIF 333 322 334 ! PISCES-QUOTA specific part 323 335 IF( ln_p5z ) THEN 324 336 ! Read the size of the different phytoplankton groups 325 337 ! If not in the restart file, they are set to 1 326 IF( iom_varid( numrtr, 'size d', ldstop = .FALSE. ) > 0 ) THEN338 IF( iom_varid( numrtr, 'sizep', ldstop = .FALSE. ) > 0 ) THEN 327 339 CALL iom_get( numrtr, jpdom_autoglo, 'sizep' , sizep(:,:,:) ) 328 CALL iom_get( numrtr, jpdom_autoglo, 'sizen' , sizen(:,:,:) )329 CALL iom_get( numrtr, jpdom_autoglo, 'sized' , sized(:,:,:) )330 340 ELSE 331 341 sizep(:,:,:) = 1. 332 sizen(:,:,:) = 1.333 sized(:,:,:) = 1.334 342 ENDIF 335 343 ENDIF … … 346 354 CALL iom_rstput( kt, nitrst, numrtw, 'Silicamax', xksimax(:,:) ) ! Si max concentration 347 355 CALL iom_rstput( kt, nitrst, numrtw, 'tcflxcum', t_oce_co2_flx_cum ) ! Cumulative CO2 flux 356 CALL iom_rstput( kt, nitrst, numrtw, 'sizen', sizen(:,:,:) ) ! Size of nanophytoplankton 357 CALL iom_rstput( kt, nitrst, numrtw, 'sized', sized(:,:,:) ) ! Size of diatoms 348 358 IF( ln_p5z ) THEN 349 359 CALL iom_rstput( kt, nitrst, numrtw, 'sizep', sizep(:,:,:) ) ! Size of picophytoplankton 350 CALL iom_rstput( kt, nitrst, numrtw, 'sizen', sizen(:,:,:) ) ! Size of nanophytoplankton351 CALL iom_rstput( kt, nitrst, numrtw, 'sized', sized(:,:,:) ) ! Size of diatoms352 360 ENDIF 353 361 ENDIF -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zlim.F90
r12537 r12759 79 79 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpicodop !: Limitation of DOP uptake by picophyto 80 80 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatdop !: Limitation of DOP uptake by diatoms 81 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanofer !: Limitation of Fe uptake by nanophyto82 81 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpicofer !: Limitation of Fe uptake by picophyto 83 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatfer !: Limitation of Fe uptake by diatoms84 82 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimpic !: Limitation of picophyto PP by nutrients 85 83 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimpics !: Limitation of picophyto PP by nutrients … … 440 438 ! ------------------------------------------------------------ 441 439 zcoef = trb(ji,jj,jk,jpdia) - MIN(xsizedia, trb(ji,jj,jk,jpdia) ) 442 sized(ji,jj,jk) = 1. + ( xsizerd - 1.0 ) * zcoef / ( xsizedia + zcoef )443 440 sizeda(ji,jj,jk) = 1. + ( xsizerd - 1.0 ) * zcoef / ( xsizedia + zcoef ) 444 441 … … 639 636 & xpicopo4(jpi,jpj,jpk), xpicodop(jpi,jpj,jpk), & 640 637 & xnanodop(jpi,jpj,jpk), xdiatdop(jpi,jpj,jpk), & 641 & xnanofer(jpi,jpj,jpk), xdiatfer(jpi,jpj,jpk), &642 638 & xpicofer(jpi,jpj,jpk), xlimpfe (jpi,jpj,jpk), & 643 639 & fvnuptk (jpi,jpj,jpk), fvduptk (jpi,jpj,jpk), & -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zmeso.F90
r12538 r12759 194 194 ! ----------------------------------------------------------- 195 195 zdiffdn = exp( -ABS(log(3.0 * sizen(ji,jj,jk) / (5.0 * sized(ji,jj,jk) + rtrn )) )**2 / zsigma**2 ) 196 ztmp1 = xpref2n * zcompaph * ( zcompaph + zdiffdn * zcompadi ) 196 ztmp1 = xpref2n * zcompaph * ( zcompaph + zdiffdn * zcompadi ) / (1.0 + zdiffdn) 197 197 ztmp2 = xpref2m * zcompames**2 198 198 ztmp3 = xpref2c * zcompapoc**2 199 ztmp4 = xpref2d * zcompadi * ( zdiffdn * zcompadi + zcompaph ) 199 ztmp4 = xpref2d * zcompadi * ( zdiffdn * zcompadi + zcompaph ) / (1.0 + zdiffdn) 200 200 ztmp5 = xpref2z * zcompaz**2 201 201 ztmptot = ztmp1 + ztmp2 + ztmp3 + ztmp4 + ztmp5 + rtrn -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/sms_pisces.F90
r12537 r12759 132 132 !!---------------------------------------------------------------------- 133 133 USE lib_mpp , ONLY: ctl_stop 134 INTEGER :: ierr(1 0) ! Local variables134 INTEGER :: ierr(11) ! Local variables 135 135 !!---------------------------------------------------------------------- 136 136 ierr(:) = 0 … … 165 165 !* Temperature dependency of SMS terms 166 166 ALLOCATE( tgfunc (jpi,jpj,jpk) , tgfunc2(jpi,jpj,jpk), & 167 & tgfunc3(jpi,jpj,jpk) , STAT=ierr(6) )167 & tgfunc3(jpi,jpj,jpk) , STAT=ierr(6) ) 168 168 ! 169 169 !* Sinking speed 170 ALLOCATE( wsbio3 (jpi,jpj,jpk) , wsbio4 (jpi,jpj,jpk), & 171 & STAT=ierr(7) ) 170 ALLOCATE( wsbio3 (jpi,jpj,jpk) , wsbio4 (jpi,jpj,jpk), STAT=ierr(7) ) 171 172 !* Size of phytoplankton cells 173 ALLOCATE( sizen (jpi,jpj,jpk), sized (jpi,jpj,jpk), & 174 & sizena(jpi,jpj,jpk), sizeda(jpi,jpj,jpk), STAT=ierr(8) ) 172 175 ! 173 176 !* Prognostic ligand 174 177 IF( ln_ligand ) THEN 175 ALLOCATE( plig(jpi,jpj,jpk) , STAT=ierr( 8) )178 ALLOCATE( plig(jpi,jpj,jpk) , STAT=ierr(9) ) 176 179 ENDIF 177 180 ENDIF … … 179 182 IF( ln_p5z ) THEN 180 183 ! PISCES-QUOTA specific part 181 ALLOCATE( epico(jpi,jpj,jpk) , epicom(jpi,jpj,jpk) , STAT=ierr( 9) )184 ALLOCATE( epico(jpi,jpj,jpk) , epicom(jpi,jpj,jpk) , STAT=ierr(10) ) 182 185 183 186 !* Size of phytoplankton cells 184 ALLOCATE( sizen(jpi,jpj,jpk), sizep(jpi,jpj,jpk), & 185 & sized(jpi,jpj,jpk), sizena(jpi,jpj,jpk), & 186 & sizepa(jpi,jpj,jpk), sizeda(jpi,jpj,jpk), STAT=ierr(10) ) 187 ALLOCATE( sizep(jpi,jpj,jpk), sizepa(jpi,jpj,jpk), STAT=ierr(11) ) 187 188 ENDIF 188 189 !
Note: See TracChangeset
for help on using the changeset viewer.