Changeset 12537 for NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zprod.F90
- Timestamp:
- 2020-03-11T16:02:54+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zprod.F90
r12496 r12537 238 238 END DO 239 239 240 ! Computation of the various production terms of nanophytoplankton 240 ! Computation of the various production and uptake terms of nanophytoplankton 241 ! Interactions between N and P are modeled according to the Chain Model 242 ! of Pahlow et al. (2009). Iron uptake is modeled following traditional 243 ! Droop kinetics. When the quota is approaching the maximum achievable 244 ! quota, uptake is downregulated according to a sigmoidal function 245 ! (power 2), as proposed by Flynn (2003) 246 ! --------------------------------------------------------------------------- 241 247 DO jk = 1, jpkm1 242 248 DO jj = 1, jpj … … 245 251 ! production terms for nanophyto. 246 252 zprorcan(ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * trb(ji,jj,jk,jpphy) * rfact2 247 ! size computation 253 254 ! Size computation 255 ! Size is made a function of the limitation of of phytoplankton growth 256 ! Strongly limited cells are supposed to be smaller. sizena is the 257 ! size at time step t+1 and is thus updated at the end of the 258 ! current time step 259 ! -------------------------------------------------------------------- 248 260 zlimfac = xlimphys(ji,jj,jk) * zprchln(ji,jj,jk) / ( zprmaxn(ji,jj,jk) + rtrn ) 249 261 zsizetmp = 1.0 + 1.3 * ( xsizern - 1.0 ) * zlimfac**3/(0.3 + zlimfac**3) 250 262 sizena(ji,jj,jk) = min(xsizern, max( sizena(ji,jj,jk), zsizetmp ) ) 251 ! Nutrient uptake terms263 ! Maximum potential uptake rate 252 264 zration = trb(ji,jj,jk,jpnph) / ( trb(ji,jj,jk,jpphy) + rtrn ) 253 265 zratiop = trb(ji,jj,jk,jppph) / ( trb(ji,jj,jk,jpphy) + rtrn ) … … 261 273 zpronewn(ji,jj,jk) = zpronmax * xnanono3(ji,jj,jk) 262 274 zproregn(ji,jj,jk) = zpronmax * xnanonh4(ji,jj,jk) 263 ! Uptake of phosphorus 275 ! Uptake of phosphorus and DOP 264 276 zrat = 1.0 - MIN( 1., zratiop / (xqpnmax(ji,jj,jk) + rtrn) ) 265 277 zmax = MAX(0., MIN(1., zrat**2 / (0.05**2 + zrat**2) ) ) … … 279 291 END DO 280 292 281 ! Computation of the various production terms of picophytoplankton 293 ! Computation of the various production and uptake terms of picophytoplankton 294 ! Interactions between N and P are modeled according to the Chain Model 295 ! of Pahlow et al. (2009). Iron uptake is modeled following traditional 296 ! Droop kinetics. When the quota is approaching the maximum achievable 297 ! quota, uptake is downregulated according to a sigmoidal function 298 ! (power 2), as proposed by Flynn (2003) 299 ! --------------------------------------------------------------------------- 282 300 DO jk = 1, jpkm1 283 301 DO jj = 1, jpj … … 287 305 zprorcap(ji,jj,jk) = zprpic(ji,jj,jk) * xlimpic(ji,jj,jk) * trb(ji,jj,jk,jppic) * rfact2 288 306 ! Size computation 307 ! Size is made a function of the limitation of of phytoplankton growth 308 ! Strongly limited cells are supposed to be smaller. sizepa is 309 ! size at time step t+1 and is thus updated at the end of the 310 ! current time step 311 ! -------------------------------------------------------------------- 289 312 zlimfac = zprchlp(ji,jj,jk) * xlimpics(ji,jj,jk) / ( zprmaxp(ji,jj,jk) + rtrn ) 290 313 zsizetmp = 1.0 + 1.3 * ( xsizerp - 1.0 ) * zlimfac**3/(0.3 + zlimfac**3) 291 314 sizepa(ji,jj,jk) = min(xsizerp, max( sizepa(ji,jj,jk), zsizetmp ) ) 292 ! Nutrient uptake315 ! Maximum potential uptake rate of nutrients 293 316 zration = trb(ji,jj,jk,jpnpi) / ( trb(ji,jj,jk,jppic) + rtrn ) 294 317 zratiop = trb(ji,jj,jk,jpppi) / ( trb(ji,jj,jk,jppic) + rtrn ) … … 320 343 END DO 321 344 322 ! Computation of the various production terms of diatoms 345 ! Computation of the various production and uptake terms of diatoms 346 ! Interactions between N and P are modeled according to the Chain Model 347 ! of Pahlow et al. (2009). Iron uptake is modeled following traditional 348 ! Droop kinetics. When the quota is approaching the maximum achievable 349 ! quota, uptake is downregulated according to a sigmoidal function 350 ! (power 2), as proposed by Flynn (2003) 351 ! --------------------------------------------------------------------------- 323 352 DO jk = 1, jpkm1 324 353 DO jj = 1, jpj … … 327 356 ! production terms for diatomees 328 357 zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * trb(ji,jj,jk,jpdia) * rfact2 329 ! size computation 358 ! Size computation 359 ! Size is made a function of the limitation of of phytoplankton growth 360 ! Strongly limited cells are supposed to be smaller. sizeda is 361 ! size at time step t+1 and is thus updated at the end of the 362 ! current time step. 363 ! -------------------------------------------------------------------- 330 364 zlimfac = zprchld(ji,jj,jk) * xlimdias(ji,jj,jk) / ( zprmaxd(ji,jj,jk) + rtrn ) 331 365 zsizetmp = 1.0 + 1.3 * ( xsizerd - 1.0 ) * zlimfac**3/(0.3 + zlimfac**3) 332 366 sizeda(ji,jj,jk) = min(xsizerd, max( sizeda(ji,jj,jk), zsizetmp ) ) 333 ! Nutrient uptake367 ! Maximum potential uptake rate of nutrients 334 368 zration = trb(ji,jj,jk,jpndi) / ( trb(ji,jj,jk,jpdia) + rtrn ) 335 369 zratiop = trb(ji,jj,jk,jppdi) / ( trb(ji,jj,jk,jpdia) + rtrn ) … … 361 395 END DO 362 396 397 ! Production of Chlorophyll. The formulation proposed by Geider et al. 398 ! is adopted here. 399 ! -------------------------------------------------------------------- 363 400 DO jk = 1, jpkm1 364 401 DO jj = 1, jpj … … 375 412 zprochlp = thetanpm * zprod / ( zpislopeadp(ji,jj,jk) * zpicotot + rtrn ) 376 413 zprochlp = MAX(zprochlp, chlcmin * 12. * zprorcap(ji,jj,jk) ) 377 ! production terms for diatom ees ( chlorophyll )414 ! production terms for diatoms ( chlorophyll ) 378 415 zdiattot = ediatm(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 379 416 zprod = rday * (zpronewd(ji,jj,jk) + zproregd(ji,jj,jk)) * zprchld(ji,jj,jk) * xlimdia(ji,jj,jk) … … 454 491 END DO 455 492 END DO 456 ! 493 494 ! Production and uptake of ligands by phytoplankton. This part is activated 495 ! when ln_ligand is set to .true. in the namelist. Ligand uptake is small 496 ! and based on the FeL model by Morel et al. (2008) and on the study of 497 ! Shaked and Lis (2012) 498 ! ------------------------------------------------------------------------- 457 499 IF( ln_ligand ) THEN 458 500 zpligprod1(:,:,:) = 0._wp ; zpligprod2(:,:,:) = 0._wp … … 463 505 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) + texcretp * zprofep(ji,jj,jk) 464 506 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zdocprod * ldocp & 465 & - zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) + 2.E3 * (1.0 - plig(ji,jj,jk) ) ) 507 & - zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) + 2.E3 * (1.0 - plig(ji,jj,jk) ) ) * lthet 466 508 zpligprod1(ji,jj,jk) = zdocprod * ldocp 467 zpligprod2(ji,jj,jk) = zfeup * plig(ji,jj,jk) * lthet 509 zpligprod2(ji,jj,jk) = zfeup * plig(ji,jj,jk) / ( rtrn + plig(ji,jj,jk) & 510 & + 2.E3 * (1.0 - plig(ji,jj,jk) ) ) * lthet 468 511 END DO 469 512 END DO 470 513 END DO 471 514 ENDIF 472 473 474 ! Total primary production per year475 515 476 516 ! Total primary production per year … … 490 530 CALL iom_put( "PPPHYP" , zw3d ) 491 531 ! 492 zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) ! primary production by diatom es532 zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) ! primary production by diatoms 493 533 CALL iom_put( "PPPHYD" , zw3d ) 494 534 ENDIF … … 500 540 CALL iom_put( "PPNEWP" , zw3d ) 501 541 ! 502 zw3d(:,:,:) = zpronewd(:,:,:) * zfact * tmask(:,:,:) ! new primary production by diatom es542 zw3d(:,:,:) = zpronewd(:,:,:) * zfact * tmask(:,:,:) ! new primary production by diatoms 503 543 CALL iom_put( "PPNEWD" , zw3d ) 504 544 ENDIF … … 508 548 ENDIF 509 549 IF( iom_use( "PFeN" ) .OR. iom_use( "PFeD" ) .OR. iom_use( "PFeP" ) ) THEN 510 zw3d(:,:,:) = zprofen(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron productionby nanophyto550 zw3d(:,:,:) = zprofen(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron uptake by nanophyto 511 551 CALL iom_put( "PFeN" , zw3d ) 512 552 ! 513 zw3d(:,:,:) = zprofep(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron productionby picophyto553 zw3d(:,:,:) = zprofep(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron uptake by picophyto 514 554 CALL iom_put( "PFeP" , zw3d ) 515 555 ! 516 zw3d(:,:,:) = zprofed(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron production by diatomes556 zw3d(:,:,:) = zprofed(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron uptake by diatoms 517 557 CALL iom_put( "PFeD" , zw3d ) 518 558 ENDIF 519 559 IF( iom_use( "LPRODP" ) ) THEN 520 560 zw3d(:,:,:) = zpligprod1(:,:,:) * 1e9 * zfact * tmask(:,:,:) 521 CALL iom_put( "LPRODP" , zw3d ) 561 CALL iom_put( "LPRODP" , zw3d ) ! Ligand production by phytoplankton 522 562 ENDIF 523 563 IF( iom_use( "LDETP" ) ) THEN 524 564 zw3d(:,:,:) = zpligprod2(:,:,:) * 1e9 * zfact * tmask(:,:,:) 525 CALL iom_put( "LDETP" , zw3d ) 565 CALL iom_put( "LDETP" , zw3d ) ! Uptake of ligands by phytoplankton 526 566 ENDIF 527 567 IF( iom_use( "Mumax" ) ) THEN … … 540 580 ENDIF 541 581 IF( iom_use( "LNlight" ) .OR. iom_use( "LDlight" ) .OR. iom_use( "LPlight" ) ) THEN 542 zw3d(:,:,:) = zprbio (:,:,:) / (zprmaxn(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 582 zw3d(:,:,:) = zprbio (:,:,:) / (zprmaxn(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term of nanophytoplankton 543 583 CALL iom_put( "LNlight" , zw3d ) 544 584 ! 545 zw3d(:,:,:) = zprpic (:,:,:) / (zprmaxp(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 585 zw3d(:,:,:) = zprpic (:,:,:) / (zprmaxp(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term of picophytoplankton 546 586 CALL iom_put( "LPlight" , zw3d ) 547 587 ! 548 zw3d(:,:,:) = zprdia (:,:,:) / (zprmaxd(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 588 zw3d(:,:,:) = zprdia (:,:,:) / (zprmaxd(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term of diatoms 549 589 CALL iom_put( "LDlight" , zw3d ) 550 590 ENDIF … … 556 596 CALL iom_put( "MunetP" , zw3d ) 557 597 ! 558 zw3d(:,:,:) = zcroissd(:,:,:) * tmask(:,:,:) ! ! Realized growth rate for diatom es598 zw3d(:,:,:) = zcroissd(:,:,:) * tmask(:,:,:) ! ! Realized growth rate for diatoms 559 599 CALL iom_put( "MunetD" , zw3d ) 560 600 ! … … 584 624 !! ** Purpose : Initialization of phytoplankton production parameters 585 625 !! 586 !! ** Method : Read the namp isprod namelist and check the parameters626 !! ** Method : Read the namp5zprod namelist and check the parameters 587 627 !! called at the first timestep (nittrc000) 588 628 !! 589 !! ** input : Namelist namp isprod629 !! ** input : Namelist namp5zprod 590 630 !!---------------------------------------------------------------------- 591 INTEGER :: ios 631 INTEGER :: ios ! Local integer output status for namelist read 592 632 !! 593 633 NAMELIST/namp5zprod/ pislopen, pislopep, pisloped, excretn, excretp, excretd, & … … 595 635 !!---------------------------------------------------------------------- 596 636 597 REWIND( numnatp_ref ) ! Namelist namp isprod in reference namelist : Pisces phytoplankton production637 REWIND( numnatp_ref ) ! Namelist namp5zprod in reference namelist : Pisces phytoplankton production 598 638 READ ( numnatp_ref, namp5zprod, IOSTAT = ios, ERR = 901) 599 639 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp5zprod in reference namelist' ) 600 640 601 REWIND( numnatp_cfg ) ! Namelist namp isprod in configuration namelist : Pisces phytoplankton production641 REWIND( numnatp_cfg ) ! Namelist namp5zprod in configuration namelist : Pisces phytoplankton production 602 642 READ ( numnatp_cfg, namp5zprod, IOSTAT = ios, ERR = 902 ) 603 643 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp5zprod in configuration namelist' )
Note: See TracChangeset
for help on using the changeset viewer.