Changeset 4529 for trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90
- Timestamp:
- 2014-03-15T12:00:04+01:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90
r4521 r4529 71 71 INTEGER :: ji, jj, jk 72 72 REAL(wp) :: zcompadi, zcompaph, zcompapoc, zcompaz, zcompam 73 REAL(wp) :: zgraze2 , zdenom, zdenom2 , zncratio73 REAL(wp) :: zgraze2 , zdenom, zdenom2 74 74 REAL(wp) :: zfact , zstep, zfood, zfoodlim, zproport 75 75 REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2 76 REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztot f77 REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zgrasrat 76 REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotn, zgraztotf 77 REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zgrasrat, zgrasratn 78 78 #if defined key_kriest 79 79 REAL znumpoc … … 98 98 DO jj = 1, jpj 99 99 DO ji = 1, jpi 100 zcompam = MAX( ( trn(ji,jj,jk,jpmes) - 1.e- 8), 0.e0 )100 zcompam = MAX( ( trn(ji,jj,jk,jpmes) - 1.e-9 ), 0.e0 ) 101 101 # if defined key_degrad 102 102 zstep = xstep * facvol(ji,jj,jk) … … 116 116 ztortz2 = mzrat2 * 1.e6 * zfact * trn(ji,jj,jk,jpmes) 117 117 ! 118 119 118 zcompadi = MAX( ( trn(ji,jj,jk,jpdia) - xthresh2dia ), 0.e0 ) 120 119 zcompaz = MAX( ( trn(ji,jj,jk,jpzoo) - xthresh2zoo ), 0.e0 ) 121 zcompaph = MAX( ( trn(ji,jj,jk,jpphy) - xthresh2phy ), 0.e0 ) 120 ! Size effect of nanophytoplankton on grazing : the smaller it is, the less prone 121 ! it is to predation by mesozooplankton 122 ! ------------------------------------------------------------------------------- 123 zcompaph = MAX( ( trn(ji,jj,jk,jpphy) - xthresh2phy ), 0.e0 ) & 124 & * MIN(1., MAX( 0., ( quotan(ji,jj,jk) - 0.2) / 0.3 ) ) 122 125 zcompapoc = MAX( ( trn(ji,jj,jk,jppoc) - xthresh2poc ), 0.e0 ) 123 126 … … 139 142 ! Mesozooplankton flux feeding on GOC 140 143 ! ---------------------------------- 144 ! ---------------------------------- 141 145 # if ! defined key_kriest 142 zgrazffeg = grazflux * zstep * wsbio4(ji,jj,jk) * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) 146 zgrazffeg = grazflux * zstep * wsbio4(ji,jj,jk) & 147 & * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) 143 148 zgrazfffg = zgrazffeg * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 144 149 # endif 145 zgrazffep = grazflux * zstep * wsbio3(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) 150 zgrazffep = grazflux * zstep * wsbio3(ji,jj,jk) & 151 & * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) 146 152 zgrazfffp = zgrazffep * trn(ji,jj,jk,jpsfe) / (trn(ji,jj,jk,jppoc) + rtrn) 147 153 ! … … 150 156 ! Compute the proportion of filter feeders 151 157 zproport = (zgrazffep + zgrazffeg)/(rtrn + zgraztot) 152 ! Compute fractionation of aggregates. It is assumed that diatoms based aggregates are more prone to fractionation 158 ! Compute fractionation of aggregates. It is assumed that 159 ! diatoms based aggregates are more prone to fractionation 153 160 ! since they are more porous (marine snow instead of fecal pellets) 154 161 zratio = trn(ji,jj,jk,jpgsi) / ( trn(ji,jj,jk,jpgoc) + rtrn ) 155 162 zratio2 = zratio * zratio 156 zfrac = zproport * zgrazffeg * ( 0.1 + 3.9 * zratio2 / ( 1.**2 + zratio2 ) ) 157 163 zfrac = zproport * grazflux * zstep * wsbio4(ji,jj,jk) & 164 & * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) & 165 & * ( 0.1 + 3.9 * zratio2 / ( 1.**2 + zratio2 ) ) 158 166 zfracfe = zfrac * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 159 167 … … 163 171 zgrazfffg = zproport * zgrazfffg 164 172 zgraztot = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 173 zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk) & 174 & + zgrazpoc + zgrazffep + zgrazffeg 165 175 zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg 166 176 # else … … 171 181 zgrazfffp = zproport * zgrazfffp 172 182 zgraztot = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep 183 zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk) + zgrazpoc + zgrazffep 173 184 zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp 174 185 # endif … … 179 190 ! Mesozooplankton efficiency 180 191 ! -------------------------- 181 zgrasrat = zgraztotf / ( zgraztot + rtrn ) 182 zncratio = ( xprefc * zcompadi * quotad(ji,jj,jk) & 183 & + xprefp * zcompaph * quotan(ji,jj,jk) & 184 & + xprefz * zcompaz & 185 & + xprefpoc * zcompapoc ) / ( zfood + rtrn ) 186 zepshert = epsher2 * MIN( 1., zncratio ) 187 zepsherv = zepshert * MIN( 1., zgrasrat / ferat3 ) 188 zgrarem2 = zgraztot * ( 1. - zepsherv - unass2 ) + zrespz2 & 189 & + ( 1. - zepsherv - unass2 ) /( 1. - zepsherv ) * ztortz2 190 zgrafer2 = zgraztot * MAX( 0. , ( 1. - unass2 ) * zgrasrat - ferat3 * zepsherv ) & 191 & + ferat3 * ( zrespz2 + ( 1. - zepsherv - unass2 ) /( 1. - zepsherv ) * ztortz2 ) 192 zgrasrat = ( zgraztotf +rtrn )/ ( zgraztot + rtrn ) 193 zgrasratn = ( zgraztotn +rtrn )/ ( zgraztot + rtrn ) 194 zepshert = MIN( 1., zgrasratn, zgrasrat / ferat3) 195 zepsherv = zepshert * MIN( epsher2, (1. - unass2) * zgrasrat / ferat3, (1. - unass2) * zgrasratn ) 196 zgrarem2 = zgraztot * ( 1. - zepsherv - unass2 ) & 197 & + ( 1. - epsher2 - unass2 ) / ( 1. - epsher2 ) * ztortz2 198 zgrafer2 = zgraztot * MAX( 0. , ( 1. - unass2 ) * zgrasrat - ferat3 * zepsherv ) & 199 & + ferat3 * ( ( 1. - epsher2 - unass2 ) /( 1. - epsher2 ) * ztortz2 ) 192 200 zgrapoc2 = zgraztot * unass2 193 201 … … 215 223 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazf 216 224 225 ! calcite production 217 226 zprcaca = xfracal(ji,jj,jk) * zgrazn 218 ! calcite production219 227 prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo) 220 228 ! … … 224 232 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 225 233 #if defined key_kriest 226 znumpoc = trn(ji,jj,jk,jpnum) / ( trn(ji,jj,jk,jppoc) + rtrn ) 227 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffep + zgrapoc2 228 tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc + zgrapoc2 * xkr_dmeso & 229 & + zmortzgoc * xkr_dmeso - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn ) 230 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz2 - zgrazfffp - zgrazpof + zgraztotf * unass2 234 znumpoc = trn(ji,jj,jk,jpnum) / ( trn(ji,jj,jk,jppoc) + rtrn ) 235 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffep + zgrapoc2 236 tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc + zgrapoc2 * xkr_dmeso & 237 & + zmortzgoc * xkr_dmeso - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn ) 238 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortzgoc - zgrazfffp - zgrazpof & 239 & + zgraztotf * unass2 231 240 #else 232 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac 233 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac 234 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe 235 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg + zgraztotf * unass2 - zfracfe 241 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac 242 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac 243 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe 244 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg & 245 & + zgraztotf * unass2 - zfracfe 236 246 #endif 237 247 END DO
Note: See TracChangeset
for help on using the changeset viewer.