Changeset 14276
- Timestamp:
- 2021-01-07T23:09:56+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA
- Files:
-
- 32 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/cfgs/SHARED/field_def_nemo-pisces.xml
r11536 r14276 112 112 <field id="DOM_e3t" long_name="DOM * e3t" unit="mmol-N/m2" > DOM * e3t </field > 113 113 114 114 115 </field_group> 115 116 … … 136 137 <field id="SedpH" long_name="PH" unit="1" /> 137 138 <field id="SedCO3por" long_name="Bicarbonates" unit="mol/m3" /> 139 <field id="Sedligand" long_name="Ligands Concentration" unit="mol/m3" /> 138 140 </field_group> 139 141 … … 150 152 <field id="FlxSO4" long_name="SO4 sediment flux" unit="mol/cm2/s" /> 151 153 <field id="FlxFe2" long_name="Fe2+ sediment flux" unit="mol/cm2/s" /> 152 <field id="Flxtot" long_name="Sediment net burial rate" unit="cm/s" />153 154 <field id="dzdep" long_name="Sedimentation rate" unit="cm/s" /> 154 155 <field id="sflxclay" long_name="Clay sedimentation rate" unit="g/m2/s" /> … … 157 158 <field id="sflxpoc" long_name="POC Sedimentation rate" unit="mol/m2/s" /> 158 159 <field id="sflxfeo" long_name="Fe(OH)3 Sedimentation rate" unit="mol/m2/s" /> 160 <field id="FlxBSi" long_name="BSi burial flux" unit="g/cm2/s" /> 161 <field id="FlxClay" long_name="Clay burial flux" unit="g/cm2/s" /> 162 <field id="FlxPOC" long_name="POC burial flux" unit="g/cm2/s" /> 163 <field id="FlxCaCO3" long_name="Calcite burial flux" unit="g/cm2/s" /> 164 <field id="FlxPOS" long_name="POS burial flux" unit="g/cm2/s" /> 165 <field id="FlxPOR" long_name="POR burial flux" unit="g/cm2/s" /> 166 <field id="FlxFeO" long_name="FeO burial flux" unit="g/cm2/s" /> 167 <field id="FlxFeS" long_name="FeS burial flux" unit="g/cm2/s" /> 159 168 </field_group> 160 169 … … 206 215 <field id="SIZEP" long_name="Mean relative size of picophyto." unit="-" grid_ref="grid_T_3D" /> 207 216 <field id="SIZED" long_name="Mean relative size of diatoms" unit="-" grid_ref="grid_T_3D" /> 217 <field id="RASSD" long_name="Mean relative size of diatoms" unit="-" grid_ref="grid_T_3D" /> 218 <field id="RASSN" long_name="Mean relative size of diatoms" unit="-" grid_ref="grid_T_3D" /> 219 <field id="RASSP" long_name="Mean relative size of diatoms" unit="-" grid_ref="grid_T_3D" /> 208 220 <field id="Fe3" long_name="Iron III concentration" unit="nmol/m3" grid_ref="grid_T_3D" /> 209 221 <field id="FeL1" long_name="Complexed Iron concentration with L1" unit="nmol/m3" grid_ref="grid_T_3D" /> … … 240 252 <field id="BACT" long_name="Bacterial Biomass" unit="mmol/m3" grid_ref="grid_T_3D" /> 241 253 <field id="FEBACT" long_name="Bacterial uptake of Fe" unit="molFe/m3/s" grid_ref="grid_T_3D" /> 254 <field id="FEPREC" long_name="precipitation of Fe" unit="molFe/m3/s" grid_ref="grid_T_3D" /> 242 255 <field id="LPRODR" long_name="OM remineralisation ligand production rate" unit="nmol-L/m3/s" grid_ref="grid_T_3D" /> 243 256 <field id="LPRODP" long_name="phytoplankton ligand production rate" unit="nmol-L/m3/s" grid_ref="grid_T_3D" /> -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/cfgs/SHARED/namelist_pisces_ref
r13234 r14276 14 14 !----------------------------------------------------------------------- 15 15 ln_p2z = .false. ! LOBSTER model used 16 ln_p4z = . true.! PISCES model used17 ln_p5z = . false.! PISCES QUOTA model used16 ln_p4z = .false. ! PISCES model used 17 ln_p5z = .true. ! PISCES QUOTA model used 18 18 ln_ligand = .false. ! Enable organic ligands 19 19 ln_sediment = .false. ! Enable sediment module … … 44 44 &nampisbio ! biological parameters 45 45 !----------------------------------------------------------------------- 46 nrdttrc = 1 ! time step frequency for biology 47 wsbio = 2. ! POC sinking speed 48 xkmort = 2.E-7 ! half saturation constant for mortality 49 ferat3 = 10.E-6 ! Fe/C in zooplankton 50 wsbio2 = 50. ! Big particles sinking speed 51 wsbio2max = 50. ! Big particles maximum sinking speed 52 wsbio2scale = 5000. ! Big particles length scale of sinking 46 nrdttrc = 1 ! time step frequency for biology 47 wsbio = 2. ! POC sinking speed 48 xkmort = 2.E-7 ! half saturation constant for mortality 49 feratz = 10.E-6 ! Fe/C in zooplankton 50 feratm = 15.E-6 ! Fe/C in mesozooplankton 51 wsbio2 = 50. ! Big particles sinking speed 52 wsbio2max = 50. ! Big particles maximum sinking speed 53 wsbio2scale = 5000. ! Big particles length scale of sinking 53 54 ! ! ln_ligand enabled 54 ldocp = 1.E-4! Phyto ligand production per unit doc55 ldocz = 1.E-4! Zoo ligand production per unit doc56 lthet = 1.0! Proportional loss of ligands due to Fe uptake55 ldocp = 1.E-4 ! Phyto ligand production per unit doc 56 ldocz = 1.E-4 ! Zoo ligand production per unit doc 57 lthet = 1.0 ! Proportional loss of ligands due to Fe uptake 57 58 ! ! ln_p5z enabled 58 no3rat3 = 0.151! N/C ratio in zooplankton59 po4rat3 = 0.00943! P/C ratio in zooplankton59 no3rat3 = 0.151 ! N/C ratio in zooplankton 60 po4rat3 = 0.00944 ! P/C ratio in zooplankton 60 61 / 61 62 !----------------------------------------------------------------------- … … 64 65 concnno3 = 1.e-6 ! Nitrate half saturation of nanophytoplankton 65 66 concdno3 = 3.E-6 ! Nitrate half saturation for diatoms 66 concnnh4 = 1.E- 7! NH4 half saturation for phyto67 concdnh4 = 3.E- 7! NH4 half saturation for diatoms68 concnfer = 1.E-9 ! Iron half saturation for phyto69 concdfer = 3.E-9 ! Iron half saturation for diatoms70 concbfe = 1.E-11 ! Iron half-saturation for DOC remin.71 concbnh4 = 6.E-8! NH4 half saturation for DOC remin.72 concbno3 = 2.E-7 ! Nitrate half saturation for DOC remin.67 concnnh4 = 1.E-6 ! NH4 half saturation for phyto 68 concdnh4 = 3.E-6 ! NH4 half saturation for diatoms 69 concnfer = 3.E-9 ! Iron half saturation for phyto 70 concdfer = 9.E-9 ! Iron half saturation for diatoms 71 concbfe = 3.E-11 ! Iron half-saturation for DOC remin. 72 concbnh4 = 3.E-7 ! NH4 half saturation for DOC remin. 73 concbno3 = 3.E-7 ! Nitrate half saturation for DOC remin. 73 74 xsizedia = 1.E-6 ! Minimum size criteria for diatoms 74 75 xsizephy = 1.E-6 ! Minimum size criteria for phyto … … 78 79 xksi2 = 20E-6 ! half saturation constant for Si/C 79 80 xkdoc = 417.E-6 ! half-saturation constant of DOC remineralization 80 qnfelim = 7.E-6! Optimal quota of phyto81 qdfelim = 7.E-6! Optimal quota of diatoms82 caco3r = 0. 3! mean rain ratio81 qnfelim = 10.E-6 ! Optimal quota of phyto 82 qdfelim = 10.E-6 ! Optimal quota of diatoms 83 caco3r = 0.28 ! mean rain ratio 83 84 oxymin = 1.E-6 ! Half-saturation constant for anoxia 84 85 / … … 86 87 &namp5zlim ! parameters for nutrient limitations PISCES QUOTA - ln_p5z 87 88 !----------------------------------------------------------------------- 88 concnno3 = 3e-6 ! Nitrate half saturation of nanophytoplankton89 concpno3 = 8e-7 ! Nitrate half saturation of picophytoplankton90 concdno3 = 5E-6 ! Phosphate half saturation for diatoms91 concnnh4 = 1E-6 ! NH4 half saturation for phyto92 concpnh4 = 2.3E-7! NH4 half saturation for picophytoplankton93 concdnh4 = 1.7E-6! NH4 half saturation for diatoms94 concnpo4 = 3E-6 ! PO4 half saturation for phyto95 concppo4 = 8E-7 ! PO4 half saturation for picophytoplankton96 concdpo4 = 5E-6 ! PO4 half saturation for diatoms97 concnfer = 3E-9 ! Iron half saturation for phyto98 concpfer = 8E-10! Iron half saturation for picophytoplankton99 concdfer = 5E-9 ! Iron half saturation for diatoms100 concbfe = 1.E-11! Half-saturation for Fe limitation of Bacteria101 concbnh4 = 1.E-7 ! NH4 half saturation for phyto102 concbno3 = 5.E-7 ! Phosphate half saturation for diatoms103 concbpo4 = 1E-7! Phosphate half saturation for bacteria89 concnno3 = 2e-6 ! Nitrate half saturation of nanophytoplankton 90 concpno3 = 7e-7 ! Nitrate half saturation of picophytoplankton 91 concdno3 = 3E-6 ! Phosphate half saturation for diatoms 92 concnnh4 = 2E-6 ! NH4 half saturation for phyto 93 concpnh4 = 7E-7 ! NH4 half saturation for picophytoplankton 94 concdnh4 = 3E-6 ! NH4 half saturation for diatoms 95 concnpo4 = 2E-6 ! PO4 half saturation for phyto 96 concppo4 = 7E-7 ! PO4 half saturation for picophytoplankton 97 concdpo4 = 3E-6 ! PO4 half saturation for diatoms 98 concnfer = 6E-9 ! Iron half saturation for phyto 99 concpfer = 2E-9 ! Iron half saturation for picophytoplankton 100 concdfer = 9E-9 ! Iron half saturation for diatoms 101 concbfe = 3E-11 ! Half-saturation for Fe limitation of Bacteria 102 concbnh4 = 4.E-7 ! NH4 half saturation for phyto 103 concbno3 = 4.E-7 ! Phosphate half saturation for diatoms 104 concbpo4 = 4.E-7 ! Phosphate half saturation for bacteria 104 105 xsizedia = 1.E-6 ! Minimum size criteria for diatoms 105 106 xsizephy = 1.E-6 ! Minimum size criteria for phyto … … 117 118 &namp5zquota ! parameters for nutrient limitations PISCES quota - ln_p5z 118 119 !----------------------------------------------------------------------- 119 qfnopt = 7.E-6! Optimal Fe quota of nanophyto120 qfpopt = 7.E-6! Optimal Fe quota of picophyto121 qfdopt = 7.E-6! Optimal quota of diatoms120 qfnopt = 10.E-6 ! Optimal Fe quota of nanophyto 121 qfpopt = 10.E-6 ! Optimal Fe quota of picophyto 122 qfdopt = 10.E-6 ! Optimal quota of diatoms 122 123 qnnmin = 0.61 ! Minimal N quota for nano 123 124 qnnmax = 1.25 ! Maximal N quota for nano 124 125 qpnmin = 0.24 ! Minimal P quota for nano 125 126 qpnmax = 1.35 ! Maximal P quota for nano 126 qnpmin = 1.0 4! Minimal N quota for pico127 qnpmax = 1. 525! Maximal N quota for pico127 qnpmin = 1.02 ! Minimal N quota for pico 128 qnpmax = 1.39 ! Maximal N quota for pico 128 129 qppmin = 0.19 ! Minimal P quota for pico 129 130 qppmax = 1.15 ! Maximal P quota for pico 130 qndmin = 0.5 3! Minimal N quota for diatoms131 qndmin = 0.51 ! Minimal N quota for diatoms 131 132 qndmax = 1.25 ! Maximal N quota for diatoms 132 133 qpdmin = 0.24 ! Minimal P quota for diatoms 133 134 qpdmax = 1.525 ! Maximal P quota for diatoms 134 qfnmax = 80E-6 ! Maximal Fe quota for nano135 qfpmax = 80E-6 ! Maximal Fe quota for pico136 qfdmax = 80E-6 ! Maximal Fe quota for diatoms135 qfnmax = 60E-6 ! Maximal Fe quota for nano 136 qfpmax = 60E-6 ! Maximal Fe quota for pico 137 qfdmax = 60E-6 ! Maximal Fe quota for diatoms 137 138 / 138 139 !----------------------------------------------------------------------- … … 149 150 &namp4zprod ! parameters for phytoplankton growth for PISCES std - ln_p4z 150 151 !----------------------------------------------------------------------- 151 pislopen = 2. 152 pisloped = 2. 152 pislopen = 2.5 ! P-I slope 153 pisloped = 2.5 ! P-I slope for diatoms 153 154 xadap = 0. ! Adaptation factor to low light 154 155 excretn = 0.05 ! excretion ratio of phytoplankton … … 157 158 chlcnm = 0.033 ! Maximum Chl/C in nanophytoplankton 158 159 chlcdm = 0.05 ! Maximum Chl/C in diatoms 159 chlcmin = 0.00 4! Minimum Chl/c in phytoplankton160 fecnm = 40E-6 ! Maximum Fe/C in nanophytoplankton161 fecdm = 40E-6 ! Maximum Fe/C in diatoms162 grosip = 0.1 1! mean Si/C ratio160 chlcmin = 0.003 ! Minimum Chl/c in phytoplankton 161 fecnm = 60E-6 ! Maximum Fe/C in nanophytoplankton 162 fecdm = 60E-6 ! Maximum Fe/C in diatoms 163 grosip = 0.13 ! mean Si/C ratio 163 164 / 164 165 !----------------------------------------------------------------------- 165 166 &namp5zprod ! parameters for phytoplankton growth for PISCES quota- ln_p5z 166 167 !----------------------------------------------------------------------- 167 pislopen = 4.! P-I slope of nanophytoplankton168 pislopep = 4.! P-I slope for picophytoplankton169 pisloped = 4.! P-I slope for diatoms168 pislopen = 5 ! P-I slope of nanophytoplankton 169 pislopep = 5 ! P-I slope for picophytoplankton 170 pisloped = 5 ! P-I slope for diatoms 170 171 excretn = 0.05 ! excretion ratio of phytoplankton 171 172 excretp = 0.05 ! excretion ratio of picophytoplankton … … 176 177 thetanpm = 0.3 ! Maximum Chl/N in picophytoplankton 177 178 thetandm = 0.4 ! Maximum Chl/N in diatoms 178 chlcmin = 0.00 4! Minimum Chl/c in phytoplankton179 grosip = 0.1 1! mean Si/C ratio179 chlcmin = 0.003 ! Minimum Chl/c in phytoplankton 180 grosip = 0.12 ! mean Si/C ratio 180 181 / 181 182 !----------------------------------------------------------------------- … … 183 184 !----------------------------------------------------------------------- 184 185 wchln = 0.01 ! quadratic mortality of phytoplankton 185 wchld = 0.01 ! maximum quadratic mortality of diatoms 186 wchldm = 0.03 ! maximum quadratic mortality of diatoms 186 wchld = 0.03 ! maximum quadratic mortality of diatoms 187 187 mpratn = 0.01 ! phytoplankton mortality rate 188 188 mpratd = 0.01 ! Diatoms mortality rate … … 193 193 wchln = 0.01 ! quadratic mortality of nanophytoplankton 194 194 wchlp = 0.01 ! quadratic mortality of picophytoplankton 195 wchld = 0.01 ! maximum quadratic mortality of diatoms 196 wchldm = 0.03 ! maximum quadratic mortality of diatoms 195 wchld = 0.03 ! maximum quadratic mortality of diatoms 197 196 mpratn = 0.01 ! nanophytoplankton mortality rate 198 197 mpratp = 0.01 ! picophytoplankton mortality rate … … 205 204 grazrat2 = 0.5 ! maximal mesozoo grazing rate 206 205 resrat2 = 0.005 ! exsudation rate of mesozooplankton 207 mzrat2 = 0.0 2! mesozooplankton mortality rate206 mzrat2 = 0.01 ! mesozooplankton mortality rate 208 207 xpref2d = 1. ! mesozoo preference for diatoms 209 208 xpref2n = 0.3 ! mesozoo preference for nanophyto. 210 209 xpref2z = 1. ! mesozoo preference for microzoo. 211 210 xpref2c = 0.3 ! mesozoo preference for poc 212 xthresh2zoo = 1E-8! zoo feeding threshold for mesozooplankton213 xthresh2dia = 1E-8! diatoms feeding threshold for mesozooplankton214 xthresh2phy = 1E-8! nanophyto feeding threshold for mesozooplankton215 xthresh2poc = 1E-8! poc feeding threshold for mesozooplankton211 xthresh2zoo = 1E-8 ! zoo feeding threshold for mesozooplankton 212 xthresh2dia = 1E-8 ! diatoms feeding threshold for mesozooplankton 213 xthresh2phy = 1E-8 ! nanophyto feeding threshold for mesozooplankton 214 xthresh2poc = 1E-8 ! poc feeding threshold for mesozooplankton 216 215 xthresh2 = 3E-7 ! Food threshold for grazing 217 216 xkgraz2 = 20.E-6 ! half saturation constant for meso grazing 218 epsher2 = 0. 35! Efficicency of Mesozoo growth219 epsher2min = 0. 35! Minimum efficiency of mesozoo growth217 epsher2 = 0.4 ! Efficicency of Mesozoo growth 218 epsher2min = 0.4 ! Minimum efficiency of mesozoo growth 220 219 sigma2 = 0.6 ! Fraction of mesozoo excretion as DOM 221 220 unass2 = 0.3 ! non assimilated fraction of P by mesozoo 222 grazflux = 3.e3 ! flux-feeding rate 223 ln_dvm_meso = .false. ! Activates DVM for mesozooplankton 224 xfracmig = 0.3 ! Fraction of mesozooplankton performing DVM 221 grazflux = 2.e3 ! flux-feeding rate 222 xsigma2 = 0.5 ! Predation window size 223 xsigma2del = 1.0 ! Predation window size scaling 224 ln_dvm_meso = .false. ! Activates DVM for mesozooplankton 225 xfracmig = 0.3 ! Fraction of mesozooplankton performing DVM 225 226 / 226 227 !----------------------------------------------------------------------- 227 228 &namp5zmes ! parameters for mesozooplankton 228 229 !----------------------------------------------------------------------- 229 part2 = 0.75 ! part of calcite not dissolved in mesozoo guts 230 grazrat2 = 0.75 ! maximal mesozoo grazing rate 231 bmetexc2 = .true. ! Metabolic use of excess carbon 232 resrat2 = 0.005 ! exsudation rate of mesozooplankton 233 mzrat2 = 0.03 ! mesozooplankton mortality rate 234 xpref2d = 1. ! meso preference for diatoms 235 xpref2n = 0.3 ! meso preference for nano 236 xpref2z = 1. ! meso preference for zoo 237 xpref2m = 0.1 ! meso preference for zoo 238 xpref2c = 0.3 ! meso preference for poc 239 xthresh2zoo = 1E-8 ! zoo feeding threshold for mesozooplankton 240 xthresh2dia = 1E-8 ! diatoms feeding threshold for mesozooplankton 241 xthresh2phy = 1E-8 ! nanophyto feeding threshold for mesozooplankton 242 xthresh2mes = 1E-8 ! meso feeding threshold for mesozooplankton 243 xthresh2poc = 1E-8 ! poc feeding threshold for mesozooplankton 244 xthresh2 = 3E-7 ! Food threshold for grazing 245 xkgraz2 = 20.E-6 ! half sturation constant for meso grazing 246 epsher2 = 0.5 ! Efficicency of Mesozoo growth 247 epsher2min = 0.5 ! Minimum efficiency of mesozoo growth 248 ssigma2 = 0.5 ! Fraction excreted as semi-labile DOM 249 srespir2 = 0.2 ! Active respiration 250 unass2c = 0.3 ! non assimilated fraction of C by mesozoo 251 unass2n = 0.3 ! non assimilated fraction of N by mesozoo 252 unass2p = 0.3 ! non assimilated fraction of P by mesozoo 253 grazflux = 3.e3 ! flux-feeding rate 230 part2 = 0.75 ! part of calcite not dissolved in mesozoo guts 231 grazrat2 = 0.5 ! maximal mesozoo grazing rate 232 bmetexc2 = .true. ! Metabolic use of excess carbon 233 resrat2 = 0.005 ! exsudation rate of mesozooplankton 234 mzrat2 = 0.01 ! mesozooplankton mortality rate 235 xpref2d = 1. ! meso preference for diatoms 236 xpref2n = 0.3 ! meso preference for nano 237 xpref2z = 1. ! meso preference for zoo 238 xpref2m = 0. ! meso preference for zoo 239 xpref2c = 0.3 ! meso preference for poc 240 xthresh2zoo = 1E-8 ! zoo feeding threshold for mesozooplankton 241 xthresh2dia = 1E-8 ! diatoms feeding threshold for mesozooplankton 242 xthresh2phy = 1E-8 ! nanophyto feeding threshold for mesozooplankton 243 xthresh2mes = 1E-8 ! meso feeding threshold for mesozooplankton 244 xthresh2poc = 1E-8 ! poc feeding threshold for mesozooplankton 245 xthresh2 = 3E-7 ! Food threshold for grazing 246 xkgraz2 = 20.E-6 ! half sturation constant for meso grazing 247 epsher2 = 0.5 ! Efficicency of Mesozoo growth 248 epsher2min = 0.5 ! Minimum efficiency of mesozoo growth 249 ssigma2 = 0.5 ! Fraction excreted as semi-labile DOM 250 srespir2 = 0.2 ! Active respiration 251 unass2c = 0.3 ! non assimilated fraction of C by mesozoo 252 unass2n = 0.3 ! non assimilated fraction of N by mesozoo 253 unass2p = 0.3 ! non assimilated fraction of P by mesozoo 254 xsigma2 = 0.5 ! Predation window size 255 xsigma2del = 1.0 ! Predation window size scaling 256 grazflux = 2.e3 ! flux-feeding rate 257 ln_dvm_meso = .false. ! Activates DVM for mesozooplankton 258 xfracmig = 0.25 ! Fraction of mesozooplankton performing DVM 254 259 / 255 260 !----------------------------------------------------------------------- 256 261 &namp4zzoo ! parameters for microzooplankton for PISCES std - ln_p4z 257 262 !----------------------------------------------------------------------- 258 part = 0. 5! part of calcite not dissolved in microzoo guts263 part = 0.75 ! part of calcite not dissolved in microzoo guts 259 264 grazrat = 2.0 ! maximal zoo grazing rate 260 resrat = 0.0 3! Linear mortality rate of zooplankton265 resrat = 0.02 ! Linear mortality rate of zooplankton 261 266 mzrat = 0.005 ! zooplankton mortality rate 262 267 xprefc = 0.1 ! Microzoo preference for POM … … 268 273 xthresh = 3.E-7 ! Food threshold for feeding 269 274 xkgraz = 20.E-6 ! half sturation constant for grazing 270 epsher = 0. 35! Efficiency of microzoo growth271 epshermin = 0. 35! Minimum efficiency of microzoo growth275 epsher = 0.4 ! Efficiency of microzoo growth 276 epshermin = 0.4 ! Minimum efficiency of microzoo growth 272 277 sigma1 = 0.6 ! Fraction of microzoo excretion as DOM 273 278 unass = 0.3 ! non assimilated fraction of phyto by zoo 279 xsigma = 0.5 ! Predation window size 280 xsigmadel = 1.0 ! Predation window size scaling 274 281 / 275 282 !----------------------------------------------------------------------- 276 283 &namp5zzoo ! parameters for microzooplankton 277 284 !----------------------------------------------------------------------- 278 part = 0. 5! part of calcite not dissolved in microzoo gutsa279 grazrat = 3.0 ! maximal zoo grazing rate285 part = 0.75 ! part of calcite not dissolved in microzoo gutsa 286 grazrat = 2.0 ! maximal zoo grazing rate 280 287 bmetexc = .true. ! Metabolic use of excess carbon 281 resrat = 0.0 3! exsudation rate of zooplankton282 mzrat = 0.00 4! zooplankton mortality rate288 resrat = 0.02 ! exsudation rate of zooplankton 289 mzrat = 0.005 ! zooplankton mortality rate 283 290 xprefc = 0.1 ! Microzoo preference for POM 284 291 xprefn = 1.0 ! Microzoo preference for Nanophyto 285 292 xprefp = 1.0 ! Microzoo preference for picophyto 286 293 xprefd = 0.8 ! Microzoo preference for Diatoms 287 xprefz = 0. 1! Microzoo preference for microzooplankton294 xprefz = 0. ! Microzoo preference for microzooplankton 288 295 xthreshdia = 1.E-8 ! Diatoms feeding threshold for microzooplankton 289 296 xthreshphy = 1.E-8 ! Nanophyto feeding threshold for microzooplankton … … 300 307 unassn = 0.3 ! non assimilated fraction of N by zoo 301 308 unassp = 0.3 ! non assimilated fraction of P by zoo 309 xsigma = 0.5 ! Predation window size 310 xsigmadel = 1.0 ! Predation window size scaling 302 311 / 303 312 !----------------------------------------------------------------------- … … 305 314 !----------------------------------------------------------------------- 306 315 ln_ligvar = .false. ! variable ligand concentration 307 xlam1 = 0.0 05 ! scavenging rate of Iron by biogenic particles316 xlam1 = 0.05 ! scavenging rate of Iron by biogenic particles 308 317 xlamdust = 150.0 ! Scavenging rate of Iron by dust 309 ligand = 7E-10! Ligands concentration318 ligand = 1E-9 ! Ligands concentration 310 319 kfep = 0.01 ! Nanoparticle formation rate constant 320 scaveff = 1.0 ! Fraction of scavenged Fe that goes to POFe 311 321 / 312 322 !----------------------------------------------------------------------- 313 323 &nampisrem ! parameters for remineralization 314 324 !----------------------------------------------------------------------- 315 xremik = 0.3 ! remineralization rate of DOC316 325 nitrif = 0.05 ! NH4 nitrification rate 317 326 xsirem = 0.003 ! remineralization rate of Si 318 327 xsiremlab = 0.03 ! fast remineralization rate of Si 319 328 xsilab = 0.5 ! Fraction of labile biogenic silica 320 feratb = 10.E-6 ! Fe/C quota in bacteria329 feratb = 30.E-6 ! Fe/C quota in bacteria 321 330 xkferb = 3E-10 ! Half-saturation constant for bacteria Fe/C 322 331 ! ! ln_p5z 323 xremikc = 0.25 ! remineralization rate of DOC 324 xremikn = 0.3 ! remineralization rate of DON 325 xremikp = 0.4 ! remineralization rate of DOP 326 ! feratb = 20E-6 ! Bacterial Fe/C ratio 327 ! xkferb = 3E-10 ! Half-saturation constant for bact. Fe/C 332 xremikc = 0.4 ! remineralization rate of DOC 333 xremikn = 0.4 ! remineralization rate of DON 334 xremikp = 0.5 ! remineralization rate of DOP 328 335 / 329 336 !----------------------------------------------------------------------- 330 337 &nampispoc ! parameters for organic particles 331 338 !----------------------------------------------------------------------- 332 xremip = 0.03 339 xremip = 0.035 ! remineralisation rate of POC 333 340 jcpoc = 15 ! Number of lability classes 334 341 rshape = 1.0 ! Shape of the gamma function … … 341 348 &nampiscal ! parameters for Calcite chemistry 342 349 !----------------------------------------------------------------------- 343 kdca = 6. ! calcite dissolution rate constant (1/time)344 nca = 1. ! order of dissolution reaction (dimensionless)350 kdca = 3. ! calcite dissolution rate constant (1/time) 351 nca = 2. ! order of dissolution reaction (dimensionless) 345 352 / 346 353 !----------------------------------------------------------------------- … … 377 384 icefeinput = 15.e-9 ! Iron concentration in sea ice 378 385 nitrfix = 1.e-7 ! Nitrogen fixation rate 379 diazolight = 50. ! Diazotrophs sensitivity to light (W/m2)386 diazolight = 30. ! Diazotrophs sensitivity to light (W/m2) 380 387 concfediaz = 1.e-10 ! Diazotrophs half-saturation Cste for Iron 381 388 hratio = 1.e+7 ! Fe to 3He ratio assumed for vent iron supply -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/cfgs/SHARED/namelist_sediment_ref
r12361 r14276 18 18 &nam_geom ! Characteristics of the sediment columns 19 19 !----------------------------------------------------------------------- 20 jpksed = 11! Number of vertical layers21 sedzmin = 0. 3! Minimum vertical spacing22 sedhmax = 1 0.0 ! Maximum depth of the sediment23 sedkth = 7.0 ! Default parameters20 jpksed = 18 ! Number of vertical layers 21 sedzmin = 0.1 ! Minimum vertical spacing 22 sedhmax = 15.0 ! Maximum depth of the sediment 23 sedkth = 9.0 ! Default parameters 24 24 sedacr = 2.0 ! Default parameters 25 porsurf = 0.9! Sediment porosity at the surface26 porinf = 0.75! Sediment porosity at infinite depth27 rhox = 0.33! Length scale of porosity variation (cm)25 porsurf = 0.9 ! Sediment porosity at the surface 26 porinf = 0.75 ! Sediment porosity at infinite depth 27 rhox = 0.33 ! Length scale of porosity variation (cm) 28 28 / 29 29 !----------------------------------------------------------------------- … … 57 57 ! 58 58 seddiag3d(1) = 'SedpH ' , 'pH ', '- ' 59 seddiag3d(2) = 'SedCO3por ' , 'Dissolved CO3 cocnentration ', 'mol/L' 59 seddiag3d(2) = 'SedCO3por ' , 'Dissolved CO3 concentration ', 'mol/L' 60 seddiag3d(3) = 'Sedligand' , 'ligand concentration ', 'mol/L' 60 61 seddiag2d(1) = 'FlxSi ' , 'Silicate flux ', 'mol/cm2/s' 61 62 seddiag2d(2) = 'FlxO2 ' , 'Dissolved Oxygen Flux ', 'mol/L' … … 67 68 seddiag2d(8) = 'FlxH2S ' , 'Total H2S flux ', 'mol/cm2/s' 68 69 seddiag2d(9) = 'FlxSO4 ' , 'Total SO4 flux ', 'mol/cm2/s' 69 seddiag2d(10) = 'FlxFe2 ' , 'Total Fe2+ flux ', 'mol/cm2/s' 70 seddiag2d(11) = 'Flxtot ' , 'Total net sediment burial rate ', 'cm/s' 71 seddiag2d(12) = 'dzdep ' , 'Sedimentation rate ', 'cm/s' 70 seddiag2d(10) = 'FlxFe2 ' , 'Total Fe2+ flux ', 'mol/cm2/s' 71 seddiag2d(11) = 'FlxBSi ' , 'Total net BSi burial rate ', 'g/cm2/s' 72 seddiag2d(12) = 'FlxClay ' , 'Total net CLay burial rate ', 'g/cm2/s' 73 seddiag2d(13) = 'FlxPOC ' , 'Total net POC burial rate ', 'g/cm2/s' 74 seddiag2d(14) = 'FlxCaCO3 ' , 'Total net CaCO3 burial rate ', 'g/cm2/s' 75 seddiag2d(15) = 'FlxPOS ' , 'Total net POS burial rate ', 'g/cm2/s' 76 seddiag2d(16) = 'FlxPOR ' , 'Total net POR burial rate ', 'g/cm2/s' 77 seddiag2d(17) = 'FlxFeO ' , 'Total net FeO burial rate ', 'g/cm2/s' 78 seddiag2d(18) = 'FlxFeS ' , 'Total net FeS burial rate ', 'g/cm2/s' 79 seddiag2d(19) = 'Flxtot ' , 'Total burial flux ', 'mol/cm2/s' 80 seddiag2d(20) = 'dzdep ' , 'Sedimentation rate ', 'cm/s' 72 81 / 73 82 !----------------------------------------------------------------------- … … 76 85 rcopal = 0.1 ! Reactivity for clay [l.mol-1.an-1] 77 86 dcoef = 8.0E-6 ! Diffusion coefficient in sediments (in cm**2/s) 78 rccal = 0.014! Dissolution rate of calcite [in yr-1]87 rccal = 1.4 ! Dissolution rate of calcite [in yr-1] 79 88 rcligc = 0.1 ! Degradation rate of ligands [in yr-1] 80 89 ratligc = 1.E-4 ! L/C ratio in POC … … 92 101 rcorgr = 1.E-4 ! Reactivity for refractory POC [an-1] 93 102 rcnh4 = 1E7 ! Reactivity for O2/NH4 [l.mol-1.an-1] 94 rch2s = 1 E5! Reactivity for O2/H2S [l.mol-1.an-1]103 rch2s = 1.6E5 ! Reactivity for O2/H2S [l.mol-1.an-1] 95 104 rcfe2 = 1E8 ! Reactivity for O2/Fe2+ [l.mol-1.an-1] 96 rcfeh2s = 1E4! Reactivity for FEOH/H2S [l.mol-1.an-1]97 rcfes = 1E 5! Reactivity for FE2+/H2S [l.mol-1.an-1]105 rcfeh2s = 8E3 ! Reactivity for FEOH/H2S [l.mol-1.an-1] 106 rcfes = 1E6 ! Reactivity for FE2+/H2S [l.mol-1.an-1] 98 107 rcfeso = 3E5 ! Reactivity for FES/O2 [l.mol-1.an-1] 99 108 xksedo2 = 1.E-6 ! Half-saturation constant for oxic remin [mol/l] … … 105 114 &nam_btb ! parameters for bioturbation and bioirrigation 106 115 !----------------------------------------------------------------------- 107 dbiot = 5.! Bioturbation coefficient (in cm2/yr)108 ln_btbz = . false.! Depth varying bioturbation109 dbtbzsc = 10.0! coefficient for btb attenuation. If no variation, depth of the mixed layer116 dbiot = 10. ! Bioturbation coefficient (in cm2/yr) 117 ln_btbz = .true. ! Depth varying bioturbation 118 dbtbzsc = 6.0 ! coefficient for btb attenuation. If no variation, depth of the mixed layer 110 119 adsnh4 = 1.3 ! Adsorption coefficient of NH4 111 ln_irrig = .true. ! Bioirrigation in sediment120 ln_irrig = .true. ! Bioirrigation in sediment 112 121 xirrzsc = 1.5 ! Vertical scale of the attentuation of bioirrigation [cm] 113 122 / … … 115 124 &nam_rst ! parameters for restarting the sediment module 116 125 !----------------------------------------------------------------------- 117 ln_rst_sed = .false. ! restart flag126 ln_rst_sed = .false. ! restart flag 118 127 cn_sedrst_in = "restart_sed" ! name of the input restart file name of the sediment module 119 128 cn_sedrst_indir = "." ! directory from which to read input sediment restarts -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zagg.F90
r13233 r14276 75 75 ! Part I : Coagulation dependent on turbulence 76 76 ! The stickiness has been assumed to be 0.1 77 zagg1 = 25.9* zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc)78 zagg2 = 4452.* zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc)77 zagg1 = 12.5 * zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc) 78 zagg2 = 169.7 * zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc) 79 79 80 80 ! Part II : Differential settling 81 81 ! Aggregation of small into large particles 82 82 ! The stickiness has been assumed to be 0.1 83 zagg3 = 47.1 * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc)84 zagg4 = 3.3 * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc)83 zagg3 = 8.63 * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc) 84 zagg4 = 132.8 * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc) 85 85 86 86 zagg = zagg1 + zagg2 + zagg3 + zagg4 … … 92 92 ! 3rd term is differential settling of DOC-POC 93 93 ! 1/3 of DOC is supposed to experience aggregation (HMW) 94 zaggdoc = ( ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4* trb(ji,jj,jk,jppoc) ) * zfact &95 & + 2.4 * xstep * trb(ji,jj,jk,jppoc) ) * 0.3 * trb(ji,jj,jk,jpdoc)94 zaggdoc = ( ( 12.0 * 0.3 * trb(ji,jj,jk,jpdoc) + 9.05 * trb(ji,jj,jk,jppoc) ) * zfact & 95 & + 2.49 * xstep * trb(ji,jj,jk,jppoc) ) * 0.3 * trb(ji,jj,jk,jpdoc) 96 96 ! transfer of DOC to GOC : 97 97 ! 1st term is shear aggregation 98 ! 2nd term is differential settling 99 ! 1/3 of DOC is supposed to experience aggregation (HMW) 100 zaggdoc2 = ( 3.53E3 * zfact + 0.1 * xstep ) * trb(ji,jj,jk,jpgoc) * 0.3 * trb(ji,jj,jk,jpdoc) 98 ! 1/3 of DOC is supposed to experience aggregation (HMW) 99 zaggdoc2 = ( 1.94 * zfact + 1.37 * xstep ) * trb(ji,jj,jk,jpgoc) * 0.3 * trb(ji,jj,jk,jpdoc) 101 100 ! tranfer of DOC to POC due to brownian motion 102 101 ! The temperature dependency has been omitted. 103 zaggdoc3 = 114. * 0.3 * trb(ji,jj,jk,jpdoc) *xstep * 0.3 * trb(ji,jj,jk,jpdoc)102 zaggdoc3 = ( 127.8 * 0.3 * trb(ji,jj,jk,jpdoc) + 725.7 * trb(ji,jj,jk,jppoc) ) * xstep * 0.3 * trb(ji,jj,jk,jpdoc) 104 103 105 104 ! Update the trends … … 150 149 ! 3rd term is differential settling of DOC-POC 151 150 ! 1/3 of DOC is supposed to experience aggregation (HMW) 152 zaggtmp = ( ( 0.3 69 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4* trb(ji,jj,jk,jppoc) ) * zfact &153 & + 2.4* xstep * trb(ji,jj,jk,jppoc) )151 zaggtmp = ( ( 0.37 * 0.3 * trb(ji,jj,jk,jpdoc) + 20.5 * trb(ji,jj,jk,jppoc) ) * zfact & 152 & + 0.15 * xstep * trb(ji,jj,jk,jppoc) ) 154 153 zaggdoc = zaggtmp * 0.3 * trb(ji,jj,jk,jpdoc) 155 154 zaggdon = zaggtmp * 0.3 * trb(ji,jj,jk,jpdon) … … 160 159 ! 2nd term is differential settling 161 160 ! 1/3 of DOC is supposed to experience aggregation (HMW) 162 zaggtmp = ( 3.53E3 * zfact + 0.1 * xstep )* trb(ji,jj,jk,jpgoc)161 zaggtmp = 655.4 * zfact * trb(ji,jj,jk,jpgoc) 163 162 zaggdoc2 = zaggtmp * 0.3 * trb(ji,jj,jk,jpdoc) 164 163 zaggdon2 = zaggtmp * 0.3 * trb(ji,jj,jk,jpdon) … … 167 166 ! tranfer of DOC to POC due to brownian motion 168 167 ! 1/3 of DOC is supposed to experience aggregation (HMW) 169 zaggtmp = ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) * xstep168 zaggtmp = ( 260.2 * 0.3 * trb(ji,jj,jk,jpdoc) + 418.5 * trb(ji,jj,jk,jppoc) ) * xstep 170 169 zaggdoc3 = zaggtmp * 0.3 * trb(ji,jj,jk,jpdoc) 171 170 zaggdon3 = zaggtmp * 0.3 * trb(ji,jj,jk,jpdon) -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zbio.F90
r13233 r14276 110 110 111 111 ! Update of the size of the different phytoplankton groups 112 sized(:,:,:) = sizeda(:,:,:)113 sizen(:,:,:) = sizena(:,:,:)112 sized(:,:,:) = MAX(1.0, sizeda(:,:,:) ) 113 sizen(:,:,:) = MAX(1.0, sizena(:,:,:) ) 114 114 IF (ln_p5z) THEN 115 sizep(:,:,:) = sizepa(:,:,:)115 sizep(:,:,:) = MAX(1.0, sizepa(:,:,:) ) 116 116 ENDIF 117 117 ! ! -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zfechem.F90
r13200 r14276 30 30 REAL(wp), PUBLIC :: ligand !: ligand concentration in the ocean 31 31 REAL(wp), PUBLIC :: kfep !: rate constant for nanoparticle formation 32 REAL(wp), PUBLIC :: scaveff !: Fraction of scavenged iron that is considered as being subject to solubilization 32 33 33 34 !!---------------------------------------------------------------------- … … 50 51 ! 51 52 INTEGER :: ji, jj, jk, jic, jn 52 REAL(wp) :: z dep, zlam1a, zlam1b, zlamfac53 REAL(wp) :: zkeq, zfe equi, zfesatur, zfecoll, fe3sol, zligco54 REAL(wp) :: z denom1, zscave, zaggdfea, zaggdfeb, zcoag, ztrc, zdust55 REAL(wp) :: z denom2, ztfe, zhplus, zxlam, zaggliga, zaggligb53 REAL(wp) :: zlam1a, zlam1b 54 REAL(wp) :: zkeq, zfesatur, zfecoll, fe3sol, zligco 55 REAL(wp) :: zscave, zaggdfea, zaggdfeb, ztrc, zdust, zklight 56 REAL(wp) :: ztfe, zhplus, zxlam, zaggliga, zaggligb 56 57 REAL(wp) :: zrfact2 57 58 CHARACTER (len=25) :: charout 58 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zTL1, zFe3, ztotlig, precip, zFeL159 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zcoll3d, zscav3d, zlcoll3d 59 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zTL1, zFe3, ztotlig, precip, precipno3, zFeL1 60 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zcoll3d, zscav3d, zlcoll3d, zprecip3d 60 61 !!--------------------------------------------------------------------- 61 62 ! … … 66 67 67 68 ! Total ligand concentration : Ligands can be chosen to be constant or variable 68 ! Parameterization from Tagliabue and Voelker (2011)69 ! Parameterization from Pham and Ito (2018) 69 70 ! ------------------------------------------------- 70 71 IF( ln_ligvar ) THEN 71 ztotlig(:,:,:) = 0.09 * trb(:,:,:,jpdoc) * 1E6 + ligand * 1E972 ztotlig(:,:,:) = 0.09 * 0.667 * trb(:,:,:,jpdoc) * 1E6 + ligand * 1E9 + MAX(0., chemo2(:,:,:) - trb(:,:,:,jpoxy) ) / 400.E-6 72 73 ztotlig(:,:,:) = MIN( ztotlig(:,:,:), 10. ) 73 74 ELSE 74 75 IF( ln_ligand ) THEN ; ztotlig(:,:,:) = trb(:,:,:,jplgw) * 1E9 75 ELSE ; ztotlig(:,:,:) = ligand * 1E9 76 ELSE ; ztotlig(:,:,:) = ligand * 1E9 76 77 ENDIF 77 78 ENDIF … … 79 80 ! ------------------------------------------------------------ 80 81 ! from Aumont and Bopp (2006) 81 ! This model is based on one ligand and Fe'82 ! This model is based on one ligand, Fe2+ and Fe3+ 82 83 ! Chemistry is supposed to be fast enough to be at equilibrium 83 84 ! ------------------------------------------------------------ … … 87 88 zTL1(ji,jj,jk) = ztotlig(ji,jj,jk) 88 89 zkeq = fekeq(ji,jj,jk) 90 zklight = 4.77E-7 * etot(ji,jj,jk) * 0.5 / 10**-6.3 89 91 zfesatur = zTL1(ji,jj,jk) * 1E-9 90 ztfe = trb(ji,jj,jk,jpfer)92 ztfe = (1.0 + zklight) * trb(ji,jj,jk,jpfer) 91 93 ! Fe' is the root of a 2nd order polynom 92 zFe3 (ji,jj,jk) = ( -( 1. + zfesatur * zkeq - zkeq * ztfe) &93 & + SQRT( ( 1. + zfesatur * zkeq - zkeq * ztfe)**2 &94 zFe3 (ji,jj,jk) = ( -( 1. + zfesatur * zkeq + zklight + consfe3(ji,jj,jk)/10**-6.3 - zkeq * trb(ji,jj,jk,jpfer) ) & 95 & + SQRT( ( 1. + zfesatur * zkeq + zklight + consfe3(ji,jj,jk)/10**-6.3 - zkeq * trb(ji,jj,jk,jpfer) )**2 & 94 96 & + 4. * ztfe * zkeq) ) / ( 2. * zkeq ) 95 zFe3 (ji,jj,jk) = zFe3(ji,jj,jk) * 1E9 96 zFeL1(ji,jj,jk) = MAX( 0., trb(ji,jj,jk,jpfer) * 1E9 - zFe3(ji,jj,jk) ) 97 zFeL1(ji,jj,jk) = MAX( 0., trb(ji,jj,jk,jpfer) - zFe3(ji,jj,jk) ) 97 98 END DO 98 99 END DO 99 100 END DO 100 ! 101 101 ! 102 plig(:,:,:) = MAX( 0., ( zFeL1(:,:,:) / ( trb(:,:,:,jpfer) + rtrn ) ) ) 103 ! 102 104 zdust = 0. ! if no dust available 103 105 DO jk = 1, jpkm1 … … 113 115 & + fesol(ji,jj,jk,5) / zhplus ) 114 116 ! 115 zfeequi = zFe3(ji,jj,jk) * 1E-9 116 zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9 117 zfecoll = 0.5 * zFeL1(ji,jj,jk) 117 118 ! precipitation of Fe3+, creation of nanoparticles 118 precip(ji,jj,jk) = MAX( 0., ( zFe3(ji,jj,jk) * 1E-9 - fe3sol ) ) * kfep * xstep 119 precip(ji,jj,jk) = MAX( 0., ( zFe3(ji,jj,jk) - fe3sol ) ) * kfep * xstep * ( 1.0 - nitrfac(ji,jj,jk) ) 120 ! Precipitation of Fe2+ due to oxidation by NO3 (Croot et al., 2019) 121 ! This occurs in anoxic waters only 122 precipno3(ji,jj,jk) = 2.0 * 130.0 * trb(ji,jj,jk,jpno3) * nitrfac(ji,jj,jk) * xstep * zFe3(ji,jj,jk) 119 123 ! 120 124 ztrc = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6 125 ztrc = MAX( rtrn, ztrc ) 121 126 IF( ln_dust ) zdust = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) 122 IF (ln_ligand) THEN 123 zxlam = xlam1 * MAX( 1.E-3, EXP(-2 * etot(ji,jj,jk) / 10. ) * (1. - EXP(-2 * trb(ji,jj,jk,jpoxy) / 100.E-6 ) )) 124 ELSE 125 zxlam = xlam1 * 1.0 126 ENDIF 127 zlam1b = 3.e-5 + xlamdust * zdust + zxlam * ztrc 128 zscave = zfeequi * zlam1b * xstep 129 130 ! Compute the different ratios for scavenging of iron 131 ! to later allocate scavenged iron to the different organic pools 132 ! --------------------------------------------------------- 133 zdenom1 = zxlam * trb(ji,jj,jk,jppoc) / zlam1b 134 zdenom2 = zxlam * trb(ji,jj,jk,jpgoc) / zlam1b 135 136 ! Increased scavenging for very high iron concentrations found near the coasts 137 ! due to increased lithogenic particles and let say it is unknown processes (precipitation, ...) 138 ! ----------------------------------------------------------- 139 zlamfac = MAX( 0.e0, ( gphit(ji,jj) + 55.) / 30. ) 140 zlamfac = MIN( 1. , zlamfac ) 141 zdep = MIN( 1., 1000. / gdept_n(ji,jj,jk) ) 142 zcoag = 1E-4 * ( 1. - zlamfac ) * zdep * xstep * trb(ji,jj,jk,jpfer) 127 zxlam = MAX( 1.E-3, (1. - EXP(-2 * trb(ji,jj,jk,jpoxy) / 100.E-6 ) )) 128 zlam1b = 3.e-5 + ( xlamdust * zdust + xlam1 * ztrc ) * zxlam 129 zscave = zFe3(ji,jj,jk) * zlam1b * xstep 143 130 144 131 ! Compute the coagulation of colloidal iron. This parameterization … … 146 133 ! It requires certainly some more work as it is very poorly constrained. 147 134 ! ---------------------------------------------------------------- 148 zlam1a = ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) & 149 & + ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) 135 zlam1a = ( 12.0 * 0.3 * trb(ji,jj,jk,jpdoc) + 9.05 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) & 136 & + ( 2.49 * trb(ji,jj,jk,jppoc) ) & 137 & + ( 127.8 * 0.3 * trb(ji,jj,jk,jpdoc) + 725.7 * trb(ji,jj,jk,jppoc) ) 150 138 zaggdfea = zlam1a * xstep * zfecoll 151 139 ! 152 zlam1b = 3.53E3 * trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk)140 zlam1b = ( 1.94 * xdiss(ji,jj,jk) + 1.37 ) * trb(ji,jj,jk,jpgoc) 153 141 zaggdfeb = zlam1b * xstep * zfecoll 154 142 ! 155 143 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb & 156 & - zcoag - precip(ji,jj,jk) 157 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea 158 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * zdenom2 + zaggdfeb 159 zscav3d(ji,jj,jk) = zscave 144 & - precip(ji,jj,jk) - precipno3(ji,jj,jk) 145 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * scaveff * trb(ji,jj,jk,jppoc) / ztrc 146 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * scaveff * trb(ji,jj,jk,jpgoc) / ztrc 147 148 ! Precipitated iron is supposed to be permanently lost. 149 ! Scavenged iron is supposed to be released back to seawater 150 ! when POM is solubilized. This is highly uncertain as probably 151 ! a significant part of it may be rescavenged back onto 152 ! the particles. An efficiency factor is applied that is read 153 ! in the namelist. 154 ! See for instance Tagliabue et al. (2019). 155 ! Aggregated FeL is considered as biogenic Fe as it 156 ! probably remains complexed when the particle is solubilized. 157 ! ------------------------------------------------------------- 158 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zaggdfea 159 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zaggdfeb 160 zscav3d(ji,jj,jk) = zscave 160 161 zcoll3d(ji,jj,jk) = zaggdfea + zaggdfeb 162 zprecip3d(ji,jj,jk) = precip(ji,jj,jk) + precipno3(ji,jj,jk) 161 163 ! 162 164 END DO … … 175 177 176 178 ! Coagulation of ligands due to various processes (Brownian, shear, diff. sedimentation 177 ! Coefficients are taken from thep4zagg179 ! Coefficients are taken from p4zagg 178 180 ! ------------------------------------------------------------------------------------- 179 zlam1a = ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) & 180 & + ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) 181 zlam1a = ( 12.0 * 0.3 * trb(ji,jj,jk,jpdoc) + 9.05 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) & 182 & + ( 2.49 * trb(ji,jj,jk,jppoc) ) & 183 & + ( 127.8 * 0.3 * trb(ji,jj,jk,jpdoc) + 725.7 * trb(ji,jj,jk,jppoc) ) 181 184 ! 182 zlam1b = 3.53E3 * trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 183 185 zlam1b = ( 1.94 * xdiss(ji,jj,jk) + 1.37 ) * trb(ji,jj,jk,jpgoc) 184 186 ! 50% of the ligands are supposed to be in the colloidal size fraction 185 zligco = 0.5 * trn(ji,jj,jk,jplgw) 186 zaggliga = zlam1a * xstep * zligco 187 ! as for FeL 188 zligco = 0.5 * trb(ji,jj,jk,jplgw) 189 zaggliga = zlam1a * xstep * zligco 187 190 zaggligb = zlam1b * xstep * zligco 188 191 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) - zaggliga - zaggligb … … 191 194 END DO 192 195 END DO 193 !194 plig(:,:,:) = MAX( 0., ( ( zFeL1(:,:,:) * 1E-9 ) / ( trb(:,:,:,jpfer) +rtrn ) ) )195 196 ! 196 197 ENDIF … … 206 207 IF( iom_use("FESCAV") ) CALL iom_put("FESCAV" , zscav3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 207 208 IF( iom_use("FECOLL") ) CALL iom_put("FECOLL" , zcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 209 IF( iom_use("FEPREC") ) CALL iom_put("FEPREC" , zprecip3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 208 210 IF( iom_use("LGWCOLL")) CALL iom_put("LGWCOLL", zlcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 209 211 ENDIF … … 234 236 INTEGER :: ios ! Local integer 235 237 !! 236 NAMELIST/nampisfer/ ln_ligvar, xlam1, xlamdust, ligand, kfep 238 NAMELIST/nampisfer/ ln_ligvar, xlam1, xlamdust, ligand, kfep, scaveff 237 239 !!---------------------------------------------------------------------- 238 240 ! … … 258 260 WRITE(numout,*) ' ligand concentration in the ocean ligand =', ligand 259 261 WRITE(numout,*) ' rate constant for nanoparticle formation kfep =', kfep 262 WRITE(numout,*) ' Scavenged iron that is added to POFe scaveff =', scaveff 260 263 ENDIF 261 264 ! -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zflx.F90
r11536 r14276 359 359 IF( ln_presatm ) THEN 360 360 CALL fld_read( kt, 1, sf_patm ) !* input Patm provided at kt + 1/2 361 patm(:,:) = sf_patm(1)%fnow(:,:,1) 361 patm(:,:) = sf_patm(1)%fnow(:,:,1)/101325.0 ! atmospheric pressure 362 362 ENDIF 363 363 ! -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zint.F90
r12537 r14276 36 36 ! 37 37 INTEGER :: ji, jj ! dummy loop indices 38 REAL(wp) :: z var ! local variable38 REAL(wp) :: zrum, zcodel, zargu, zvar 39 39 !!--------------------------------------------------------------------- 40 40 ! … … 44 44 ! ------------------------------------------- 45 45 ! Generic temperature dependence (Eppley, 1972) 46 tgfunc (:,:,:) = EXP( 0.063 913* tsn(:,:,:,jp_tem) )46 tgfunc (:,:,:) = EXP( 0.0631 * tsn(:,:,:,jp_tem) ) 47 47 ! Temperature dependence of mesozooplankton (Buitenhuis et al. (2005)) 48 tgfunc2(:,:,:) = EXP( 0.07608 * tsn(:,:,:,jp_tem) ) 49 ! Temperature dependence of picophytoplankton (Stawiarsky et al., 2016) 50 tgfunc3(:,:,:) = EXP( 0.0825 * tsn(:,:,:,jp_tem) ) 48 tgfunc2(:,:,:) = EXP( 0.0761 * tsn(:,:,:,jp_tem) ) 51 49 52 50 ! Computation of the silicon dependant half saturation constant for silica uptake … … 69 67 ENDIF 70 68 ! 69 ! compute the day length depending on latitude and the day 70 ! Astronomical parameterization taken from HAMOCC3 71 zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp ) 72 zcodel = ASIN( SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp ) ) 73 74 ! day length in hours 75 strn(:,:) = 0. 76 DO jj = 1, jpj 77 DO ji = 1, jpi 78 zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 79 zargu = MAX( -1., MIN( 1., zargu ) ) 80 strn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. ) 81 END DO 82 END DO 83 ! 71 84 IF( ln_timing ) CALL timing_stop('p4z_int') 72 85 ! -
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 ! -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zlys.F90
r13233 r14276 57 57 ! 58 58 INTEGER :: ji, jj, jk, jn 59 REAL(wp) :: zdispot, zfact, zcalcon 59 REAL(wp) :: zdispot, zfact, zcalcon, zkd 60 60 REAL(wp) :: zomegaca, zexcess, zexcess0 61 61 CHARACTER (len=25) :: charout … … 65 65 IF( ln_timing ) CALL timing_start('p4z_lys') 66 66 ! 67 zco3 (:,:,:) = 0. 68 zcaldiss(:,:,:) = 0. 67 zco3 (:,:,:) = 0._wp 68 zcaldiss(:,:,:) = 0._wp ; zco3sat(:,:,:) = 0._wp 69 69 zhinit (:,:,:) = hi(:,:,:) * 1000. / ( rhop(:,:,:) + rtrn ) 70 70 ! … … 106 106 excess(ji,jj,jk) = 1._wp - zomegaca 107 107 zexcess0 = MAX( 0., excess(ji,jj,jk) ) 108 zexcess = zexcess0**nca 108 IF (zomegaca < 0.8) THEN 109 zexcess = zexcess0**nca 110 ! AMOUNT CACO3 THAT RE-ENTERS SOLUTION 111 zdispot = kdca * zexcess * trb(ji,jj,jk,jpcal) 112 ELSE 113 zkd = kdca * 0.1**(nca - 0.4) 114 zexcess = zexcess0**0.4 115 zdispot = zkd * zexcess * trb(ji,jj,jk,jpcal) 116 ENDIF 109 117 110 ! AMOUNT CACO3 THAT RE-ENTERS SOLUTION111 zdispot = kdca * zexcess * trb(ji,jj,jk,jpcal)112 118 ! CHANGE OF [CO3--] , [ALK], PARTICULATE [CACO3], 113 119 ! AND [SUM(CO2)] DUE TO CACO3 DISSOLUTION/PRECIPITATION -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zmeso.F90
r13234 r14276 89 89 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrarem, zgraref, zgrapoc, zgrapof, zgrabsi 90 90 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zgramigrem, zgramigref, zgramigpoc, zgramigpof 91 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: z strn, zgramigbsi91 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zgramigbsi 92 92 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d, zz2ligprod 93 93 !!--------------------------------------------------------------------- … … 236 236 zgraztotn = zgrazdc * quotad(ji,jj,jk) + zgrazz + zgraznc * quotan(ji,jj,jk) & 237 237 & + zgrazpoc + zgrazffep + zgrazffeg 238 zgraztotf = zgrazdf + zgraznf + zgrazz * ferat 3+ zgrazpof + zgrazfffp + zgrazfffg238 zgraztotf = zgrazdf + zgraznf + zgrazz * feratz + zgrazpof + zgrazfffp + zgrazfffg 239 239 240 240 ! Total grazing ( grazing by microzoo is already computed in p4zmicro ) … … 251 251 zgrasratf = ( zgraztotf + rtrn )/ ( zgraztotc + rtrn ) 252 252 zgrasratn = ( zgraztotn + rtrn )/ ( zgraztotc + rtrn ) 253 zepshert = MIN( 1., zgrasratn, zgrasratf / ferat 3)253 zepshert = MIN( 1., zgrasratn, zgrasratf / feratm) 254 254 zbeta = MAX(0., (epsher2 - epsher2min) ) 255 255 ! Food quantity deprivation of GGE … … 298 298 zprcaca = part2 * zprcaca 299 299 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrazcal - zprcaca 300 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * ( zgrazcal +zprcaca )300 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + 2. * ( zgrazcal - zprcaca ) 301 301 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) - zgrazcal + zprcaca 302 302 … … 305 305 zgrarem(ji,jj,jk) = zgraztotc * ( 1. - zepsherv - unass2 ) & 306 306 & + ( 1. - epsher2 - unass2 ) / ( 1. - epsher2 ) * ztortz 307 zgraref(ji,jj,jk) = zgraztotc * MAX( 0. , ( 1. - unass2 ) * zgrasratf - ferat 3* zepsherv ) &308 & + ferat 3* ( ( 1. - epsher2 - unass2 ) /( 1. - epsher2 ) * ztortz )307 zgraref(ji,jj,jk) = zgraztotc * MAX( 0. , ( 1. - unass2 ) * zgrasratf - feratm * zepsherv ) & 308 & + feratm * ( ( 1. - epsher2 - unass2 ) /( 1. - epsher2 ) * ztortz ) 309 309 zgrapoc(ji,jj,jk) = zgraztotc * unass2 + zmortzgoc 310 zgrapof(ji,jj,jk) = zgraztotf * unass2 + ferat 3* zmortzgoc310 zgrapof(ji,jj,jk) = zgraztotf * unass2 + feratm * zmortzgoc 311 311 END DO 312 312 END DO … … 320 320 ALLOCATE( zgramigrem(jpi,jpj), zgramigref(jpi,jpj), zgramigpoc(jpi,jpj), zgramigpof(jpi,jpj) ) 321 321 ALLOCATE( zgramigbsi(jpi,jpj) ) 322 ALLOCATE( zstrn(jpi,jpj) )323 322 zgramigrem(:,:) = 0.0 ; zgramigref(:,:) = 0.0 324 323 zgramigpoc(:,:) = 0.0 ; zgramigpof(:,:) = 0.0 325 324 zgramigbsi(:,:) = 0.0 326 327 ! compute the day length depending on latitude and the day328 zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp )329 zcodel = ASIN( SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp ) )330 331 ! day length in hours332 zstrn(:,:) = 0.333 DO jj = 1, jpj334 DO ji = 1, jpi335 zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad )336 zargu = MAX( -1., MIN( 1., zargu ) )337 zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. )338 zstrn(ji,jj) = MIN(0.75, MAX( 0.25, zstrn(ji,jj) / 24.) )339 END DO340 END DO341 325 342 326 ! Compute the amount of materials that will go into vertical migration … … 347 331 DO jj = 1, jpj 348 332 DO ji = 1, jpi 349 zmigreltime = (1. - zstrn(ji,jj))333 zmigreltime = (1. - strn(ji,jj)) 350 334 IF ( gdept_n(ji,jj,jk) <= heup(ji,jj) ) THEN 351 335 zgramigrem(ji,jj) = zgramigrem(ji,jj) + xfracmig * zgrarem(ji,jj,jk) * (1. - zmigreltime ) & … … 389 373 ! ------------------------------ 390 374 DEALLOCATE( zgramigrem, zgramigref, zgramigpoc, zgramigpof, zgramigbsi ) 391 DEALLOCATE( zstrn )392 393 375 ! End of the ln_dvm_meso part 394 376 ENDIF -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zmicro.F90
r13234 r14276 187 187 zgrasratf = ( zgraztotf + rtrn ) / ( zgraztotc + rtrn ) 188 188 zgrasratn = ( zgraztotn + rtrn ) / ( zgraztotc + rtrn ) 189 zepshert = MIN( 1., zgrasratn, zgrasratf / ferat 3)189 zepshert = MIN( 1., zgrasratn, zgrasratf / feratz) 190 190 zbeta = MAX(0., (epsher - epshermin) ) 191 191 ! Food quantity deprivation of the GGE … … 196 196 zepsherv = zepsherf * zepshert * zepsherq 197 197 ! Excretion of Fe 198 zgrafer = zgraztotc * MAX( 0. , ( 1. - unass ) * zgrasratf - ferat 3* zepsherv )198 zgrafer = zgraztotc * MAX( 0. , ( 1. - unass ) * zgrasratf - feratz * zepsherv ) 199 199 ! Excretion of C, N, P 200 200 zgrarem = zgraztotc * ( 1. - zepsherv - unass ) … … 236 236 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zmortz 237 237 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zgrazpoc 238 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat 3* zmortz - zgrazpof238 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + feratz * zmortz - zgrazpof 239 239 ! 240 240 ! Calcite remineralization due to zooplankton activity -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zmort.F90
r13233 r14276 25 25 REAL(wp), PUBLIC :: wchln !: Quadratic mortality rate of nanophytoplankton 26 26 REAL(wp), PUBLIC :: wchld !: Quadratic mortality rate of diatoms 27 REAL(wp), PUBLIC :: wchldm !: Maximum quadratic mortality rate of diatoms28 27 REAL(wp), PUBLIC :: mpratn !: Linear mortality rate of nanophytoplankton 29 28 REAL(wp), PUBLIC :: mpratd !: Linear mortality rate of diatoms … … 63 62 !!--------------------------------------------------------------------- 64 63 INTEGER :: ji, jj, jk 65 REAL(wp) :: z sizerat, zcompaph64 REAL(wp) :: zcompaph 66 65 REAL(wp) :: zfactfe, zfactch, zprcaca, zfracal 67 REAL(wp) :: ztortp , zrespp , zmortp 66 REAL(wp) :: ztortp , zrespp , zmortp, zlim1, zlim2 68 67 CHARACTER (len=25) :: charout 69 68 !!--------------------------------------------------------------------- … … 76 75 DO ji = 1, jpi 77 76 zcompaph = MAX( ( trb(ji,jj,jk,jpphy) - 1e-8 ), 0.e0 ) 78 ! When highly limited by macronutrients, very small cells79 ! dominate the community. As a consequence, aggregation80 ! due to turbulence is negligible. Mortality is also set81 ! to 082 zsizerat = MIN(1., MAX( 0., (quotan(ji,jj,jk) - 0.2) / 0.3) ) * trb(ji,jj,jk,jpphy)83 84 77 ! Quadratic mortality of nano due to aggregation during 85 78 ! blooms (Doney et al. 1996) 86 79 ! ----------------------------------------------------- 87 zrespp = wchln * 1.e6 * xstep * xdiss(ji,jj,jk) * zcompaph * zsizerat 80 zlim2 = xlimphy(ji,jj,jk) * xlimphy(ji,jj,jk) 81 zlim1 = 0.25 * ( 1. - zlim2 ) / ( 0.25 + zlim2 ) * trb(ji,jj,jk,jpphy) 82 zrespp = wchln * 1.e6 * xstep * zlim1 * xdiss(ji,jj,jk) * zcompaph 88 83 89 84 ! Phytoplankton linear mortality … … 91 86 ! extinction of nanophyto in highly limited areas 92 87 ! ---------------------------------------------------- 93 ztortp = mpratn * xstep * zcompaph / ( xkmort + trb(ji,jj,jk,jpphy) ) * zsizerat88 ztortp = mpratn * xstep * zcompaph / ( xkmort + trb(ji,jj,jk,jpphy) ) * trb(ji,jj,jk,jpphy) 94 89 95 90 zmortp = zrespp + ztortp … … 170 165 zlim2 = xlimdia(ji,jj,jk) * xlimdia(ji,jj,jk) 171 166 zlim1 = 0.25 * ( 1. - zlim2 ) / ( 0.25 + zlim2 ) 172 zrespp2 = 1.e6 * xstep * ( wchld + wchldm * zlim1 )* xdiss(ji,jj,jk) * zcompadi * trb(ji,jj,jk,jpdia)167 zrespp2 = 1.e6 * xstep * wchld * zlim1 * xdiss(ji,jj,jk) * zcompadi * trb(ji,jj,jk,jpdia) 173 168 174 169 ! Phytoplankton linear mortality … … 228 223 INTEGER :: ios ! Local integer 229 224 ! 230 NAMELIST/namp4zmort/ wchln, wchld, wchldm,mpratn, mpratd225 NAMELIST/namp4zmort/ wchln, wchld, mpratn, mpratd 231 226 !!---------------------------------------------------------------------- 232 227 ! … … 249 244 WRITE(numout,*) ' quadratic mortality of phytoplankton wchln =', wchln 250 245 WRITE(numout,*) ' maximum quadratic mortality of diatoms wchld =', wchld 251 WRITE(numout,*) ' maximum quadratic mortality of diatoms wchldm =', wchldm252 246 WRITE(numout,*) ' phytoplankton mortality rate mpratn =', mpratn 253 247 WRITE(numout,*) ' Diatoms mortality rate mpratd =', mpratd -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zopt.F90
r13233 r14276 67 67 REAL(wp), DIMENSION(jpi,jpj ) :: zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4 68 68 REAL(wp), DIMENSION(jpi,jpj ) :: zqsr100, zqsr_corr 69 REAL(wp), DIMENSION(jpi,jpj,jpk) :: z par, ze0, ze1, ze2, ze3, zchl3d69 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze0, ze1, ze2, ze3, zchl3d 70 70 !!--------------------------------------------------------------------- 71 71 ! … … 206 206 heup(ji,jj) = gdepw_n(ji,jj,jk+1) ! Euphotic layer depth 207 207 ENDIF 208 IF( etot_ndcy(ji,jj,jk) * tmask(ji,jj,jk) >= 0. 50 ) THEN208 IF( etot_ndcy(ji,jj,jk) * tmask(ji,jj,jk) >= 0.10 ) THEN 209 209 heup_01(ji,jj) = gdepw_n(ji,jj,jk+1) ! Euphotic layer depth (light level definition) 210 210 ENDIF … … 235 235 END DO 236 236 ! 237 emoy(:,:,:) = etot(:,:,:) ! PAR238 zpar(:,:,:) = etot_ndcy(:,:,:) ! diagnostic : PAR with no diurnal cycle237 emoy(:,:,:) = etot(:,:,:) ! PAR 238 etotm(:,:,:) = etot_ndcy(:,:,:) ! diagnostic : PAR with no diurnal cycle 239 239 ! 240 240 DO jk = 1, nksrp … … 244 244 z1_dep = 1. / ( zdepmoy(ji,jj) + rtrn ) 245 245 emoy (ji,jj,jk) = zetmp1(ji,jj) * z1_dep 246 zpar(ji,jj,jk) = zetmp2(ji,jj) * z1_dep246 etotm(ji,jj,jk) = zetmp2(ji,jj) * z1_dep 247 247 ENDIF 248 248 END DO … … 313 313 IF( knt == nrdttrc ) THEN 314 314 IF( iom_use( "Heup" ) ) CALL iom_put( "Heup" , heup(:,: ) * tmask(:,:,1) ) ! euphotic layer deptht 315 IF( iom_use( "PARDM" ) ) CALL iom_put( "PARDM", zpar(:,:,:) * tmask(:,:,:) ) ! Photosynthetically Available Radiation315 IF( iom_use( "PARDM" ) ) CALL iom_put( "PARDM", etotm(:,:,:) * tmask(:,:,:) ) ! Photosynthetically Available Radiation 316 316 IF( iom_use( "PAR" ) ) CALL iom_put( "PAR" , emoy(:,:,:) * tmask(:,:,:) ) ! Photosynthetically Available Radiation 317 317 ENDIF -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zprod.F90
r13233 r14276 67 67 INTEGER :: ji, jj, jk 68 68 REAL(wp) :: zsilfac, znanotot, zdiattot, zconctemp, zconctemp2 69 REAL(wp) :: zratio, zmax, zsilim, ztn, zadap, zlim, zsi lfac2, zsiborn69 REAL(wp) :: zratio, zmax, zsilim, ztn, zadap, zlim, zsiborn 70 70 REAL(wp) :: zprod, zproreg, zproreg2, zprochln, zprochld 71 71 REAL(wp) :: zdocprod, zpislopen, zpisloped, zfact 72 REAL(wp) :: zratiosi, zmaxsi, zlimfac, zsizetmp 73 REAL(wp) :: zrum, zcodel, zargu, zval, zfeup , chlcnm_n, chlcdm_n72 REAL(wp) :: zratiosi, zmaxsi, zlimfac, zsizetmp, zfecnm, zfecdm 73 REAL(wp) :: zrum, zcodel, zargu, zval, zfeup 74 74 CHARACTER (len=25) :: charout 75 75 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zw2d 76 76 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d 77 REAL(wp), DIMENSION(jpi,jpj ) :: zstrn78 77 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprmaxn,zprmaxd 79 78 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpislopeadn, zpislopeadd, zysopt … … 94 93 zprbio (:,:,:) = 0._wp ; zprchld (:,:,:) = 0._wp ; zprchln (:,:,:) = 0._wp 95 94 zmxl_fac(:,:,:) = 0._wp ; zmxl_chl(:,:,:) = 0._wp 95 consfe3 (:,:,:) = 0._wp 96 96 97 97 ! Computation of the maximimum production. Based on a Q10 description … … 100 100 zprmaxn(:,:,:) = 0.8_wp * r1_rday * tgfunc(:,:,:) 101 101 zprmaxd(:,:,:) = zprmaxn(:,:,:) 102 103 ! compute the day length depending on latitude and the day104 ! Astronomical parameterization taken from HAMOCC3105 zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp )106 zcodel = ASIN( SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp ) )107 108 ! day length in hours109 zstrn(:,:) = 0.110 DO jj = 1, jpj111 DO ji = 1, jpi112 zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad )113 zargu = MAX( -1., MIN( 1., zargu ) )114 zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. )115 END DO116 END DO117 102 118 103 ! Impact of the day duration and light intermittency on phytoplankton growth … … 127 112 DO ji = 1, jpi 128 113 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 129 zval = MAX( 1., zstrn(ji,jj) )114 zval = MAX( 1., strn(ji,jj) ) 130 115 IF( gdepw_n(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 131 116 zval = zval * MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) … … 225 210 ! Si/C of diatoms 226 211 ! ------------------------ 227 ! Si/C increases with iron stress and silicate availability (zsilfac)212 ! Si/C increases with iron stress and silicate availability 228 213 ! Si/C is arbitrariliy increased for very high Si concentrations 229 ! to mimic the very high ratios observed in the Southern Ocean (zsilfac 2)214 ! to mimic the very high ratios observed in the Southern Ocean (zsilfac) 230 215 ! A parameterization derived from Flynn (2003) is used for the control 231 216 ! when Si is not limiting which is similar to the parameterisation … … 236 221 zsiborn = trb(ji,jj,1,jpsil)**3 237 222 IF (gphit(ji,jj) < -30.0 ) THEN 238 zsilfac 2= 1. + 2. * zsiborn / ( zsiborn + xksi2**3 )223 zsilfac = 1. + 2. * zsiborn / ( zsiborn + xksi2**3 ) 239 224 ELSE 240 zsilfac 2= 1. + zsiborn / ( zsiborn + xksi2**3 )225 zsilfac = 1. + zsiborn / ( zsiborn + xksi2**3 ) 241 226 ENDIF 242 zratiosi = 1.0 - trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn ) / ( zsilfac 2* grosip * 3.0 + rtrn )227 zratiosi = 1.0 - trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn ) / ( zsilfac * grosip * 3.0 + rtrn ) 243 228 zratiosi = MAX(0., MIN(1.0, zratiosi) ) 244 229 zmaxsi = (1.0 + 0.1**4) * zratiosi**4 / ( zratiosi**4 + 0.1**4 ) 245 230 IF ( xlimsi(ji,jj,jk) /= xlimdia(ji,jj,jk) ) THEN 246 zysopt(ji,jj,jk) = zlim * zsilfac 2* grosip * 1.0 * zmaxsi231 zysopt(ji,jj,jk) = zlim * zsilfac * grosip * 1.0 * zmaxsi 247 232 ELSE 248 zysopt(ji,jj,jk) = zlim * zsilfac 2* grosip * 1.0 * zsilim**0.7 * zmaxsi233 zysopt(ji,jj,jk) = zlim * zsilfac * grosip * 1.0 * zsilim**0.7 * zmaxsi 249 234 ENDIF 250 235 ENDIF … … 291 276 ! do not suggest it for accimated cells. Uptake is 292 277 ! downregulated when the quota is close to the maximum quota 293 zratio = 1.0 - MIN(1.0,trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) * fecnm + rtrn ) ) 278 zfecnm = xqfuncfecn(ji,jj,jk) + ( fecnm - xqfuncfecn(ji,jj,jk) ) * ( xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) ) 279 zratio = 1.0 - MIN(1.0,trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) * zfecnm + rtrn ) ) 294 280 zmax = MAX( 0., MIN( 1.0, zratio**2/ (0.05**2+zratio**2) ) ) 295 zprofen(ji,jj,jk) = fecnm * zprmaxn(ji,jj,jk) * ( 1.0 - fr_i(ji,jj) ) &281 zprofen(ji,jj,jk) = zfecnm * zprmaxn(ji,jj,jk) * ( 1.0 - fr_i(ji,jj) ) & 296 282 & * (1. + 0.8 * xnanono3(ji,jj,jk) / ( rtrn + xnanono3(ji,jj,jk) & 297 283 & + xnanonh4(ji,jj,jk) ) * (1. - xnanofer(ji,jj,jk) ) ) & … … 317 303 ! do not suggest it for accimated cells. Uptake is 318 304 ! downregulated when the quota is close to the maximum quota 319 zratio = 1.0 - MIN(1.0, trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) * fecdm + rtrn ) ) 305 zfecdm = xqfuncfecd(ji,jj,jk) + ( fecdm - xqfuncfecd(ji,jj,jk) ) * ( xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) ) 306 zratio = 1.0 - MIN(1.0, trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) * zfecdm + rtrn ) ) 320 307 zmax = MAX( 0., MIN( 1.0, zratio**2/ (0.05**2+zratio**2) ) ) 321 zprofed(ji,jj,jk) = fecdm * zprmaxd(ji,jj,jk) * (1.0 - fr_i(ji,jj) ) &308 zprofed(ji,jj,jk) = zfecdm * zprmaxd(ji,jj,jk) * (1.0 - fr_i(ji,jj) ) & 322 309 & * (1. + 0.8 * xdiatno3(ji,jj,jk) / ( rtrn + xdiatno3(ji,jj,jk) & 323 310 & + xdiatnh4(ji,jj,jk) ) * (1. - xdiatfer(ji,jj,jk) ) ) & … … 339 326 zprod = rday * zprorcan(ji,jj,jk) * zprchln(ji,jj,jk) * xlimphy(ji,jj,jk) 340 327 zprochln = chlcmin * 12. * zprorcan (ji,jj,jk) 341 342 ! The maximum reachable Chl quota is modulated by temperature 343 ! following Geider (1987) 344 chlcnm_n = MIN ( chlcnm, ( chlcnm / (1. - 1.14 / 43.4 *tsn(ji,jj,jk,jp_tem))) * (1. - 1.14 / 43.4 * 20.)) 345 zprochln = zprochln + (chlcnm_n-chlcmin) * 12. * zprod / & 328 zprochln = zprochln + (chlcnm - chlcmin) * 12. * zprod / & 346 329 & ( zpislopeadn(ji,jj,jk) * znanotot +rtrn) 347 330 … … 350 333 zprod = rday * zprorcad(ji,jj,jk) * zprchld(ji,jj,jk) * xlimdia(ji,jj,jk) 351 334 zprochld = chlcmin * 12. * zprorcad(ji,jj,jk) 352 353 ! The maximum reachable Chl quota is modulated by temperature 354 ! following Geider (1987) 355 chlcdm_n = MIN ( chlcdm, ( chlcdm / (1. - 1.14 / 43.4 * tsn(ji,jj,jk,jp_tem))) * (1. - 1.14 / 43.4 * 20.)) 356 zprochld = zprochld + (chlcdm_n-chlcmin) * 12. * zprod / & 335 zprochld = zprochld + (chlcdm - chlcmin) * 12. * zprod / & 357 336 & ( zpislopeadd(ji,jj,jk) * zdiattot +rtrn ) 358 337 … … 386 365 & + ( o2ut + o2nit ) * ( zpronewn(ji,jj,jk) + zpronewd(ji,jj,jk) ) 387 366 ! 388 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) 389 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zfeup 367 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - ( texcretn * zprofen(ji,jj,jk) & 368 & + texcretd * zprofed(ji,jj,jk) ) 369 consfe3(ji,jj,jk) = ( texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) ) & 370 & * 75.0 / ( rtrn + ( plig(ji,jj,jk) + 75.0 * (1.0 - plig(ji,jj,jk) ) ) * trb(ji,jj,jk,jpfer) ) / rfact2 390 371 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - zprmaxd(ji,jj,jk) * zysopt(ji,jj,jk) & 391 372 & * rfact2 * trb(ji,jj,jk,jpdia) … … 401 382 ! when ln_ligand is set to .true. in the namelist. Ligand uptake is small 402 383 ! and based on the FeL model by Morel et al. (2008) and on the study of 403 ! Shaked and Lis (2012)384 ! Shaked et al. (2020) 404 385 ! ------------------------------------------------------------------------- 405 386 IF( ln_ligand ) THEN … … 412 393 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) 413 394 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zdocprod * ldocp & 414 & - zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) + 2.E3* (1.0 - plig(ji,jj,jk) ) ) * lthet395 & - zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) + 75.0 * (1.0 - plig(ji,jj,jk) ) ) * lthet 415 396 zpligprod1(ji,jj,jk) = zdocprod * ldocp 416 397 zpligprod2(ji,jj,jk) = zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) & 417 & + 2.E3* (1.0 - plig(ji,jj,jk) ) ) * lthet398 & + 75.0 * (1.0 - plig(ji,jj,jk) ) ) * lthet 418 399 ENDIF 419 400 END DO -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zrem.F90
r13233 r14276 35 35 REAL(wp), PUBLIC :: xremikn !: remineralisation rate of DON (p5z) 36 36 REAL(wp), PUBLIC :: xremikp !: remineralisation rate of DOP (p5z) 37 REAL(wp), PUBLIC :: xremik !: remineralisation rate of DOC (p4z)38 37 REAL(wp), PUBLIC :: nitrif !: NH4 nitrification rate 39 38 REAL(wp), PUBLIC :: xsirem !: remineralisation rate of biogenic silica … … 71 70 REAL(wp) :: zremik, zremikc, zremikn, zremikp, zsiremin, zfact 72 71 REAL(wp) :: zsatur, zsatur2, znusil, znusil2, zdep, zdepmin, zfactdep 73 REAL(wp) :: zbactfer, zolimit, zonitr, zrfact2 74 REAL(wp) :: zammonic, zoxyremc, zoxyremn, zoxyremp 75 REAL(wp) :: zosil, ztem, zdenitnh4, zolimic, zolimin, zolimip, zdenitrn, zdenitrp 72 REAL(wp) :: zbactfer, zonitr 73 REAL(wp) :: zammonic, zoxyremc, zosil, ztem, zdenitnh4, zolimic 76 74 CHARACTER (len=25) :: charout 77 REAL(wp), DIMENSION(jpi,jpj ) :: ztempbac 78 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepbac, zolimi, zdepprod, zfacsi, zfacsib, zdepeff, zfebact 75 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepbac, zolimi, zfacsi, zfacsib, zdepeff, zfebact 79 76 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d 80 77 !!--------------------------------------------------------------------- … … 83 80 ! 84 81 ! Initialisation of arrays 85 zdepprod(:,:,:) = 1._wp86 82 zdepeff (:,:,:) = 0.3_wp 87 ztempbac(:,:) = 0._wp88 83 zfacsib(:,:,:) = xsilab / ( 1.0 - xsilab ) 89 84 zfebact(:,:,:) = 0._wp … … 99 94 DO jj = 1, jpj 100 95 DO ji = 1, jpi 101 zdep = MAX( hmld(ji,jj), heup(ji,jj) ) 102 IF( gdept_n(ji,jj,jk) < zdep ) THEN 103 zdepbac(ji,jj,jk) = MIN( 0.7 * ( trb(ji,jj,jk,jpzoo) + 2.* trb(ji,jj,jk,jpmes) ), 4.e-6 ) 104 ztempbac(ji,jj) = zdepbac(ji,jj,jk) 105 ELSE 96 zdep = MAX( hmld(ji,jj), heup_01(ji,jj) ) 97 zdepbac(ji,jj,jk) = 0.6 * ( MAX(0.0, trb(ji,jj,jk,jpzoo) + trb(ji,jj,jk,jpmes) ) * 1.0E6 )**0.6 * 1.E-6 98 IF( gdept_n(ji,jj,jk) >= zdep ) THEN 106 99 zdepmin = MIN( 1., zdep / gdept_n(ji,jj,jk) ) 107 zdepbac (ji,jj,jk) = zdepmin**0.683 * ztempbac(ji,jj)108 zdepprod(ji,jj,jk) = zdepmin**0.273109 100 zdepeff (ji,jj,jk) = zdepeff(ji,jj,jk) * zdepmin**0.3 110 101 ENDIF … … 113 104 END DO 114 105 115 IF( ln_p4z ) THEN ! Standard PISCES code 116 DO jk = 1, jpkm1 117 DO jj = 1, jpj 118 DO ji = 1, jpi 119 ! DOC ammonification. Depends on a limitation term of the bacterial activity 120 ! and on the implicit bacteria concentration 121 ! -------------------------------------------------------------------------- 122 zremik = xremik * xstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk) 123 zremik = MAX( zremik, 2.74e-4 * xstep ) 124 125 ! Ammonification in oxic waters with oxygen consumption 126 ! ----------------------------------------------------- 127 zolimit = zremik * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc) 128 zolimi(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit ) 129 130 ! Ammonification in suboxic waters with denitrification 131 ! ----------------------------------------------------- 132 zammonic = zremik * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) 133 denitr(ji,jj,jk) = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 134 denitr(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, denitr(ji,jj,jk) ) 135 136 ! Ammonification in waters depleted in O2 and NO3 based on 137 ! other redox processes 138 ! -------------------------------------------------------- 139 zoxyremc = zammonic - denitr(ji,jj,jk) 140 ! 141 zolimi (ji,jj,jk) = MAX( 0.e0, zolimi (ji,jj,jk) ) 142 denitr (ji,jj,jk) = MAX( 0.e0, denitr (ji,jj,jk) ) 143 zoxyremc = MAX( 0.e0, zoxyremc ) 144 ! Update of the TRA arrays 145 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 146 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 147 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr (ji,jj,jk) * rdenit 148 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zolimi (ji,jj,jk) - denitr(ji,jj,jk) - zoxyremc 149 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimi (ji,jj,jk) * o2ut 150 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 151 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimi(ji,jj,jk) + zoxyremc & 152 & + ( rdenit + 1.) * denitr(ji,jj,jk) ) 153 END DO 154 END DO 155 END DO 156 ELSE ! PISCES-QUOTA 157 DO jk = 1, jpkm1 158 DO jj = 1, jpj 159 DO ji = 1, jpi 160 ! DOC ammonification. Depends on a limitation term of the bacterial activity 161 ! and on the implicit bacteria concentration 162 ! --------------------------------------------------------------- 163 zremik = xstep / 1.e-6 * MAX(0.01, xlimbac(ji,jj,jk)) * zdepbac(ji,jj,jk) 164 zremik = MAX( zremik, 2.74e-4 * xstep / xremikc ) 165 166 zremikc = xremikc * zremik 167 zremikn = xremikn / xremikc 168 zremikp = xremikp / xremikc 169 170 ! Ammonification in oxic waters with oxygen consumption 171 ! ----------------------------------------------------- 172 zolimit = zremikc * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc) 173 zolimic = MAX( 0.e0, MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit ) ) 174 zolimi(ji,jj,jk) = zolimic 175 zolimin = zremikn * zolimic * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 176 zolimip = zremikp * zolimic * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 177 178 ! Ammonification in suboxic waters with denitrification 179 ! ------------------------------------------------------- 180 zammonic = zremikc * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) 181 denitr(ji,jj,jk) = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 182 denitr(ji,jj,jk) = MAX(0., MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, denitr(ji,jj,jk) ) ) 183 zoxyremc = MAX(0., zammonic - denitr(ji,jj,jk)) 184 zdenitrn = zremikn * denitr(ji,jj,jk) * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 185 zdenitrp = zremikp * denitr(ji,jj,jk) * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 186 zoxyremn = zremikn * zoxyremc * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 187 zoxyremp = zremikp * zoxyremc * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 188 ! Update of the TRA arrays 189 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimip + zdenitrp + zoxyremp 190 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimin + zdenitrn + zoxyremn 191 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr(ji,jj,jk) * rdenit 192 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zolimic - denitr(ji,jj,jk) - zoxyremc 193 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) - zolimin - zdenitrn - zoxyremn 194 tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) - zolimip - zdenitrp - zoxyremp 195 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimic * o2ut 196 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimic + denitr(ji,jj,jk) + zoxyremc 197 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimin + zoxyremn + ( rdenit + 1.) * zdenitrn ) 198 END DO 199 END DO 200 END DO 201 ! 202 ENDIF 106 DO jk = 1, jpkm1 107 DO jj = 1, jpj 108 DO ji = 1, jpi 109 ! DOC ammonification. Depends on a limitation term of the bacterial activity 110 ! and on the implicit bacteria concentration 111 ! -------------------------------------------------------------------------- 112 zremik = xstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk) 113 zremik = MAX( zremik, 2.74e-4 * xstep / xremikc ) 114 zremikc = xremikc * zremik 115 116 ! Ammonification in oxic waters with oxygen consumption 117 ! ----------------------------------------------------- 118 zolimic = zremikc * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc) 119 zolimic = MAX( 0.e0, MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimic ) ) 120 zolimi(ji,jj,jk) = zolimic 121 122 ! Ammonification in suboxic waters with denitrification 123 ! ----------------------------------------------------- 124 zammonic = zremikc * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) 125 denitr(ji,jj,jk) = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 126 denitr(ji,jj,jk) = MAX(0., MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, denitr(ji,jj,jk) ) ) 127 128 ! Ammonification in waters depleted in O2 and NO3 based on 129 ! other redox processes 130 ! -------------------------------------------------------- 131 zoxyremc = MAX(0., zammonic - denitr(ji,jj,jk) ) 132 133 ! Update of the TRA arrays 134 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr(ji,jj,jk) * rdenit 135 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - ( zolimic + denitr(ji,jj,jk) + zoxyremc ) 136 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimic * o2ut 137 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimic + denitr(ji,jj,jk) + zoxyremc 138 IF ( ln_p4z ) THEN ! PISCES-std 139 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimic + denitr(ji,jj,jk) + zoxyremc 140 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimic + denitr(ji,jj,jk) + zoxyremc 141 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimic + zoxyremc + ( rdenit + 1.) * denitr(ji,jj,jk) ) 142 ELSE ! PISCES-QUOTA (p5z) 143 zremikn = xremikn / xremikc * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 144 zremikp = xremikp / xremikc * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 145 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zremikp * ( zolimic + denitr(ji,jj,jk) + zoxyremc ) 146 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zremikn * ( zolimic + denitr(ji,jj,jk) + zoxyremc ) 147 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) - zremikn * ( zolimic + denitr(ji,jj,jk) + zoxyremc ) 148 tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) - zremikp * ( zolimic + denitr(ji,jj,jk) + zoxyremc ) 149 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zremikn * ( zolimic + zoxyremc + ( rdenit + 1.) * denitr(ji,jj,jk) ) 150 ENDIF 151 END DO 152 END DO 153 END DO 203 154 204 155 DO jk = 1, jpkm1 … … 211 162 & / ( 1.+ emoy(ji,jj,jk) ) * ( 1. + fr_i(ji,jj) * emoy(ji,jj,jk) ) 212 163 zdenitnh4 = nitrif * xstep * trb(ji,jj,jk,jpnh4) * nitrfac(ji,jj,jk) 213 zdenitnh4 = M IN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenita, zdenitnh4)164 zdenitnh4 = MAX(0., MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenita, zdenitnh4 ) ) 214 165 ! Update of the tracers trends 215 166 ! ---------------------------- … … 217 168 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr - rdenita * zdenitnh4 218 169 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr 219 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * zdenitnh4170 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * rno3 * zonitr + rno3 * ( rdenita - 1. ) * zdenitnh4 220 171 END DO 221 172 END DO … … 236 187 ! studies (especially at Papa) have shown this uptake to be significant 237 188 ! --------------------------------------------------------------------- 238 zbactfer = feratb * rfact2 * 0.6_wp / rday * tgfunc(ji,jj,jk) * xlimbacl(ji,jj,jk) & 239 & * trb(ji,jj,jk,jpfer) / ( xkferb + trb(ji,jj,jk,jpfer) ) & 240 & * zdepeff(ji,jj,jk) * zdepbac(ji,jj,jk) 189 zbactfer = feratb * 0.6_wp * xstep * tgfunc(ji,jj,jk) * xlimbacl(ji,jj,jk) * trb(ji,jj,jk,jpfer) & 190 & / ( xkferb + trb(ji,jj,jk,jpfer) ) * zdepeff(ji,jj,jk) * zdepbac(ji,jj,jk) 241 191 242 192 ! Only the transfer of iron from its dissolved form to particles 243 193 ! is treated here. The GGE of bacteria supposed to be equal to 244 194 ! 0.33. This is hard-coded. 245 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0. 33246 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0. 25247 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer*0.0 8248 zfebact(ji,jj,jk) = zbactfer * 0. 33195 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.18 196 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.15 197 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer*0.03 198 zfebact(ji,jj,jk) = zbactfer * 0.18 249 199 blim(ji,jj,jk) = xlimbacl(ji,jj,jk) * zdepbac(ji,jj,jk) / 1.e-6 250 200 END DO … … 304 254 305 255 IF( knt == nrdttrc ) THEN 306 zrfact2 = 1.e3 * rfact2r307 256 ALLOCATE( zw3d(jpi,jpj,jpk) ) 308 257 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s … … 321 270 ENDIF 322 271 IF( iom_use( "FEBACT" ) ) THEN 323 zw3d(:,:,:) = zfebact(:,:,:) * 1E9 * tmask(:,:,:) * z rfact2! Bacterial iron consumption272 zw3d(:,:,:) = zfebact(:,:,:) * 1E9 * tmask(:,:,:) * zfact ! Bacterial iron consumption 324 273 CALL iom_put( "FEBACT" , zw3d ) 325 274 ENDIF … … 345 294 !! 346 295 !!---------------------------------------------------------------------- 347 NAMELIST/nampisrem/ xremik,nitrif, xsirem, xsiremlab, xsilab, feratb, xkferb, &296 NAMELIST/nampisrem/ nitrif, xsirem, xsiremlab, xsilab, feratb, xkferb, & 348 297 & xremikc, xremikn, xremikp 349 298 INTEGER :: ios ! Local integer output status for namelist read … … 367 316 WRITE(numout,*) ' Namelist parameters for remineralization, nampisrem' 368 317 IF( ln_p4z ) THEN 369 WRITE(numout,*) ' remineralization rate of DOC xremik =', xremik318 WRITE(numout,*) ' remineralization rate of DOC xremikc =', xremikc 370 319 ELSE 371 320 WRITE(numout,*) ' remineralization rate of DOC xremikc =', xremikc -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zsbc.F90
r12526 r14276 483 483 ! 484 484 sedsilfrac = 0.03 ! percentage of silica loss in the sediments 485 sedcalfrac = 0. 6! percentage of calcite loss in the sediments485 sedcalfrac = 0.99 ! percentage of calcite loss in the sediments 486 486 ! 487 487 END SUBROUTINE p4z_sbc_init -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zsed.F90
r13233 r14276 66 66 REAL(wp) :: zsiloss, zcaloss, zws3, zws4, zwsc, zdep 67 67 REAL(wp) :: zwstpoc, zwstpon, zwstpop 68 REAL(wp) :: ztr fer, ztrpo4s, ztrdp, zwdust, zmudia, ztemp68 REAL(wp) :: ztrpo4s, ztrdp, zwdust, zmudia, ztemp 69 69 REAL(wp) :: xdiano3, xdianh4 70 70 ! … … 73 73 REAL(wp), DIMENSION(jpi,jpj ) :: zwsbio3, zwsbio4 74 74 REAL(wp), DIMENSION(jpi,jpj ) :: zsedcal, zsedsi, zsedc 75 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zsoufer, zlight 76 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrpo4, ztrdop, zirondep, zpdep 77 REAL(wp), ALLOCATABLE, DIMENSION(:,: ) :: z sidep, zironice75 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zsoufer, zlight, ztrfer 76 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrpo4, ztrdop, zirondep, zpdep, zsidep 77 REAL(wp), ALLOCATABLE, DIMENSION(:,: ) :: zironice 78 78 !!--------------------------------------------------------------------- 79 79 ! … … 137 137 IF( ln_dust ) THEN 138 138 ! 139 ALLOCATE( zsidep(jpi,jpj ), zpdep(jpi,jpj,jpk), zirondep(jpi,jpj,jpk) )139 ALLOCATE( zsidep(jpi,jpj,jpk), zpdep(jpi,jpj,jpk), zirondep(jpi,jpj,jpk) ) 140 140 141 141 ! Iron, P and Si deposition at the surface … … 154 154 ! and the solubility are hard coded 155 155 ! ---------------------------------------------------------------- 156 zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 28.1 157 zpdep (:,:,1) = 0.1 * 0.021 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 31. / po4r 156 ! Si crustal abundance is about 26.9% by mass and 7.5% is soluble 157 ! (see for instance, Tegen and Kohfeld, 2006). 158 zsidep(:,:,1) = 0.269 * 0.075 * dust(:,:) * rfact2 / e3t_n(:,:,1) / 28.1 159 ! P Crustal abundance is about 0.1% by mass and about 10% of it soluble 160 ! (Paytan and McLaughlin, 2007). 161 zpdep (:,:,1) = 0.1 * 1.e-3 * dust(:,:) * rfact2 / e3t_n(:,:,1) / 31. / po4r 158 162 159 163 ! Iron solubilization of particles in the water column … … 168 172 DO jk = 2, jpkm1 169 173 zirondep(:,:,jk) = dust(:,:) * mfrac * zwdust * rfact2 * EXP( -gdept_n(:,:,jk) / (250. * wdust) ) 170 zpdep (:,:,jk) = zirondep(:,:,jk) * 0.38 / po4r 174 zpdep (:,:,jk) = zirondep(:,:,jk) * 1.e-3 / mfrac * 55.85 / 31. 175 zsidep (:,:,jk) = zirondep(:,:,jk) * 0.269 / mfrac * 55.85 / 28.1 171 176 END DO 172 177 173 178 ! Solubilization of particles in the water column (Si, P, Fe) 174 tra(:,:,1,jpsil) = tra(:,:,1,jpsil) + zsidep (:,:)175 179 DO jk = 1, jpkm1 176 180 tra(:,:,jk,jppo4) = tra(:,:,jk,jppo4) + zpdep (:,:,jk) 177 181 tra(:,:,jk,jpfer) = tra(:,:,jk,jpfer) + zirondep(:,:,jk) 182 tra(:,:,jk,jpsil) = tra(:,:,jk,jpsil) + zsidep (:,:,jk) 178 183 ENDDO 179 184 ! … … 299 304 zflx = ( trb(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj) & 300 305 & + trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) ) * 1E6 301 zbureff(ji,jj) = 0.013 + 0. 53 * zflx**2 / ( 7.0 + zflx )**2306 zbureff(ji,jj) = 0.013 + 0.13 * zflx**2 / ( 7.0 + zflx )**2 302 307 ENDIF 303 308 END DO … … 306 311 ENDIF 307 312 308 ! Fraction of dSi that is remineralized in the sediments. This is 309 ! set so that the burial in sediments equals the total input of Si 310 ! by rivers and dust (sedsilfrac) 311 ! ---------------------------------------------------------------- 313 ! Fraction of dSi that is dissolved in the sediments. This fraction is 314 ! set to a constant value in p4zsbc 315 ! -------------------------------------------------------------------- 312 316 IF( .NOT.lk_sed ) zrivsil = 1._wp - sedsilfrac 313 317 … … 331 335 ! modeled. The amount of CaCO3 that dissolves in the sediments 332 336 ! is computed using a metamodel constructed from Archer (1996) 333 ! ------------------------------------------------------------ 337 ! A minimum set to sedcalfrac is preserved. This value is defined 338 ! in p4zsbc 339 ! --------------------------------------------------------------- 334 340 DO jj = 1, jpj 335 341 DO ji = 1, jpi … … 341 347 tra(ji,jj,ikt,jpsil) = tra(ji,jj,ikt,jpsil) + zsiloss * zrivsil 342 348 ! 343 zfactcal = M IN( excess(ji,jj,ikt), 0.2)344 zfactcal = MIN( 1., 1.3 * ( 0.2 - zfactcal ) / ( 0.4- zfactcal ) )349 zfactcal = MAX(-0.1, MIN( excess(ji,jj,ikt), 0.2 ) ) 350 zfactcal = 0.3 + 0.7 * MIN( 1., (0.1 + zfactcal) / ( 0.5 - zfactcal ) ) 345 351 zrivalk = sedcalfrac * zfactcal 346 352 tra(ji,jj,ikt,jptal) = tra(ji,jj,ikt,jptal) + zcaloss * zrivalk * 2.0 … … 394 400 zws4 = zwsbio4(ji,jj) * zdep 395 401 zws3 = zwsbio3(ji,jj) * zdep 402 ! Fraction that is permanently buried in the sediments 396 403 zrivno3 = 1. - zbureff(ji,jj) 397 404 zwstpoc = trb(ji,jj,ikt,jpgoc) * zws4 + trb(ji,jj,ikt,jppoc) * zws3 405 ! Denitrification in the sediments 398 406 zpdenit = MIN( 0.5 * ( trb(ji,jj,ikt,jpno3) - rtrn ) / rdenit, zdenit2d(ji,jj) * zwstpoc * zrivno3 ) 407 ! Fraction that is not denitrified 399 408 z1pdenit = zwstpoc * zrivno3 - zpdenit 409 ! Oxic remineralization of organic matter in the sediments 400 410 zolimit = MIN( ( trb(ji,jj,ikt,jpoxy) - rtrn ) / o2ut, z1pdenit * ( 1.- nitrfac(ji,jj,ikt) ) ) 411 ! The fraction that cannot be denitrified nor oxidized by O2 412 ! is released back to the water column as DOC 401 413 tra(ji,jj,ikt,jpdoc) = tra(ji,jj,ikt,jpdoc) + z1pdenit - zolimit 414 ! Update of the tracers concentrations 402 415 tra(ji,jj,ikt,jppo4) = tra(ji,jj,ikt,jppo4) + zpdenit + zolimit 403 416 tra(ji,jj,ikt,jpnh4) = tra(ji,jj,ikt,jpnh4) + zpdenit + zolimit … … 408 421 sdenit(ji,jj) = rdenit * zpdenit * e3t_n(ji,jj,ikt) 409 422 zsedc(ji,jj) = (1. - zrivno3) * zwstpoc * e3t_n(ji,jj,ikt) 423 ! PISCES-QUOTA (p5z) 410 424 IF( ln_p5z ) THEN 411 425 zwstpop = trb(ji,jj,ikt,jpgop) * zws4 + trb(ji,jj,ikt,jppop) * zws3 … … 421 435 ! Nitrogen fixation process : light limitation of diazotrophy 422 436 ! Small source of iron from particulate inorganic iron (photochemistry) 437 ! This is a purely adhoc param. 423 438 !---------------------------------------------------------------------- 424 439 DO jk = 1, jpkm1 425 440 zlight (:,:,jk) = ( 1.- EXP( -etot_ndcy(:,:,jk) / diazolight ) ) * ( 1. - fr_i(:,:) ) 426 zsoufer(:,:,jk) = zlight(:,:,jk) * 2E-11 / ( 2E-11+ biron(:,:,jk) )441 zsoufer(:,:,jk) = zlight(:,:,jk) * 1E-10 / ( 1E-10 + biron(:,:,jk) ) 427 442 ENDDO 428 443 … … 438 453 DO jj = 1, jpj 439 454 DO ji = 1, jpi 440 ! Potential nitrogen fixation dependant on temperature and iron455 ! Potential nitrogen fixation dependant on temperature 441 456 ztemp = tsn(ji,jj,jk,jp_tem) 442 zmudia = MAX( 0.,-0.001096*ztemp**2 + 0.057*ztemp -0.637 ) * 7.625 443 xdianh4 = trb(ji,jj,jk,jpnh4) / ( concnnh4 + trb(ji,jj,jk,jpnh4) ) 444 xdiano3 = trb(ji,jj,jk,jpno3) / ( concnno3 + trb(ji,jj,jk,jpno3) ) * (1. - xdianh4) 445 zlim = ( 1.- xdiano3 - xdianh4 ) 446 ! Nitrogen fixation is almost fully halted when the N 447 ! limitation term (xdiano3+xdianh4) is > 0.9 448 IF( zlim <= 0.1 ) zlim = 0.01 457 zmudia = MAX( 0.,-0.001096*ztemp**2 + 0.057*ztemp -0.637 ) / rno3 458 ! Nitrogen fixation is inhibited when enough NO3 and/or NH4 459 zlim = ( 1.- xnanonh4(ji,jj,jk) - xnanono3(ji,jj,jk) ) 449 460 zfact = zlim * rfact2 450 ztrfer = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 451 ztrpo4(ji,jj,jk) = trb(ji,jj,jk,jppo4) / ( 1E-6 + trb(ji,jj,jk,jppo4) ) 461 ! Nitrogen fixation limitation by PO4 and Fe 462 ztrfer(ji,jj,jk) = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 463 ztrpo4(ji,jj,jk) = trb(ji,jj,jk,jppo4) / ( concnnh4 + trb(ji,jj,jk,jppo4) ) 452 464 ztrdp = ztrpo4(ji,jj,jk) 453 nitrpot(ji,jj,jk) = zmudia * r1_rday * zfact * MIN( ztrfer , ztrdp ) * zlight(ji,jj,jk)465 nitrpot(ji,jj,jk) = zmudia * r1_rday * zfact * MIN( ztrfer(ji,jj,jk), ztrdp ) * zlight(ji,jj,jk) 454 466 END DO 455 467 END DO … … 460 472 DO jj = 1, jpj 461 473 DO ji = 1, jpi 462 ! Potential nitrogen fixation dependant on temperature and iron474 ! Potential nitrogen fixation dependant on temperature 463 475 ztemp = tsn(ji,jj,jk,jp_tem) 464 476 zmudia = MAX( 0.,-0.001096*ztemp**2 + 0.057*ztemp -0.637 ) * 7.625 477 ! Nitrogen fixation is inhibited when enough NO3 and/or NH4 465 478 xdianh4 = trb(ji,jj,jk,jpnh4) / ( concnnh4 + trb(ji,jj,jk,jpnh4) ) 466 479 xdiano3 = trb(ji,jj,jk,jpno3) / ( concnno3 + trb(ji,jj,jk,jpno3) ) * (1. - xdianh4) 467 480 zlim = ( 1.- xdiano3 - xdianh4 ) 468 469 ! Nitrogen fixation is almost fully halted when the N470 ! limitation term (xdiano3+xdianh4) is > 0.9471 IF( zlim <= 0.1 ) zlim = 0.01472 481 zfact = zlim * rfact2 473 ztrfer = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 482 ! Nitrogen fixation limitation by PO4/DOP and Fe 483 ztrfer(ji,jj,jk) = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 474 484 ztrpo4(ji,jj,jk) = trb(ji,jj,jk,jppo4) / ( 1E-6 + trb(ji,jj,jk,jppo4) ) 475 485 ztrdop(ji,jj,jk) = trb(ji,jj,jk,jpdop) / ( 1E-6 + trb(ji,jj,jk,jpdop) ) * (1. - ztrpo4(ji,jj,jk)) 476 486 ztrdp = ztrpo4(ji,jj,jk) + ztrdop(ji,jj,jk) 477 nitrpot(ji,jj,jk) = zmudia * r1_rday * zfact * MIN( ztrfer , ztrdp ) * zlight(ji,jj,jk)487 nitrpot(ji,jj,jk) = zmudia * r1_rday * zfact * MIN( ztrfer(ji,jj,jk), ztrdp ) * zlight(ji,jj,jk) 478 488 END DO 479 489 END DO … … 490 500 zfact = nitrpot(ji,jj,jk) * nitrfix 491 501 ! 1/3 of the diazotrophs growth is supposed to be excreted 492 ! as NH4. 1/3 as DOC and the rest is routed POC andGOC as502 ! as NH4. 1/3 as DOC and the rest is routed to POC/GOC as 493 503 ! a result of mortality by predation. Completely adhoc param 494 504 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zfact / 3.0 … … 499 509 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zfact * 1.0 / 3.0 * 1.0 / 3.0 500 510 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + ( o2ut + o2nit ) * zfact * 2.0 / 3.0 + o2nit * zfact / 3.0 501 ! Fe/c of diazotrophs is assumed to be 30umol Fe/mol C 502 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - 30E-6 * zfact * 1.0 / 3.0 503 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 30E-6 * zfact * 1.0 / 3.0 * 2.0 / 3.0 504 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + 30E-6 * zfact * 1.0 / 3.0 * 1.0 / 3.0 505 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday 511 ! Fe/c of diazotrophs is assumed to be 30umol Fe/mol C at max 512 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0 513 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0 * 2.0 / 3.0 514 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0 * 1.0 / 3.0 515 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + 0.005 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday 516 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + concdnh4 / ( concdnh4 + trb(ji,jj,jk,jppo4) ) & 517 & * 0.001 * trb(ji,jj,jk,jpdoc) * xstep 506 518 END DO 507 519 END DO … … 533 545 tra(ji,jj,jk,jpgop) = tra(ji,jj,jk,jpgop) + 16.0 / 46.0 * zfact * 1.0 / 3.0 * 1.0 /3.0 534 546 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + ( o2ut + o2nit ) * zfact * 2.0 / 3.0 + o2nit * zfact / 3.0 535 ! Fe/c of diazotrophs is assumed to be 30umol Fe/mol C 536 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - 30E-6 * z fact * 1.0 / 3.0537 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 30E-6 * z fact * 1.0 / 3.0 * 2.0 / 3.0538 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + 30E-6 * z fact * 1.0 / 3.0 * 1.0 / 3.0547 ! Fe/c of diazotrophs is assumed to be 30umol Fe/mol C at max 548 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0 549 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0 * 2.0 / 3.0 550 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + 30E-6 * ztrfer(ji,jj,jk) * zfact * 1.0 / 3.0 * 1.0 / 3.0 539 551 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday 540 552 END DO … … 558 570 IF( iom_use("SedSi" ) ) CALL iom_put( "SedSi", zsedsi (:,:) * zfact ) ! Permanent burial of bSi in sediments 559 571 IF( iom_use("SedC" ) ) CALL iom_put( "SedC", zsedc (:,:) * zfact ) ! Permanent burial of OC in sediments 560 IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", sdenit (:,:) * zfact * rno3 ) ! Denitrification in the sediments 572 ! IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", sdenit (:,:) * zfact * rno3 ) ! Denitrification in the sediments 573 IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", zdenit2d(:,:) ) ! Denitrification in the sediments 561 574 ENDIF 562 575 ENDIF -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zsms.F90
r13233 r14276 64 64 REAL(wp) :: ztra 65 65 CHARACTER (len=25) :: charout 66 REAL(wp), DIMENSION(jpi,jpj,jpk,jp_pisces) :: ztrbbio 66 67 !!--------------------------------------------------------------------- 67 68 ! … … 102 103 END DO 103 104 ENDIF 105 106 DO jn = jp_pcs0, jp_pcs1 ! Store the tracer concentrations before entering PISCES 107 ztrbbio(:,:,:,jn) = trb(:,:,:,jn) 108 END DO 104 109 ! 105 110 IF( ll_sbc ) CALL p4z_sbc( kt ) ! external sources of nutrients … … 147 152 tra(:,:,:,jn) = 0._wp 148 153 END DO 149 ! Euler-forward temporal scheme 150 IF( ln_top_euler ) THEN 151 DO jn = jp_pcs0, jp_pcs1 152 trn(:,:,:,jn) = trb(:,:,:,jn) 153 END DO 154 ENDIF 154 ! 155 155 END DO 156 156 ! 157 #endif 158 ! 159 ! If ln_sediment is set to .true. then the sediment module is called 160 IF( ln_sediment ) THEN 161 ! 162 CALL sed_model( kt ) ! Main program of Sediment model 163 ! 164 ENDIF 165 ! 166 ! 167 DO jn = jp_pcs0, jp_pcs1 168 tra(:,:,:,jn) = ( trb(:,:,:,jn) - ztrbbio(:,:,:,jn) ) * rfactr 169 trb(:,:,:,jn) = ztrbbio(:,:,:,jn) 170 ztrbbio(:,:,:,jn) = 0._wp 171 END DO 157 172 ! 158 173 IF( l_trdtrc ) THEN … … 161 176 END DO 162 177 END IF 163 #endif164 !165 ! If ln_sediment is set to .true. then the sediment module is called166 IF( ln_sediment ) THEN167 !168 CALL sed_model( kt ) ! Main program of Sediment model169 ! Eulor forward temporal scheme170 IF( ln_top_euler ) THEN171 DO jn = jp_pcs0, jp_pcs1172 trn(:,:,:,jn) = trb(:,:,:,jn)173 END DO174 ENDIF175 !176 ENDIF177 178 ! 178 179 IF( lrst_trc ) CALL p4z_rst( kt, 'WRITE' ) !* Write PISCES informations in restart file … … 199 200 INTEGER :: ios ! Local integer output status for namelist read 200 201 !! 201 NAMELIST/nampisbio/ nrdttrc, wsbio, xkmort, ferat 3, wsbio2, wsbio2max, wsbio2scale, &202 & 202 NAMELIST/nampisbio/ nrdttrc, wsbio, xkmort, feratz, feratm, wsbio2, wsbio2max, & 203 & wsbio2scale, ldocp, ldocz, lthet, no3rat3, po4rat3 203 204 ! 204 205 NAMELIST/nampisdmp/ ln_pisdmp, nn_pisdmp … … 226 227 WRITE(numout,*) ' half saturation constant for mortality xkmort =', xkmort 227 228 IF( ln_p5z ) THEN 228 WRITE(numout,*) ' N/C in zooplankton no3rat3 =', no3rat3 229 WRITE(numout,*) ' P/C in zooplankton po4rat3 =', po4rat3 230 ENDIF 231 WRITE(numout,*) ' Fe/C in zooplankton ferat3 =', ferat3 229 WRITE(numout,*) ' N/C in zooplankton no3rat3 =', no3rat3 230 WRITE(numout,*) ' P/C in zooplankton po4rat3 =', po4rat3 231 ENDIF 232 WRITE(numout,*) ' Fe/C in microzooplankton feratz =', feratz 233 WRITE(numout,*) ' Fe/C in microzooplankton feratz =', feratm 232 234 WRITE(numout,*) ' Big particles sinking speed wsbio2 =', wsbio2 233 235 WRITE(numout,*) ' Big particles maximum sinking speed wsbio2max =', wsbio2max … … 313 315 ENDIF 314 316 317 ! Read the Fe3 consumption term by phytoplankton 318 IF( iom_varid( numrtr, 'Consfe3', ldstop = .FALSE. ) > 0 ) THEN 319 CALL iom_get( numrtr, jpdom_autoglo, 'Consfe3' , consfe3(:,:,:) ) 320 ELSE 321 consfe3(:,:,:) = 0._wp 322 ENDIF 323 324 315 325 ! Read the cumulative total flux. If not in the restart file, it is set to 0 316 326 IF( iom_varid( numrtr, 'tcflxcum', ldstop = .FALSE. ) > 0 ) THEN ! cumulative total flux of carbon … … 326 336 sized(:,:,:) = 1. 327 337 ENDIF 338 sized(:,:,:) = MAX( 1.0, sized(:,:,:) ) 328 339 IF( iom_varid( numrtr, 'sizen', ldstop = .FALSE. ) > 0 ) THEN 329 340 CALL iom_get( numrtr, jpdom_autoglo, 'sizen' , sizen(:,:,:) ) … … 331 342 sizen(:,:,:) = 1. 332 343 ENDIF 344 sizen(:,:,:) = MAX( 1.0, sizen(:,:,:) ) 333 345 334 346 ! PISCES-QUOTA specific part … … 338 350 IF( iom_varid( numrtr, 'sizep', ldstop = .FALSE. ) > 0 ) THEN 339 351 CALL iom_get( numrtr, jpdom_autoglo, 'sizep' , sizep(:,:,:) ) 352 sizep(:,:,:) = MAX( 1.0, sizep(:,:,:) ) 340 353 ELSE 341 354 sizep(:,:,:) = 1. … … 353 366 CALL iom_rstput( kt, nitrst, numrtw, 'Silicalim', xksi(:,:) ) ! Si 1/2 saturation constant 354 367 CALL iom_rstput( kt, nitrst, numrtw, 'Silicamax', xksimax(:,:) ) ! Si max concentration 368 CALL iom_rstput( kt, nitrst, numrtw, 'Consfe3', consfe3(:,:,:) ) ! Si max concentration 355 369 CALL iom_rstput( kt, nitrst, numrtw, 'tcflxcum', t_oce_co2_flx_cum ) ! Cumulative CO2 flux 356 370 CALL iom_rstput( kt, nitrst, numrtw, 'sizen', sizen(:,:,:) ) ! Size of nanophytoplankton … … 377 391 ! 378 392 REAL(wp) :: alkmean = 2426. ! mean value of alkalinity ( Glodap ; for Goyet 2391. ) 379 REAL(wp) :: po4mean = 2.1 65! mean value of phosphate380 REAL(wp) :: no3mean = 3 0.90 ! mean value of nitrate381 REAL(wp) :: silmean = 9 1.51! mean value of silicate393 REAL(wp) :: po4mean = 2.174 ! mean value of phosphate 394 REAL(wp) :: no3mean = 31.00 ! mean value of nitrate 395 REAL(wp) :: silmean = 90.33 ! mean value of silicate 382 396 ! 383 397 REAL(wp) :: zarea, zalksumn, zpo4sumn, zno3sumn, zsilsumn … … 534 548 zwork(:,:,:) = trn(:,:,:,jpfer) + trn(:,:,:,jpnfe) + trn(:,:,:,jpdfe) & 535 549 & + trn(:,:,:,jpbfe) + trn(:,:,:,jpsfe) & 536 & + ( trn(:,:,:,jpzoo) + trn(:,:,:,jpmes) ) * ferat3550 & + trn(:,:,:,jpzoo) * feratz + trn(:,:,:,jpmes) * feratm 537 551 ! 538 552 ferbudget = glob_sum( 'p4zsms', zwork(:,:,:) * cvol(:,:,:) ) -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zlim.F90
r13233 r14276 88 88 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fvpuptk !: Maximum potential uptake rate of picophyto 89 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 90 92 91 93 ! Coefficient for iron limitation following Flynn and Hipkin (1999) … … 127 129 REAL(wp) :: zconc0p, zconc0pnh4, zconc0ppo4, zconcpfe, zconcnfe, zconcdfe 128 130 REAL(wp) :: fanano, fananop, fananof, fadiat, fadiatp, fadiatf 129 REAL(wp) :: fapico, fapicop, fapicof 131 REAL(wp) :: fapico, fapicop, fapicof, zlimpo4, zlimdop 130 132 REAL(wp) :: zrpho, zrass, zcoef, zfuptk, zratchl 131 133 REAL(wp) :: zfvn, zfvp, zfvf, zsizen, zsizep, zsized, znanochl, zpicochl, zdiatchl 132 REAL(wp) :: zqfemn, zqfemp, zqfemd, zbactno3, zbactnh4 133 REAL(wp) :: z lim1f, zsizetmp134 REAL(wp), DIMENSION(jpi,jpj,jpk) :: xlimnpn, xlimnpp, xlimnpd134 REAL(wp) :: zqfemn, zqfemp, zqfemd, zbactno3, zbactnh4, zbiron 135 REAL(wp) :: znutlimtot, zlimno3, zlimnh4, zlim1f, zsizetmp 136 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zrassn, zrassp, zrassd 135 137 !!--------------------------------------------------------------------- 136 138 ! … … 143 145 DO jj = 1, jpj 144 146 DO ji = 1, jpi 145 !146 ! Tuning of the iron concentration to a minimum level that147 ! is set to the detection limit148 ! --------------------------------------------------------149 zno3 = trb(ji,jj,jk,jpno3) / 40.e-6150 zferlim = MAX( 3e-11 * zno3 * zno3, 5e-12 )151 zferlim = MIN( zferlim, 7e-11 )152 trb(ji,jj,jk,jpfer) = MAX( trb(ji,jj,jk,jpfer), zferlim )153 154 147 ! Computation of the Chl/C ratio of each phytoplankton group 155 148 ! ---------------------------------------------------------- … … 190 183 ! From Talmy et al. (2014) and Maranon et al. (2013) 191 184 ! ------------------------------------------------------- 192 xqnnmin(ji,jj,jk) = qnnmin * sizen(ji,jj,jk)**(-0.3 )185 xqnnmin(ji,jj,jk) = qnnmin * sizen(ji,jj,jk)**(-0.36) 193 186 xqnnmax(ji,jj,jk) = qnnmax 194 xqndmin(ji,jj,jk) = qndmin * sized(ji,jj,jk)**(-0.3 )187 xqndmin(ji,jj,jk) = qndmin * sized(ji,jj,jk)**(-0.36) 195 188 xqndmax(ji,jj,jk) = qndmax 196 xqnpmin(ji,jj,jk) = qnpmin * sizep(ji,jj,jk)**(-0. 48)197 xqnpmax(ji,jj,jk) = qnpmax * sizep(ji,jj,jk)**(-0.21)189 xqnpmin(ji,jj,jk) = qnpmin * sizep(ji,jj,jk)**(-0.36) 190 xqnpmax(ji,jj,jk) = qnpmax 198 191 199 192 ! Computation of the optimal allocation parameters … … 201 194 ! Smith et al. 202 195 ! --------------------------------------------------- 203 196 zbiron = ( 75.0 * ( 1.0 - plig(ji,jj,jk) ) + plig(ji,jj,jk) ) * biron(ji,jj,jk) 204 197 ! Nanophytoplankton 205 198 znutlim = MAX( trb(ji,jj,jk,jpnh4) / zconc0nnh4, & … … 208 201 znutlim = trb(ji,jj,jk,jppo4) / zconc0npo4 209 202 fananop = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 210 znutlim = biron(ji,jj,jk)/ zconcnfe203 znutlim = zbiron / zconcnfe 211 204 fananof = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 212 205 … … 217 210 znutlim = trb(ji,jj,jk,jppo4) / zconc0ppo4 218 211 fapicop = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 219 znutlim = biron(ji,jj,jk)/ zconcpfe212 znutlim = zbiron / zconcpfe 220 213 fapicof = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 221 214 … … 226 219 znutlim = trb(ji,jj,jk,jppo4) / zconc0dpo4 227 220 fadiatp = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 228 znutlim = biron(ji,jj,jk)/ zconcdfe221 znutlim = zbiron / zconcdfe 229 222 fadiatf = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 230 223 … … 232 225 ! heterotrophic bacteria 233 226 ! ------------------------------------------------- 234 zbactnh4 = trb(ji,jj,jk,jpnh4) / ( concbnh4 + trb(ji,jj,jk,jpnh4) ) 235 zbactno3 = trb(ji,jj,jk,jpno3) / ( concbno3 + trb(ji,jj,jk,jpno3) ) * (1. - zbactnh4) 227 zlimnh4 = trb(ji,jj,jk,jpnh4) / ( concbno3 + trb(ji,jj,jk,jpnh4) ) 228 zlimno3 = trb(ji,jj,jk,jpno3) / ( concbno3 + trb(ji,jj,jk,jpno3) ) 229 znutlimtot = ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) / ( concbno3 + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 230 zbactnh4 = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 231 zbactno3 = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 236 232 ! 237 233 zlim1 = zbactno3 + zbactnh4 … … 250 246 ! Limitation of N based nutrients uptake (NO3 and NH4) 251 247 zfalim = (1.-fanano) / fanano 252 xnanonh4(ji,jj,jk) = (1. - fanano) * trb(ji,jj,jk,jpnh4) / ( zfalim * zconc0nnh4 + trb(ji,jj,jk,jpnh4) ) 253 xnanono3(ji,jj,jk) = (1. - fanano) * trb(ji,jj,jk,jpno3) / ( zfalim * zconc0n + trb(ji,jj,jk,jpno3) ) & 254 & * (1. - xnanonh4(ji,jj,jk)) 248 zlimnh4 = trb(ji,jj,jk,jpnh4) / ( zconc0n + trb(ji,jj,jk,jpnh4) ) 249 zlimno3 = trb(ji,jj,jk,jpno3) / ( zconc0n + trb(ji,jj,jk,jpno3) ) 250 znutlimtot = (1. - fanano) * ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) / ( zfalim * zconc0n + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 251 xnanonh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 252 xnanono3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 255 253 ! 256 254 ! Limitation of P based nutrients (PO4 and DOP) 257 255 zfalim = (1.-fananop) / fananop 258 xnanopo4(ji,jj,jk) = (1. - fananop) * trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zfalim * zconc0npo4 ) 259 xnanodop(ji,jj,jk) = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + xkdoc ) & 260 & * ( 1.0 - xnanopo4(ji,jj,jk) ) 261 xnanodop(ji,jj,jk) = 0. 256 zlimpo4 = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc0npo4 ) 257 zlimdop = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + zconc0npo4 ) 258 znutlimtot = (1. - fananop) * ( trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) / ( zfalim * zconc0npo4 + trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) 259 xnanopo4(ji,jj,jk) = znutlimtot * 100.0 * zlimpo4 / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 260 xnanodop(ji,jj,jk) = znutlimtot * zlimdop / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 262 261 ! 263 262 ! Limitation of Fe uptake 264 263 zfalim = (1.-fananof) / fananof 265 xnanofer(ji,jj,jk) = (1. - fananof) * biron(ji,jj,jk) / ( biron(ji,jj,jk)+ zfalim * zconcnfe )264 xnanofer(ji,jj,jk) = (1. - fananof) * zbiron / ( zbiron + zfalim * zconcnfe ) 266 265 ! 267 266 ! The minimum iron quota depends on the size of PSU, respiration … … 270 269 zratiof = trb(ji,jj,jk,jpnfe) * z1_trnphy 271 270 zqfemn = xcoef1 * znanochl + xcoef2 + xcoef3 * xnanono3(ji,jj,jk) 271 xqfuncfecn(ji,jj,jk) = zqfemn + qfnopt 272 272 ! 273 273 zration = trb(ji,jj,jk,jpnph) * z1_trnphy 274 274 zration = MIN(xqnnmax(ji,jj,jk), MAX( xqnnmin(ji,jj,jk), zration )) 275 zzpsiuptk = xqnnmin(ji,jj,jk) * rno3 / zpsiuptk**2 276 fvnuptk(ji,jj,jk) = 1. / zzpsiuptk * xqnnmin(ji,jj,jk) / (zration + rtrn) & 275 fvnuptk(ji,jj,jk) = 2.5 * zpsiuptk * xqnnmin(ji,jj,jk) / (zration + rtrn) & 277 276 & * MAX(0., (1. - zratchl * znanochl / 12. ) ) 278 277 ! … … 282 281 ! The value of the optimal quota in the formulation below 283 282 ! has been found by solving a non linear equation 284 zlim1f = max(0., ( 1. 086- xqnnmin(ji,jj,jk) ) &283 zlim1f = max(0., ( 1.13 - xqnnmin(ji,jj,jk) ) & 285 284 & / (xqnnmax(ji,jj,jk) - xqnnmin(ji,jj,jk) ) ) * xqnnmax(ji,jj,jk) 286 285 zlim3 = MAX( 0.,( zratiof - zqfemn ) / qfnopt ) … … 297 296 ! Limitation of N based nutrients uptake (NO3 and NH4) 298 297 zfalim = (1.-fapico) / fapico 299 xpiconh4(ji,jj,jk) = (1. - fapico) * trb(ji,jj,jk,jpnh4) / ( zfalim * zconc0pnh4 + trb(ji,jj,jk,jpnh4) ) 300 xpicono3(ji,jj,jk) = (1. - fapico) * trb(ji,jj,jk,jpno3) / ( zfalim * zconc0p + trb(ji,jj,jk,jpno3) ) & 301 & * (1. - xpiconh4(ji,jj,jk)) 298 zlimnh4 = trb(ji,jj,jk,jpnh4) / ( zconc0p + trb(ji,jj,jk,jpnh4) ) 299 zlimno3 = trb(ji,jj,jk,jpno3) / ( zconc0p + trb(ji,jj,jk,jpno3) ) 300 znutlimtot = (1. - fapico) * ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) & 301 & / ( zfalim * zconc0p + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 302 xpiconh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 303 xpicono3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 302 304 ! 303 305 ! Limitation of P based nutrients uptake (PO4 and DOP) 304 306 zfalim = (1.-fapicop) / fapicop 305 xpicopo4(ji,jj,jk) = (1. - fapicop) * trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zfalim * zconc0ppo4 ) 306 xpicodop(ji,jj,jk) = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + xkdoc ) & 307 & * ( 1.0 - xpicopo4(ji,jj,jk) ) 308 xpicodop(ji,jj,jk) = 0. 307 zlimpo4 = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc0ppo4 ) 308 zlimdop = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + zconc0ppo4 ) 309 znutlimtot = (1. - fapicop) * ( trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) / ( zfalim * zconc0ppo4 + trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) 310 xpicopo4(ji,jj,jk) = znutlimtot * 100.0 * zlimpo4 / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 311 xpicodop(ji,jj,jk) = znutlimtot * zlimdop / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 309 312 ! 310 313 zfalim = (1.-fapicof) / fapicof 311 xpicofer(ji,jj,jk) = (1. - fapicof) * biron(ji,jj,jk) / ( biron(ji,jj,jk)+ zfalim * zconcpfe )314 xpicofer(ji,jj,jk) = (1. - fapicof) * zbiron / ( zbiron + zfalim * zconcpfe ) 312 315 ! 313 316 ! The minimum iron quota depends on the size of PSU, respiration 314 317 ! and the reduction of nitrate following the parameterization 315 318 ! proposed by Flynn and Hipkin (1999) 316 zratiof 319 zratiof = trb(ji,jj,jk,jppfe) * z1_trnpic 317 320 zqfemp = xcoef1 * zpicochl + xcoef2 + xcoef3 * xpicono3(ji,jj,jk) 321 xqfuncfecp(ji,jj,jk) = zqfemp + qfpopt 318 322 ! 319 323 zration = trb(ji,jj,jk,jpnpi) * z1_trnpic 320 324 zration = MIN(xqnpmax(ji,jj,jk), MAX( xqnpmin(ji,jj,jk), zration )) 321 zzpsiuptk = xqnpmin(ji,jj,jk) * rno3 / zpsiuptk**2 322 fvpuptk(ji,jj,jk) = 1. / zzpsiuptk * xqnpmin(ji,jj,jk) / (zration + rtrn) & 325 fvpuptk(ji,jj,jk) = 2.5 * zpsiuptk * xqnpmin(ji,jj,jk) / (zration + rtrn) & 323 326 & * MAX(0., (1. - zratchl * zpicochl / 12. ) ) 324 327 ! … … 328 331 ! The value of the optimal quota in the formulation below 329 332 ! has been found by solving a non linear equation 330 zlim1f = max(0., (1. 367- xqnpmin(ji,jj,jk) ) &333 zlim1f = max(0., (1.29 - xqnpmin(ji,jj,jk) ) & 331 334 & / (xqnpmax(ji,jj,jk) - xqnpmin(ji,jj,jk) ) ) * xqnpmax(ji,jj,jk) 332 335 zlim3 = MAX( 0.,( zratiof - zqfemp ) / qfpopt ) … … 344 347 ! Limitation of N based nutrients uptake (NO3 and NH4) 345 348 zfalim = (1.-fadiat) / fadiat 346 xdiatnh4(ji,jj,jk) = (1. - fadiat) * trb(ji,jj,jk,jpnh4) / ( zfalim * zconc1dnh4 + trb(ji,jj,jk,jpnh4) ) 347 xdiatno3(ji,jj,jk) = (1. - fadiat) * trb(ji,jj,jk,jpno3) / ( zfalim * zconc1d + trb(ji,jj,jk,jpno3) ) & 348 & * (1. - xdiatnh4(ji,jj,jk)) 349 zlimnh4 = trb(ji,jj,jk,jpnh4) / ( zconc1d + trb(ji,jj,jk,jpnh4) ) 350 zlimno3 = trb(ji,jj,jk,jpno3) / ( zconc1d + trb(ji,jj,jk,jpno3) ) 351 znutlimtot = (1.0 - fadiat) * ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) & 352 & / ( zfalim * zconc1d + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 353 xdiatnh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 354 xdiatno3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 349 355 ! 350 356 ! Limitation of P based nutrients uptake (PO4 and DOP) 351 357 zfalim = (1.-fadiatp) / fadiatp 352 xdiatpo4(ji,jj,jk) = (1. - fadiatp) * trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zfalim * zconc0dpo4 ) 353 xdiatdop(ji,jj,jk) = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + xkdoc ) & 354 & * ( 1.0 - xdiatpo4(ji,jj,jk) ) 355 xdiatdop(ji,jj,jk) = 0. 358 zlimpo4 = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc0dpo4 ) 359 zlimdop = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + zconc0dpo4 ) 360 znutlimtot = (1. - fadiatp) * ( trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) / ( zfalim * zconc0dpo4 + trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) 361 xdiatpo4(ji,jj,jk) = znutlimtot * 100.0 * zlimpo4 / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 362 xdiatdop(ji,jj,jk) = znutlimtot * zlimdop / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 356 363 ! 357 364 ! Limitation of Fe uptake 358 365 zfalim = (1.-fadiatf) / fadiatf 359 xdiatfer(ji,jj,jk) = (1. - fadiatf) * biron(ji,jj,jk) / ( biron(ji,jj,jk)+ zfalim * zconcdfe )366 xdiatfer(ji,jj,jk) = (1. - fadiatf) * zbiron / ( zbiron + zfalim * zconcdfe ) 360 367 ! 361 368 ! The minimum iron quota depends on the size of PSU, respiration … … 364 371 zratiof = trb(ji,jj,jk,jpdfe) * z1_trndia 365 372 zqfemd = xcoef1 * zdiatchl + xcoef2 + xcoef3 * xdiatno3(ji,jj,jk) 373 xqfuncfecd(ji,jj,jk) = zqfemd + qfdopt 366 374 ! 367 375 zration = trb(ji,jj,jk,jpndi) * z1_trndia 368 376 zration = MIN(xqndmax(ji,jj,jk), MAX( xqndmin(ji,jj,jk), zration )) 369 zzpsiuptk = xqndmin(ji,jj,jk) * rno3 / zpsiuptk**2 370 fvduptk(ji,jj,jk) = 1. / zzpsiuptk * xqndmin(ji,jj,jk) / (zration + rtrn) & 377 fvduptk(ji,jj,jk) = 2.5 * zpsiuptk * xqndmin(ji,jj,jk) / (zration + rtrn) & 371 378 & * MAX(0., (1. - zratchl * zdiatchl / 12. ) ) 372 379 ! … … 376 383 ! The value of the optimal quota in the formulation below 377 384 ! has been found by solving a non linear equation 378 zlim1f = max(0., (1.077- xqndmin(ji,jj,jk) ) &385 65 zlim1f = max(0., (1.13 - xqndmin(ji,jj,jk) ) & 379 386 & / (xqndmax(ji,jj,jk) - xqndmin(ji,jj,jk) ) ) & 380 387 & * xqndmax(ji,jj,jk) … … 408 415 ! ------------------------------ 409 416 zfuptk = 0.2 + 0.12 / ( 3.0 * sizen(ji,jj,jk) + rtrn ) 410 zrpho = 1.54 * trb(ji,jj,jk,jpnch) / ( trb(ji,jj,jk,jpnph) * rno3 * 14. + rtrn ) 417 ! Computed from Inomura et al. (2020) using Pavlova Lutheri 418 zrpho = 11.55 * trb(ji,jj,jk,jpnch) / ( trb(ji,jj,jk,jpphy) * 12. + rtrn ) 411 419 zrass = MAX(0.62/4., ( 1. - zrpho - zfuptk ) * xlimnpn(ji,jj,jk) ) 412 xqpnmin(ji,jj,jk) = ( 0.0 + 0.0078 + 0.62/4. * 0.0783 * xqnnmin(ji,jj,jk) ) * 16.413 xqpnm ax(ji,jj,jk) = ( zrpho * 0.0128 + zrass* 0.0783 ) * 16.414 xqpnmax(ji,jj,jk) = xqpnmax(ji,jj,jk) * trb(ji,jj,jk,jpnph) / ( trb(ji,jj,jk,jpphy) + rtrn ) &415 &+ (0.033 + 0.0078 ) * 16.420 zrassn(ji,jj,jk) = zrass 421 xqpnmin(ji,jj,jk) = ( 0.0 + 0.0078 + 0.62/4. * 0.0783 ) * 16. 422 xqpnmax(ji,jj,jk) = ( zrpho * 0.0089 + zrass * 0.0783 ) * 16. 423 xqpnmax(ji,jj,jk) = xqpnmax(ji,jj,jk) + (0.033 + 0.0078 ) * 16. 416 424 xqpnmax(ji,jj,jk) = MIN( qpnmax, xqpnmax(ji,jj,jk) ) 417 418 425 419 426 ! Size estimation of picophytoplankton based on total biomass … … 425 432 ! N/P ratio of picophytoplankton 426 433 ! ------------------------------ 427 zfuptk = 0.2 + 0.12 / ( 0.5 * sizep(ji,jj,jk) + rtrn ) 428 zrpho = 1.54 * trb(ji,jj,jk,jppch) / ( trb(ji,jj,jk,jpnpi) * rno3 * 14. + rtrn ) 434 zfuptk = 0.2 + 0.12 / ( 0.8 * sizep(ji,jj,jk) + rtrn ) 435 ! Computed from Inomura et al. (2020) using a synechococcus 436 zrpho = 13.4 * trb(ji,jj,jk,jppch) / ( trb(ji,jj,jk,jppic) * 12. + rtrn ) 429 437 zrass = MAX(0.4/4., ( 1. - zrpho - zfuptk ) * xlimnpp(ji,jj,jk) ) 430 xqppmin(ji,jj,jk) = ( (0.0 + 0.0078 ) + 0.4/4. * 0.0517 * xqnpmin(ji,jj,jk) ) * 16.431 xqppm ax(ji,jj,jk) = ( zrpho * 0.0128 + zrass* 0.0517 ) * 16.432 xqppmax(ji,jj,jk) = xqppmax(ji,jj,jk) * trb(ji,jj,jk,jpnpi) / ( trb(ji,jj,jk,jppic) + rtrn ) &433 &+ (0.033 + 0.0078 ) * 16438 zrassp(ji,jj,jk) = zrass 439 xqppmin(ji,jj,jk) = ( (0.0 + 0.0078 ) + 0.4/4. * 0.0517 ) * 16. 440 xqppmax(ji,jj,jk) = ( zrpho * 0.0076 + zrass * 0.0517 ) * 16. 441 xqppmax(ji,jj,jk) = xqppmax(ji,jj,jk) + (0.033 + 0.0078 ) * 16 434 442 xqppmax(ji,jj,jk) = MIN( qppmax, xqppmax(ji,jj,jk) ) 435 443 … … 443 451 ! -------------------- 444 452 zfuptk = 0.2 + 0.12 / ( 5.0 * sized(ji,jj,jk) + rtrn ) 445 zrpho = 1.54 * trb(ji,jj,jk,jpdch) / ( trb(ji,jj,jk,jpndi) * rno3 * 14. + rtrn ) 453 ! Computed from Inomura et al. (2020) using a synechococcus 454 zrpho = 8.08 * trb(ji,jj,jk,jpdch) / ( trb(ji,jj,jk,jpndi) * 12. + rtrn ) 446 455 zrass = MAX(0.66/4., ( 1. - zrpho - zfuptk ) * xlimnpd(ji,jj,jk) ) 447 448 xqpdmin(ji,jj,jk) = ( ( 0.0 + 0.0078 ) + 0.66/4. * 0.0783 * xqndmin(ji,jj,jk) ) * 16. 449 xqpdmax(ji,jj,jk) = ( zrpho * 0.0128 + zrass * 0.0783 ) * 16. 450 xqpdmax(ji,jj,jk) = xqpdmax(ji,jj,jk) * trb(ji,jj,jk,jpndi) / ( trb(ji,jj,jk,jpdia) + rtrn ) & 451 & + ( 0.0078 + 0.033 ) * 16. 456 zrassd(ji,jj,jk)=zrass 457 xqpdmin(ji,jj,jk) = ( ( 0.0 + 0.0078 ) + 0.66/4. * 0.0783 ) * 16. 458 xqpdmax(ji,jj,jk) = ( zrpho * 0.0135 + zrass * 0.0783 ) * 16. 459 xqpdmax(ji,jj,jk) = xqpdmax(ji,jj,jk) + ( 0.0078 + 0.033 ) * 16. 452 460 xqpdmax(ji,jj,jk) = MIN(qpdmax, xqpdmax(ji,jj,jk) ) 453 461 … … 467 475 & / ( trb(ji,jj,jk,jpnh4) + concnnh4 ) ) 468 476 zlim2 = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + concnpo4 ) 469 zlim3 = trb(ji,jj,jk,jpfer) / ( trb(ji,jj,jk,jpfer) + 5.E-11 )470 ztem1 = MAX( 0., tsn(ji,jj,jk,jp_tem) )477 zlim3 = trb(ji,jj,jk,jpfer) / ( trb(ji,jj,jk,jpfer) + 6.E-11 ) 478 ztem1 = MAX( 0., tsn(ji,jj,jk,jp_tem) + 1.8 ) 471 479 ztem2 = tsn(ji,jj,jk,jp_tem) - 10. 472 zetot1 = MAX( 0., etot (ji,jj,jk) - 1.) / ( 4. + etot(ji,jj,jk) ) * 20. / ( 20. + etot(ji,jj,jk) )473 474 xfracal(ji,jj,jk) = caco3r * MIN( zlim1, zlim2, zlim3 )&475 & * ztem1 / ( 1.+ ztem1 ) * MAX( 1., trb(ji,jj,jk,jpphy)*1E6 ) &480 zetot1 = MAX( 0., etot_ndcy(ji,jj,jk) - 1.) / ( 4. + etot_ndcy(ji,jj,jk) ) * 30. / ( 30. + etot_ndcy(ji,jj,jk) ) 481 482 xfracal(ji,jj,jk) = caco3r * xlimphy(ji,jj,jk) & 483 & * ztem1 / ( 0.1 + ztem1 ) * MAX( 1., trb(ji,jj,jk,jpphy)*1E6 ) & 476 484 & * ( 1. + EXP(-ztem2 * ztem2 / 25. ) ) & 477 485 & * zetot1 * MIN( 1., 50. / ( hmld(ji,jj) + rtrn ) ) … … 508 516 IF( iom_use( "SIZEP" ) ) CALL iom_put( "SIZEP" , sizep(:,:,:) * tmask(:,:,:) ) ! Iron limitation term 509 517 IF( iom_use( "SIZED" ) ) CALL iom_put( "SIZED" , sized(:,:,:) * tmask(:,:,:) ) ! Iron limitation term 518 IF( iom_use( "RASSN" ) ) CALL iom_put( "RASSN" , zrassn(:,:,:) * tmask(:,:,:) ) ! Iron limitation term 519 IF( iom_use( "RASSP" ) ) CALL iom_put( "RASSP" , zrassp(:,:,:) * tmask(:,:,:) ) ! Iron limitation term 520 IF( iom_use( "RASSD" ) ) CALL iom_put( "RASSD" , zrassd(:,:,:) * tmask(:,:,:) ) ! Iron limitation term 510 521 ENDIF 511 522 ! … … 640 651 & fvnuptk (jpi,jpj,jpk), fvduptk (jpi,jpj,jpk), & 641 652 & xlimphys(jpi,jpj,jpk), xlimdias(jpi,jpj,jpk), & 642 & xlimpics(jpi,jpj,jpk), & 653 & xlimnpp (jpi,jpj,jpk), xlimnpn (jpi,jpj,jpk), & 654 & xlimnpd (jpi,jpj,jpk), & 655 & xlimpics(jpi,jpj,jpk), xqfuncfecp(jpi,jpj,jpk), & 643 656 & fvpuptk (jpi,jpj,jpk), xlimpic (jpi,jpj,jpk), STAT=ierr(1) ) 644 657 ! -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zmeso.F90
r13234 r14276 88 88 REAL(wp) :: zepsherf, zepshert, zepsherq, zepsherv, zrespirc, zrespirn, zrespirp, zbasresb, zbasresi 89 89 REAL(wp) :: zgraztotc, zgraztotn, zgraztotp, zgraztotf, zbasresn, zbasresp, zbasresf 90 REAL(wp) :: zgra tmp, zgradoct, zgradont, zgrareft, zgradopt90 REAL(wp) :: zgradoct, zgradont, zgrareft, zgradopt 91 91 REAL(wp) :: zprcaca, zmortz, zexcess 92 92 REAL(wp) :: zbeta, zrespz, ztortz, zgrasratp, zgrasratn, zgrasratf … … 104 104 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrarep, zgraren, zgrapon, zgrapop 105 105 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgradoc, zgradon, zgradop 106 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zgramigrem, zgramigref, zgramigpoc, zgramigpof , zstrn106 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zgramigrem, zgramigref, zgramigpoc, zgramigpof 107 107 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zgramigrep, zgramigren, zgramigpop, zgramigpon 108 108 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zgramigdoc, zgramigdop, zgramigdon … … 190 190 ! to avoid starvation. 191 191 ! ---------------------------------------------------------- 192 zsigma = 1.0 - zdenom** 2/(0.05**2+zdenom**2)192 zsigma = 1.0 - zdenom**3/(0.1**3+zdenom**3) 193 193 zsigma = xsigma2 + xsigma2del * zsigma 194 194 ! Nanophytoplankton and diatoms are the only preys considered … … 267 267 268 268 zgraztotc = zgrazdc + zgrazz + zgraznc + zgrazm + zgrazpoc + zgrazffep + zgrazffeg 269 zgraztotf = zgrazdf + zgraznf + ( zgrazz + zgrazm ) * ferat3+ zgrazpof &269 zgraztotf = zgrazdf + zgraznf + zgrazz * feratz + zgrazm * feratm + zgrazpof & 270 270 & + zgrazfffp + zgrazfffg 271 271 zgraztotn = zgrazdn + (zgrazm + zgrazz) * no3rat3 + zgraznn + zgrazpon & … … 291 291 ! Fulton, 2012) 292 292 ! ----------------------------------------------------------------------------------- 293 zepshert = MIN( 1., zgrasratn/ no3rat3, zgrasratp/ po4rat3, zgrasratf / ferat 3)293 zepshert = MIN( 1., zgrasratn/ no3rat3, zgrasratp/ po4rat3, zgrasratf / feratm) 294 294 zbeta = MAX(0., (epsher2 - epsher2min) ) 295 295 zepsherf = epsher2min + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta ) … … 312 312 zexcess = ( zgrasratp/ po4rat3 - zepshert ) / ( 1.0 - zepshert + rtrn) 313 313 zbasresp = zbasresi * zexcess * zgrasratp 314 zexcess = ( zgrasratf/ ferat 3- zepshert ) / ( 1.0 - zepshert + rtrn)314 zexcess = ( zgrasratf/ feratm - zepshert ) / ( 1.0 - zepshert + rtrn) 315 315 zbasresf = zbasresi * zexcess * zgrasratf 316 316 … … 320 320 zgradont = (1. - unass2n) * zgraztotn - zepsherv * no3rat3 * zgraztotc - zbasresn 321 321 zgradopt = (1. - unass2p) * zgraztotp - zepsherv * po4rat3 * zgraztotc - zbasresp 322 zgrareft = (1. - unass2c) * zgraztotf - zepsherv * ferat 3* zgraztotc - zbasresf323 ztmp1 = ( 1. - epsher2 - unass2c ) /( 1. - 0.8 *epsher2 ) * ztortz322 zgrareft = (1. - unass2c) * zgraztotf - zepsherv * feratm * zgraztotc - zbasresf 323 ztmp1 = (1. - epsher2 - unass2c) /( 1. - epsher2 ) * ztortz 324 324 zgradoc(ji,jj,jk) = (zgradoct + ztmp1) * ssigma2 325 325 zgradon(ji,jj,jk) = (zgradont + no3rat3 * ztmp1) * ssigma2 326 326 zgradop(ji,jj,jk) = (zgradopt + po4rat3 * ztmp1) * ssigma2 327 zgratmp = 0.2 * epsher2 /( 1. - 0.8 * epsher2 ) * ztortz328 327 329 328 ! Since only semilabile DOM is represented in PISCES … … 331 330 ! as dissolved inorganic compounds (ssigma2) 332 331 ! -------------------------------------------------- 333 zgrarem(ji,jj,jk) = zgratmp +( zgradoct + ztmp1 ) * (1.0 - ssigma2)334 zgraren(ji,jj,jk) = no3rat3 * zgratmp +( zgradont + no3rat3 * ztmp1 ) * (1.0 - ssigma2)335 zgrarep(ji,jj,jk) = po4rat3 * zgratmp +( zgradopt + po4rat3 * ztmp1 ) * (1.0 - ssigma2)336 zgraref(ji,jj,jk) = zgrareft + ferat 3 * ( ztmp1 + zgratmp )332 zgrarem(ji,jj,jk) = ( zgradoct + ztmp1 ) * (1.0 - ssigma2) 333 zgraren(ji,jj,jk) = ( zgradont + no3rat3 * ztmp1 ) * (1.0 - ssigma2) 334 zgrarep(ji,jj,jk) = ( zgradopt + po4rat3 * ztmp1 ) * (1.0 - ssigma2) 335 zgraref(ji,jj,jk) = zgrareft + feratm * ztmp1 337 336 338 337 ! Defecation as a result of non assimilated products 339 338 ! -------------------------------------------------- 340 zgrapoc(ji,jj,jk) = zgraztotc * unass2c + unass2c / ( 1. - 0.8 *epsher2 ) * ztortz341 zgrapon(ji,jj,jk) = zgraztotn * unass2n + no3rat3 * unass2n / ( 1. - 0.8 *epsher2 ) * ztortz342 zgrapop(ji,jj,jk) = zgraztotp * unass2p + po4rat3 * unass2p / ( 1. - 0.8 *epsher2 ) * ztortz343 zgrapof(ji,jj,jk) = zgraztotf * unass2c + ferat 3 * unass2c / ( 1. - 0.8 *epsher2 ) * ztortz339 zgrapoc(ji,jj,jk) = zgraztotc * unass2c + unass2c / ( 1. - epsher2 ) * ztortz 340 zgrapon(ji,jj,jk) = zgraztotn * unass2n + no3rat3 * unass2n / ( 1. - epsher2 ) * ztortz 341 zgrapop(ji,jj,jk) = zgraztotp * unass2p + po4rat3 * unass2p / ( 1. - epsher2 ) * ztortz 342 zgrapof(ji,jj,jk) = zgraztotf * unass2c + feratm * unass2c / ( 1. - epsher2 ) * ztortz 344 343 345 344 ! Addition of respiration to the release of inorganic nutrients … … 348 347 zgraren(ji,jj,jk) = zgraren(ji,jj,jk) + zbasresn + zrespirc * no3rat3 349 348 zgrarep(ji,jj,jk) = zgrarep(ji,jj,jk) + zbasresp + zrespirc * po4rat3 350 zgraref(ji,jj,jk) = zgraref(ji,jj,jk) + zbasresf + zrespirc * ferat 3349 zgraref(ji,jj,jk) = zgraref(ji,jj,jk) + zbasresf + zrespirc * feratm 351 350 352 351 ! Update the arrays TRA which contain the biological sources and … … 404 403 ALLOCATE( zgramigrep(jpi,jpj), zgramigren(jpi,jpj), zgramigpop(jpi,jpj), zgramigpon(jpi,jpj) ) 405 404 ALLOCATE( zgramigdoc(jpi,jpj), zgramigdon(jpi,jpj), zgramigdop(jpi,jpj) ) 406 ALLOCATE( zstrn(jpi,jpj) )407 405 zgramigrem(:,:) = 0.0 ; zgramigref(:,:) = 0.0 408 406 zgramigrep(:,:) = 0.0 ; zgramigren(:,:) = 0.0 … … 411 409 zgramigdoc(:,:) = 0.0 ; zgramigdon(:,:) = 0.0 412 410 zgramigdop(:,:) = 0.0 413 414 ! compute the day length depending on latitude and the day415 zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp )416 zcodel = ASIN( SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp ) )417 418 ! day length in hours419 zstrn(:,:) = 0.420 DO jj = 1, jpj421 DO ji = 1, jpi422 zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad )423 zargu = MAX( -1., MIN( 1., zargu ) )424 zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. )425 zstrn(ji,jj) = MIN(0.75, MAX( 0.25, zstrn(ji,jj) / 24.) )426 END DO427 END DO428 429 411 430 412 ! Compute the amount of materials that will go into vertical migration … … 435 417 DO jj = 1, jpj 436 418 DO ji = 1, jpi 437 zmigreltime = (1. - zstrn(ji,jj))419 zmigreltime = (1. - strn(ji,jj)) 438 420 IF ( gdept_n(ji,jj,jk) <= heup(ji,jj) ) THEN 439 421 zgramigrem(ji,jj) = zgramigrem(ji,jj) + xfracmig * zgrarem(ji,jj,jk) * (1. - zmigreltime ) & … … 441 423 zgramigrep(ji,jj) = zgramigrep(ji,jj) + xfracmig * zgrarep(ji,jj,jk) * (1. - zmigreltime ) & 442 424 & * e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 443 zgramigre p(ji,jj) = zgramigren(ji,jj) + xfracmig * zgrarep(ji,jj,jk) * (1. - zmigreltime ) &425 zgramigren(ji,jj) = zgramigren(ji,jj) + xfracmig * zgraren(ji,jj,jk) * (1. - zmigreltime ) & 444 426 & * e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 445 427 zgramigref(ji,jj) = zgramigref(ji,jj) + xfracmig * zgraref(ji,jj,jk) * (1. - zmigreltime ) & … … 503 485 DEALLOCATE( zgramigrep, zgramigren, zgramigpop, zgramigpon ) 504 486 DEALLOCATE( zgramigdoc, zgramigdon, zgramigdop ) 505 DEALLOCATE( zstrn )506 487 ! End of the ln_dvm_meso part 507 488 ENDIF -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zmicro.F90
r13233 r14276 110 110 ! Proportion of nano and diatoms that are within the size range 111 111 ! accessible to microzooplankton. 112 zproport = min(1.0, exp(-1.1 * MAX(0., ( sized(ji,jj,jk) - 1.8 ))**0.8 )) 113 zproport2 = sizen(ji,jj,jk)**(-0.54) 112 zproport = min(sized(ji,jj,jk),1.8)**(-0.48)*min(1.0, exp(-1.1 * MAX(0., ( sized(ji,jj,jk) - 1.8 ))**0.8 )) 113 zproport2 = sizen(ji,jj,jk)**(-0.48) 114 zproport2 = 1.0 114 115 ! linear mortality of mesozooplankton 115 116 ! A michaelis menten modulation term is used to avoid extinction of … … 162 163 ! to avoid starvation. 163 164 ! ---------------------------------------------------------- 164 zsigma = 1.0 - zdenom** 2/(0.05**2+zdenom**2)165 zsigma = 1.0 - zdenom**3/(0.1**3+zdenom**3) 165 166 zsigma = xsigma + xsigmadel * zsigma 166 zdiffpn = exp( -ABS(log(0. 5* sizep(ji,jj,jk) / (3.0 * sizen(ji,jj,jk) + rtrn )) )**2 / zsigma**2 )167 zdiffpn = exp( -ABS(log(0.7 * sizep(ji,jj,jk) / (3.0 * sizen(ji,jj,jk) + rtrn )) )**2 / zsigma**2 ) 167 168 zdiffdn = exp( -ABS(log(3.0 * sizen(ji,jj,jk) / (5.0 * sized(ji,jj,jk) + rtrn )) )**2 / zsigma**2) 168 zdiffdp = exp( -ABS(log(0. 5* sizep(ji,jj,jk) / (5.0 * sized(ji,jj,jk) + rtrn )) )**2 / zsigma**2)169 zdiffdp = exp( -ABS(log(0.7 * sizep(ji,jj,jk) / (5.0 * sized(ji,jj,jk) + rtrn )) )**2 / zsigma**2) 169 170 ztmp1 = xprefn * zcompaph * ( zcompaph + zdiffdn * zcompadi + zdiffpn * zcompapi ) / ( 1.0 + zdiffdn + zdiffpn ) 170 171 ztmp2 = xprefp * zcompapi * ( zcompapi + zdiffpn * zcompaph + zdiffdp * zcompadi ) / ( 1.0 + zdiffpn + zdiffdp ) … … 211 212 zgraztotn = zgraznn + zgrazpn + zgrazpon + zgrazdn + zgrazz * no3rat3 212 213 zgraztotp = zgraznp + zgrazpp + zgrazpop + zgrazdp + zgrazz * po4rat3 213 zgraztotf = zgraznf + zgrazpf + zgrazpof + zgrazdf + zgrazz * ferat 3214 zgraztotf = zgraznf + zgrazpf + zgrazpof + zgrazdf + zgrazz * feratz 214 215 ! 215 216 ! Grazing by microzooplankton … … 230 231 ! Fulton, 2012) 231 232 ! ----------------------------------------------------------------------------------- 232 zepshert = MIN( 1., zgrasratn/ no3rat3, zgrasratp/ po4rat3, zgrasratf / ferat 3)233 zepshert = MIN( 1., zgrasratn/ no3rat3, zgrasratp/ po4rat3, zgrasratf / feratz) 233 234 zbeta = MAX( 0., (epsher - epshermin) ) 234 235 ! Food density deprivation of GGE … … 255 256 zexcess = ( zgrasratp/ po4rat3 - zepshert ) / ( 1.0 - zepshert + rtrn) 256 257 zbasresp = zbasresi * zexcess * zgrasratp 257 zexcess = ( zgrasratf/ ferat 3- zepshert ) / ( 1.0 - zepshert + rtrn)258 zexcess = ( zgrasratf/ feratz - zepshert ) / ( 1.0 - zepshert + rtrn) 258 259 zbasresf = zbasresi * zexcess * zgrasratf 259 260 … … 263 264 zgradont = (1. - unassn) * zgraztotn - zepsherv * no3rat3 * zgraztotc - zbasresn 264 265 zgradopt = (1. - unassp) * zgraztotp - zepsherv * po4rat3 * zgraztotc - zbasresp 265 zgrareft = (1. - unassc) * zgraztotf - zepsherv * ferat 3* zgraztotc - zbasresf266 zgrareft = (1. - unassc) * zgraztotf - zepsherv * feratz * zgraztotc - zbasresf 266 267 267 268 ! Since only semilabile DOM is represented in PISCES … … 289 290 zgraren = zgraren + zbasresn + zrespirc * no3rat3 290 291 zgrarep = zgrarep + zbasresp + zrespirc * po4rat3 291 zgraref = zgraref + zbasresf + zrespirc * ferat 3292 zgraref = zgraref + zbasresf + zrespirc * feratz 292 293 293 294 ! Update of the TRA arrays … … 330 331 tra(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) + no3rat3 * ztortz + zgrapon - zgrazpon 331 332 tra(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) + po4rat3 * ztortz + zgrapop - zgrazpop 332 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat 3* ztortz + zgrapof - zgrazpof333 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + feratz * ztortz + zgrapof - zgrazpof 333 334 ! 334 335 ! Calcite production -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zmort.F90
r13233 r14276 28 28 REAL(wp), PUBLIC :: wchlp !: Quadratic mortality rate of picophytoplankton 29 29 REAL(wp), PUBLIC :: wchld !: Quadratic mortality rate of diatoms 30 REAL(wp), PUBLIC :: wchldm !: Maximum quadratic mortality rate of diatoms31 30 REAL(wp), PUBLIC :: mpratn !: Linear mortality rate of nanophytoplankton 32 31 REAL(wp), PUBLIC :: mpratp !: Linear mortality rate of picophytoplankton … … 69 68 !!--------------------------------------------------------------------- 70 69 INTEGER :: ji, jj, jk 71 REAL(wp) :: zcompaph 70 REAL(wp) :: zcompaph, zlim1, zlim2 72 71 REAL(wp) :: zfactfe, zfactch, zfactn, zfactp, zprcaca 73 72 REAL(wp) :: ztortp , zrespp , zmortp … … 86 85 ! blooms (Doney et al. 1996) 87 86 ! ----------------------------------------------------- 88 zrespp = wchln * 1.e6 * xstep * xdiss(ji,jj,jk) * zcompaph * trb(ji,jj,jk,jpphy) 87 zlim2 = xlimphy(ji,jj,jk) * xlimphy(ji,jj,jk) 88 zlim1 = 0.25 * ( 1. - zlim2 ) / ( 0.25 + zlim2 ) * trb(ji,jj,jk,jpphy) 89 zrespp = wchln * 1.e6 * xstep * zlim1 * xdiss(ji,jj,jk) * zcompaph 89 90 90 91 ! Phytoplankton linear mortality … … 142 143 !!--------------------------------------------------------------------- 143 144 INTEGER :: ji, jj, jk 144 REAL(wp) :: zcompaph 145 REAL(wp) :: zcompaph, zlim1, zlim2 145 146 REAL(wp) :: zfactfe, zfactch, zfactn, zfactp 146 147 REAL(wp) :: ztortp , zrespp , zmortp … … 158 159 ! blooms (Doney et al. 1996) 159 160 ! ----------------------------------------------------- 160 zrespp = wchlp * 1.e6 * xstep * xdiss(ji,jj,jk) * zcompaph * trb(ji,jj,jk,jppic) 161 zlim2 = xlimpic(ji,jj,jk) * xlimpic(ji,jj,jk) 162 zlim1 = 0.25 * ( 1. - zlim2 ) / ( 0.25 + zlim2 ) * trb(ji,jj,jk,jppic) 163 zrespp = wchlp * 1.e6 * xstep * zlim1 * xdiss(ji,jj,jk) * zcompaph 161 164 162 165 ! Phytoplankton linear mortality … … 229 232 zlim2 = xlimdia(ji,jj,jk) * xlimdia(ji,jj,jk) 230 233 zlim1 = 0.25 * ( 1. - zlim2 ) / ( 0.25 + zlim2 ) 231 zrespp2 = 1.e6 * xstep * ( wchld + wchldm * zlim1 )* xdiss(ji,jj,jk) * zcompadi * trb(ji,jj,jk,jpdia)234 zrespp2 = 1.e6 * xstep * wchld * zlim1 * xdiss(ji,jj,jk) * zcompadi * trb(ji,jj,jk,jpdia) 232 235 233 236 ! Phytoplankton linear mortality … … 291 294 INTEGER :: ios ! Local integer output status for namelist read 292 295 !! 293 NAMELIST/namp5zmort/ wchln, wchlp, wchld, wchldm,mpratn, mpratp, mpratd296 NAMELIST/namp5zmort/ wchln, wchlp, wchld, mpratn, mpratp, mpratd 294 297 !!---------------------------------------------------------------------- 295 298 … … 310 313 WRITE(numout,*) ' quadratic mortality of picophyto. wchlp =', wchlp 311 314 WRITE(numout,*) ' quadratic mortality of diatoms wchld =', wchld 312 WRITE(numout,*) ' Additional quadratic mortality of diatoms wchldm =', wchldm313 315 WRITE(numout,*) ' nanophyto. mortality rate mpratn =', mpratn 314 316 WRITE(numout,*) ' picophyto. mortality rate mpratp =', mpratp -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zprod.F90
r13233 r14276 72 72 INTEGER :: ji, jj, jk 73 73 REAL(wp) :: zsilfac, znanotot, zpicotot, zdiattot, zconctemp, zconctemp2 74 REAL(wp) :: zration, zratiop, zratiof, zmax, z silim, ztn, zadap75 REAL(wp) :: zpronmax, zpropmax, zprofmax, zrat 74 REAL(wp) :: zration, zratiop, zratiof, zmax, ztn, zadap 75 REAL(wp) :: zpronmax, zpropmax, zprofmax, zratio 76 76 REAL(wp) :: zlim, zsilfac2, zsiborn, zprod, zprontot, zproptot, zprodtot 77 77 REAL(wp) :: zprnutmax, zdocprod, zprochln, zprochld, zprochlp 78 78 REAL(wp) :: zpislopen, zpislopep, zpisloped 79 79 REAL(wp) :: zrum, zcodel, zargu, zval, zfeup 80 REAL(wp) :: zfact, zrfact2, zmaxsi, zratiosi, zsizetmp, zlimfac 80 REAL(wp) :: zqfpmax, zqfnmax, zqfdmax 81 REAL(wp) :: zfact, zrfact2, zmaxsi, zratiosi, zsizetmp, zlimfac, zsilim 81 82 CHARACTER (len=25) :: charout 82 REAL(wp), DIMENSION(jpi,jpj ) :: zmixnano, zmixpico, zmixdiat , zstrn83 REAL(wp), DIMENSION(jpi,jpj ) :: zmixnano, zmixpico, zmixdiat 83 84 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpislopeadn, zpislopeadp, zpislopeadd 84 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprnut, zpr nutp, zprmaxp, zprmaxn, zprmaxd85 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprnut, zprmaxp, zprmaxn, zprmaxd 85 86 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprbio, zprpic, zprdia, zysopt 86 87 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprchln, zprchlp, zprchld … … 111 112 zysopt (:,:,:) = 0._wp 112 113 zrespn (:,:,:) = 0._wp ; zrespp (:,:,:) = 0._wp ; zrespd (:,:,:) = 0._wp 114 zmxl_fac(:,:,:) = 0._wp ; zmxl_chl(:,:,:) = 0._wp 115 consfe3 (:,:,:) = 0._wp 113 116 114 117 ! Computation of the optimal production rates and nutrient uptake 115 118 ! rates. Based on a Q10 description of the thermal dependency. 116 zprnut (:,:,:) = 0.6_wp * (1.0 + zpsino3 * qnnmax ) * r1_rday * tgfunc(:,:,:) 117 zprnutp(:,:,:) = 0.6_wp * (1. + zpsino3 * qnpmax ) * r1_rday * tgfunc3(:,:,:) 118 zprmaxn(:,:,:) = ( 0.6_wp * (1. + zpsino3 * qnnmax ) ) * r1_rday * tgfunc(:,:,:) 119 zprmaxd(:,:,:) = ( 0.6_wp * (1. + zpsino3 * qndmax ) ) * r1_rday * tgfunc(:,:,:) 120 zprmaxp(:,:,:) = ( 0.4_wp * (1. + zpsino3 * qnpmax ) ) * r1_rday * tgfunc3(:,:,:) 121 122 ! compute the day length depending on latitude and the day 123 ! Astronomical parameterization taken from HAMOCC3 124 zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp ) 125 zcodel = ASIN( SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp ) ) 126 127 ! day length in hours 128 zstrn(:,:) = 0. 129 DO jj = 1, jpj 130 DO ji = 1, jpi 131 zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 132 zargu = MAX( -1., MIN( 1., zargu ) ) 133 zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. ) 134 END DO 135 END DO 119 zprnut (:,:,:) = 0.8_wp * r1_rday * tgfunc(:,:,:) 120 zprmaxn(:,:,:) = 0.8_wp * (1. + zpsino3 * qnnmax ) * r1_rday * tgfunc(:,:,:) 121 zprmaxd(:,:,:) = 0.8_wp * (1. + zpsino3 * qndmax ) * r1_rday * tgfunc(:,:,:) 122 zprmaxp(:,:,:) = 0.6_wp * (1. + zpsino3 * qnpmax ) * r1_rday * tgfunc(:,:,:) 136 123 137 124 ! Impact of the day duration and light intermittency on phytoplankton growth … … 146 133 DO ji = 1, jpi 147 134 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 148 zval = MAX( 1., zstrn(ji,jj) )135 zval = MAX( 1., strn(ji,jj) ) 149 136 IF( gdepw_n(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 150 137 zval = zval * MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) … … 161 148 zprpic(:,:,:) = zprmaxp(:,:,:) * zmxl_fac(:,:,:) 162 149 163 164 150 ! Maximum light intensity 165 zdaylen(:,:) = MAX(1., zstrn(:,:)) / 24.151 zdaylen(:,:) = MAX(1., strn(:,:)) / 24. 166 152 167 153 ! Computation of the P-I slope for nanos, picos and diatoms … … 192 178 ! Actual light levels are used here 193 179 ! --------------------------------------------- 194 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) / zmxl_ chl(ji,jj,jk) ) )195 zprpic(ji,jj,jk) = zprpic(ji,jj,jk) * ( 1.- EXP( -zpislopep * epico(ji,jj,jk) / zmxl_ chl(ji,jj,jk)) )196 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) / zmxl_ chl(ji,jj,jk)) )180 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) / zmxl_fac(ji,jj,jk) ) ) 181 zprpic(ji,jj,jk) = zprpic(ji,jj,jk) * ( 1.- EXP( -zpislopep * epico(ji,jj,jk) / zmxl_fac(ji,jj,jk) ) ) 182 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) / zmxl_fac(ji,jj,jk) ) ) 197 183 198 184 ! Computation of production function for Chlorophyll … … 227 213 ! ----------------------------------------------------------------------- 228 214 zlim = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi1 ) 229 zsilim = MIN( zprdia(ji,jj,jk) / ( zprmaxd(ji,jj,jk) + rtrn ), xlimsi(ji,jj,jk))215 zsilim = xlimdia(ji,jj,jk) * zprdia(ji,jj,jk) / ( zprmaxd(ji,jj,jk) + rtrn ) 230 216 zsiborn = trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) 231 217 IF (gphit(ji,jj) < -30 ) THEN … … 240 226 zysopt(ji,jj,jk) = zlim * zsilfac2 * grosip * 1.0 * zmaxsi 241 227 ELSE 242 zysopt(ji,jj,jk) = zlim * zsilfac2 * grosip * 1.0 * zsilim**0.7 5* zmaxsi228 zysopt(ji,jj,jk) = zlim * zsilfac2 * grosip * 1.0 * zsilim**0.7 * zmaxsi 243 229 ENDIF 244 230 ENDIF … … 257 243 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 258 244 zprnut(ji,jj,jk) = zprnut(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 259 zprnutp(ji,jj,jk) = zprnutp(ji,jj,jk) * ( 1. - fr_i(ji,jj) )260 245 END DO 261 246 END DO … … 284 269 zlimfac = xlimphys(ji,jj,jk) * zprchln(ji,jj,jk) / ( zprmaxn(ji,jj,jk) + rtrn ) 285 270 zsizetmp = 1.0 + 1.3 * ( xsizern - 1.0 ) * zlimfac**3/(0.3 + zlimfac**3) 286 sizena(ji,jj,jk) = min(xsizern, max( sizena(ji,jj,jk), zsizetmp ) )271 sizena(ji,jj,jk) = MIN(xsizern, MAX( sizena(ji,jj,jk), zsizetmp ) ) 287 272 ! Maximum potential uptake rate 288 273 zration = trb(ji,jj,jk,jpnph) / ( trb(ji,jj,jk,jpphy) + rtrn ) … … 291 276 zprnutmax = zprnut(ji,jj,jk) * fvnuptk(ji,jj,jk) / rno3 * trb(ji,jj,jk,jpphy) * rfact2 292 277 ! Uptake of nitrogen 293 zrat = 1.0 - MIN( 1., zration / (xqnnmax(ji,jj,jk) + rtrn) )294 zmax = MAX(0., MIN(1., zrat **2 / (0.05**2 + zrat**2) ) )278 zratio = 1.0 - MIN( 1., zration / (xqnnmax(ji,jj,jk) + rtrn) ) 279 zmax = MAX(0., MIN(1., zratio**2 / (0.05**2 + zratio**2) ) ) 295 280 zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqpnmin(ji,jj,jk) ) & 296 281 & / ( xqpnmax(ji,jj,jk) - xqpnmin(ji,jj,jk) + rtrn ), xlimnfe(ji,jj,jk) ) ) 282 zpronmax = zpronmax * xqnnmin(ji,jj,jk) / qnnmin 297 283 zpronewn(ji,jj,jk) = zpronmax * xnanono3(ji,jj,jk) 298 284 zproregn(ji,jj,jk) = zpronmax * xnanonh4(ji,jj,jk) 299 285 ! Uptake of phosphorus and DOP 300 zrat = 1.0 - MIN( 1., zratiop / (xqpnmax(ji,jj,jk) + rtrn) )301 zmax = MAX(0., MIN(1., zrat **2 / (0.05**2 + zrat**2) ) )302 zpropmax = zprnutmax * zmax * xlimnfe(ji,jj,jk) * 16. / 10.286 zratio = 1.0 - MIN( 1., zratiop / (xqpnmax(ji,jj,jk) + rtrn) ) 287 zmax = MAX(0., MIN(1., zratio**2 / (0.05**2 + zratio**2) ) ) 288 zpropmax = zprnutmax * zmax * xlimnfe(ji,jj,jk) 303 289 zpropo4n(ji,jj,jk) = zpropmax * xnanopo4(ji,jj,jk) 304 290 zprodopn(ji,jj,jk) = zpropmax * xnanodop(ji,jj,jk) 305 291 ! Uptake of iron 306 zrat = 1.0 - MIN( 1., zratiof / qfnmax ) 307 zmax = MAX(0., MIN(1., zrat**2/ (0.05**2 + zrat**2) ) ) 308 zprofmax = zprnutmax * qfnmax * zmax 292 zqfnmax = xqfuncfecn(ji,jj,jk) + ( qfnmax - xqfuncfecn(ji,jj,jk) ) * xlimnpn(ji,jj,jk) 293 zratio = 1.0 - MIN( 1., zratiof / zqfnmax ) 294 zmax = MAX(0., MIN(1., zratio**2/ (0.05**2 + zratio**2) ) ) 295 zprofmax = zprnutmax * zqfnmax * zmax 309 296 zprofen(ji,jj,jk) = zprofmax * xnanofer(ji,jj,jk) & 310 297 & * (1. + 0.8 * xnanono3(ji,jj,jk) / ( rtrn & … … 341 328 zratiop = trb(ji,jj,jk,jpppi) / ( trb(ji,jj,jk,jppic) + rtrn ) 342 329 zratiof = trb(ji,jj,jk,jppfe) / ( trb(ji,jj,jk,jppic) + rtrn ) 343 zprnutmax = zprnut p(ji,jj,jk) * fvpuptk(ji,jj,jk) / rno3 * trb(ji,jj,jk,jppic) * rfact2330 zprnutmax = zprnut(ji,jj,jk) * fvpuptk(ji,jj,jk) / rno3 * trb(ji,jj,jk,jppic) * rfact2 344 331 ! Uptake of nitrogen 345 zrat = 1.0 - MIN( 1., zration / (xqnpmax(ji,jj,jk) + rtrn) )346 zmax = MAX(0., MIN(1., zrat **2/ (0.05**2 + zrat**2) ) )332 zratio = 1.0 - MIN( 1., zration / (xqnpmax(ji,jj,jk) + rtrn) ) 333 zmax = MAX(0., MIN(1., zratio**2/ (0.05**2 + zratio**2) ) ) 347 334 zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqppmin(ji,jj,jk) ) & 348 335 & / ( xqppmax(ji,jj,jk) - xqppmin(ji,jj,jk) + rtrn ), xlimpfe(ji,jj,jk) ) ) 336 zpronmax = zpronmax * xqnpmin(ji,jj,jk) / qnnmin 349 337 zpronewp(ji,jj,jk) = zpronmax * xpicono3(ji,jj,jk) 350 338 zproregp(ji,jj,jk) = zpronmax * xpiconh4(ji,jj,jk) 351 339 ! Uptake of phosphorus 352 zrat = 1.0 - MIN( 1., zratiop / (xqppmax(ji,jj,jk) + rtrn) )353 zmax = MAX(0., MIN(1., zrat **2 / (0.05**2 + zrat**2) ) )354 zpropmax = zprnutmax * zmax * xlimpfe(ji,jj,jk) * 16./10.340 zratio = 1.0 - MIN( 1., zratiop / (xqppmax(ji,jj,jk) + rtrn) ) 341 zmax = MAX(0., MIN(1., zratio**2 / (0.05**2 + zratio**2) ) ) 342 zpropmax = zprnutmax * zmax * xlimpfe(ji,jj,jk) 355 343 zpropo4p(ji,jj,jk) = zpropmax * xpicopo4(ji,jj,jk) 356 344 zprodopp(ji,jj,jk) = zpropmax * xpicodop(ji,jj,jk) 357 345 ! Uptake of iron 358 zrat = 1.0 - MIN( 1., zratiof / qfpmax ) 359 zmax = MAX(0., MIN(1., zrat**2 / (0.05**2 + zrat**2) ) ) 360 zprofmax = zprnutmax * qfpmax * zmax 346 zqfpmax = xqfuncfecp(ji,jj,jk) + ( qfpmax - xqfuncfecp(ji,jj,jk) ) * xlimnpp(ji,jj,jk) 347 zratio = 1.0 - MIN( 1., zratiof / zqfpmax ) 348 zmax = MAX(0., MIN(1., zratio**2 / (0.05**2 + zratio**2) ) ) 349 zprofmax = zprnutmax * zqfpmax * zmax 361 350 zprofep(ji,jj,jk) = zprofmax * xpicofer(ji,jj,jk) & 362 351 & * (1. + 0.8 * xpicono3(ji,jj,jk) / ( rtrn & … … 395 384 zprnutmax = zprnut(ji,jj,jk) * fvduptk(ji,jj,jk) / rno3 * trb(ji,jj,jk,jpdia) * rfact2 396 385 ! Uptake of nitrogen 397 zrat = 1.0 - MIN( 1., zration / (xqndmax(ji,jj,jk) + rtrn) )398 zmax = MAX(0., MIN(1., zrat **2 / (0.05**2 + zrat**2) ) )386 zratio = 1.0 - MIN( 1., zration / (xqndmax(ji,jj,jk) + rtrn) ) 387 zmax = MAX(0., MIN(1., zratio**2 / (0.05**2 + zratio**2) ) ) 399 388 zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqpdmin(ji,jj,jk) ) & 400 389 & / ( xqpdmax(ji,jj,jk) - xqpdmin(ji,jj,jk) + rtrn ), xlimdfe(ji,jj,jk) ) ) 390 zpronmax = zpronmax * xqndmin(ji,jj,jk) / qnnmin 401 391 zpronewd(ji,jj,jk) = zpronmax * xdiatno3(ji,jj,jk) 402 392 zproregd(ji,jj,jk) = zpronmax * xdiatnh4(ji,jj,jk) 403 393 ! Uptake of phosphorus 404 zrat = 1.0 - MIN( 1., zratiop / (xqpdmax(ji,jj,jk) + rtrn) )405 zmax = MAX(0., MIN(1., zrat **2/ (0.05**2 + zrat**2) ) )406 zpropmax = zprnutmax * zmax * xlimdfe(ji,jj,jk) * 16./10.394 zratio = 1.0 - MIN( 1., zratiop / (xqpdmax(ji,jj,jk) + rtrn) ) 395 zmax = MAX(0., MIN(1., zratio**2/ (0.05**2 + zratio**2) ) ) 396 zpropmax = zprnutmax * zmax * xlimdfe(ji,jj,jk) 407 397 zpropo4d(ji,jj,jk) = zpropmax * xdiatpo4(ji,jj,jk) 408 398 zprodopd(ji,jj,jk) = zpropmax * xdiatdop(ji,jj,jk) 409 399 ! Uptake of iron 410 zrat = 1.0 - MIN( 1., zratiof / qfdmax ) 411 zmax = MAX(0., MIN(1., zrat**2 / (0.05**2 + zrat**2) ) ) 412 zprofmax = zprnutmax * qfdmax * zmax 400 zqfdmax = xqfuncfecd(ji,jj,jk) + ( qfdmax - xqfuncfecd(ji,jj,jk) ) * xlimnpd(ji,jj,jk) 401 zratio = 1.0 - MIN( 1., zratiof / zqfdmax ) 402 zmax = MAX(0., MIN(1., zratio**2 / (0.05**2 + zratio**2) ) ) 403 zprofmax = zprnutmax * zqfdmax * zmax 413 404 zprofed(ji,jj,jk) = zprofmax * xdiatfer(ji,jj,jk) & 414 405 & * (1. + 0.8 * xdiatno3(ji,jj,jk) / ( rtrn & … … 503 494 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) + texcretp * zprofep(ji,jj,jk) 504 495 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zfeup 496 consfe3(ji,jj,jk) = zfeup * 75.0 / ( rtrn + ( plig(ji,jj,jk) + 75.0 * (1.0 - plig(ji,jj,jk) ) ) & 497 & * trb(ji,jj,jk,jpfer) ) / rfact2 505 498 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - zprmaxd(ji,jj,jk) * zysopt(ji,jj,jk) * rfact2 * trb(ji,jj,jk,jpdia) 506 499 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk) - zprorcap(ji,jj,jk) & … … 529 522 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) + texcretp * zprofep(ji,jj,jk) 530 523 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zdocprod * ldocp & 531 & - zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) + 2.E3* (1.0 - plig(ji,jj,jk) ) ) * lthet524 & - zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) + 75.0 * (1.0 - plig(ji,jj,jk) ) ) * lthet 532 525 zpligprod1(ji,jj,jk) = zdocprod * ldocp 533 526 zpligprod2(ji,jj,jk) = zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) & 534 & + 2.E3* (1.0 - plig(ji,jj,jk) ) ) * lthet527 & + 75.0 * (1.0 - plig(ji,jj,jk) ) ) * lthet 535 528 END DO 536 529 END DO -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/SED/par_sed.F90
r10222 r14276 61 61 INTEGER, PARAMETER :: & 62 62 jptrased = jpsol + jpwat , & 63 jpdia3dsed = 2, &64 jpdia2dsed = 1263 jpdia3dsed = 3 , & 64 jpdia2dsed = 20 65 65 66 66 END MODULE par_sed -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/SED/sedarr.F90
r10222 r14276 50 50 jid = MOD( tab_ind(jn) - 1, jpi ) + 1 51 51 jjd = ( tab_ind(jn) - 1 ) / jpi + 1 52 ! IF ( mig(jid) == 112 .and. mjg(jjd) == 25) write(0,*) 'plante ',jn,ndim1d 52 53 tab1d(jn) = tab2d(jid, jjd) 53 54 END DO -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/SED/seddta.F90
r10362 r14276 157 157 ! zf1 = ( 0.02 * (reac_poc - reac_poc * 0.) + zkapp - reac_poc ) / ( reac_poc / 100. - reac_poc ) 158 158 ! zf1 = MIN(0.98, MAX(0., zf1 ) ) 159 zf1 = 0. 48160 zf 0 = 1.0 - 0.02 - zf1161 zf 2 = 0.02159 zf1 = 0.7 160 zf2 = 0.04 161 zf0 = 1.0 - zf2 - zf1 162 162 rainrm_dta(ji,jspoc) = ( zdtap(ji) + zdtag(ji) ) * 1e-4 * zf0 163 163 rainrm_dta(ji,jspos) = ( zdtap(ji) + zdtag(ji) ) * 1e-4 * zf1 … … 177 177 rainrm_dta(1:jpoce,jsclay) = rainrm_dta(1:jpoce,jsclay) * conv2 / mol_wgt(jsclay) & 178 178 & + wacc(1:jpoce) * por1(2) * denssol / mol_wgt(jsclay) / ( rsecday * 365.0 ) 179 rainrm_dta(1:jpoce,jsfeo) = rainrm_dta(1:jpoce,jsclay) * mol_wgt(jsclay) / mol_wgt(jsfeo) * 0.035 * 0.5 179 180 rainrm_dta(1:jpoce,jsclay) = rainrm_dta(1:jpoce,jsclay) * 0.965 180 rainrm_dta(1:jpoce,jsfeo) = rainrm_dta(1:jpoce,jsclay) * mol_wgt(jsclay) / mol_wgt(jsfeo) * 0.035 / 0.965181 181 ! rainrm_dta(1:jpoce,jsclay) = 1.0E-4 * conv2 / mol_wgt(jsclay) 182 182 … … 214 214 215 215 IF( lk_iomput ) THEN 216 IF( iom_use("sflxclay" ) ) CALL iom_put( "sflxclay", dust(:,:) * conv2 * 1E4 )217 IF( iom_use("sflxcal" ) ) CALL iom_put( "sflxcal", trc_data(:,:,1 3))218 IF( iom_use("sflxbsi" ) ) CALL iom_put( "sflxbsi", trc_data(:,:,1 0))219 IF( iom_use("sflxpoc" ) ) CALL iom_put( "sflxpoc", trc_data(:,:,11) + trc_data(:,:,12))216 IF( iom_use("sflxclay" ) ) CALL iom_put( "sflxclay", dust(:,:) * 1E3 / 1.E4 ) 217 IF( iom_use("sflxcal" ) ) CALL iom_put( "sflxcal", trc_data(:,:,14) / 1.E4 ) 218 IF( iom_use("sflxbsi" ) ) CALL iom_put( "sflxbsi", trc_data(:,:,11) / 1.E4 ) 219 IF( iom_use("sflxpoc" ) ) CALL iom_put( "sflxpoc", ( trc_data(:,:,12) + trc_data(:,:,13) ) / 1.E4 ) 220 220 ENDIF 221 221 -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/SED/sedini.F90
r11536 r14276 371 371 denssol = 2.6 372 372 373 ! Initialization of diffusion coefficient as function of porosity [cm**2/s]374 !--------------------------------------------------------------------375 ! DO jn = 1, jpsol376 ! DO jk = 1, jpksed377 ! DO ji = 1, jpoce378 ! diff(ji,jk,jn) = dcoef / ( 1.0 - 2.0 * log(por(jk)) )379 ! END DO380 ! END DO381 ! END DO382 383 373 ! Accumulation rate from Burwicz et al. (2011). This is used to 384 374 ! compute the flux of clays and minerals … … 387 377 ztmp1 = 0.117 / ( 1.0 + ( zkbot(ji) / 200.)**3 ) 388 378 ztmp2 = 0.006 / ( 1.0 + ( zkbot(ji) / 4000.)**10 ) 389 wacc(ji) = ztmp1 + ztmp2 379 wacc(ji) = (ztmp1 + ztmp2)/10.0 380 wacc(ji) = ztmp2 / 10.0 390 381 END DO 391 382 -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/SED/sedwri.F90
r10222 r14276 53 53 IF (lwp) WRITE(numsed,*) ' ' 54 54 55 ALLOCATE( zdta(jpoce,jpksed) ) ; ALLOCATE( zflx(jpoce,jp watp1) )55 ALLOCATE( zdta(jpoce,jpksed) ) ; ALLOCATE( zflx(jpoce,jptrased+1) ) 56 56 57 57 ! Initialize variables … … 87 87 CALL unpack_arr( jpoce, flxsedi3d(1:jpi,1:jpj,1:jpksed,2) , iarroce(1:jpoce), & 88 88 & co3por(1:jpoce,1:jpksed) ) 89 90 CALL unpack_arr( jpoce, flxsedi3d(1:jpi,1:jpj,1:jpksed,3) , iarroce(1:jpoce), & 91 & sedligand(1:jpoce,1:jpksed) ) 89 92 90 93 ! flxsedi3d = 0. … … 94 97 DO ji = 1, jpoce 95 98 zflx(ji,jw) = ( pwcp(ji,1,jw) - pwcp_dta(ji,jw) ) & 96 & * 1.e3 / 1.e2 * dzkbot(ji) / r2dttrc 99 & * 1.e3 / ( 1.e2 * dzkbot(ji) ) / 1.E4 / r2dttrc 100 ENDDO 101 ENDDO 102 103 ! Calculation of fluxes g/cm2/s 104 DO js = 1, jpsol 105 zrate = 1.0 / ( por1(jpksed) ) / r2dttrc 106 DO ji = 1, jpoce 107 zflx(ji,jpwat+js) = zflx(ji,jpwat+js) + ( tosed(ji,js) - fromsed(ji,js) ) * zrate 97 108 ENDDO 98 109 ENDDO … … 100 111 ! Calculation of accumulation rate per dt 101 112 DO js = 1, jpsol 102 zrate = 1.0 / ( denssol *por1(jpksed) ) / r2dttrc113 zrate = 1.0 / ( por1(jpksed) ) / r2dttrc 103 114 DO ji = 1, jpoce 104 zflx(ji,jp watp1) = zflx(ji,jpwatp1) + ( tosed(ji,js) - fromsed(ji,js) ) * zrate115 zflx(ji,jptrased+1) = zflx(ji,jptrased+1) + ( tosed(ji,js) - fromsed(ji,js) ) * zrate 105 116 ENDDO 106 117 ENDDO … … 109 120 CALL unpack_arr( jpoce, flxsedi2d(1:jpi,1:jpj,jn), iarroce(1:jpoce), zflx(1:jpoce,jn) ) 110 121 END DO 122 111 123 zflx(:,1) = dzdep(:) / dtsed 112 124 CALL unpack_arr( jpoce, flxsedi2d(1:jpi,1:jpj,jpdia2dsed), iarroce(1:jpoce), zflx(1:jpoce,1) ) 113 125 114 115 116 117 118 119 126 ! Start writing data 127 ! --------------------- 128 DO jn = 1, jptrased 129 cltra = sedtrcd(jn) ! short title for 3D diagnostic 130 CALL iom_put( cltra, trcsedi(:,:,:,jn) ) 131 END DO 120 132 121 122 123 124 133 DO jn = 1, jpdia3dsed 134 cltra = seddia3d(jn) ! short title for 3D diagnostic 135 CALL iom_put( cltra, flxsedi3d(:,:,:,jn) ) 136 END DO 125 137 126 127 128 129 138 DO jn = 1, jpdia2dsed 139 cltra = seddia2d(jn) ! short title for 2D diagnostic 140 CALL iom_put( cltra, flxsedi2d(:,:,jn) ) 141 END DO 130 142 131 143 -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/sms_pisces.F90
r12759 r14276 43 43 REAL(wp) :: wsbio2scale !: Length scale for the variations of wsbio2 44 44 REAL(wp) :: xkmort !: Mortality half-saturation constant 45 REAL(wp) :: ferat3 !: Fe/C in heterotrophic organisms 45 REAL(wp) :: feratz !: Fe/C in microzooplankton 46 REAL(wp) :: feratm !: Fe/C in mesozooplankton 46 47 REAL(wp) :: ldocp !: Ligand production ratio during PP 47 48 REAL(wp) :: ldocz !: Ligand production ratio by grazing … … 68 69 INTEGER , ALLOCATABLE, SAVE, DIMENSION(:,:) :: neln !: number of T-levels + 1 in the euphotic layer 69 70 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: heup !: euphotic layer depth 71 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,: ) :: strn !: Day duration in hours 70 72 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: etot !: par (photosynthetic available radiation) 71 73 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: etot_ndcy !: PAR over 24h in case of diurnal cycle … … 74 76 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: epico !: PAR for pico 75 77 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: epicom !: mean PAR for pico 76 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: emoy 78 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: emoy, etotm !: averaged PAR in the mixed layer 77 79 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: heup_01 !: Absolute euphotic layer depth 78 80 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: xksi !: Half-saturation con,stant for diatoms … … 98 100 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: prodgoc !: GOC production 99 101 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: consgoc !: GOC consumption 102 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: consfe3 !: GOC consumption 100 103 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: blim !: bacterial production factor 101 104 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sizen !: size of nanophyto … … 118 121 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tgfunc !: Temp. dependancy of various biological rates 119 122 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tgfunc2 !: Temp. dependancy of mesozooplankton rates 120 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tgfunc3 !: Temp. dependancy of picophytoplankton rates121 123 122 124 !!---------------------------------------------------------------------- … … 135 137 !!---------------------------------------------------------------------- 136 138 ierr(:) = 0 137 ALLOCATE( etot(jpi,jpj,jpk), neln(jpi,jpj), heup(jpi,jpj), & 138 & heup_01(jpi,jpj) , xksi(jpi,jpj) , STAT=ierr(1) ) 139 ! 140 139 ALLOCATE( etot(jpi,jpj,jpk), neln(jpi,jpj), heup(jpi,jpj), & 140 & heup_01(jpi,jpj) , xksi(jpi,jpj), strn(jpi,jpj), STAT=ierr(1) ) 141 141 142 IF( ln_p4z .OR. ln_p5z ) THEN 142 143 … … 144 145 ALLOCATE( enano(jpi,jpj,jpk) , ediat(jpi,jpj,jpk) , & 145 146 & enanom(jpi,jpj,jpk) , ediatm(jpi,jpj,jpk), & 146 & etot_ndcy(jpi,jpj,jpk), emoy(jpi,jpj,jpk) , STAT=ierr(2) ) 147 & etot_ndcy(jpi,jpj,jpk), emoy(jpi,jpj,jpk) , & 148 & etotm(jpi,jpj,jpk), STAT=ierr(2) ) 147 149 148 150 !* Biological SMS … … 155 157 & prodpoc(jpi,jpj,jpk) , conspoc(jpi,jpj,jpk) , & 156 158 & prodgoc(jpi,jpj,jpk) , consgoc(jpi,jpj,jpk) , & 157 & blim (jpi,jpj,jpk) , 159 & blim (jpi,jpj,jpk) , consfe3(jpi,jpj,jpk) , STAT=ierr(4) ) 158 160 159 161 !* Carbonate chemistry … … 164 166 ! 165 167 !* Temperature dependency of SMS terms 166 ALLOCATE( tgfunc (jpi,jpj,jpk) , tgfunc2(jpi,jpj,jpk), & 167 & tgfunc3(jpi,jpj,jpk) , STAT=ierr(6) ) 168 ALLOCATE( tgfunc (jpi,jpj,jpk) , tgfunc2(jpi,jpj,jpk), STAT=ierr(6) ) 168 169 ! 169 170 !* Sinking speed … … 174 175 & sizena(jpi,jpj,jpk), sizeda(jpi,jpj,jpk), STAT=ierr(8) ) 175 176 ! 176 !* Prognostic ligand 177 IF( ln_ligand ) THEN 178 ALLOCATE( plig(jpi,jpj,jpk) , STAT=ierr(9) ) 179 ENDIF 177 ALLOCATE( plig(jpi,jpj,jpk) , STAT=ierr(9) ) 180 178 ENDIF 181 179 ! -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/TRP/trcrad.F90
r11536 r14276 107 107 ENDIF 108 108 ! 109 ALLOCATE( gainmass(jptra, 2) )109 ALLOCATE( gainmass(jptra,4) ) 110 110 gainmass(:,:) = 0. 111 111 ! … … 169 169 IF( ptrb(ji,jj,jk,jn) > 0. ) THEN ! use positive values to compensate mass gain 170 170 zcoef = 1. + ztrneg(ji,jj,jn) / ztrpos(ji,jj,jn) ! ztrpos > 0 as ptrb > 0 171 gainmass(jn,1) = gainmass(jn,1) + ptrb(ji,jj,jk,jn) * cvol(ji,jj,jk) * ( zcoef - 1.0 ) ! we are correcting mass... 171 172 ptrb(ji,jj,jk,jn) = ptrb(ji,jj,jk,jn) * zcoef 172 173 IF( zcoef < 0. ) THEN ! if the compensation exceed the positive value 173 gainmass(jn, 1) = gainmass(jn,1) - ptrb(ji,jj,jk,jn) * cvol(ji,jj,jk) ! we are adding mass...174 gainmass(jn,2) = gainmass(jn,2) - ptrb(ji,jj,jk,jn) * cvol(ji,jj,jk) ! we are adding mass... 174 175 ptrb(ji,jj,jk,jn) = 0. ! limit the compensation to keep positive value 175 176 ENDIF … … 190 191 IF( kt == nitend ) THEN 191 192 CALL mpp_sum( 'trcrad', gainmass(:,1) ) 193 CALL mpp_sum( 'trcrad', gainmass(:,2) ) 192 194 DO jn = jp_sms0, jp_sms1 193 IF( gainmass(jn,1) >0. ) THEN195 IF( gainmass(jn,1) < 0. ) THEN 194 196 ztotmass = glob_sum( 'trcrad', ptrb(:,:,:,jn) * cvol(:,:,:) ) 195 IF(lwp) WRITE(numout, '(a, i2, a, D23.16, a, D23.16)') 'trcrad ptrb, traceur ', jn & 196 & , ' total mass : ', ztotmass, ', mass gain : ', gainmass(jn,1) 197 IF(lwp) WRITE(numout, '(a, i2, a, D23.16, a, D23.16, a, D23.16)') 'trcrad ptrb, traceur ', jn & 198 & , ' total mass : ', ztotmass, ', mass correction : ', gainmass(jn,1) & 199 & , ' mass gain : ', gainmass(jn,2) 197 200 END IF 198 201 END DO … … 219 222 IF( ptrn(ji,jj,jk,jn) > 0. ) THEN ! use positive values to compensate mass gain 220 223 zcoef = 1. + ztrneg(ji,jj,jn) / ztrpos(ji,jj,jn) ! ztrpos > 0 as ptrb > 0 224 gainmass(jn,3) = gainmass(jn,3) + ptrn(ji,jj,jk,jn) * cvol(ji,jj,jk) * ( zcoef - 1.0 ) ! we are correcting mass... 221 225 ptrn(ji,jj,jk,jn) = ptrn(ji,jj,jk,jn) * zcoef 222 226 IF( zcoef < 0. ) THEN ! if the compensation exceed the positive value 223 gainmass(jn, 2) = gainmass(jn,2) - ptrn(ji,jj,jk,jn) * cvol(ji,jj,jk) ! we are adding mass...227 gainmass(jn,4) = gainmass(jn,4) - ptrn(ji,jj,jk,jn) * cvol(ji,jj,jk) ! we are adding mass... 224 228 ptrn(ji,jj,jk,jn) = 0. ! limit the compensation to keep positive value 225 229 ENDIF … … 239 243 240 244 IF( kt == nitend ) THEN 241 CALL mpp_sum( 'trcrad', gainmass(:,2) ) 245 CALL mpp_sum( 'trcrad', gainmass(:,3) ) 246 CALL mpp_sum( 'trcrad', gainmass(:,4) ) 242 247 DO jn = jp_sms0, jp_sms1 243 IF( gainmass(jn, 2) >0. ) THEN248 IF( gainmass(jn,3) < 0. ) THEN 244 249 ztotmass = glob_sum( 'trcrad', ptrn(:,:,:,jn) * cvol(:,:,:) ) 245 WRITE(numout, '(a, i2, a, D23.16, a, D23.16)') 'trcrad ptrn, traceur ', jn & 246 & , ' total mass : ', ztotmass, ', mass gain : ', gainmass(jn,1) 250 IF(lwp) WRITE(numout, '(a, i2, a, D23.16, a, D23.16, a, D23.16)') 'trcrad ptrn, traceur ', jn & 251 & , ' total mass : ', ztotmass, ', mass correction : ', gainmass(jn,3) & 252 & , ' mass gain : ', gainmass(jn,4) 247 253 END IF 248 254 END DO -
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/trcnam.F90
r11536 r14276 248 248 !!--------------------------------------------------------------------- 249 249 #if defined key_trdmxl_trc || defined key_trdtrc 250 INTEGER :: ios, ierr ! Local integer250 INTEGER :: jn, ios, ierr ! Local integer 251 251 !! 252 252 NAMELIST/namtrc_trd/ nn_trd_trc, nn_ctls_trc, rn_ucf_trc, & … … 260 260 ! 261 261 ALLOCATE( ln_trdtrc(jptra) ) 262 ln_trdtrc(:) = .false. 262 263 ! 263 264 REWIND( numnat_ref ) ! Namelist namtrc_trd in reference namelist : Passive tracer trends … … 267 268 READ ( numnat_cfg, namtrc_trd, IOSTAT = ios, ERR = 906 ) 268 269 906 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_trd in configuration namelist' ) 269 270 IF(lwm) WRITE( numont, namtrc_trd ) 270 271 271 272 IF(lwp) THEN
Note: See TracChangeset
for help on using the changeset viewer.