Changeset 12276 for NEMO/trunk/src/TOP/PISCES/P4Z/p5zprod.F90
- Timestamp:
- 2019-12-20T12:14:26+01:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/TOP/PISCES/P4Z/p5zprod.F90
r11536 r12276 94 94 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmxl_fac, zmxl_chl 95 95 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpligprod1, zpligprod2 96 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d97 REAL(wp), ALLOCATABLE, DIMENSION(:,: ) :: zw2d98 96 !!--------------------------------------------------------------------- 99 97 ! 100 98 IF( ln_timing ) CALL timing_start('p5z_prod') 101 99 ! 102 zprorcan(:,:,:) = 0._wp ; zprorcap(:,:,:) = 0._wp ; zprorcad(:,:,:) = 0._wp 103 zprofed (:,:,:) = 0._wp ; zprofep (:,:,:) = 0._wp ; zprofen (:,:,:) = 0._wp 104 zpronewn(:,:,:) = 0._wp ; zpronewp(:,:,:) = 0._wp ; zpronewd(:,:,:) = 0._wp 105 zproregn(:,:,:) = 0._wp ; zproregp(:,:,:) = 0._wp ; zproregd(:,:,:) = 0._wp 106 zpropo4n(:,:,:) = 0._wp ; zpropo4p(:,:,:) = 0._wp ; zpropo4d(:,:,:) = 0._wp 107 zprdia (:,:,:) = 0._wp ; zprpic (:,:,:) = 0._wp ; zprbio (:,:,:) = 0._wp 108 zprodopn(:,:,:) = 0._wp ; zprodopp(:,:,:) = 0._wp ; zprodopd(:,:,:) = 0._wp 109 zysopt (:,:,:) = 0._wp 110 zrespn (:,:,:) = 0._wp ; zrespp (:,:,:) = 0._wp ; zrespd (:,:,:) = 0._wp 100 zprorcan(:,:,jpk) = 0._wp ; zprorcap(:,:,jpk) = 0._wp ; zprorcad(:,:,jpk) = 0._wp 101 zcroissn(:,:,jpk) = 0._wp ; zcroissp(:,:,jpk) = 0._wp ; zcroissd(:,:,jpk) = 0._wp 102 zprofed (:,:,jpk) = 0._wp ; zprofep (:,:,jpk) = 0._wp ; zprofen (:,:,jpk) = 0._wp 103 zpronewn(:,:,jpk) = 0._wp ; zpronewp(:,:,jpk) = 0._wp ; zpronewd(:,:,jpk) = 0._wp 104 zproregn(:,:,jpk) = 0._wp ; zproregp(:,:,jpk) = 0._wp ; zproregd(:,:,jpk) = 0._wp 105 zpropo4n(:,:,jpk) = 0._wp ; zpropo4p(:,:,jpk) = 0._wp ; zpropo4d(:,:,jpk) = 0._wp 106 zprdia (:,:,jpk) = 0._wp ; zprpic (:,:,jpk) = 0._wp ; zprbio (:,:,jpk) = 0._wp 107 zprodopn(:,:,jpk) = 0._wp ; zprodopp(:,:,jpk) = 0._wp ; zprodopd(:,:,jpk) = 0._wp 108 zysopt (:,:,jpk) = 0._wp 109 zrespn (:,:,jpk) = 0._wp ; zrespp (:,:,jpk) = 0._wp ; zrespd (:,:,jpk) = 0._wp 111 110 112 111 ! Computation of the optimal production … … 444 443 ! 445 444 IF( ln_ligand ) THEN 446 zpligprod1(:,:, :) = 0._wp ; zpligprod2(:,:,:) = 0._wp445 zpligprod1(:,:,jpk) = 0._wp ; zpligprod2(:,:,jpk) = 0._wp 447 446 DO jk = 1, jpkm1 448 447 DO jj = 1, jpj … … 465 464 & tpp = glob_sum( 'p5zprod', ( zprorcan(:,:,:) + zprorcad(:,:,:) + zprorcap(:,:,:) ) * cvol(:,:,:) ) 466 465 467 IF( lk_iomput ) THEN 468 IF( knt == nrdttrc ) THEN 469 ALLOCATE( zw2d(jpi,jpj), zw3d(jpi,jpj,jpk) ) 470 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 471 ! 472 IF( iom_use( "PPPHYN" ) .OR. iom_use( "PPPHYD" ) .OR. iom_use( "PPPHYP" ) ) THEN 473 zw3d(:,:,:) = zprorcan(:,:,:) * zfact * tmask(:,:,:) ! primary production by nanophyto 474 CALL iom_put( "PPPHYN" , zw3d ) 475 ! 476 zw3d(:,:,:) = zprorcap(:,:,:) * zfact * tmask(:,:,:) ! primary production by picophyto 477 CALL iom_put( "PPPHYP" , zw3d ) 478 ! 479 zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) ! primary production by diatomes 480 CALL iom_put( "PPPHYD" , zw3d ) 481 ENDIF 482 IF( iom_use( "PPNEWN" ) .OR. iom_use( "PPNEWD" ) .OR. iom_use( "PPNEWP" ) ) THEN 483 zw3d(:,:,:) = zpronewn(:,:,:) * zfact * tmask(:,:,:) ! new primary production by nanophyto 484 CALL iom_put( "PPNEWN" , zw3d ) 485 ! 486 zw3d(:,:,:) = zpronewp(:,:,:) * zfact * tmask(:,:,:) ! new primary production by picophyto 487 CALL iom_put( "PPNEWP" , zw3d ) 488 ! 489 zw3d(:,:,:) = zpronewd(:,:,:) * zfact * tmask(:,:,:) ! new primary production by diatomes 490 CALL iom_put( "PPNEWD" , zw3d ) 491 ENDIF 492 IF( iom_use( "PBSi" ) ) THEN 493 zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) ! biogenic silica production 494 CALL iom_put( "PBSi" , zw3d ) 495 ENDIF 496 IF( iom_use( "PFeN" ) .OR. iom_use( "PFeD" ) .OR. iom_use( "PFeP" ) ) THEN 497 zw3d(:,:,:) = zprofen(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron production by nanophyto 498 CALL iom_put( "PFeN" , zw3d ) 499 ! 500 zw3d(:,:,:) = zprofep(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron production by picophyto 501 CALL iom_put( "PFeP" , zw3d ) 502 ! 503 zw3d(:,:,:) = zprofed(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron production by diatomes 504 CALL iom_put( "PFeD" , zw3d ) 505 ENDIF 506 IF( iom_use( "LPRODP" ) ) THEN 507 zw3d(:,:,:) = zpligprod1(:,:,:) * 1e9 * zfact * tmask(:,:,:) 508 CALL iom_put( "LPRODP" , zw3d ) 509 ENDIF 510 IF( iom_use( "LDETP" ) ) THEN 511 zw3d(:,:,:) = zpligprod2(:,:,:) * 1e9 * zfact * tmask(:,:,:) 512 CALL iom_put( "LDETP" , zw3d ) 513 ENDIF 514 IF( iom_use( "Mumax" ) ) THEN 515 zw3d(:,:,:) = zprmaxn(:,:,:) * tmask(:,:,:) ! Maximum growth rate 516 CALL iom_put( "Mumax" , zw3d ) 517 ENDIF 518 IF( iom_use( "MuN" ) .OR. iom_use( "MuD" ) .OR. iom_use( "MuP" ) ) THEN 519 zw3d(:,:,:) = zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:) ! Realized growth rate for nanophyto 520 CALL iom_put( "MuN" , zw3d ) 521 ! 522 zw3d(:,:,:) = zprpic(:,:,:) * xlimpic(:,:,:) * tmask(:,:,:) ! Realized growth rate for picophyto 523 CALL iom_put( "MuP" , zw3d ) 524 ! 525 zw3d(:,:,:) = zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:) ! Realized growth rate for diatoms 526 CALL iom_put( "MuD" , zw3d ) 527 ENDIF 528 IF( iom_use( "LNlight" ) .OR. iom_use( "LDlight" ) .OR. iom_use( "LPlight" ) ) THEN 529 zw3d(:,:,:) = zprbio (:,:,:) / (zprmaxn(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 530 CALL iom_put( "LNlight" , zw3d ) 531 ! 532 zw3d(:,:,:) = zprpic (:,:,:) / (zprmaxp(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 533 CALL iom_put( "LPlight" , zw3d ) 534 ! 535 zw3d(:,:,:) = zprdia (:,:,:) / (zprmaxd(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 536 CALL iom_put( "LDlight" , zw3d ) 537 ENDIF 538 IF( iom_use( "MunetN" ) .OR. iom_use( "MunetD" ) .OR. iom_use( "MunetP" ) ) THEN 539 zw3d(:,:,:) = zcroissn(:,:,:) * tmask(:,:,:) ! ! Realized growth rate for nanophyto 540 CALL iom_put( "MunetN" , zw3d ) 541 ! 542 zw3d(:,:,:) = zcroissp(:,:,:) * tmask(:,:,:) ! ! Realized growth rate for picophyto 543 CALL iom_put( "MunetP" , zw3d ) 544 ! 545 zw3d(:,:,:) = zcroissd(:,:,:) * tmask(:,:,:) ! ! Realized growth rate for diatomes 546 CALL iom_put( "MunetD" , zw3d ) 547 ! 548 ENDIF 549 550 IF( iom_use( "tintpp" ) ) CALL iom_put( "tintpp" , tpp * zfact ) ! global total integrated primary production molC/s 551 ! 552 DEALLOCATE( zw2d, zw3d ) 553 ENDIF 466 IF( lk_iomput .AND. knt == nrdttrc ) THEN 467 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 468 ! 469 CALL iom_put( "PPPHYP" , zprorcap(:,:,:) * zfact * tmask(:,:,:) ) ! primary production by picophyto 470 CALL iom_put( "PPPHYN" , zprorcan(:,:,:) * zfact * tmask(:,:,:) ) ! primary production by nanophyto 471 CALL iom_put( "PPPHYD" , zprorcad(:,:,:) * zfact * tmask(:,:,:) ) ! primary production by diatomes 472 CALL iom_put( "PPNEWN" , zpronewp(:,:,:) * zfact * tmask(:,:,:) ) ! new primary production by picophyto 473 CALL iom_put( "PPNEWN" , zpronewn(:,:,:) * zfact * tmask(:,:,:) ) ! new primary production by nanophyto 474 CALL iom_put( "PPNEWD" , zpronewd(:,:,:) * zfact * tmask(:,:,:) ) ! new primary production by diatomes 475 CALL iom_put( "PBSi" , zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) ) ! biogenic silica production 476 CALL iom_put( "PFeP" , zprofep(:,:,:) * zfact * tmask(:,:,:) ) ! biogenic iron production by picophyto 477 CALL iom_put( "PFeN" , zprofen(:,:,:) * zfact * tmask(:,:,:) ) ! biogenic iron production by nanophyto 478 CALL iom_put( "PFeD" , zprofed(:,:,:) * zfact * tmask(:,:,:) ) ! biogenic iron production by diatomes 479 CALL iom_put( "LPRODP" , zpligprod1(:,:,:) * 1e9 * zfact * tmask(:,:,:) ) 480 CALL iom_put( "LDETP" , zpligprod2(:,:,:) * 1e9 * zfact * tmask(:,:,:) ) 481 CALL iom_put( "Mumax" , zprmaxn(:,:,:) * tmask(:,:,:) ) ! Maximum growth rate 482 CALL iom_put( "MuP" , zprpic(:,:,:) * xlimpic(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for picophyto 483 CALL iom_put( "MuN" , zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for nanophyto 484 CALL iom_put( "MuD" , zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for diatoms 485 CALL iom_put( "LPlight" , zprpic(:,:,:) / (zprmaxp(:,:,:) + rtrn) * tmask(:,:,:) ) ! light limitation term 486 CALL iom_put( "LNlight" , zprbio(:,:,:) / (zprmaxn(:,:,:) + rtrn) * tmask(:,:,:) ) ! light limitation term 487 CALL iom_put( "LDlight" , zprdia(:,:,:) / (zprmaxd(:,:,:) + rtrn) * tmask(:,:,:) ) 488 CALL iom_put( "MunetP" , zcroissp(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for picophyto 489 CALL iom_put( "MunetN" , zcroissn(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for nanophyto 490 CALL iom_put( "MunetD" , zcroissd(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for diatoms 491 CALL iom_put( "TPP" , ( zprorcap(:,:,:) + zprorcan(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:) ) ! total primary production 492 CALL iom_put( "TPNEW" , ( zpronewp(:,:,:) + zpronewn(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:) ) ! total new production 493 CALL iom_put( "TPBFE" , ( zprofep (:,:,:) + zprofen (:,:,:) + zprofed (:,:,:) ) * zfact * tmask(:,:,:) ) ! total biogenic iron production 494 CALL iom_put( "tintpp" , tpp * zfact ) ! global total integrated primary production molC/s 554 495 ENDIF 555 496 … … 582 523 !!---------------------------------------------------------------------- 583 524 584 REWIND( numnatp_ref ) ! Namelist nampisprod in reference namelist : Pisces phytoplankton production585 525 READ ( numnatp_ref, namp5zprod, IOSTAT = ios, ERR = 901) 586 526 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp5zprod in reference namelist' ) 587 527 588 REWIND( numnatp_cfg ) ! Namelist nampisprod in configuration namelist : Pisces phytoplankton production589 528 READ ( numnatp_cfg, namp5zprod, IOSTAT = ios, ERR = 902 ) 590 529 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp5zprod in configuration namelist' )
Note: See TracChangeset
for help on using the changeset viewer.