Changeset 4529
- Timestamp:
- 2014-03-15T12:00:04+01:00 (10 years ago)
- Location:
- trunk/NEMOGCM
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/CONFIG/SHARED/namelist_pisces_ref
r4388 r4529 31 31 cn_dir = './' ! root directory for the location of the dynamical files 32 32 ! 33 ln_presatm = . true. ! constant atmopsheric pressure (F) or from a file (T)33 ln_presatm = .false. ! constant atmopsheric pressure (F) or from a file (T) 34 34 / 35 35 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' … … 40 40 xkmort = 2.E-7 ! half saturation constant for mortality 41 41 ferat3 = 10.E-6 ! Fe/C in zooplankton 42 wsbio2 = 50. ! Big particles sinking speed42 wsbio2 = 30. ! Big particles sinking speed 43 43 niter1max = 1 ! Maximum number of iterations for POC 44 44 niter2max = 1 ! Maximum number of iterations for GOC … … 48 48 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 49 49 concnno3 = 1.e-6 ! Nitrate half saturation of nanophytoplankton 50 concdno3 = 3.E-6 ! Phosphate half saturation for diatoms50 concdno3 = 3.E-6 ! Phosphate half saturation for diatoms 51 51 concnnh4 = 1.E-7 ! NH4 half saturation for phyto 52 concdnh4 = 3.E-7 ! NH4 half saturation for diatoms53 concnfer = 1.E-9 54 concdfer = 3.E-9 ! Iron half saturation for diatoms52 concdnh4 = 3.E-7 ! NH4 half saturation for diatoms 53 concnfer = 1.E-9 ! Iron half saturation for phyto 54 concdfer = 3.E-9 ! Iron half saturation for diatoms 55 55 concbfe = 1.E-11 ! Half-saturation for Fe limitation of Bacteria 56 concbnh4 = 2. 5E-8! NH4 half saturation for phyto57 concbno3 = 2. 5E-7! Phosphate half saturation for diatoms56 concbnh4 = 2.E-8 ! NH4 half saturation for phyto 57 concbno3 = 2.E-7 ! Phosphate half saturation for diatoms 58 58 xsizedia = 1.E-6 ! Minimum size criteria for diatoms 59 59 xsizephy = 1.E-6 ! Minimum size criteria for phyto … … 82 82 pislope = 2. ! P-I slope 83 83 pislope2 = 2. ! P-I slope for diatoms 84 xadap = 0. ! Adaptation factor to low light 84 85 excret = 0.05 ! excretion ratio of phytoplankton 85 86 excret2 = 0.05 ! excretion ratio of diatoms … … 107 108 part2 = 0.75 ! part of calcite not dissolved in mesozoo guts 108 109 grazrat2 = 0.75 ! maximal mesozoo grazing rate 109 resrat2 = 0.0 1! exsudation rate of mesozooplankton110 resrat2 = 0.005 ! exsudation rate of mesozooplankton 110 111 mzrat2 = 0.03 ! mesozooplankton mortality rate 111 112 xprefc = 1. ! zoo preference for phyto … … 119 120 xthresh2 = 3E-7 ! Food threshold for grazing 120 121 xkgraz2 = 20.E-6 ! half sturation constant for meso grazing 121 epsher2 = 0.3 122 sigma2 = 0. 4! Fraction of mesozoo excretion as DOM122 epsher2 = 0.35 ! Efficicency of Mesozoo growth 123 sigma2 = 0.6 ! Fraction of mesozoo excretion as DOM 123 124 unass2 = 0.3 ! non assimilated fraction of P by mesozoo 124 125 grazflux = 2.e3 ! flux-feeding rate … … 129 130 part = 0.5 ! part of calcite not dissolved in microzoo gutsa 130 131 grazrat = 3.0 ! maximal zoo grazing rate 131 resrat = 0.0 5! exsudation rate of zooplankton132 resrat = 0.03 ! exsudation rate of zooplankton 132 133 mzrat = 0.004 ! zooplankton mortality rate 133 134 xpref2c = 0.1 ! Microzoo preference for POM … … 139 140 xthresh = 3.E-7 ! Food threshold for feeding 140 141 xkgraz = 20.E-6 ! half sturation constant for grazing 141 epsher = 0. 4! Efficiency of microzoo growth142 epsher = 0.3 ! Efficiency of microzoo growth 142 143 sigma1 = 0.6 ! Fraction of microzoo excretion as DOM 143 144 unass = 0.3 ! non assimilated fraction of phyto by zoo … … 185 186 sn_ndepo = 'ndeposition.orca', -12 , 'ndep' , .false. , .true. , 'yearly' , '' , '' , '' 186 187 sn_ironsed = 'bathy.orca' , -12 , 'bathy' , .false. , .true. , 'yearly' , '' , '' , '' 187 sn_hydrofe = 'hydrofe ', -12 , 'epsdb' , .false. , .true. , 'yearly' , '' , '' , ''188 sn_hydrofe = 'hydrofe.orca' , -12 , 'epsdb' , .false. , .true. , 'yearly' , '' , '' , '' 188 189 ! 189 190 cn_dir = './' ! root directory for the location of the dynamical files … … 195 196 ln_ironice = .true. ! boolean for Fe input from sea ice 196 197 ln_hydrofe = .false. ! boolean for from hydrothermal vents 197 sedfeinput = 1.e-9 ! Coastal release of Iron 198 dustsolub = 0.02 ! Solubility of the dust 198 sedfeinput = 2.e-9 ! Coastal release of Iron 199 dustsolub = 0.02 ! Solubility of the dusta 200 mfrac = 0.035 ! Fe mineral fraction of dust 199 201 wdust = 2.0 ! Dust sinking speed 200 202 icefeinput = 15.e-9 ! Iron concentration in sea ice … … 202 204 diazolight = 50. ! Diazotrophs sensitivity to light (W/m2) 203 205 concfediaz = 1.e-10 ! Diazotrophs half-saturation Cste for Iron 204 hratio = 9.e+5! Fe to 3He ratio assumed for vent iron supply206 hratio = 1.e+7 ! Fe to 3He ratio assumed for vent iron supply 205 207 / 206 208 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' -
trunk/NEMOGCM/CONFIG/cfg.txt
r4494 r4529 6 6 ORCA2_SAS_LIM OPA_SRC SAS_SRC LIM_SRC_2 NST_SRC 7 7 C1D_PAPA OPA_SRC 8 ORCA2_LIM_PISCES OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC9 8 ORCA2_LIM3 OPA_SRC LIM_SRC_3 NST_SRC 10 9 ORCA2_LIM OPA_SRC LIM_SRC_2 NST_SRC 11 10 AMM12 OPA_SRC 12 11 GYRE_BFM OPA_SRC TOP_SRC 12 ORCA2_LIM_PISCES OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC -
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zbio.F90
r3531 r4529 86 86 CALL p4z_prod ( kt, jnt ) ! phytoplankton growth rate over the global ocean. 87 87 ! ! (for each element : C, Si, Fe, Chl ) 88 CALL p4z_rem ( kt, jnt ) ! remineralization terms of organic matter+scavenging of Fe89 88 CALL p4z_mort ( kt ) ! phytoplankton mortality 90 89 ! ! zooplankton sources/sinks routines 91 90 CALL p4z_micro( kt, jnt ) ! microzooplankton 92 91 CALL p4z_meso ( kt, jnt ) ! mesozooplankton 93 92 CALL p4z_rem ( kt, jnt ) ! remineralization terms of organic matter+scavenging of Fe 94 93 ! ! test if tracers concentrations fall below 0. 95 94 xnegtr(:,:,:) = 1.e0 … … 148 147 !!====================================================================== 149 148 END MODULE p4zbio 149 -
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
r4521 r4529 244 244 ztrc = ( trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpgoc) + trn(ji,jj,jk,jpcal) + trn(ji,jj,jk,jpgsi) ) * 1.e6 245 245 #endif 246 IF( ln_dust ) zdust = dust(ji,jj) / ( wdust * 30.42 * 0.035 ) * tmask(ji,jj,jk)246 IF( ln_dust ) zdust = dust(ji,jj) / ( wdust * rday ) * tmask(ji,jj,jk) ! dust in kg/m2/s 247 247 zlam1b = 3.e-5 + xlamdust * zdust + xlam1 * ztrc 248 248 zscave = zfeequi * zlam1b * zstep -
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlim.F90
r4147 r4529 92 92 zno3 = trn(ji,jj,jk,jpno3) / 40.e-6 93 93 zferlim = MAX( 3e-11 * zno3 * zno3, 5e-12 ) 94 zferlim = MIN( zferlim, 5e-11 )94 zferlim = MIN( zferlim, 7e-11 ) 95 95 trn(ji,jj,jk,jpfer) = MAX( trn(ji,jj,jk,jpfer), zferlim ) 96 96 … … 137 137 zironmin = xcoef1 * trn(ji,jj,jk,jpnch) * z1_trnphy + xcoef2 * zlim1 + xcoef3 * xnanono3(ji,jj,jk) 138 138 zlim3 = MAX( 0.,( zratio - zironmin ) / qnfelim ) 139 xlimnfe(ji,jj,jk) = MIN( 1., zlim3 ) 140 xlimphy(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) 139 xnanopo4(ji,jj,jk) = zlim2 140 xlimnfe (ji,jj,jk) = MIN( 1., zlim3 ) 141 xlimphy (ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) 141 142 ! 142 143 ! Michaelis-Menten Limitation term for nutrients Diatoms … … 152 153 zironmin = xcoef1 * trn(ji,jj,jk,jpdch) * z1_trndia + xcoef2 * zlim1 + xcoef3 * xdiatno3(ji,jj,jk) 153 154 zlim4 = MAX( 0., ( zratio - zironmin ) / qdfelim ) 154 xlimdfe(ji,jj,jk) = MIN( 1., zlim4 ) 155 xlimdia(ji,jj,jk) = MIN( zlim1, zlim2, zlim3, zlim4 ) 156 xlimsi(ji,jj,jk) = MIN( zlim1, zlim2, zlim4 ) 155 xdiatpo4(ji,jj,jk) = zlim2 156 xlimdfe (ji,jj,jk) = MIN( 1., zlim4 ) 157 xlimdia (ji,jj,jk) = MIN( zlim1, zlim2, zlim3, zlim4 ) 158 xlimsi (ji,jj,jk) = MIN( zlim1, zlim2, zlim4 ) 157 159 END DO 158 160 END DO -
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90
r4521 r4529 71 71 INTEGER :: ji, jj, jk 72 72 REAL(wp) :: zcompadi, zcompaph, zcompapoc, zcompaz, zcompam 73 REAL(wp) :: zgraze2 , zdenom, zdenom2 , zncratio73 REAL(wp) :: zgraze2 , zdenom, zdenom2 74 74 REAL(wp) :: zfact , zstep, zfood, zfoodlim, zproport 75 75 REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2 76 REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztot f77 REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zgrasrat 76 REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotn, zgraztotf 77 REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zgrasrat, zgrasratn 78 78 #if defined key_kriest 79 79 REAL znumpoc … … 98 98 DO jj = 1, jpj 99 99 DO ji = 1, jpi 100 zcompam = MAX( ( trn(ji,jj,jk,jpmes) - 1.e- 8), 0.e0 )100 zcompam = MAX( ( trn(ji,jj,jk,jpmes) - 1.e-9 ), 0.e0 ) 101 101 # if defined key_degrad 102 102 zstep = xstep * facvol(ji,jj,jk) … … 116 116 ztortz2 = mzrat2 * 1.e6 * zfact * trn(ji,jj,jk,jpmes) 117 117 ! 118 119 118 zcompadi = MAX( ( trn(ji,jj,jk,jpdia) - xthresh2dia ), 0.e0 ) 120 119 zcompaz = MAX( ( trn(ji,jj,jk,jpzoo) - xthresh2zoo ), 0.e0 ) 121 zcompaph = MAX( ( trn(ji,jj,jk,jpphy) - xthresh2phy ), 0.e0 ) 120 ! Size effect of nanophytoplankton on grazing : the smaller it is, the less prone 121 ! it is to predation by mesozooplankton 122 ! ------------------------------------------------------------------------------- 123 zcompaph = MAX( ( trn(ji,jj,jk,jpphy) - xthresh2phy ), 0.e0 ) & 124 & * MIN(1., MAX( 0., ( quotan(ji,jj,jk) - 0.2) / 0.3 ) ) 122 125 zcompapoc = MAX( ( trn(ji,jj,jk,jppoc) - xthresh2poc ), 0.e0 ) 123 126 … … 139 142 ! Mesozooplankton flux feeding on GOC 140 143 ! ---------------------------------- 144 ! ---------------------------------- 141 145 # if ! defined key_kriest 142 zgrazffeg = grazflux * zstep * wsbio4(ji,jj,jk) * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) 146 zgrazffeg = grazflux * zstep * wsbio4(ji,jj,jk) & 147 & * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) 143 148 zgrazfffg = zgrazffeg * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 144 149 # endif 145 zgrazffep = grazflux * zstep * wsbio3(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) 150 zgrazffep = grazflux * zstep * wsbio3(ji,jj,jk) & 151 & * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) 146 152 zgrazfffp = zgrazffep * trn(ji,jj,jk,jpsfe) / (trn(ji,jj,jk,jppoc) + rtrn) 147 153 ! … … 150 156 ! Compute the proportion of filter feeders 151 157 zproport = (zgrazffep + zgrazffeg)/(rtrn + zgraztot) 152 ! Compute fractionation of aggregates. It is assumed that diatoms based aggregates are more prone to fractionation 158 ! Compute fractionation of aggregates. It is assumed that 159 ! diatoms based aggregates are more prone to fractionation 153 160 ! since they are more porous (marine snow instead of fecal pellets) 154 161 zratio = trn(ji,jj,jk,jpgsi) / ( trn(ji,jj,jk,jpgoc) + rtrn ) 155 162 zratio2 = zratio * zratio 156 zfrac = zproport * zgrazffeg * ( 0.1 + 3.9 * zratio2 / ( 1.**2 + zratio2 ) ) 157 163 zfrac = zproport * grazflux * zstep * wsbio4(ji,jj,jk) & 164 & * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) & 165 & * ( 0.1 + 3.9 * zratio2 / ( 1.**2 + zratio2 ) ) 158 166 zfracfe = zfrac * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 159 167 … … 163 171 zgrazfffg = zproport * zgrazfffg 164 172 zgraztot = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 173 zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk) & 174 & + zgrazpoc + zgrazffep + zgrazffeg 165 175 zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg 166 176 # else … … 171 181 zgrazfffp = zproport * zgrazfffp 172 182 zgraztot = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep 183 zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk) + zgrazpoc + zgrazffep 173 184 zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp 174 185 # endif … … 179 190 ! Mesozooplankton efficiency 180 191 ! -------------------------- 181 zgrasrat = zgraztotf / ( zgraztot + rtrn ) 182 zncratio = ( xprefc * zcompadi * quotad(ji,jj,jk) & 183 & + xprefp * zcompaph * quotan(ji,jj,jk) & 184 & + xprefz * zcompaz & 185 & + xprefpoc * zcompapoc ) / ( zfood + rtrn ) 186 zepshert = epsher2 * MIN( 1., zncratio ) 187 zepsherv = zepshert * MIN( 1., zgrasrat / ferat3 ) 188 zgrarem2 = zgraztot * ( 1. - zepsherv - unass2 ) + zrespz2 & 189 & + ( 1. - zepsherv - unass2 ) /( 1. - zepsherv ) * ztortz2 190 zgrafer2 = zgraztot * MAX( 0. , ( 1. - unass2 ) * zgrasrat - ferat3 * zepsherv ) & 191 & + ferat3 * ( zrespz2 + ( 1. - zepsherv - unass2 ) /( 1. - zepsherv ) * ztortz2 ) 192 zgrasrat = ( zgraztotf +rtrn )/ ( zgraztot + rtrn ) 193 zgrasratn = ( zgraztotn +rtrn )/ ( zgraztot + rtrn ) 194 zepshert = MIN( 1., zgrasratn, zgrasrat / ferat3) 195 zepsherv = zepshert * MIN( epsher2, (1. - unass2) * zgrasrat / ferat3, (1. - unass2) * zgrasratn ) 196 zgrarem2 = zgraztot * ( 1. - zepsherv - unass2 ) & 197 & + ( 1. - epsher2 - unass2 ) / ( 1. - epsher2 ) * ztortz2 198 zgrafer2 = zgraztot * MAX( 0. , ( 1. - unass2 ) * zgrasrat - ferat3 * zepsherv ) & 199 & + ferat3 * ( ( 1. - epsher2 - unass2 ) /( 1. - epsher2 ) * ztortz2 ) 192 200 zgrapoc2 = zgraztot * unass2 193 201 … … 215 223 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazf 216 224 225 ! calcite production 217 226 zprcaca = xfracal(ji,jj,jk) * zgrazn 218 ! calcite production219 227 prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo) 220 228 ! … … 224 232 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 225 233 #if defined key_kriest 226 znumpoc = trn(ji,jj,jk,jpnum) / ( trn(ji,jj,jk,jppoc) + rtrn ) 227 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffep + zgrapoc2 228 tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc + zgrapoc2 * xkr_dmeso & 229 & + zmortzgoc * xkr_dmeso - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn ) 230 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz2 - zgrazfffp - zgrazpof + zgraztotf * unass2 234 znumpoc = trn(ji,jj,jk,jpnum) / ( trn(ji,jj,jk,jppoc) + rtrn ) 235 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffep + zgrapoc2 236 tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc + zgrapoc2 * xkr_dmeso & 237 & + zmortzgoc * xkr_dmeso - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn ) 238 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortzgoc - zgrazfffp - zgrazpof & 239 & + zgraztotf * unass2 231 240 #else 232 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac 233 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac 234 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe 235 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg + zgraztotf * unass2 - zfracfe 241 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac 242 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac 243 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe 244 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg & 245 & + zgraztotf * unass2 - zfracfe 236 246 #endif 237 247 END DO -
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90
r4521 r4529 72 72 INTEGER :: ji, jj, jk 73 73 REAL(wp) :: zcompadi, zcompaz , zcompaph, zcompapoc 74 REAL(wp) :: zgraze , zdenom, zdenom2 , zncratio74 REAL(wp) :: zgraze , zdenom, zdenom2 75 75 REAL(wp) :: zfact , zstep, zfood, zfoodlim 76 REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztot f76 REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotn, zgraztotf 77 77 REAL(wp) :: zgrarem, zgrafer, zgrapoc, zprcaca, zmortz 78 REAL(wp) :: zrespz, ztortz, zgrasrat 78 REAL(wp) :: zrespz, ztortz, zgrasrat, zgrasratn 79 79 REAL(wp) :: zgrazp, zgrazm, zgrazsd 80 80 REAL(wp) :: zgrazmf, zgrazsf, zgrazpf … … 91 91 DO jj = 1, jpj 92 92 DO ji = 1, jpi 93 zcompaz = MAX( ( trn(ji,jj,jk,jpzoo) - 1.e- 8), 0.e0 )93 zcompaz = MAX( ( trn(ji,jj,jk,jpzoo) - 1.e-9 ), 0.e0 ) 94 94 zstep = xstep 95 95 # if defined key_degrad … … 130 130 zgraztot = zgrazp + zgrazm + zgrazsd 131 131 zgraztotf = zgrazpf + zgrazsf + zgrazmf 132 zgraztotn = zgrazp * quotan(ji,jj,jk) + zgrazm + zgrazsd * quotad(ji,jj,jk) 132 133 133 134 ! Grazing by microzooplankton … … 137 138 ! -------------------------------------------- 138 139 zgrasrat = zgraztotf / ( zgraztot + rtrn ) 139 zncratio = ( xpref2p * zcompaph * quotan(ji,jj,jk) & 140 & + xpref2d * zcompadi * quotad(ji,jj,jk) + xpref2c * zcompapoc ) / ( zfood + rtrn ) 141 zepshert = epsher * MIN( 1., zncratio ) 142 zepsherv = zepshert * MIN( 1., zgrasrat / ferat3 ) 140 zgrasratn = zgraztotn / ( zgraztot + rtrn ) 141 zepshert = MIN( 1., zgrasratn, zgrasrat / ferat3) 142 zepsherv = zepshert * MIN( epsher, (1. - unass) * zgrasrat / ferat3, (1. - unass) * zgrasratn ) 143 143 zgrafer = zgraztot * MAX( 0. , ( 1. - unass ) * zgrasrat - ferat3 * zepsherv ) 144 144 zgrarem = zgraztot * ( 1. - zepsherv - unass ) … … 174 174 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortz - zgrazm 175 175 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz - zgrazmf 176 zprcaca = xfracal(ji,jj,jk) * zgrazp177 176 ! 178 177 ! calcite production 178 zprcaca = xfracal(ji,jj,jk) * zgrazp 179 179 prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo) 180 180 ! -
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmort.F90
r4147 r4529 18 18 USE sms_pisces ! PISCES Source Minus Sink variables 19 19 USE p4zsink ! vertical flux of particulate matter due to sinking 20 USE p4zprod ! Primary productivity 20 21 USE prtctl_trc ! print control for debugging 21 22 … … 72 73 !!--------------------------------------------------------------------- 73 74 INTEGER :: ji, jj, jk 74 REAL(wp) :: z compaph75 REAL(wp) :: zsizerat, zcompaph 75 76 REAL(wp) :: zfactfe, zfactch, zprcaca, zfracal 76 77 REAL(wp) :: ztortp , zrespp , zmortp , zstep … … 89 90 zstep = zstep * facvol(ji,jj,jk) 90 91 # endif 92 ! When highly limited by macronutrients, very small cells 93 ! dominate the community. As a consequence, aggregation 94 ! due to turbulence is negligible. Mortality is also set 95 ! to 0 96 zsizerat = MIN(1., MAX( 0., (quotan(ji,jj,jk) - 0.2) / 0.3) ) * trn(ji,jj,jk,jpphy) 91 97 ! Squared mortality of Phyto similar to a sedimentation term during 92 98 ! blooms (Doney et al. 1996) 93 zrespp = wchl * 1.e6 * zstep * xdiss(ji,jj,jk) * zcompaph * trn(ji,jj,jk,jpphy)99 zrespp = wchl * 1.e6 * zstep * xdiss(ji,jj,jk) * zcompaph * zsizerat 94 100 95 101 ! Phytoplankton mortality. This mortality loss is slightly 96 102 ! increased when nutrients are limiting phytoplankton growth 97 103 ! as observed for instance in case of iron limitation. 98 ztortp = mprat * xstep * trn(ji,jj,jk,jpphy) / ( xkmort + trn(ji,jj,jk,jpphy) ) * zcompaph104 ztortp = mprat * xstep * zcompaph / ( xkmort + trn(ji,jj,jk,jpphy) ) * zsizerat 99 105 100 106 zmortp = zrespp + ztortp … … 166 172 DO ji = 1, jpi 167 173 168 zcompadi = MAX( ( trn(ji,jj,jk,jpdia) - 1e- 8), 0. )174 zcompadi = MAX( ( trn(ji,jj,jk,jpdia) - 1e-9), 0. ) 169 175 170 176 ! Aggregation term for diatoms is increased in case of nutrient … … 181 187 zlim1 = 0.25 * ( 1. - zlim2 ) / ( 0.25 + zlim2 ) 182 188 zrespp2 = 1.e6 * zstep * ( wchld + wchldm * zlim1 ) * xdiss(ji,jj,jk) * zcompadi * trn(ji,jj,jk,jpdia) 183 ! zlim1 = 1.0 - xlimdia(ji,jj,jk)184 ! zrespp2 = 1.e6 * zstep * ( wchl + wchld * zlim1 ) * xdiss(ji,jj,jk) * zcompadi * trn(ji,jj,jk,jpdia)185 189 186 190 ! Phytoplankton mortality. -
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
r4148 r4529 35 35 REAL(wp), PUBLIC :: pislope !: 36 36 REAL(wp), PUBLIC :: pislope2 !: 37 REAL(wp), PUBLIC :: xadap !: 37 38 REAL(wp), PUBLIC :: excret !: 38 39 REAL(wp), PUBLIC :: excret2 !: … … 158 159 IF( etot(ji,jj,jk) > 1.E-3 ) THEN 159 160 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 160 zadap = ztn / ( 2.+ ztn )161 zadap = xadap * ztn / ( 2.+ ztn ) 161 162 zconctemp = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - xsizedia ) 162 163 zconctemp2 = trn(ji,jj,jk,jpdia) - zconctemp … … 227 228 ENDIF 228 229 230 229 231 ! Computation of a proxy of the N/C ratio 230 232 ! --------------------------------------- … … 235 237 !CDIR NOVERRCHK 236 238 DO ji = 1, jpi 237 zval = ( xnanonh4(ji,jj,jk) + xnanono3(ji,jj,jk) ) * prmax(ji,jj,jk) / ( zprbio(ji,jj,jk) + rtrn ) 238 quotan(ji,jj,jk) = MIN( 1., 0.5 + 0.5 * zval ) 239 zval = ( xdiatnh4(ji,jj,jk) + xdiatno3(ji,jj,jk) ) * prmax(ji,jj,jk) / ( zprdia(ji,jj,jk) + rtrn ) 240 quotad(ji,jj,jk) = MIN( 1., 0.5 + 0.5 * zval ) 239 zval = MIN( xnanopo4(ji,jj,jk), ( xnanonh4(ji,jj,jk) + xnanono3(ji,jj,jk) ) ) & 240 & * prmax(ji,jj,jk) / ( zprbio(ji,jj,jk) + rtrn ) 241 quotan(ji,jj,jk) = MIN( 1., 0.2 + 0.8 * zval ) 242 zval = MIN( xdiatpo4(ji,jj,jk), ( xdiatnh4(ji,jj,jk) + xdiatno3(ji,jj,jk) ) ) & 243 & * prmax(ji,jj,jk) / ( zprdia(ji,jj,jk) + rtrn ) 244 quotad(ji,jj,jk) = MIN( 1., 0.2 + 0.8 * zval ) 241 245 END DO 242 246 END DO … … 274 278 zmxltst = MAX( 0.e0, hmld(ji,jj) - heup(ji,jj) ) 275 279 zmxlday = zmxltst * zmxltst * r1_rday 276 zmixnano(ji,jj) = 1. - zmxlday / ( 3. + zmxlday )280 zmixnano(ji,jj) = 1. - zmxlday / ( 2. + zmxlday ) 277 281 zmixdiat(ji,jj) = 1. - zmxlday / ( 4. + zmxlday ) 278 282 END DO … … 470 474 !!---------------------------------------------------------------------- 471 475 ! 472 NAMELIST/nampisprod/ pislope, pislope2, ln_newprod, bresp, excret, excret2, &476 NAMELIST/nampisprod/ pislope, pislope2, xadap, ln_newprod, bresp, excret, excret2, & 473 477 & chlcnm, chlcdm, chlcmin, fecnm, fecdm, grosip 474 478 INTEGER :: ios ! Local integer output status for namelist read … … 491 495 WRITE(numout,*) ' mean Si/C ratio grosip =', grosip 492 496 WRITE(numout,*) ' P-I slope pislope =', pislope 497 WRITE(numout,*) ' Acclimation factor to low light xadap =', xadap 493 498 WRITE(numout,*) ' excretion ratio of nanophytoplankton excret =', excret 494 499 WRITE(numout,*) ' excretion ratio of diatoms excret2 =', excret2 -
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90
r4521 r4529 35 35 REAL(wp), PUBLIC :: sedfeinput !: Coastal release of Iron 36 36 REAL(wp), PUBLIC :: dustsolub !: Solubility of the dust 37 REAL(wp), PUBLIC :: mfrac !: Mineral Content of the dust 37 38 REAL(wp), PUBLIC :: icefeinput !: Iron concentration in sea ice 38 39 REAL(wp), PUBLIC :: wdust !: Sinking speed of the dust … … 232 233 WRITE(numout,*) ' coastal release of iron sedfeinput = ', sedfeinput 233 234 WRITE(numout,*) ' solubility of the dust dustsolub = ', dustsolub 235 WRITE(numout,*) ' Mineral Fe content of the dust mfrac = ', mfrac 234 236 WRITE(numout,*) ' Iron concentration in sea ice icefeinput = ', icefeinput 235 237 WRITE(numout,*) ' sinking speed of the dust wdust = ', wdust … … 278 280 sumdepsi = sumdepsi + glob_sum( zdust(:,:,jm) * e1e2t(:,:) * tmask(:,:,1) * ztimes_dust ) 279 281 ENDDO 280 sumdepsi = sumdepsi / ( nyear_len(1) * rday ) * 12. * 8.8 * 0.075 / 28.1282 sumdepsi = sumdepsi / ( nyear_len(1) * rday ) * 12. * 8.8 * 0.075 * mfrac / 28.1 281 283 DEALLOCATE( zdust) 282 284 ENDIF -
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90
r4521 r4529 71 71 REAL(wp) :: zo2, zno3, zflx, zpdenit, z1pdenit, zdenitt, zolimit 72 72 REAL(wp) :: zsiloss, zcaloss, zws3, zws4, zwsc, zdep, zwstpoc 73 REAL(wp) :: ztrfer, ztrpo4, zwdust 73 REAL(wp) :: ztrfer, ztrpo4, zwdust, zlight 74 74 REAL(wp) :: zrdenittot, zsdenittot, znitrpottot 75 75 ! 76 76 CHARACTER (len=25) :: charout 77 77 REAL(wp), POINTER, DIMENSION(:,: ) :: zpdep, zsidep, zwork1, zwork2, zwork3, zwork4 78 REAL(wp), POINTER, DIMENSION(:,: ) :: zdenit2d, zironice 78 REAL(wp), POINTER, DIMENSION(:,: ) :: zdenit2d, zironice, zbureff 79 79 REAL(wp), POINTER, DIMENSION(:,: ) :: zwsbio3, zwsbio4, zwscal 80 REAL(wp), POINTER, DIMENSION(:,:,:) :: znitrpot, zirondep 80 REAL(wp), POINTER, DIMENSION(:,:,:) :: znitrpot, zirondep, zsoufer 81 81 !!--------------------------------------------------------------------- 82 82 ! … … 93 93 ! 94 94 ! Allocate temporary workspace 95 CALL wrk_alloc( jpi, jpj, zdenit2d, zwork1, zwork2, zwork3, zwork4 )95 CALL wrk_alloc( jpi, jpj, zdenit2d, zwork1, zwork2, zwork3, zwork4, zbureff ) 96 96 CALL wrk_alloc( jpi, jpj, zwsbio3, zwsbio4, zwscal ) 97 CALL wrk_alloc( jpi, jpj, jpk, znitrpot )97 CALL wrk_alloc( jpi, jpj, jpk, znitrpot, zsoufer ) 98 98 99 99 zdenit2d(:,:) = 0.e0 100 zbureff (:,:) = 0.e0 100 101 101 102 ! Iron input/uptake due to sea ice : Crude parameterization based on Lancelot et al. … … 131 132 ! ! Iron and Si deposition at the surface 132 133 IF( ln_solub ) THEN 133 zirondep(:,:,1) = solub(:,:) * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 55.85 * rmtss ) + 3.e-10 * r1_ryyss134 zirondep(:,:,1) = solub(:,:) * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / ( 55.85 * rmtss ) + 3.e-10 * r1_ryyss 134 135 ELSE 135 zirondep(:,:,1) = dustsolub * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 55.85 * rmtss ) + 3.e-10 * r1_ryyss136 zirondep(:,:,1) = dustsolub * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / ( 55.85 * rmtss ) + 3.e-10 * r1_ryyss 136 137 ENDIF 137 zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 28.1 * rmtss )138 zpdep (:,:) = 0.1 * 0.021 * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 31. * rmtss ) / po4r138 zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / ( 28.1 * rmtss ) 139 zpdep (:,:) = 0.1 * 0.021 * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / ( 31. * rmtss ) / po4r 139 140 ! ! Iron solubilization of particles in the water column 140 zwdust = 0.005 / ( wdust * 55.85 * 30.42 ) / ( 45. * rday ) 141 ! ! dust in kg/m2/s ---> 1/55.85 to put in mol/Fe ; wdust in m/j 142 zwdust = 0.03 * rday / ( wdust * 55.85 ) / ( 270. * rday ) 141 143 DO jk = 2, jpkm1 142 zirondep(:,:,jk) = dust(:,:) * zwdust * rfact2 * EXP( -fsdept(:,:,jk) / 1000. )144 zirondep(:,:,jk) = dust(:,:) * mfrac * zwdust * rfact2 * EXP( -fsdept(:,:,jk) / 540. ) 143 145 END DO 144 146 ! ! Iron solubilization of particles in the water column … … 152 154 IF( jnt == nrdttrc ) THEN 153 155 CALL iom_put( "Irondep", zirondep(:,:,1) * zfact * fse3t(:,:,1) * tmask(:,:,1) ) ! surface downward dust depo of iron 154 CALL iom_put( "pdust" , dust(:,:) / ( wdust * 30.42 * 0.035) * tmask(:,:,1) ) ! dust concentration at surface156 CALL iom_put( "pdust" , dust(:,:) / ( wdust * rday ) * tmask(:,:,1) ) ! dust concentration at surface 155 157 ENDIF 156 158 ELSE … … 215 217 #if ! defined key_sed 216 218 ! Computation of the sediment denitrification proportion: The metamodel from midlleburg (2006) is being used 219 ! Computation of the fraction of organic matter that is permanently buried from Dunne's model 217 220 ! ------------------------------------------------------- 218 221 DO jj = 1, jpj … … 233 236 & + 0.4721 * zo2 - 0.0996 * zdep + 0.4256 * zflx * zo2 234 237 zdenit2d(ji,jj) = 10.0**( zdenit2d(ji,jj) ) 238 ! 239 zflx = ( trn(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj) & 240 & + trn(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) ) * 1E6 241 zbureff(ji,jj) = 0.013 + 0.53 * zflx**2 / ( 7.0 + zflx )**2 235 242 ENDIF 236 243 END DO 237 244 END DO 245 238 246 ! Loss of biogenic silicon, Caco3 organic carbon in the sediments. 239 247 ! First, the total loss is computed. … … 266 274 #if ! defined key_sed 267 275 zrivsil = 1._wp - ( sumdepsi + rivdsiinput * r1_ryyss ) / zsumsedsi 268 zrivno3 = 1._wp - ( rivdininput * r1_ryyss ) / zsumsedpo4269 276 #endif 270 277 … … 301 308 zws4 = zwsbio4(ji,jj) * zdep 302 309 zws3 = zwsbio3(ji,jj) * zdep 310 zrivno3 = 1. - zbureff(ji,jj) 303 311 # if ! defined key_kriest 304 312 trn(ji,jj,ikt,jpgoc) = trn(ji,jj,ikt,jpgoc) - trn(ji,jj,ikt,jpgoc) * zws4 … … 334 342 335 343 ! Nitrogen fixation process 344 ! Small source iron from particulate inorganic iron 336 345 !----------------------------------- 337 346 DO jk = 1, jpkm1 338 347 DO jj = 1, jpj 339 348 DO ji = 1, jpi 340 ! 349 ! ! Potential nitrogen fixation dependant on temperature and iron 341 350 zlim = ( 1.- xnanono3(ji,jj,jk) - xnanonh4(ji,jj,jk) ) 342 351 IF( zlim <= 0.2 ) zlim = 0.01 … … 348 357 ztrfer = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 349 358 ztrpo4 = trn (ji,jj,jk,jppo4) / ( concnnh4 + trn (ji,jj,jk,jppo4) ) 359 zlight = ( 1.- EXP( -etot(ji,jj,jk) / diazolight ) ) 350 360 znitrpot(ji,jj,jk) = MAX( 0.e0, ( 0.6 * tgfunc(ji,jj,jk) - 2.15 ) * r1_rday ) & 351 & * zfact * MIN( ztrfer, ztrpo4 ) * ( 1.- EXP( -etot(ji,jj,jk) / diazolight ) ) 361 & * zfact * MIN( ztrfer, ztrpo4 ) * zlight 362 zsoufer(ji,jj,jk) = zlight * 2E-11 / (2E-11 + biron(ji,jj,jk)) 352 363 END DO 353 364 END DO 354 365 END DO 355 356 IF( ln_check_mass ) THEN357 ! The total gain from nitrogen fixation is scaled to balance the loss by denitrification358 ! -------------------------------------------------------------359 zrdenittot = glob_sum ( denitr(:,:,:) * rdenit * xnegtr(:,:,:) * cvol(:,:,:) )360 zsdenittot = glob_sum ( zwork4(:,:) * e1e2t(:,:) )361 znitrpottot = glob_sum ( znitrpot(:,:,:) * cvol(:,:,:) )362 IF( kt == nitend .AND. jnt == nrdttrc ) THEN363 zfact = 1.e+3 * rfact2r * rno3 * 365. * 86400. * 14. / 1e12364 IF(lwp) WRITE(numnit,9100) ndastp, znitrpottot * nitrfix * zfact, zrdenittot * zfact , zsdenittot * zfact365 ENDIF366 ENDIF367 366 368 367 ! Nitrogen change due to nitrogen fixation … … 371 370 DO jj = 1, jpj 372 371 DO ji = 1, jpi 373 ! zfact = znitrpot(ji,jj,jk) * ( zrdenittot + zsdenittot ) / znitrpottot374 372 zfact = znitrpot(ji,jj,jk) * nitrfix 375 373 trn(ji,jj,jk,jpnh4) = trn(ji,jj,jk,jpnh4) + zfact 376 374 trn(ji,jj,jk,jptal) = trn(ji,jj,jk,jptal) + rno3 * zfact 377 375 trn(ji,jj,jk,jpoxy) = trn(ji,jj,jk,jpoxy) + o2nit * zfact 378 trn(ji,jj,jk,jppo4) = trn(ji,jj,jk,jppo4) + 30. / 46. * zfact 376 trn(ji,jj,jk,jppo4) = trn(ji,jj,jk,jppo4) + concdnh4 / ( concdnh4 + trn(ji,jj,jk,jppo4) ) & 377 & * 0.002 * trn(ji,jj,jk,jpdoc) * rfact2 / rday 378 trn(ji,jj,jk,jpfer) = trn(ji,jj,jk,jpfer) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday 379 379 END DO 380 380 END DO 381 381 END DO 382 383 384 IF( ln_check_mass ) THEN 385 ! Global budget of N SMS : denitrification in the water column and in the sediment 386 ! nitrogen fixation by the diazotrophs 387 ! -------------------------------------------------------------------------------- 388 zrdenittot = glob_sum ( denitr(:,:,:) * rdenit * xnegtr(:,:,:) * cvol(:,:,:) ) 389 zsdenittot = glob_sum ( zwork4(:,:) * e1e2t(:,:) ) 390 znitrpottot = glob_sum ( znitrpot(:,:,:) * nitrfix * cvol(:,:,:) ) 391 IF( kt == nitend .AND. jnt == nrdttrc ) THEN 392 zfact = 1.e+3 * rfact2r * rno3 * ryyss * 14. / 1e12 393 IF(lwp) WRITE(numnit,9100) ndastp, znitrpottot * nitrfix * zfact, zrdenittot * zfact , zsdenittot * zfact 394 ENDIF 395 ENDIF 382 396 ! 383 397 IF( ln_diatrc ) THEN -
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90
r4148 r4529 68 68 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanonh4 !: ??? 69 69 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatnh4 !: ??? 70 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanopo4 !: ??? 71 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatpo4 !: ??? 70 72 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimphy !: ??? 71 73 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimdia !: ??? … … 136 138 & xnanono3(jpi,jpj,jpk), xdiatno3(jpi,jpj,jpk), & 137 139 & xnanonh4(jpi,jpj,jpk), xdiatnh4(jpi,jpj,jpk), & 140 & xnanopo4(jpi,jpj,jpk), xdiatpo4(jpi,jpj,jpk), & 138 141 & xlimphy (jpi,jpj,jpk), xlimdia (jpi,jpj,jpk), & 139 142 & xlimnfe (jpi,jpj,jpk), xlimdfe (jpi,jpj,jpk), & -
trunk/NEMOGCM/NEMO/TOP_SRC/par_trc.F90
r4230 r4529 38 38 # endif 39 39 40 REAL(wp), PUBLIC :: rtrn = 1.e-15 !: truncation value40 REAL(wp), PUBLIC :: rtrn = 0.5 * EPSILON( 1.e0 ) !: truncation value 41 41 42 42 !!----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.