Changeset 5260 for branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
- Timestamp:
- 2015-05-12T12:37:15+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
r4624 r5260 83 83 REAL(wp) :: zpislopen , zpislope2n 84 84 REAL(wp) :: zrum, zcodel, zargu, zval 85 REAL(wp) :: z rfact285 REAL(wp) :: zfact 86 86 CHARACTER (len=25) :: charout 87 REAL(wp), POINTER, DIMENSION(:,: ) :: zmixnano, zmixdiat, zstrn 88 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt 87 REAL(wp), POINTER, DIMENSION(:,: ) :: zmixnano, zmixdiat, zstrn, zw2d 88 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt, zw3d 89 89 REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd 90 90 !!--------------------------------------------------------------------- … … 412 412 END DO 413 413 414 ! Total primary production per year 415 tpp = tpp + glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) ) 416 417 IF( ln_diatrc ) THEN 418 ! 419 zrfact2 = 1.e3 * rfact2r ! conversion from mol/L/timestep into mol/m3/s 420 IF( lk_iomput ) THEN 421 IF( jnt == nrdttrc ) THEN 422 CALL iom_put( "PPPHY" , zprorca (:,:,:) * zrfact2 * tmask(:,:,:) ) ! primary production by nanophyto 423 CALL iom_put( "PPPHY2" , zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) ) ! primary production by diatom 424 CALL iom_put( "PPNEWN" , zpronew (:,:,:) * zrfact2 * tmask(:,:,:) ) ! new primary production by nanophyto 425 CALL iom_put( "PPNEWD" , zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) ) ! new primary production by diatom 426 CALL iom_put( "PBSi" , zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:) ) ! biogenic silica production 427 CALL iom_put( "PFeD" , zprofed (:,:,:) * zrfact2 * tmask(:,:,:) ) ! biogenic iron production by diatom 428 CALL iom_put( "PFeN" , zprofen (:,:,:) * zrfact2 * tmask(:,:,:) ) ! biogenic iron production by nanophyto 429 CALL iom_put( "Mumax" , prmax(:,:,:) * tmask(:,:,:) ) ! Maximum growth rate 430 CALL iom_put( "MuN" , zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for nanophyto 431 CALL iom_put( "MuD" , zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for diatoms 432 CALL iom_put( "LNlight", zprbio (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) ) ! light limitation term 433 CALL iom_put( "LDlight", zprdia (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) ) ! light limitation term 434 ENDIF 435 ELSE 436 trc3d(:,:,:,jp_pcs0_3d + 4) = zprorca (:,:,:) * zrfact2 * tmask(:,:,:) 437 trc3d(:,:,:,jp_pcs0_3d + 5) = zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) 438 trc3d(:,:,:,jp_pcs0_3d + 6) = zpronew (:,:,:) * zrfact2 * tmask(:,:,:) 439 trc3d(:,:,:,jp_pcs0_3d + 7) = zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) 440 trc3d(:,:,:,jp_pcs0_3d + 8) = zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:) 441 trc3d(:,:,:,jp_pcs0_3d + 9) = zprofed (:,:,:) * zrfact2 * tmask(:,:,:) 414 415 ! Total primary production per year 416 IF( iom_use( "tintpp" ) .OR. ( ln_check_mass .AND. kt == nitend .AND. jnt == nrdttrc ) ) & 417 & tpp = glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) ) 418 419 IF( lk_iomput ) THEN 420 IF( jnt == nrdttrc ) THEN 421 CALL wrk_alloc( jpi, jpj, zw2d ) 422 CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 423 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 424 ! 425 IF( iom_use( "PPPHY" ) .OR. iom_use( "PPPHY2" ) ) THEN 426 zw3d(:,:,:) = zprorca (:,:,:) * zfact * tmask(:,:,:) ! primary production by nanophyto 427 CALL iom_put( "PPPHY" , zw3d ) 428 ! 429 zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) ! primary production by diatomes 430 CALL iom_put( "PPPHY2" , zw3d ) 431 ENDIF 432 IF( iom_use( "PPNEWN" ) .OR. iom_use( "PPNEWD" ) ) THEN 433 zw3d(:,:,:) = zpronew (:,:,:) * zfact * tmask(:,:,:) ! new primary production by nanophyto 434 CALL iom_put( "PPNEWN" , zw3d ) 435 ! 436 zw3d(:,:,:) = zpronewd(:,:,:) * zfact * tmask(:,:,:) ! new primary production by diatomes 437 CALL iom_put( "PPNEWD" , zw3d ) 438 ENDIF 439 IF( iom_use( "PBSi" ) ) THEN 440 zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) ! biogenic silica production 441 CALL iom_put( "PBSi" , zw3d ) 442 ENDIF 443 IF( iom_use( "PFeN" ) .OR. iom_use( "PFeD" ) ) THEN 444 zw3d(:,:,:) = zprofen(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron production by nanophyto 445 CALL iom_put( "PFeN" , zw3d ) 446 ! 447 zw3d(:,:,:) = zprofed(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron production by diatomes 448 CALL iom_put( "PFeD" , zw3d ) 449 ENDIF 450 IF( iom_use( "Mumax" ) ) THEN 451 zw3d(:,:,:) = prmax(:,:,:) * tmask(:,:,:) ! Maximum growth rate 452 CALL iom_put( "Mumax" , zw3d ) 453 ENDIF 454 IF( iom_use( "MuN" ) .OR. iom_use( "MuD" ) ) THEN 455 zw3d(:,:,:) = zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:) ! Realized growth rate for nanophyto 456 CALL iom_put( "MuN" , zw3d ) 457 ! 458 zw3d(:,:,:) = zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:) ! Realized growth rate for diatoms 459 CALL iom_put( "MuD" , zw3d ) 460 ENDIF 461 IF( iom_use( "LNlight" ) .OR. iom_use( "LDlight" ) ) THEN 462 zw3d(:,:,:) = zprbio (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 463 CALL iom_put( "LNlight" , zw3d ) 464 ! 465 zw3d(:,:,:) = zprdia (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 466 CALL iom_put( "LDlight" , zw3d ) 467 ENDIF 468 IF( iom_use( "TPP" ) ) THEN 469 zw3d(:,:,:) = ( zprorca(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:) ! total primary production 470 CALL iom_put( "TPP" , zw3d ) 471 ENDIF 472 IF( iom_use( "TPNEW" ) ) THEN 473 zw3d(:,:,:) = ( zpronew(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:) ! total new production 474 CALL iom_put( "TPNEW" , zw3d ) 475 ENDIF 476 IF( iom_use( "TPBFE" ) ) THEN 477 zw3d(:,:,:) = ( zprofen(:,:,:) + zprofed(:,:,:) ) * zfact * tmask(:,:,:) ! total biogenic iron production 478 CALL iom_put( "TPBFE" , zw3d ) 479 ENDIF 480 IF( iom_use( "INTPPPHY" ) .OR. iom_use( "INTPPPHY2" ) ) THEN 481 zw2d(:,:) = 0. 482 DO jk = 1, jpkm1 483 zw2d(:,:) = zw2d(:,:) + zprorca (:,:,jk) * fse3t(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated primary produc. by nano 484 ENDDO 485 CALL iom_put( "INTPPPHY" , zw2d ) 486 ! 487 zw2d(:,:) = 0. 488 DO jk = 1, jpkm1 489 zw2d(:,:) = zw2d(:,:) + zprorcad(:,:,jk) * fse3t(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated primary produc. by diatom 490 ENDDO 491 CALL iom_put( "INTPPPHY2" , zw2d ) 492 ENDIF 493 IF( iom_use( "INTPP" ) ) THEN 494 zw2d(:,:) = 0. 495 DO jk = 1, jpkm1 496 zw2d(:,:) = zw2d(:,:) + ( zprorca(:,:,jk) + zprorcad(:,:,jk) ) * fse3t(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated pp 497 ENDDO 498 CALL iom_put( "INTPP" , zw2d ) 499 ENDIF 500 IF( iom_use( "INTPNEW" ) ) THEN 501 zw2d(:,:) = 0. 502 DO jk = 1, jpkm1 503 zw2d(:,:) = zw2d(:,:) + ( zpronew(:,:,jk) + zpronewd(:,:,jk) ) * fse3t(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated new prod 504 ENDDO 505 CALL iom_put( "INTPNEW" , zw2d ) 506 ENDIF 507 IF( iom_use( "INTPBFE" ) ) THEN ! total biogenic iron production ( vertically integrated ) 508 zw2d(:,:) = 0. 509 DO jk = 1, jpkm1 510 zw2d(:,:) = zw2d(:,:) + ( zprofen(:,:,jk) + zprofed(:,:,jk) ) * fse3t(:,:,jk) * zfact * tmask(:,:,jk) ! vert integr. bfe prod 511 ENDDO 512 CALL iom_put( "INTPBFE" , zw2d ) 513 ENDIF 514 IF( iom_use( "INTPBSI" ) ) THEN ! total biogenic silica production ( vertically integrated ) 515 zw2d(:,:) = 0. 516 DO jk = 1, jpkm1 517 zw2d(:,:) = zw2d(:,:) + zprorcad(:,:,jk) * zysopt(:,:,jk) * fse3t(:,:,jk) * zfact * tmask(:,:,jk) ! vert integr. bsi prod 518 ENDDO 519 CALL iom_put( "INTPBSI" , zw2d ) 520 ENDIF 521 IF( iom_use( "tintpp" ) ) CALL iom_put( "tintpp" , tpp * zfact ) ! global total integrated primary production molC/s 522 ! 523 CALL wrk_dealloc( jpi, jpj, zw2d ) 524 CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 525 ENDIF 526 ELSE 527 IF( ln_diatrc ) THEN 528 zfact = 1.e+3 * rfact2r 529 trc3d(:,:,:,jp_pcs0_3d + 4) = zprorca (:,:,:) * zfact * tmask(:,:,:) 530 trc3d(:,:,:,jp_pcs0_3d + 5) = zprorcad(:,:,:) * zfact * tmask(:,:,:) 531 trc3d(:,:,:,jp_pcs0_3d + 6) = zpronew (:,:,:) * zfact * tmask(:,:,:) 532 trc3d(:,:,:,jp_pcs0_3d + 7) = zpronewd(:,:,:) * zfact * tmask(:,:,:) 533 trc3d(:,:,:,jp_pcs0_3d + 8) = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) 534 trc3d(:,:,:,jp_pcs0_3d + 9) = zprofed (:,:,:) * zfact * tmask(:,:,:) 442 535 # if ! defined key_kriest 443 trc3d(:,:,:,jp_pcs0_3d + 10) = zprofen (:,:,:) * zrfact2* tmask(:,:,:)536 trc3d(:,:,:,jp_pcs0_3d + 10) = zprofen (:,:,:) * zfact * tmask(:,:,:) 444 537 # endif 445 ENDIF 446 ! 447 ENDIF 448 449 IF(ln_ctl) THEN ! print mean trends (used for debugging) 538 ENDIF 539 ENDIF 540 541 IF(ln_ctl) THEN ! print mean trends (used for debugging) 450 542 WRITE(charout, FMT="('prod')") 451 543 CALL prt_ctl_trc_info(charout) 452 544 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 453 454 455 456 457 458 459 460 545 ENDIF 546 ! 547 CALL wrk_dealloc( jpi, jpj, zmixnano, zmixdiat, zstrn ) 548 CALL wrk_dealloc( jpi, jpj, jpk, zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt ) 549 CALL wrk_dealloc( jpi, jpj, jpk, zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd ) 550 ! 551 IF( nn_timing == 1 ) CALL timing_stop('p4z_prod') 552 ! 461 553 END SUBROUTINE p4z_prod 462 554
Note: See TracChangeset
for help on using the changeset viewer.