Changeset 2957 for branches/2011/dev_r2787_PISCES_improvment
- Timestamp:
- 2011-10-19T10:47:02+02:00 (13 years ago)
- Location:
- branches/2011/dev_r2787_PISCES_improvment/NEMOGCM
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/namelist_pisces
r2823 r2957 48 48 conc3 = 2E-9 ! Iron half saturation for diatoms 49 49 conc3m = 8E-9 ! Maxi iron half saturation for diatoms 50 xsizedia = 5.E-7 ! Minimum size criteria for diatoms 51 xsizephy = 1.E-6 ! Minimum size criteria for phyto 50 52 concnnh4 = 1.E-7 ! NH4 half saturation for phyto 51 53 concdnh4 = 4.E-7 ! NH4 half saturation for diatoms … … 65 67 excret = 0.05 ! excretion ratio of phytoplankton 66 68 excret2 = 0.05 ! excretion ratio of diatoms 69 ln_newprod = .FALSE. ! Enable new parame. of production (T/F) 67 70 bresp = 0.00333 ! Basal respiration rate 68 71 chlcnm = 0.033 ! Minimum Chl/C in nanophytoplankton … … 93 96 xprefz = 1. ! zoo preference for zoo 94 97 xprefpoc = 0.3 ! zoo preference for poc 95 xthresh2 = 2E-7 ! Food threshold for grazing 98 xthresh2zoo = 1E-8 ! zoo feeding threshold for mesozooplankton 99 xthresh2dia = 1E-8 ! diatoms feeding threshold for mesozooplankton 100 xthresh2phy = 2E-7 ! nanophyto feeding threshold for mesozooplankton 101 xthresh2poc = 1E-8 ! poc feeding threshold for mesozooplankton 102 xthresh2 = 0. ! Food threshold for grazing 96 103 xkgraz2 = 20.E-6 ! half sturation constant for meso grazing 97 104 epsher2 = 0.3 ! Efficicency of Mesozoo growth … … 103 110 &nampiszoo ! parameters for microzooplankton 104 111 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 105 part = 0.5 ! part of calcite not dissolved in microzoo gutsa112 part = 0.5 ! part of calcite not dissolved in microzoo gutsa 106 113 grazrat = 3.0 ! maximal zoo grazing rate 107 114 resrat = 0.03 ! exsudation rate of zooplankton … … 110 117 xpref2p = 1. ! Microzoo preference for Nanophyto 111 118 xpref2d = 0.6 ! Microzoo preference for Diatoms 112 xthresh = 2E-7 ! Food threshold for feeding 119 xthreshdia = 1.E-8 ! Diatoms feeding threshold for microzooplankton 120 xthreshphy = 2.E-7 ! Nanophyto feeding threshold for microzooplankton 121 xthreshpoc = 1.E-8 ! POC feeding threshold for microzooplankton 122 xthresh = 0. ! Food threshold for feeding 113 123 xkgraz = 20.E-6 ! half sturation constant for grazing 114 124 epsher = 0.3 ! Efficiency of microzoo growth … … 211 221 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 212 222 ln_pisdmp = .true. ! Relaxation fo some tracers to a mean value 213 / 223 nn_pisdmp = 5475 ! Frequency of Relaxation 224 / -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_pisces
r2823 r2957 48 48 conc3 = 2E-9 ! Iron half saturation for diatoms 49 49 conc3m = 8E-9 ! Maxi iron half saturation for diatoms 50 xsizedia = 5.E-7 ! Minimum size criteria for diatoms 51 xsizephy = 1.E-6 ! Minimum size criteria for phyto 50 52 concnnh4 = 1.E-7 ! NH4 half saturation for phyto 51 53 concdnh4 = 4.E-7 ! NH4 half saturation for diatoms … … 65 67 excret = 0.05 ! excretion ratio of phytoplankton 66 68 excret2 = 0.05 ! excretion ratio of diatoms 69 ln_newprod = .FALSE. ! Enable new parame. of production (T/F) 67 70 bresp = 0.00333 ! Basal respiration rate 68 71 chlcnm = 0.033 ! Minimum Chl/C in nanophytoplankton … … 93 96 xprefz = 1. ! zoo preference for zoo 94 97 xprefpoc = 0.3 ! zoo preference for poc 95 xthresh2 = 2E-7 ! Food threshold for grazing 98 xthresh2zoo = 1E-8 ! zoo feeding threshold for mesozooplankton 99 xthresh2dia = 1E-8 ! diatoms feeding threshold for mesozooplankton 100 xthresh2phy = 2E-7 ! nanophyto feeding threshold for mesozooplankton 101 xthresh2poc = 1E-8 ! poc feeding threshold for mesozooplankton 102 xthresh2 = 0. ! Food threshold for grazing 96 103 xkgraz2 = 20.E-6 ! half sturation constant for meso grazing 97 104 epsher2 = 0.3 ! Efficicency of Mesozoo growth … … 103 110 &nampiszoo ! parameters for microzooplankton 104 111 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 105 part = 0.5 ! part of calcite not dissolved in microzoo gutsa112 part = 0.5 ! part of calcite not dissolved in microzoo gutsa 106 113 grazrat = 3.0 ! maximal zoo grazing rate 107 114 resrat = 0.03 ! exsudation rate of zooplankton … … 110 117 xpref2p = 1. ! Microzoo preference for Nanophyto 111 118 xpref2d = 0.6 ! Microzoo preference for Diatoms 112 xthresh = 2E-7 ! Food threshold for feeding 119 xthreshdia = 1.E-8 ! Diatoms feeding threshold for microzooplankton 120 xthreshphy = 2.E-7 ! Nanophyto feeding threshold for microzooplankton 121 xthreshpoc = 1.E-8 ! POC feeding threshold for microzooplankton 122 xthresh = 0. ! Food threshold for feeding 113 123 xkgraz = 20.E-6 ! half sturation constant for grazing 114 124 epsher = 0.3 ! Efficiency of microzoo growth … … 179 189 &nampisdia ! additional 2D/3D tracers diagnostics 180 190 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 181 nn_writedia = 1460! time step frequency for tracers diagnostics191 nn_writedia = 5475 ! time step frequency for tracers diagnostics 182 192 ! ! name ! title of the field ! units ! 183 193 ! ! ! ! ! … … 211 221 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 212 222 ln_pisdmp = .true. ! Relaxation fo some tracers to a mean value 213 / 223 nn_pisdmp = 1460 ! Frequency of Relaxation 224 / -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zlim.F90
r2823 r2957 33 33 REAL(wp), PUBLIC :: conc3 = 2.e-9_wp !: Iron half saturation for diatoms 34 34 REAL(wp), PUBLIC :: conc3m = 8.e-9_wp !: Max iron half saturation for diatoms 35 REAL(wp), PUBLIC :: xsizedia = 5.e-7_wp !: Minimum size criteria for diatoms 36 REAL(wp), PUBLIC :: xsizephy = 1.e-6_wp !: Minimum size criteria for nanophyto 35 37 REAL(wp), PUBLIC :: concnnh4 = 1.e-7_wp !: NH4 half saturation for phyto 36 38 REAL(wp), PUBLIC :: concdnh4 = 4.e-7_wp !: NH4 half saturation for diatoms … … 44 46 45 47 ! Coefficient for iron limitation 46 ! REAL(wp) :: xcoef1 = 0.001647 ! REAL(wp) :: xcoef2 = 1.21E-5 * 1.548 ! REAL(wp) :: xcoef3 = 1.15E-4 / 7.625 / 55.8549 48 REAL(wp) :: xcoef1 = 0.0016 / 55.85 50 49 REAL(wp) :: xcoef2 = 1.21E-5 * 14. / 55.85 / 7.625 * 0.5 * 1.5 … … 94 93 ! that increasing biomass is made of generally bigger cells 95 94 !------------------------------------------------ 96 zconcd = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - 5.e-7)95 zconcd = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - xsizedia ) 97 96 zconcd2 = trn(ji,jj,jk,jpdia) - zconcd 98 zconcn = MAX( 0.e0 , trn(ji,jj,jk,jpphy) - 1.e-6)97 zconcn = MAX( 0.e0 , trn(ji,jj,jk,jpphy) - xsizephy ) 99 98 zconcn2 = trn(ji,jj,jk,jpphy) - zconcn 100 99 z1_trnphy = 1. / ( trn(ji,jj,jk,jpphy) + rtrn ) … … 190 189 191 190 NAMELIST/nampislim/ conc0, conc1, conc2, conc2m, conc3, conc3m, & 192 & concnnh4, concdnh4, xksi1, xksi2, xkdoc,&193 & concfebac, qnfelim, qdfelim, caco3r191 & xsizedia, xsizephy, concnnh4, concdnh4, & 192 & xksi1, xksi2, xkdoc, concfebac, qnfelim, qdfelim, caco3r 194 193 195 194 REWIND( numnatp ) ! read numnat … … 200 199 WRITE(numout,*) ' Namelist parameters for nutrient limitations, nampislim' 201 200 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 202 WRITE(numout,*) ' mean rainratio caco3r =', caco3r 203 WRITE(numout,*) ' NO3, PO4 half saturation conc0 =', conc0 204 WRITE(numout,*) ' half saturation constant for Si uptake xksi1 =', xksi1 205 WRITE(numout,*) ' half saturation constant for Si/C xksi2 =', xksi2 206 WRITE(numout,*) ' 2nd half-sat. of DOC remineralization xkdoc =', xkdoc 207 WRITE(numout,*) ' Phosphate half saturation for diatoms conc1 =', conc1 208 WRITE(numout,*) ' Iron half saturation for phyto conc2 =', conc2 209 WRITE(numout,*) ' Max iron half saturation for phyto conc2m =', conc2m 210 WRITE(numout,*) ' Iron half saturation for diatoms conc3 =', conc3 211 WRITE(numout,*) ' Maxi iron half saturation for diatoms conc3m =', conc3m 212 WRITE(numout,*) ' NH4 half saturation for phyto concnnh4 =', concnnh4 213 WRITE(numout,*) ' NH4 half saturation for diatoms concdnh4 =', concdnh4 214 WRITE(numout,*) ' Fe half saturation for bacteria concfebac =', concfebac 215 WRITE(numout,*) ' optimal Fe quota for nano. qnfelim =', qnfelim 216 WRITE(numout,*) ' Optimal Fe quota for diatoms qdfelim =', qdfelim 201 WRITE(numout,*) ' mean rainratio caco3r = ', caco3r 202 WRITE(numout,*) ' NO3, PO4 half saturation conc0 = ', conc0 203 WRITE(numout,*) ' half saturation constant for Si uptake xksi1 = ', xksi1 204 WRITE(numout,*) ' half saturation constant for Si/C xksi2 = ', xksi2 205 WRITE(numout,*) ' 2nd half-sat. of DOC remineralization xkdoc = ', xkdoc 206 WRITE(numout,*) ' Phosphate half saturation for diatoms conc1 = ', conc1 207 WRITE(numout,*) ' Iron half saturation for phyto conc2 = ', conc2 208 WRITE(numout,*) ' Max iron half saturation for phyto conc2m = ', conc2m 209 WRITE(numout,*) ' Iron half saturation for diatoms conc3 = ', conc3 210 WRITE(numout,*) ' Maxi iron half saturation for diatoms conc3m = ', conc3m 211 WRITE(numout,*) ' Minimum size criteria for diatoms xsizedia = ', xsizedia 212 WRITE(numout,*) ' Minimum size criteria for nanophyto xsizephy = ', xsizephy 213 WRITE(numout,*) ' NH4 half saturation for phyto concnnh4 = ', concnnh4 214 WRITE(numout,*) ' NH4 half saturation for diatoms concdnh4 = ', concdnh4 215 WRITE(numout,*) ' Fe half saturation for bacteria concfebac = ', concfebac 216 WRITE(numout,*) ' optimal Fe quota for nano. qnfelim = ', qnfelim 217 WRITE(numout,*) ' Optimal Fe quota for diatoms qdfelim = ', qdfelim 217 218 ENDIF 218 219 -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zmeso.F90
r2823 r2957 31 31 32 32 !! * Shared module variables 33 REAL(wp), PUBLIC :: part2 = 0.5_wp !: part of calcite not dissolved in mesozoo guts 34 REAL(wp), PUBLIC :: xprefc = 1.0_wp !: mesozoo preference for POC 35 REAL(wp), PUBLIC :: xprefp = 0.3_wp !: mesozoo preference for nanophyto 36 REAL(wp), PUBLIC :: xprefz = 1.0_wp !: mesozoo preference for diatoms 37 REAL(wp), PUBLIC :: xprefpoc = 0.3_wp !: mesozoo preference for POC 38 REAL(wp), PUBLIC :: xthresh2 = 2E-7_wp !: feeding threshold for mesozooplankton 39 REAL(wp), PUBLIC :: resrat2 = 0.005_wp !: exsudation rate of mesozooplankton 40 REAL(wp), PUBLIC :: mzrat2 = 0.04_wp !: microzooplankton mortality rate 41 REAL(wp), PUBLIC :: grazrat2 = 0.9_wp !: maximal mesozoo grazing rate 42 REAL(wp), PUBLIC :: xkgraz2 = 20E-6_wp !: non assimilated fraction of P by mesozoo 43 REAL(wp), PUBLIC :: unass2 = 0.3_wp !: Efficicency of mesozoo growth 44 REAL(wp), PUBLIC :: sigma2 = 0.6_wp !: Fraction of mesozoo excretion as DOM 45 REAL(wp), PUBLIC :: epsher2 = 0.3_wp !: half sturation constant for grazing 2 46 REAL(wp), PUBLIC :: grazflux = 3.E3_wp !: mesozoo flux feeding rate 33 REAL(wp), PUBLIC :: part2 = 0.5_wp !: part of calcite not dissolved in mesozoo guts 34 REAL(wp), PUBLIC :: xprefc = 1.0_wp !: mesozoo preference for POC 35 REAL(wp), PUBLIC :: xprefp = 0.3_wp !: mesozoo preference for nanophyto 36 REAL(wp), PUBLIC :: xprefz = 1.0_wp !: mesozoo preference for diatoms 37 REAL(wp), PUBLIC :: xprefpoc = 0.3_wp !: mesozoo preference for POC 38 REAL(wp), PUBLIC :: xthresh2zoo = 1E-8_wp !: zoo feeding threshold for mesozooplankton 39 REAL(wp), PUBLIC :: xthresh2dia = 1E-8_wp !: diatoms feeding threshold for mesozooplankton 40 REAL(wp), PUBLIC :: xthresh2phy = 2E-7_wp !: nanophyto feeding threshold for mesozooplankton 41 REAL(wp), PUBLIC :: xthresh2poc = 1E-8_wp !: poc feeding threshold for mesozooplankton 42 REAL(wp), PUBLIC :: xthresh2 = 0._wp !: feeding threshold for mesozooplankton 43 REAL(wp), PUBLIC :: resrat2 = 0.005_wp !: exsudation rate of mesozooplankton 44 REAL(wp), PUBLIC :: mzrat2 = 0.04_wp !: microzooplankton mortality rate 45 REAL(wp), PUBLIC :: grazrat2 = 0.9_wp !: maximal mesozoo grazing rate 46 REAL(wp), PUBLIC :: xkgraz2 = 20E-6_wp !: non assimilated fraction of P by mesozoo 47 REAL(wp), PUBLIC :: unass2 = 0.3_wp !: Efficicency of mesozoo growth 48 REAL(wp), PUBLIC :: sigma2 = 0.6_wp !: Fraction of mesozoo excretion as DOM 49 REAL(wp), PUBLIC :: epsher2 = 0.3_wp !: half sturation constant for grazing 2 50 REAL(wp), PUBLIC :: grazflux = 3.E3_wp !: mesozoo flux feeding rate 47 51 48 52 !!* Substitution … … 67 71 INTEGER :: ji, jj, jk 68 72 REAL(wp) :: zcompadi, zcompaph, zcompapoc, zcompaz, zcompam 69 REAL(wp) :: zgraze2 , zdenom, z ncratio73 REAL(wp) :: zgraze2 , zdenom, zdenom2, zncratio 70 74 REAL(wp) :: zfact , zstep, zfood, zfoodlim 71 75 REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotf … … 104 108 ! 105 109 106 zcompadi = MAX( ( trn(ji,jj,jk,jpdia) - 1.e-8), 0.e0 )107 zcompaz = MAX( ( trn(ji,jj,jk,jpzoo) - 1.e-8), 0.e0 )108 zcompaph = MAX( ( trn(ji,jj,jk,jpphy) - 1.e-8), 0.e0 )109 zcompapoc = MAX( ( trn(ji,jj,jk,jppoc) - 1.e-8), 0.e0 )110 111 zfood = xprefc * zcompadi + xprefz * zcompaz + xprefp * zcompaph + xprefpoc * zcompapoc + rtrn110 zcompadi = MAX( ( trn(ji,jj,jk,jpdia) - xthresh2dia ), 0.e0 ) 111 zcompaz = MAX( ( trn(ji,jj,jk,jpzoo) - xthresh2zoo ), 0.e0 ) 112 zcompaph = MAX( ( trn(ji,jj,jk,jpphy) - xthresh2phy ), 0.e0 ) 113 zcompapoc = MAX( ( trn(ji,jj,jk,jppoc) - xthresh2poc ), 0.e0 ) 114 115 zfood = xprefc * zcompadi + xprefz * zcompaz + xprefp * zcompaph + xprefpoc * zcompapoc 112 116 zfoodlim = MAX( 0., zfood - xthresh2 ) 113 zdenom = zfoodlim / zfood / (xkgraz2 + zfoodlim) 114 115 zgraze2 = grazrat2 * zstep * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jpmes) * zdenom 116 zgrazd = zgraze2 * xprefc * zcompadi 117 zgrazz = zgraze2 * xprefz * zcompaz 118 zgrazn = zgraze2 * xprefp * zcompaph 119 zgrazpoc = zgraze2 * xprefpoc * zcompapoc 120 121 zgraznf = zgrazn * trn(ji,jj,jk,jpnfe) / (trn(ji,jj,jk,jpphy) + rtrn) 122 zgrazf = zgrazd * trn(ji,jj,jk,jpdfe) / (trn(ji,jj,jk,jpdia) + rtrn) 123 zgrazpof = zgrazpoc * trn(ji,jj,jk,jpsfe) / (trn(ji,jj,jk,jppoc) + rtrn) 117 zdenom = zfoodlim / ( xkgraz2 + zfoodlim ) 118 zdenom2 = zdenom / ( zfood + rtrn ) 119 zgraze2 = grazrat2 * zstep * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jpmes) 120 121 zgrazd = zgraze2 * xprefc * zcompadi * zdenom2 122 zgrazz = zgraze2 * xprefz * zcompaz * zdenom2 123 zgrazn = zgraze2 * xprefp * zcompaph * zdenom2 124 zgrazpoc = zgraze2 * xprefpoc * zcompapoc * zdenom2 125 126 zgraznf = zgrazn * trn(ji,jj,jk,jpnfe) / ( trn(ji,jj,jk,jpphy) + rtrn) 127 zgrazf = zgrazd * trn(ji,jj,jk,jpdfe) / ( trn(ji,jj,jk,jpdia) + rtrn) 128 zgrazpof = zgrazpoc * trn(ji,jj,jk,jpsfe) / ( trn(ji,jj,jk,jppoc) + rtrn) 124 129 125 130 ! Mesozooplankton flux feeding on GOC … … 130 135 zgrazfff = zgrazffe * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 131 136 # else 132 !!--------------------------- KRIEST3 -------------------------------------------133 !! zgrazffe = 0.5 * 1.3e-2 / 5.5e-7 * 0.3 * zstep * wsbio3(ji,jj,jk) &134 !! & * tgfunc(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) &135 !! # if defined key_degrad136 !! & * facvol(ji,jj,jk) &137 !! # endif138 !! & / (trn(ji,jj,jk,jppoc) * 1.e7 + 0.1)139 !!--------------------------- KRIEST3 -------------------------------------------140 141 137 zgrazffe = grazflux * zstep * wsbio3(ji,jj,jk) & 142 138 & * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) … … 156 152 & + xprefp * zcompaph * quotan(ji,jj,jk) & 157 153 & + xprefz * zcompaz & 158 & + xprefpoc * zcompapoc ) / zfood154 & + xprefpoc * zcompapoc ) / ( zfood + rtrn ) 159 155 zepshert = epsher2 * MIN( 1., zncratio ) 160 156 zepsherv = zepshert * MIN( 1., zgrasrat / ferat3 ) … … 250 246 251 247 NAMELIST/nampismes/ part2, grazrat2, resrat2, mzrat2, xprefc, xprefp, xprefz, & 252 & xprefpoc, xthresh2, xkgraz2, epsher2, sigma2, unass2, grazflux 248 & xprefpoc, xthresh2dia, xthresh2phy, xthresh2zoo, xthresh2poc, & 249 & xthresh2, xkgraz2, epsher2, sigma2, unass2, grazflux 253 250 254 251 REWIND( numnatp ) ! read numnat … … 260 257 WRITE(numout,*) ' Namelist parameters for mesozooplankton, nampismes' 261 258 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 262 WRITE(numout,*) ' part of calcite not dissolved in mesozoo guts part2 =', part2 263 WRITE(numout,*) ' mesozoo preference for phyto xprefc =', xprefc 264 WRITE(numout,*) ' mesozoo preference for POC xprefp =', xprefp 265 WRITE(numout,*) ' mesozoo preference for zoo xprefz =', xprefz 266 WRITE(numout,*) ' mesozoo preference for poc xprefpoc =', xprefpoc 267 WRITE(numout,*) ' feeding threshold for mesozooplankton xthresh2 =', xthresh2 268 WRITE(numout,*) ' exsudation rate of mesozooplankton resrat2 =', resrat2 269 WRITE(numout,*) ' mesozooplankton mortality rate mzrat2 =', mzrat2 270 WRITE(numout,*) ' maximal mesozoo grazing rate grazrat2 =', grazrat2 271 WRITE(numout,*) ' mesozoo flux feeding rate grazflux =', grazflux 272 WRITE(numout,*) ' non assimilated fraction of P by mesozoo unass2 =', unass2 273 WRITE(numout,*) ' Efficicency of Mesozoo growth epsher2 =', epsher2 274 WRITE(numout,*) ' Fraction of mesozoo excretion as DOM sigma2 =', sigma2 275 WRITE(numout,*) ' half sturation constant for grazing 2 xkgraz2 =', xkgraz2 259 WRITE(numout,*) ' part of calcite not dissolved in mesozoo guts part2 =', part2 260 WRITE(numout,*) ' mesozoo preference for phyto xprefc =', xprefc 261 WRITE(numout,*) ' mesozoo preference for POC xprefp =', xprefp 262 WRITE(numout,*) ' mesozoo preference for zoo xprefz =', xprefz 263 WRITE(numout,*) ' mesozoo preference for poc xprefpoc =', xprefpoc 264 WRITE(numout,*) ' microzoo feeding threshold for mesozoo xthresh2zoo =', xthresh2zoo 265 WRITE(numout,*) ' diatoms feeding threshold for mesozoo xthresh2dia =', xthresh2dia 266 WRITE(numout,*) ' nanophyto feeding threshold for mesozoo xthresh2phy =', xthresh2phy 267 WRITE(numout,*) ' poc feeding threshold for mesozoo xthresh2poc =', xthresh2poc 268 WRITE(numout,*) ' feeding threshold for mesozooplankton xthresh2 =', xthresh2 269 WRITE(numout,*) ' exsudation rate of mesozooplankton resrat2 =', resrat2 270 WRITE(numout,*) ' mesozooplankton mortality rate mzrat2 =', mzrat2 271 WRITE(numout,*) ' maximal mesozoo grazing rate grazrat2 =', grazrat2 272 WRITE(numout,*) ' mesozoo flux feeding rate grazflux =', grazflux 273 WRITE(numout,*) ' non assimilated fraction of P by mesozoo unass2 =', unass2 274 WRITE(numout,*) ' Efficicency of Mesozoo growth epsher2 =', epsher2 275 WRITE(numout,*) ' Fraction of mesozoo excretion as DOM sigma2 =', sigma2 276 WRITE(numout,*) ' half sturation constant for grazing 2 xkgraz2 =', xkgraz2 276 277 ENDIF 277 278 -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zmicro.F90
r2823 r2957 18 18 USE trc ! passive tracers common variables 19 19 USE sms_pisces ! PISCES Source Minus Sink variables 20 USE p4zlim ! Co-limitations 20 21 USE p4zsink ! vertical flux of particulate matter due to sinking 21 22 USE p4zint ! interpolation and computation of various fields … … 30 31 31 32 !! * Shared module variables 32 REAL(wp), PUBLIC :: part = 0.5_wp !: part of calcite not dissolved in microzoo guts 33 REAL(wp), PUBLIC :: xpref2c = 0.2_wp !: microzoo preference for POC 34 REAL(wp), PUBLIC :: xpref2p = 1.0_wp !: microzoo preference for nanophyto 35 REAL(wp), PUBLIC :: xpref2d = 0.6_wp !: microzoo preference for diatoms 36 REAL(wp), PUBLIC :: xthresh = 2E-7_wp !: feeding threshold for microzooplankton 37 REAL(wp), PUBLIC :: resrat = 0.03_wp !: exsudation rate of microzooplankton 38 REAL(wp), PUBLIC :: mzrat = 0.0_wp !: microzooplankton mortality rate 39 REAL(wp), PUBLIC :: grazrat = 3.0_wp !: maximal microzoo grazing rate 40 REAL(wp), PUBLIC :: xkgraz = 20E-6_wp !: non assimilated fraction of P by microzoo 41 REAL(wp), PUBLIC :: unass = 0.3_wp !: Efficicency of microzoo growth 42 REAL(wp), PUBLIC :: sigma1 = 0.6_wp !: Fraction of microzoo excretion as DOM 43 REAL(wp), PUBLIC :: epsher = 0.3_wp !: half sturation constant for grazing 1 33 REAL(wp), PUBLIC :: part = 0.5_wp !: part of calcite not dissolved in microzoo guts 34 REAL(wp), PUBLIC :: xpref2c = 0.2_wp !: microzoo preference for POC 35 REAL(wp), PUBLIC :: xpref2p = 1.0_wp !: microzoo preference for nanophyto 36 REAL(wp), PUBLIC :: xpref2d = 0.6_wp !: microzoo preference for diatoms 37 REAL(wp), PUBLIC :: xthreshdia = 1E-8_wp !: diatoms feeding threshold for microzooplankton 38 REAL(wp), PUBLIC :: xthreshphy = 2E-7_wp !: nanophyto threshold for microzooplankton 39 REAL(wp), PUBLIC :: xthreshpoc = 1E-8_wp !: poc threshold for microzooplankton 40 REAL(wp), PUBLIC :: xthresh = 0._wp !: feeding threshold for microzooplankton 41 REAL(wp), PUBLIC :: resrat = 0.03_wp !: exsudation rate of microzooplankton 42 REAL(wp), PUBLIC :: mzrat = 0.0_wp !: microzooplankton mortality rate 43 REAL(wp), PUBLIC :: grazrat = 3.0_wp !: maximal microzoo grazing rate 44 REAL(wp), PUBLIC :: xkgraz = 20E-6_wp !: non assimilated fraction of P by microzoo 45 REAL(wp), PUBLIC :: unass = 0.3_wp !: Efficicency of microzoo growth 46 REAL(wp), PUBLIC :: sigma1 = 0.6_wp !: Fraction of microzoo excretion as DOM 47 REAL(wp), PUBLIC :: epsher = 0.3_wp !: half sturation constant for grazing 1 44 48 45 49 … … 65 69 INTEGER :: ji, jj, jk 66 70 REAL(wp) :: zcompadi, zcompaz , zcompaph, zcompapoc 67 REAL(wp) :: zgraze , zdenom, z ncratio71 REAL(wp) :: zgraze , zdenom, zdenom2, zncratio 68 72 REAL(wp) :: zfact , zstep, zfood, zfoodlim 69 73 REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotf … … 101 105 ztortz = mzrat * 1.e6 * zfact * trn(ji,jj,jk,jpzoo) 102 106 103 zcompadi = MIN( MAX( ( trn(ji,jj,jk,jpdia) - 1.e-8 ), 0.e0 ), 5.e-7)104 zcompaph = MAX( ( trn(ji,jj,jk,jpphy) - 1.e-8), 0.e0 )105 zcompapoc = MAX( ( trn(ji,jj,jk,jppoc) - 1.e-8), 0.e0 )107 zcompadi = MIN( MAX( ( trn(ji,jj,jk,jpdia) - xthreshdia ), 0.e0 ), xsizedia ) 108 zcompaph = MAX( ( trn(ji,jj,jk,jpphy) - xthreshphy ), 0.e0 ) 109 zcompapoc = MAX( ( trn(ji,jj,jk,jppoc) - xthreshpoc ), 0.e0 ) 106 110 107 111 ! Microzooplankton grazing 108 112 ! ------------------------ 109 zfood = xpref2p * zcompaph + xpref2c * zcompapoc + xpref2d * zcompadi + rtrn113 zfood = xpref2p * zcompaph + xpref2c * zcompapoc + xpref2d * zcompadi 110 114 zfoodlim = MAX( 0. , zfood - xthresh ) 111 zdenom = zfoodlim / zfood / ( xkgraz + zfoodlim ) 112 zgraze = grazrat * zstep * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jpzoo) * zdenom 113 zgrazp = zgraze * xpref2p * zcompaph 114 zgrazm = zgraze * xpref2c * zcompapoc 115 zgrazsd = zgraze * xpref2d * zcompadi 115 zdenom = zfoodlim / ( xkgraz + zfoodlim ) 116 zdenom2 = zdenom / ( zfood + rtrn ) 117 zgraze = grazrat * zstep * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jpzoo) 118 119 zgrazp = zgraze * xpref2p * zcompaph * zdenom2 120 zgrazm = zgraze * xpref2c * zcompapoc * zdenom2 121 zgrazsd = zgraze * xpref2d * zcompadi * zdenom2 116 122 117 123 zgrazpf = zgrazp * trn(ji,jj,jk,jpnfe) / (trn(ji,jj,jk,jpphy) + rtrn) … … 130 136 zgrasrat = zgraztotf / ( zgraztot + rtrn ) 131 137 zncratio = ( xpref2p * zcompaph * quotan(ji,jj,jk) & 132 & + xpref2d * zcompadi * quotad(ji,jj,jk) + xpref2c * zcompapoc ) / zfood138 & + xpref2d * zcompadi * quotad(ji,jj,jk) + xpref2c * zcompapoc ) / ( zfood + rtrn ) 133 139 zepshert = epsher * MIN( 1., zncratio ) 134 140 zepsherv = zepshert * MIN( 1., zgrasrat / ferat3 ) … … 199 205 !! 200 206 !! ** Method : Read the nampiszoo namelist and check the parameters 201 !! called at the first timestep (nit000)207 !! called at the first timestep (nit000) 202 208 !! 203 209 !! ** input : Namelist nampiszoo … … 206 212 207 213 NAMELIST/nampiszoo/ part, grazrat, resrat, mzrat, xpref2c, xpref2p, & 208 & xpref2d, xthresh, xkgraz, epsher, sigma1, unass 214 & xpref2d, xthreshdia, xthreshphy, xthreshpoc, & 215 & xthresh, xkgraz, epsher, sigma1, unass 209 216 210 217 REWIND( numnatp ) ! read numnat … … 215 222 WRITE(numout,*) ' Namelist parameters for microzooplankton, nampiszoo' 216 223 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 217 WRITE(numout,*) ' part of calcite not dissolved in microzoo guts part =', part 218 WRITE(numout,*) ' microzoo preference for POC xpref2c =', xpref2c 219 WRITE(numout,*) ' microzoo preference for nano xpref2p =', xpref2p 220 WRITE(numout,*) ' microzoo preference for diatoms xpref2d =', xpref2d 221 WRITE(numout,*) ' feeding threshold for microzooplankton xthresh =', xthresh 222 WRITE(numout,*) ' exsudation rate of microzooplankton resrat =', resrat 223 WRITE(numout,*) ' microzooplankton mortality rate mzrat =', mzrat 224 WRITE(numout,*) ' maximal microzoo grazing rate grazrat =', grazrat 225 WRITE(numout,*) ' non assimilated fraction of P by microzoo unass =', unass 226 WRITE(numout,*) ' Efficicency of microzoo growth epsher =', epsher 227 WRITE(numout,*) ' Fraction of microzoo excretion as DOM sigma1 =', sigma1 228 WRITE(numout,*) ' half sturation constant for grazing 1 xkgraz =', xkgraz 224 WRITE(numout,*) ' part of calcite not dissolved in microzoo guts part =', part 225 WRITE(numout,*) ' microzoo preference for POC xpref2c =', xpref2c 226 WRITE(numout,*) ' microzoo preference for nano xpref2p =', xpref2p 227 WRITE(numout,*) ' microzoo preference for diatoms xpref2d =', xpref2d 228 WRITE(numout,*) ' diatoms feeding threshold for microzoo xthreshdia =', xthreshdia 229 WRITE(numout,*) ' nanophyto feeding threshold for microzoo xthreshphy =', xthreshphy 230 WRITE(numout,*) ' poc feeding threshold for microzoo xthreshpoc =', xthreshpoc 231 WRITE(numout,*) ' feeding threshold for microzooplankton xthresh =', xthresh 232 WRITE(numout,*) ' exsudation rate of microzooplankton resrat =', resrat 233 WRITE(numout,*) ' microzooplankton mortality rate mzrat =', mzrat 234 WRITE(numout,*) ' maximal microzoo grazing rate grazrat =', grazrat 235 WRITE(numout,*) ' non assimilated fraction of P by microzoo unass =', unass 236 WRITE(numout,*) ' Efficicency of microzoo growth epsher =', epsher 237 WRITE(numout,*) ' Fraction of microzoo excretion as DOM sigma1 =', sigma1 238 WRITE(numout,*) ' half sturation constant for grazing 1 xkgraz =', xkgraz 229 239 ENDIF 230 240 -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zprod.F90
r2823 r2957 33 33 34 34 !! * Shared module variables 35 REAL(wp), PUBLIC :: pislope = 3.0_wp !: 36 REAL(wp), PUBLIC :: pislope2 = 3.0_wp !: 37 REAL(wp), PUBLIC :: excret = 10.e-5_wp !: 38 REAL(wp), PUBLIC :: excret2 = 0.05_wp !: 39 REAL(wp), PUBLIC :: bresp = 0.00333_wp !: 40 REAL(wp), PUBLIC :: chlcnm = 0.033_wp !: 41 REAL(wp), PUBLIC :: chlcdm = 0.05_wp !: 42 REAL(wp), PUBLIC :: chlcmin = 0.00333_wp !: 43 REAL(wp), PUBLIC :: fecnm = 10.E-6_wp !: 44 REAL(wp), PUBLIC :: fecdm = 15.E-6_wp !: 45 REAL(wp), PUBLIC :: grosip = 0.151_wp !: 46 47 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: prmax !: optimal prduction = f(temperature) 35 LOGICAL , PUBLIC :: ln_newprod = .FALSE. 36 REAL(wp), PUBLIC :: pislope = 3.0_wp !: 37 REAL(wp), PUBLIC :: pislope2 = 3.0_wp !: 38 REAL(wp), PUBLIC :: excret = 10.e-5_wp !: 39 REAL(wp), PUBLIC :: excret2 = 0.05_wp !: 40 REAL(wp), PUBLIC :: bresp = 0.00333_wp !: 41 REAL(wp), PUBLIC :: chlcnm = 0.033_wp !: 42 REAL(wp), PUBLIC :: chlcdm = 0.05_wp !: 43 REAL(wp), PUBLIC :: chlcmin = 0.00333_wp !: 44 REAL(wp), PUBLIC :: fecnm = 10.E-6_wp !: 45 REAL(wp), PUBLIC :: fecdm = 15.E-6_wp !: 46 REAL(wp), PUBLIC :: grosip = 0.151_wp !: 47 48 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: prmax !: optimal production = f(temperature) 48 49 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: quotan !: proxy of N quota in Nanophyto 49 50 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: quotad !: proxy of N quota in diatomee 50 51 51 52 REAL(wp) :: r1_rday !: 1 / rday 52 REAL(wp) :: r1_bresp !: 1 / bresp53 53 REAL(wp) :: texcret !: 1 - excret 54 54 REAL(wp) :: texcret2 !: 1 - excret2 … … 139 139 END DO 140 140 141 ! Impact of the day duration on phytoplankton growth 142 DO jk = 1, jpkm1 143 DO jj = 1 ,jpj 144 DO ji = 1, jpi 145 zval = MAX( 1., zstrn(ji,jj) ) 146 zval = 1.5 * zval / ( 12. + zval ) 147 zprbio(ji,jj,jk) = prmax(ji,jj,jk) * zval 148 zprdia(ji,jj,jk) = zprbio(ji,jj,jk) 149 END DO 150 END DO 151 END DO 152 141 IF( ln_newprod ) THEN 142 ! Impact of the day duration on phytoplankton growth 143 DO jk = 1, jpkm1 144 DO jj = 1 ,jpj 145 DO ji = 1, jpi 146 zval = MAX( 1., zstrn(ji,jj) ) 147 zval = 1.5 * zval / ( 12. + zval ) 148 zprbio(ji,jj,jk) = prmax(ji,jj,jk) * zval 149 zprdia(ji,jj,jk) = zprbio(ji,jj,jk) 150 END DO 151 END DO 152 END DO 153 ENDIF 154 155 ! Maximum light intensity 153 156 WHERE( zstrn(:,:) < 1.e0 ) zstrn(:,:) = 24. 154 157 zstrn(:,:) = 24. / zstrn(:,:) 155 158 156 !CDIR NOVERRCHK 157 DO jk = 1, jpkm1 158 !CDIR NOVERRCHK 159 DO jj = 1, jpj 160 !CDIR NOVERRCHK 161 DO ji = 1, jpi 162 163 ! Computation of the P-I slope for nanos and diatoms 164 IF( etot(ji,jj,jk) > 1.E-3 ) THEN 165 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 166 zadap = ztn / ( 2.+ ztn ) 167 168 zconctemp = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - 5e-7 ) 169 zconctemp2 = trn(ji,jj,jk,jpdia) - zconctemp 170 171 znanotot = enano(ji,jj,jk) * zstrn(ji,jj) 172 zdiattot = ediat(ji,jj,jk) * zstrn(ji,jj) 173 zfact = EXP( -0.21 * znanotot ) 174 175 zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * zfact ) & 176 & * trn(ji,jj,jk,jpnch) /( trn(ji,jj,jk,jpphy) * 12. + rtrn) 177 178 zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) & 179 & / ( trn(ji,jj,jk,jpdia) + rtrn ) & 180 & * trn(ji,jj,jk,jpdch) /( trn(ji,jj,jk,jpdia) * 12. + rtrn) 181 182 ! Computation of production function for Chlorophyll 183 !-------------------------------------------------- 184 zpislopen = zpislopead (ji,jj,jk) / ( prmax(ji,jj,jk) * rday + rtrn ) 185 zpislope2n = zpislopead2(ji,jj,jk) / ( prmax(ji,jj,jk) * rday + rtrn ) 186 zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen * znanotot ) ) 187 zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislope2n * zdiattot ) ) 188 189 ! Computation of production function for Carbon 190 ! --------------------------------------------- 191 zpislopen = zpislopead (ji,jj,jk) / ( ( r1_rday + r1_bresp / chlcnm ) * rday + rtrn) 192 zpislope2n = zpislopead2(ji,jj,jk) / ( ( r1_rday + r1_bresp / chlcdm ) * rday + rtrn) 193 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * znanotot ) ) 194 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpislope2n * zdiattot ) ) 195 ENDIF 196 END DO 197 END DO 198 END DO 159 IF( ln_newprod ) THEN 160 !CDIR NOVERRCHK 161 DO jk = 1, jpkm1 162 !CDIR NOVERRCHK 163 DO jj = 1, jpj 164 !CDIR NOVERRCHK 165 DO ji = 1, jpi 166 167 ! Computation of the P-I slope for nanos and diatoms 168 IF( etot(ji,jj,jk) > 1.E-3 ) THEN 169 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 170 zadap = ztn / ( 2.+ ztn ) 171 172 zconctemp = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - 5e-7 ) 173 zconctemp2 = trn(ji,jj,jk,jpdia) - zconctemp 174 175 znanotot = enano(ji,jj,jk) * zstrn(ji,jj) 176 zdiattot = ediat(ji,jj,jk) * zstrn(ji,jj) 177 178 zfact = EXP( -0.21 * znanotot ) 179 zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * zfact ) & 180 & * trn(ji,jj,jk,jpnch) /( trn(ji,jj,jk,jpphy) * 12. + rtrn) 181 182 zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) / ( trn(ji,jj,jk,jpdia) + rtrn ) & 183 & * trn(ji,jj,jk,jpdch) /( trn(ji,jj,jk,jpdia) * 12. + rtrn) 184 185 ! Computation of production function for Carbon 186 ! --------------------------------------------- 187 zpislopen = zpislopead (ji,jj,jk) / ( ( r1_rday + bresp * r1_day / chlcnm ) * rday + rtrn) 188 zpislope2n = zpislopead2(ji,jj,jk) / ( ( r1_rday + bresp * r1_day / chlcdm ) * rday + rtrn) 189 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * znanotot ) ) 190 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpislope2n * zdiattot ) ) 191 192 ! Computation of production function for Chlorophyll 193 !-------------------------------------------------- 194 zmaxday = 1._wp / ( prmax(ji,jj,jk) * rday + rtrn ) 195 zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopead (ji,jj,jk) * zmaxday * znanotot ) ) 196 zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopead2(ji,jj,jk) * zmaxday * zdiattot ) ) 197 ENDIF 198 END DO 199 END DO 200 END DO 201 ELSE 202 !CDIR NOVERRCHK 203 DO jk = 1, jpkm1 204 !CDIR NOVERRCHK 205 DO jj = 1, jpj 206 !CDIR NOVERRCHK 207 DO ji = 1, jpi 208 209 ! Computation of the P-I slope for nanos and diatoms 210 IF( etot(ji,jj,jk) > 1.E-3 ) THEN 211 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 212 zadap = ztn / ( 2.+ ztn ) 213 214 zfact = EXP( -0.21 * enano(ji,jj,jk) ) 215 zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * zfact ) 216 zpislopead2(ji,jj,jk) = pislope2 217 218 zpislopen = zpislopead(ji,jj,jk) * trn(ji,jj,jk,jpnch) & 219 & / ( trn(ji,jj,jk,jpphy) * 12. + rtrn ) & 220 & / ( prmax(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn ) 221 222 zpislope2n = zpislopead2(ji,jj,jk) * trn(ji,jj,jk,jpdch) & 223 & / ( trn(ji,jj,jk,jpdia) * 12. + rtrn ) & 224 & / ( prmax(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn ) 225 226 ! Computation of production function for Carbon 227 ! --------------------------------------------- 228 zprbio(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 229 zprdia(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislope2n * ediat(ji,jj,jk) ) ) 230 231 ! Computation of production function for Chlorophyll 232 !-------------------------------------------------- 233 zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) * zstrn(ji,jj) ) ) 234 zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislope2n * ediat(ji,jj,jk) * zstrn(ji,jj) ) ) 235 ENDIF 236 END DO 237 END DO 238 END DO 239 ENDIF 199 240 200 241 ! Computation of a proxy of the N/C ratio … … 237 278 END DO 238 279 239 ! Computation of the limitation term due to 240 ! A mixed layer deeper than the euphotic depth 280 ! Computation of the limitation term due to a mixed layer deeper than the euphotic depth 241 281 DO jj = 1, jpj 242 282 DO ji = 1, jpi … … 262 302 END DO 263 303 304 IF( ln_newprod ) THEN 305 zprochln(:,:,:) = chlcmin * 12. * zprorca (:,:,:) 306 zprochld(:,:,:) = chlcmin * 12. * zprorcad(:,:,:) 307 ELSE 308 zprochln(:,:,:) = 0._wp 309 zprochld(:,:,:) = 0._wp 310 ENDIF 311 264 312 !CDIR NOVERRCHK 265 313 DO jk = 1, jpkm1 … … 276 324 ! 277 325 zprod = rday * zprorca(ji,jj,jk) * zprnch(ji,jj,jk) * xlimphy(ji,jj,jk) 278 zprochln(ji,jj,jk) = chlcmin * 12. * zprorca(ji,jj,jk)279 326 zprochln(ji,jj,jk) = zprochln(ji,jj,jk) + chlcnm * 12. * zprod / ( zpislopead(ji,jj,jk) * zetot2 +rtrn) 280 327 ! … … 304 351 ! 305 352 zprod = rday * zprorcad(ji,jj,jk) * zprdch(ji,jj,jk) * xlimdia(ji,jj,jk) 306 zprochld(ji,jj,jk) = chlcmin * 12. * zprorcad(ji,jj,jk)307 353 zprochld(ji,jj,jk) = zprochld(ji,jj,jk) + chlcdm * 12. * zprod / ( zpislopead2(ji,jj,jk) * zetot2 +rtrn ) 308 354 ! … … 348 394 349 395 ! Total primary production per year 350 IF( lk_degrad ) THEN 351 tpp = tpp + glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) * facvol(:,:,:) )352 ELSE 353 tpp = tpp + glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:))354 ENDIF 396 #if defined key_degrad 397 tpp = tpp + glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) * facvol(:,:,:) ) 398 #else 399 tpp = tpp + glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) ) 400 #endif 355 401 356 402 IF( kt == nitend .AND. jnt == nrdttrc .AND. lwp ) THEN … … 411 457 !!---------------------------------------------------------------------- 412 458 ! 413 NAMELIST/nampisprod/ pislope, pislope2, bresp, excret, excret2, &459 NAMELIST/nampisprod/ pislope, pislope2, ln_newprod, bresp, excret, excret2, & 414 460 & chlcnm, chlcdm, chlcmin, fecnm, fecdm, grosip 415 461 !!---------------------------------------------------------------------- … … 422 468 WRITE(numout,*) ' Namelist parameters for phytoplankton growth, nampisprod' 423 469 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 424 WRITE(numout,*) ' mean Si/C ratio grosip =', grosip 425 WRITE(numout,*) ' P-I slope pislope =', pislope 426 WRITE(numout,*) ' excretion ratio of nanophytoplankton excret =', excret 427 WRITE(numout,*) ' excretion ratio of diatoms excret2 =', excret2 428 WRITE(numout,*) ' basal respiration in phytoplankton bresp =', bresp 429 WRITE(numout,*) ' P-I slope for diatoms pislope2 =', pislope2 430 WRITE(numout,*) ' Minimum Chl/C in nanophytoplankton chlcnm =', chlcnm 431 WRITE(numout,*) ' Minimum Chl/C in diatoms chlcdm =', chlcdm 432 WRITE(numout,*) ' Maximum Chl/C in phytoplankton chlcmin =', chlcmin 433 WRITE(numout,*) ' Maximum Fe/C in nanophytoplankton fecnm =', fecnm 434 WRITE(numout,*) ' Minimum Fe/C in diatoms fecdm =', fecdm 470 WRITE(numout,*) ' Enable new parame. of production (T/F) ln_newprod =', ln_newprod 471 WRITE(numout,*) ' mean Si/C ratio grosip =', grosip 472 WRITE(numout,*) ' P-I slope pislope =', pislope 473 WRITE(numout,*) ' excretion ratio of nanophytoplankton excret =', excret 474 WRITE(numout,*) ' excretion ratio of diatoms excret2 =', excret2 475 IF( ln_newprod ) 476 WRITE(numout,*) ' basal respiration in phytoplankton bresp =', bresp 477 WRITE(numout,*) ' Maximum Chl/C in phytoplankton chlcmin =', chlcmin 478 ENDIF 479 WRITE(numout,*) ' P-I slope for diatoms pislope2 =', pislope2 480 WRITE(numout,*) ' Minimum Chl/C in nanophytoplankton chlcnm =', chlcnm 481 WRITE(numout,*) ' Minimum Chl/C in diatoms chlcdm =', chlcdm 482 WRITE(numout,*) ' Maximum Fe/C in nanophytoplankton fecnm =', fecnm 483 WRITE(numout,*) ' Minimum Fe/C in diatoms fecdm =', fecdm 435 484 ENDIF 436 485 ! 437 486 r1_rday = 1._wp / rday 438 r1_bresp = bresp * r1_rday439 487 texcret = 1._wp - excret 440 488 texcret2 = 1._wp - excret2 -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsed.F90
r2852 r2957 250 250 ! ------------------------------------------------------------- 251 251 252 zdenitot = glob_sum( ( denitr(:,:,:) * rdenit + denitnh4(:,:,:) * rdenita ) * cvol(:,:,:) * xnegtr(:,:,:) ) 252 zdenitot = glob_sum( ( denitr(:,:,:) * rdenit + denitnh4(:,:,:) * rdenita ) * & 253 & e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) * xnegtr(:,:,:) ) 253 254 254 255 ! Potential nitrogen fixation dependant on temperature and iron … … 275 276 END DO 276 277 277 znitrpottot = glob_sum( znitrpot(:,:,:) * cvol(:,:,:) )278 znitrpottot = glob_sum( znitrpot(:,:,:) * e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) ) 278 279 279 280 ! Nitrogen change due to nitrogen fixation … … 355 356 DO jj = 1, jpj 356 357 DO ji = 1, jpi 357 zcoef = ryyss * cvol(ji,jj,1)358 zcoef = ryyss * e1e2t(ji,jj) * fse3t(ji,jj,1) * tmask(ji,jj,1) 358 359 cotdep(ji,jj) = sf_riverdic(1)%fnow(ji,jj,1) * 1E9 / ( 12. * zcoef + rtrn ) 359 360 rivinp(ji,jj) = ( sf_riverdic(1)%fnow(ji,jj,1) + sf_riverdoc(1)%fnow(ji,jj,1) ) * 1E9 / ( 31.6* zcoef + rtrn ) -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90
r2823 r2957 39 39 !!* Damping 40 40 LOGICAL :: ln_pisdmp !: relaxation or not of nutrients to a mean value 41 INTEGER :: nn_pisdmp !: frequency of relaxation or not of nutrients to a mean value 41 42 LOGICAL :: ln_pisclo !: Restoring or not of nutrients to initial value 42 43 !: on close seas -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/trcnam_pisces.F90
r2823 r2957 67 67 NAMELIST/nampisdia/ nn_writedia, pisdia3d, pisdia2d ! additional diagnostics 68 68 #endif 69 NAMELIST/nampisdmp/ ln_pisdmp, ln_pisclo69 NAMELIST/nampisdmp/ ln_pisdmp, nn_pisdmp, ln_pisclo 70 70 71 71 !!---------------------------------------------------------------------- … … 188 188 WRITE(numout,*) 189 189 WRITE(numout,*) ' Namelist : nampisdmp' 190 WRITE(numout,*) ' Relaxation of tracer to glodap mean value ln_pisdmp =', ln_pisdmp 190 WRITE(numout,*) ' Relaxation of tracer to glodap mean value ln_pisdmp =', ln_pisdmp 191 WRITE(numout,*) ' Frequency of Relaxation nn_pisdmp =', nn_pisdmp 191 192 WRITE(numout,*) ' Restoring of tracer to initial value on closed seas ln_pisclo =', ln_pisclo 192 193 WRITE(numout,*) ' ' -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/trcrst_pisces.F90
r2823 r2957 44 44 ! 45 45 IF( ln_trcdta .AND. ln_pisclo ) CALL pis_dmp_clo ! restoring of nutrients on close seas 46 IF( ln_pisdmp ) CALL pis_dmp_ini ! relaxation of some tracers47 46 ! 48 47 IF(lwp) WRITE(numout,*) … … 98 97 99 98 END SUBROUTINE trc_rst_wri_pisces 100 101 SUBROUTINE pis_dmp_ini102 !!----------------------------------------------------------------------103 !! *** pis_dmp_ini ***104 !!105 !! ** purpose : Relaxation of some tracers106 !!----------------------------------------------------------------------107 REAL(wp) :: alkmean = 2426. ! mean value of alkalinity ( Glodap ; for Goyet 2391. )108 REAL(wp) :: po4mean = 2.165 ! mean value of phosphates109 REAL(wp) :: no3mean = 30.90 ! mean value of nitrate110 REAL(wp) :: silmean = 91.51 ! mean value of silicate111 112 REAL(wp) :: zarea, zalksum, zpo4sum, zno3sum, zsilsum113 114 115 IF(lwp) WRITE(numout,*)116 117 IF( cp_cfg == "orca" .AND. .NOT. lk_c1d ) THEN ! ORCA condiguration (not 1D) !118 ! ! --------------------------- !119 ! set total alkalinity, phosphate, nitrate & silicate120 121 zarea = 1. / areatot * 1.e6122 IF( lk_degrad ) THEN123 zalksum = glob_sum( trn(:,:,:,jptal) * cvol(:,:,:) * facvol(:,:,:) ) * zarea124 zpo4sum = glob_sum( trn(:,:,:,jppo4) * cvol(:,:,:) * facvol(:,:,:) ) * zarea / 122.125 zno3sum = glob_sum( trn(:,:,:,jpno3) * cvol(:,:,:) * facvol(:,:,:) ) * zarea / 7.6126 zsilsum = glob_sum( trn(:,:,:,jpsil) * cvol(:,:,:) * facvol(:,:,:) ) * zarea127 ELSE128 zalksum = glob_sum( trn(:,:,:,jptal) * cvol(:,:,:) ) * zarea129 zpo4sum = glob_sum( trn(:,:,:,jppo4) * cvol(:,:,:) ) * zarea / 122.130 zno3sum = glob_sum( trn(:,:,:,jpno3) * cvol(:,:,:) ) * zarea / 7.6131 zsilsum = glob_sum( trn(:,:,:,jpsil) * cvol(:,:,:) ) * zarea132 ENDIF133 134 IF(lwp) WRITE(numout,*) ' TALK mean : ', zalksum135 trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / zalksum136 137 IF(lwp) WRITE(numout,*) ' PO4 mean : ', zpo4sum138 trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / zpo4sum139 140 IF(lwp) WRITE(numout,*) ' NO3 mean : ', zno3sum141 trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / zno3sum142 143 IF(lwp) WRITE(numout,*) ' SiO3 mean : ', zsilsum144 trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * silmean / zsilsum )145 !146 ENDIF147 148 !#if defined key_kriest149 ! !! Initialize number of particles from a standart restart file150 ! !! The name of big organic particles jpgoc has been only change151 ! !! and replace by jpnum but the values here are concentration152 ! trn(:,:,:,jppoc) = trn(:,:,:,jppoc) + trn(:,:,:,jpnum)153 ! trn(:,:,:,jpnum) = trn(:,:,:,jppoc) / ( 6. * xkr_massp )154 !#endif155 156 END SUBROUTINE pis_dmp_ini157 99 158 100 SUBROUTINE pis_dmp_clo -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90
r2823 r2957 68 68 !!--------------------------------------------------------------------- 69 69 70 IF( kt == nit000 ) CALL trc_sms_pisces_init ! Initialization (first time-step only)71 72 70 IF( wrk_in_use(3,1) ) THEN 73 71 CALL ctl_stop('trc_sms_pisces : requested workspace array unavailable.') ; RETURN 74 72 ENDIF 73 74 IF( kt == nit000 ) CALL trc_sms_pisces_init ! Initialization (first time-step only) 75 IF( ln_rsttr .AND. ln_pisdmp .AND. MOD( kt - 1, nn_pisdmp ) == 0 ) CALL trc_sms_pisces_dmp( kt ) ! Relaxation of some tracers 76 75 77 76 78 IF( ndayflxtr /= nday_year ) THEN ! New days … … 127 129 128 130 END SUBROUTINE trc_sms_pisces 131 132 SUBROUTINE trc_sms_pisces_dmp( kt ) 133 !!---------------------------------------------------------------------- 134 !! *** trc_sms_pisces_dmp *** 135 !! 136 !! ** purpose : Relaxation of some tracers 137 !!---------------------------------------------------------------------- 138 ! 139 INTEGER, INTENT( in ) :: kt ! time step 140 ! 141 REAL(wp) :: alkmean = 2426. ! mean value of alkalinity ( Glodap ; for Goyet 2391. ) 142 REAL(wp) :: po4mean = 2.165 ! mean value of phosphates 143 REAL(wp) :: no3mean = 30.90 ! mean value of nitrate 144 REAL(wp) :: silmean = 91.51 ! mean value of silicate 145 146 REAL(wp) :: zarea, zalksum, zpo4sum, zno3sum, zsilsum 147 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zvolume ! volume of ocean 148 !!--------------------------------------------------------------------- 149 150 151 IF(lwp) WRITE(numout,*) 152 IF(lwp) WRITE(numout,*) ' trc_sms_pisces_dmp : Relaxation of nutrients at time-step kt = ', kt 153 IF(lwp) WRITE(numout,*) 154 155 IF( cp_cfg == "orca" .AND. .NOT. lk_c1d ) THEN ! ORCA condiguration (not 1D) ! 156 ! ! --------------------------- ! 157 ! set total alkalinity, phosphate, nitrate & silicate 158 ALLOCATE( zvolume(ji,jj,jk) ) 159 ! ! masked grid volume 160 zvolume(:,:,:) = e1e2t(:,:) * fse3t(:,:,jk) * tmask(:,:,jk) 161 #if defined key_degrad 162 zvolume(:,:,:) = zvolume(:,:,:) * facvol(:,:,:) 163 #endif 164 zarea = 1._wp / glob_sum( zvolume(:,:,:) ) * 1e6 165 166 zalksum = glob_sum( trn(:,:,:,jptal) * zvolume(:,:,:) ) * zarea 167 zpo4sum = glob_sum( trn(:,:,:,jppo4) * zvolume(:,:,:) ) * zarea / 122. 168 zno3sum = glob_sum( trn(:,:,:,jpno3) * zvolume(:,:,:) ) * zarea / 7.6 169 zsilsum = glob_sum( trn(:,:,:,jpsil) * zvolume(:,:,:) ) * zarea 170 171 IF(lwp) WRITE(numout,*) ' TALK mean : ', zalksum 172 trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / zalksum 173 174 IF(lwp) WRITE(numout,*) ' PO4 mean : ', zpo4sum 175 trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / zpo4sum 176 177 IF(lwp) WRITE(numout,*) ' NO3 mean : ', zno3sum 178 trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / zno3sum 179 180 IF(lwp) WRITE(numout,*) ' SiO3 mean : ', zsilsum 181 trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * silmean / zsilsum ) 182 ! 183 ENDIF 184 185 END SUBROUTINE trc_sms_pisces_dmp 129 186 130 187 SUBROUTINE trc_sms_pisces_init -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90
r2715 r2957 137 137 DO jj = 1, jpj 138 138 DO ji = 1, jpi 139 zvolk = cvol(ji,jj,jk)139 zvolk = e1e2t(ji,jj) * fse3t(ji,jj,jk) * tmask(ji,jj,jk) 140 140 # if defined key_degrad 141 141 zvolk = zvolk * facvol(ji,jj,jk) -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/trc.F90
r2715 r2957 38 38 REAL(wp), PUBLIC :: trai !: initial total tracer 39 39 REAL(wp), PUBLIC :: areatot !: total volume 40 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:) :: cvol !: volume correction -degrad option-41 40 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:,:) :: trn !: traceur concentration for now time step 42 41 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:,:) :: tra !: traceur concentration for next time step … … 113 112 !!------------------------------------------------------------------- 114 113 ! 115 ALLOCATE( cvol(jpi,jpj,jpk ) , & 116 & trn (jpi,jpj,jpk,jptra) , & 114 ALLOCATE( trn (jpi,jpj,jpk,jptra) , & 117 115 & tra (jpi,jpj,jpk,jptra) , & 118 116 & trb (jpi,jpj,jpk,jptra) , & -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/trcini.F90
r2715 r2957 56 56 !! or read data or analytical formulation 57 57 !!--------------------------------------------------------------------- 58 INTEGER :: jk, jn ! dummy loop indices 59 CHARACTER (len=25) :: charout 58 ! 59 INTEGER :: jk, jn ! dummy loop indices 60 REAL(wp) :: zareatot 61 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zvolume ! volume of ocean 62 CHARACTER (len=25) :: charout 60 63 !!--------------------------------------------------------------------- 61 64 … … 66 69 CALL top_alloc() ! allocate TOP arrays 67 70 68 ! ! masked grid volume 69 DO jk = 1, jpk 70 cvol(:,:,jk) = e1t(:,:) * e2t(:,:) * fse3t(:,:,jk) * tmask(:,:,jk) 71 END DO 72 73 ! ! total volume of the ocean 74 #if ! defined key_degrad 75 areatot = glob_sum( cvol(:,:,:) ) 76 #else 77 areatot = glob_sum( cvol(:,:,:) * facvol(:,:,:) ) ! degrad option: reduction by facvol 78 #endif 71 ALLOCATE( zvolume(ji,jj,jk) ) 79 72 80 73 CALL trc_nam ! read passive tracers namelists … … 146 139 147 140 148 ! 149 trai = 0._wp ! Computation content of all tracers 141 ! ! masked grid volume 142 zvolume(:,:,:) = e1e2t(:,:) * fse3t(:,:,jk) * tmask(:,:,jk) 143 #if defined key_degrad 144 zvolume(:,:,:) = zvolume(:,:,:) * facvol(:,:,:) 145 #endif 146 zareatot = glob_sum( zvolume(:,:,:) ) ! total volume of ocean 147 148 trai = 0._wp ! initial content of all tracers 150 149 DO jn = 1, jptra 151 #if ! defined key_degrad 152 trai = trai + glob_sum( trn(:,:,:,jn) * cvol(:,:,:) ) 153 #else 154 trai = trai + glob_sum( trn(:,:,:,jn) * cvol(:,:,:) * facvol(:,:,:) ) ! degrad option: reduction by facvol 155 #endif 150 trai = trai + glob_sum( trn(:,:,:,jn) * zvolume(:,:,:) ) 156 151 END DO 157 152 … … 160 155 WRITE(numout,*) 161 156 WRITE(numout,*) ' *** Total number of passive tracer jptra = ', jptra 162 WRITE(numout,*) ' *** Total volume of ocean = ', areatot157 WRITE(numout,*) ' *** Total volume of ocean = ', zareatot 163 158 WRITE(numout,*) ' *** Total inital content of all tracers = ', trai 164 159 WRITE(numout,*) -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/trcrst.F90
r2715 r2957 299 299 DO jn = 1, jptra 300 300 # if defined key_degrad 301 zdiag_var = glob_sum( trn(:,:,:,jn) * cvol(:,:,:) * facvol(:,:,:) )301 zdiag_var = glob_sum( trn(:,:,:,jn) * e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) * facvol(:,:,:) ) 302 302 # else 303 zdiag_var = glob_sum( trn(:,:,:,jn) * cvol(:,:,:))303 zdiag_var = glob_sum( trn(:,:,:,jn) * e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) ) 304 304 # endif 305 305 zdiag_varmin = MINVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) )
Note: See TracChangeset
for help on using the changeset viewer.