- Timestamp:
- 2011-10-27T14:16:04+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_LOCEAN_2011/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcbio.F90
r2977 r3010 108 108 ENDIF 109 109 110 DO jk = 1, jpkm1 111 ! 110 ! ! -------------------------- ! 111 DO jk = 1, jpkbm1 ! Upper ocean (bio-layers) ! 112 ! ! -------------------------- ! 112 113 DO jj = 2, jpjm1 113 114 DO ji = fs_2, fs_jpim1 … … 122 123 znh4 = MAX( 0.e0, trn(ji,jj,jk,jp_lob_nh4) ) 123 124 zdom = MAX( 0.e0, trn(ji,jj,jk,jp_lob_dom) ) 124 ! ! -------------------------- ! 125 IF( jk <= jpkbm1 ) THEN ! Upper ocean (bio-layers) ! 126 ! ! -------------------------- ! 127 ! Limitations 128 zlt = 1. 129 zle = 1. - EXP( -xpar(ji,jj,jk) / aki / zlt ) 130 ! psinut,akno3,aknh4 added by asklod AS Kremeur 2005-03 131 zlno3 = zno3 * EXP( -psinut * znh4 ) / ( akno3 + zno3 ) 132 zlnh4 = znh4 / (znh4+aknh4) 133 134 ! sinks and sources 135 ! phytoplankton production and exsudation 136 zno3phy = tmumax * zle * zlt * zlno3 * zphy 137 znh4phy = tmumax * zle * zlt * zlnh4 * zphy 138 139 ! fphylab added by asklod AS Kremeur 2005-03 140 zphydom = rgamma * (1 - fphylab) * (zno3phy + znh4phy) 141 zphynh4 = rgamma * fphylab * (zno3phy + znh4phy) 142 143 ! zooplankton production 144 ! preferences 145 zppz = rppz 146 zpdz = 1. - rppz 147 zpppz = ( zppz * zphy ) / ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 ) 148 zppdz = ( zpdz * zdet ) / ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 ) 149 zfood = zpppz * zphy + zppdz * zdet 150 ! filtration 151 zfilpz = taus * zpppz / (aks + zfood) 152 zfildz = taus * zppdz / (aks + zfood) 153 ! grazing zphyzoo = zfilpz * zphy * zzoo 154 zdetzoo = zfildz * zdet * zzoo 155 156 ! fecal pellets production 157 zzoodet = rpnaz * zphyzoo + rdnaz * zdetzoo 158 159 ! zooplankton liquide excretion 160 zzoonh4 = tauzn * fzoolab * zzoo 161 zzoodom = tauzn * (1 - fzoolab) * zzoo 162 163 ! mortality 164 ! phytoplankton mortality 165 zphydet = tmminp * zphy 166 167 ! zooplankton mortality 168 ! closure : flux fbod is redistributed below level jpkbio 169 zzoobod = tmminz * zzoo * zzoo 170 fbod(ji,jj) = fbod(ji,jj) + (1-fdbod) * zzoobod * fse3t(ji,jj,jk) 171 zboddet = fdbod * zzoobod 172 173 ! detritus and dom breakdown 174 zdetnh4 = taudn * fdetlab * zdet 175 zdetdom = taudn * (1 - fdetlab) * zdet 176 177 zdomnh4 = taudomn * zdom 178 179 ! flux added to express how the excess of nitrogen from 180 ! PHY, ZOO and DET to DOM goes directly to NH4 (flux of ajustment) 181 zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom) 182 183 ! Nitrification 184 znh4no3 = taunn * znh4 185 ! ! -------------------------- ! 186 ELSE ! Lower ocean ! 187 ! ! -------------------------- ! 188 ! Limitations 189 zlt = 0.e0 190 zle = 0.e0 191 zlno3 = 0.e0 192 zlnh4 = 0.e0 193 194 ! sinks and sources 195 ! phytoplankton production and exsudation 196 zno3phy = 0.e0 197 znh4phy = 0.e0 198 zphydom = 0.e0 199 zphynh4 = 0.e0 200 201 ! zooplankton production 202 zphyzoo = 0.e0 ! grazing 203 zdetzoo = 0.e0 204 205 zzoodet = 0.e0 ! fecal pellets production 206 207 zzoonh4 = tauzn * fzoolab * zzoo ! zooplankton liquide excretion 208 zzoodom = tauzn * (1 - fzoolab) * zzoo 209 210 ! mortality 211 zphydet = tmminp * zphy ! phytoplankton mortality 212 213 zzoobod = 0.e0 ! zooplankton mortality 214 zboddet = 0.e0 ! closure : flux fbod is redistributed below level jpkbio 215 216 ! detritus and dom breakdown 217 zdetnh4 = taudn * fdetlab * zdet 218 zdetdom = taudn * (1 - fdetlab) * zdet 219 220 zdomnh4 = taudomn * zdom 221 zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom) 222 223 ! Nitrification 224 znh4no3 = taunn * znh4 225 ! 226 ENDIF 125 126 ! Limitations 127 zlt = 1. 128 zle = 1. - EXP( -xpar(ji,jj,jk) / aki / zlt ) 129 ! psinut,akno3,aknh4 added by asklod AS Kremeur 2005-03 130 zlno3 = zno3 * EXP( -psinut * znh4 ) / ( akno3 + zno3 ) 131 zlnh4 = znh4 / (znh4+aknh4) 132 133 ! sinks and sources 134 ! phytoplankton production and exsudation 135 zno3phy = tmumax * zle * zlt * zlno3 * zphy 136 znh4phy = tmumax * zle * zlt * zlnh4 * zphy 137 138 ! fphylab added by asklod AS Kremeur 2005-03 139 zphydom = rgamma * (1 - fphylab) * (zno3phy + znh4phy) 140 zphynh4 = rgamma * fphylab * (zno3phy + znh4phy) 141 ! zooplankton production 142 ! preferences 143 zppz = rppz 144 zpdz = 1. - rppz 145 zpppz = ( zppz * zphy ) / ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 ) 146 zppdz = ( zpdz * zdet ) / ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 ) 147 zfood = zpppz * zphy + zppdz * zdet 148 ! filtration 149 zfilpz = taus * zpppz / (aks + zfood) 150 zfildz = taus * zppdz / (aks + zfood) 151 ! grazing 152 zphyzoo = zfilpz * zphy * zzoo 153 zdetzoo = zfildz * zdet * zzoo 154 155 ! fecal pellets production 156 zzoodet = rpnaz * zphyzoo + rdnaz * zdetzoo 157 158 ! zooplankton liquide excretion 159 zzoonh4 = tauzn * fzoolab * zzoo 160 zzoodom = tauzn * (1 - fzoolab) * zzoo 161 162 ! mortality 163 ! phytoplankton mortality 164 zphydet = tmminp * zphy 165 166 ! zooplankton mortality 167 ! closure : flux fbod is redistributed below level jpkbio 168 zzoobod = tmminz * zzoo * zzoo 169 fbod(ji,jj) = fbod(ji,jj) + (1-fdbod) * zzoobod * fse3t(ji,jj,jk) 170 zboddet = fdbod * zzoobod 171 172 ! detritus and dom breakdown 173 zdetnh4 = taudn * fdetlab * zdet 174 zdetdom = taudn * (1 - fdetlab) * zdet 175 176 zdomnh4 = taudomn * zdom 177 178 ! flux added to express how the excess of nitrogen from 179 ! PHY, ZOO and DET to DOM goes directly to NH4 (flux of ajustment) 180 zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom) 181 182 ! Nitrification 183 znh4no3 = taunn * znh4 227 184 228 185 ! determination of trends … … 242 199 tra(ji,jj,jk,jp_lob_nh4) = tra(ji,jj,jk,jp_lob_nh4) + znh4a 243 200 tra(ji,jj,jk,jp_lob_dom) = tra(ji,jj,jk,jp_lob_dom) + zdoma 201 244 202 245 203 IF( ( ln_diabio .AND. .NOT. lk_iomput ) .OR. l_trdtrc ) THEN … … 262 220 ! trend number 17 in trcexp 263 221 ENDIF 264 265 222 IF( ln_diatrc ) THEN 266 223 ! convert fluxes in per day 267 224 ze3t = fse3t(ji,jj,jk) * 86400. 268 225 IF( lk_iomput ) THEN 269 zw2d(ji,jj,1) = zw2d(ji,jj,1) + zno3phy * ze3t 226 zw2d(ji,jj,1) = zw2d(ji,jj,1) + zno3phy * ze3t 270 227 zw2d(ji,jj,2) = zw2d(ji,jj,2) + znh4phy * ze3t 271 228 zw2d(ji,jj,3) = zw2d(ji,jj,3) + zphydom * ze3t … … 280 237 zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t 281 238 zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t 282 zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t 239 zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t 283 240 zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t 284 241 zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t 285 242 zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t 286 ! 287 zw3d(ji,jj,jk,1) = zno3phy * 86400 243 ! 244 zw3d(ji,jj,jk,1) = zno3phy * 86400 288 245 zw3d(ji,jj,jk,2) = znh4phy * 86400 289 246 zw3d(ji,jj,jk,3) = znh4no3 * 86400 290 ELSE 291 trc2d(ji,jj,jp_lob0_2d ) = trc2d(ji,jj, jp_lob0_2d ) + zno3phy * ze3t 247 ELSE 248 trc2d(ji,jj,jp_lob0_2d ) = trc2d(ji,jj, jp_lob0_2d ) + zno3phy * ze3t 292 249 trc2d(ji,jj,jp_lob0_2d + 1) = trc2d(ji,jj, jp_lob0_2d + 1) + znh4phy * ze3t 293 250 trc2d(ji,jj,jp_lob0_2d + 2) = trc2d(ji,jj, jp_lob0_2d + 2) + zphydom * ze3t … … 303 260 trc2d(ji,jj,jp_lob0_2d + 12) = trc2d(ji,jj,jp_lob0_2d + 12) + znh4no3 * ze3t 304 261 trc2d(ji,jj,jp_lob0_2d + 13) = trc2d(ji,jj,jp_lob0_2d + 13) + zdomnh4 * ze3t 305 trc2d(ji,jj,jp_lob0_2d + 14) = trc2d(ji,jj,jp_lob0_2d + 14) + zdetnh4 * ze3t 262 trc2d(ji,jj,jp_lob0_2d + 14) = trc2d(ji,jj,jp_lob0_2d + 14) + zdetnh4 * ze3t 306 263 trc2d(ji,jj,jp_lob0_2d + 15) = trc2d(ji,jj,jp_lob0_2d + 15) + ( zno3phy + znh4phy - zphynh4 & 307 264 & - zphydom - zphyzoo - zphydet ) * ze3t … … 310 267 trc2d(ji,jj,jp_lob0_2d + 17) = trc2d(ji,jj,jp_lob0_2d + 17) + zdetdom * ze3t 311 268 ! trend number 19 is in trcexp.F 312 trc3d(ji,jj,jk,jp_lob0_3d ) = zno3phy * 86400 313 trc3d(ji,jj,jk,jp_lob0_3d + 1) = znh4phy * 86400 314 trc3d(ji,jj,jk,jp_lob0_3d + 2) = znh4no3 * 86400 269 trc3d(ji,jj,jk,jp_lob0_3d ) = zno3phy * 86400 270 trc3d(ji,jj,jk,jp_lob0_3d + 1) = znh4phy * 86400 271 trc3d(ji,jj,jk,jp_lob0_3d + 2) = znh4no3 * 86400 272 ! 273 ENDIF 274 ! 275 ENDIF 276 END DO 277 END DO 278 END DO 279 280 ! ! -------------------------- ! 281 DO jk = jpkb, jpkm1 ! Upper ocean (bio-layers) ! 282 ! ! -------------------------- ! 283 DO jj = 2, jpjm1 284 DO ji = fs_2, fs_jpim1 285 ! remineralisation of all quantities towards nitrate 286 287 ! trophic variables( det, zoo, phy, no3, nh4, dom) 288 ! negative trophic variables DO not contribute to the fluxes 289 zdet = MAX( 0.e0, trn(ji,jj,jk,jp_lob_det) ) 290 zzoo = MAX( 0.e0, trn(ji,jj,jk,jp_lob_zoo) ) 291 zphy = MAX( 0.e0, trn(ji,jj,jk,jp_lob_phy) ) 292 zno3 = MAX( 0.e0, trn(ji,jj,jk,jp_lob_no3) ) 293 znh4 = MAX( 0.e0, trn(ji,jj,jk,jp_lob_nh4) ) 294 zdom = MAX( 0.e0, trn(ji,jj,jk,jp_lob_dom) ) 295 296 ! Limitations 297 zlt = 0.e0 298 zle = 0.e0 299 zlno3 = 0.e0 300 zlnh4 = 0.e0 301 302 ! sinks and sources 303 ! phytoplankton production and exsudation 304 zno3phy = 0.e0 305 znh4phy = 0.e0 306 zphydom = 0.e0 307 zphynh4 = 0.e0 308 309 ! zooplankton production 310 zphyzoo = 0.e0 ! grazing 311 zdetzoo = 0.e0 312 313 zzoodet = 0.e0 ! fecal pellets production 314 315 zzoonh4 = tauzn * fzoolab * zzoo ! zooplankton liquide excretion 316 zzoodom = tauzn * (1 - fzoolab) * zzoo 317 318 ! mortality 319 zphydet = tmminp * zphy ! phytoplankton mortality 320 321 zzoobod = 0.e0 ! zooplankton mortality 322 zboddet = 0.e0 ! closure : flux fbod is redistributed below level jpkbio 323 324 ! detritus and dom breakdown 325 zdetnh4 = taudn * fdetlab * zdet 326 zdetdom = taudn * (1 - fdetlab) * zdet 327 328 zdomnh4 = taudomn * zdom 329 zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom) 330 331 ! Nitrification 332 znh4no3 = taunn * znh4 333 334 335 ! determination of trends 336 ! total trend for each biological tracer 337 zphya = zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet 338 zzooa = zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4 - zzoobod 339 zno3a = - zno3phy + znh4no3 340 znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4 + zdetnh4 + zdomaju 341 zdeta = zphydet + zzoodet - zdetzoo - zdetnh4 - zdetdom + zboddet 342 zdoma = zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju 343 344 ! tracer flux at totox-point added to the general trend 345 tra(ji,jj,jk,jp_lob_det) = tra(ji,jj,jk,jp_lob_det) + zdeta 346 tra(ji,jj,jk,jp_lob_zoo) = tra(ji,jj,jk,jp_lob_zoo) + zzooa 347 tra(ji,jj,jk,jp_lob_phy) = tra(ji,jj,jk,jp_lob_phy) + zphya 348 tra(ji,jj,jk,jp_lob_no3) = tra(ji,jj,jk,jp_lob_no3) + zno3a 349 tra(ji,jj,jk,jp_lob_nh4) = tra(ji,jj,jk,jp_lob_nh4) + znh4a 350 tra(ji,jj,jk,jp_lob_dom) = tra(ji,jj,jk,jp_lob_dom) + zdoma 351 ! 352 IF( ( ln_diabio .AND. .NOT. lk_iomput ) .OR. l_trdtrc ) THEN 353 trbio(ji,jj,jk,jp_lob0_trd ) = zno3phy 354 trbio(ji,jj,jk,jp_lob0_trd + 1) = znh4phy 355 trbio(ji,jj,jk,jp_lob0_trd + 2) = zphynh4 356 trbio(ji,jj,jk,jp_lob0_trd + 3) = zphydom 357 trbio(ji,jj,jk,jp_lob0_trd + 4) = zphyzoo 358 trbio(ji,jj,jk,jp_lob0_trd + 5) = zphydet 359 trbio(ji,jj,jk,jp_lob0_trd + 6) = zdetzoo 360 ! trend number 8 in trcsed 361 trbio(ji,jj,jk,jp_lob0_trd + 8) = zzoodet 362 trbio(ji,jj,jk,jp_lob0_trd + 9) = zzoobod 363 trbio(ji,jj,jk,jp_lob0_trd + 10) = zzoonh4 364 trbio(ji,jj,jk,jp_lob0_trd + 11) = zzoodom 365 trbio(ji,jj,jk,jp_lob0_trd + 12) = znh4no3 366 trbio(ji,jj,jk,jp_lob0_trd + 13) = zdomnh4 367 trbio(ji,jj,jk,jp_lob0_trd + 14) = zdetnh4 368 trbio(ji,jj,jk,jp_lob0_trd + 15) = zdetdom 369 ! trend number 17 in trcexp 370 ENDIF 371 IF( ln_diatrc ) THEN 372 ! convert fluxes in per day 373 ze3t = fse3t(ji,jj,jk) * 86400. 374 IF( lk_iomput ) THEN 375 zw2d(ji,jj,1) = zw2d(ji,jj,1) + zno3phy * ze3t 376 zw2d(ji,jj,2) = zw2d(ji,jj,2) + znh4phy * ze3t 377 zw2d(ji,jj,3) = zw2d(ji,jj,3) + zphydom * ze3t 378 zw2d(ji,jj,4) = zw2d(ji,jj,4) + zphynh4 * ze3t 379 zw2d(ji,jj,5) = zw2d(ji,jj,5) + zphyzoo * ze3t 380 zw2d(ji,jj,6) = zw2d(ji,jj,6) + zphydet * ze3t 381 zw2d(ji,jj,7) = zw2d(ji,jj,7) + zdetzoo * ze3t 382 zw2d(ji,jj,8) = zw2d(ji,jj,8) + zzoodet * ze3t 383 zw2d(ji,jj,9) = zw2d(ji,jj,9) + zzoobod * ze3t 384 zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t 385 zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t 386 zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t 387 zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t 388 zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t 389 zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t 390 zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t 391 zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t 392 ! 393 zw3d(ji,jj,jk,1) = zno3phy * 86400 394 zw3d(ji,jj,jk,2) = znh4phy * 86400 395 zw3d(ji,jj,jk,3) = znh4no3 * 86400 396 ELSE 397 trc2d(ji,jj,jp_lob0_2d ) = trc2d(ji,jj, jp_lob0_2d ) + zno3phy * ze3t 398 trc2d(ji,jj,jp_lob0_2d + 1) = trc2d(ji,jj, jp_lob0_2d + 1) + znh4phy * ze3t 399 trc2d(ji,jj,jp_lob0_2d + 2) = trc2d(ji,jj, jp_lob0_2d + 2) + zphydom * ze3t 400 trc2d(ji,jj,jp_lob0_2d + 3) = trc2d(ji,jj, jp_lob0_2d + 3) + zphynh4 * ze3t 401 trc2d(ji,jj,jp_lob0_2d + 4) = trc2d(ji,jj, jp_lob0_2d + 4) + zphyzoo * ze3t 402 trc2d(ji,jj,jp_lob0_2d + 5) = trc2d(ji,jj, jp_lob0_2d + 5) + zphydet * ze3t 403 trc2d(ji,jj,jp_lob0_2d + 6) = trc2d(ji,jj, jp_lob0_2d + 6) + zdetzoo * ze3t 404 ! trend number 8 is in trcsed.F 405 trc2d(ji,jj,jp_lob0_2d + 8) = trc2d(ji,jj,jp_lob0_2d + 8) + zzoodet * ze3t 406 trc2d(ji,jj,jp_lob0_2d + 9) = trc2d(ji,jj,jp_lob0_2d + 9) + zzoobod * ze3t 407 trc2d(ji,jj,jp_lob0_2d + 10) = trc2d(ji,jj,jp_lob0_2d + 10) + zzoonh4 * ze3t 408 trc2d(ji,jj,jp_lob0_2d + 11) = trc2d(ji,jj,jp_lob0_2d + 11) + zzoodom * ze3t 409 trc2d(ji,jj,jp_lob0_2d + 12) = trc2d(ji,jj,jp_lob0_2d + 12) + znh4no3 * ze3t 410 trc2d(ji,jj,jp_lob0_2d + 13) = trc2d(ji,jj,jp_lob0_2d + 13) + zdomnh4 * ze3t 411 trc2d(ji,jj,jp_lob0_2d + 14) = trc2d(ji,jj,jp_lob0_2d + 14) + zdetnh4 * ze3t 412 trc2d(ji,jj,jp_lob0_2d + 15) = trc2d(ji,jj,jp_lob0_2d + 15) + ( zno3phy + znh4phy - zphynh4 & 413 & - zphydom - zphyzoo - zphydet ) * ze3t 414 trc2d(ji,jj,jp_lob0_2d + 16) = trc2d(ji,jj,jp_lob0_2d + 16) + ( zphyzoo + zdetzoo - zzoodet & 415 & - zzoobod - zzoonh4 - zzoodom ) * ze3t 416 trc2d(ji,jj,jp_lob0_2d + 17) = trc2d(ji,jj,jp_lob0_2d + 17) + zdetdom * ze3t 417 ! trend number 19 is in trcexp.F 418 trc3d(ji,jj,jk,jp_lob0_3d ) = zno3phy * 86400 419 trc3d(ji,jj,jk,jp_lob0_3d + 1) = znh4phy * 86400 420 trc3d(ji,jj,jk,jp_lob0_3d + 2) = znh4no3 * 86400 315 421 ! 316 422 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.