Changeset 5038 for branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsink.F90
- Timestamp:
- 2015-01-20T15:26:13+01:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsink.F90
r4148 r5038 41 41 #endif 42 42 43 INTEGER :: ik sed = 1043 INTEGER :: ik100 44 44 45 45 #if defined key_kriest … … 94 94 REAL(wp) :: zagg , zaggfe, zaggdoc, zaggdoc2, zaggdoc3 95 95 REAL(wp) :: zfact, zwsmax, zmax, zstep 96 REAL(wp) :: zrfact297 INTEGER :: ik198 96 CHARACTER (len=25) :: charout 97 REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d 98 REAL(wp), POINTER, DIMENSION(:,: ) :: zw2d 99 99 !!--------------------------------------------------------------------- 100 100 ! … … 235 235 END DO 236 236 237 ! Total primary production per year 238 t_oce_co2_exp = t_oce_co2_exp + glob_sum( ( sinking(:,:,iksed+1) + sinking2(:,:,iksed+1) ) * e1e2t(:,:) * tmask(:,:,1) ) 237 238 ! Total carbon export per year 239 IF( iom_use( "tcexp" ) .OR. ( ln_check_mass .AND. kt == nitend .AND. jnt == nrdttrc ) ) & 240 & t_oce_co2_exp = glob_sum( ( sinking(:,:,ik100) + sinking2(:,:,ik100) ) * e1e2t(:,:) * tmask(:,:,1) ) 239 241 ! 240 IF( ln_diatrc ) THEN 241 zrfact2 = 1.e3 * rfact2r 242 ik1 = iksed + 1 243 IF( lk_iomput ) THEN 244 IF( jnt == nrdttrc ) THEN 245 CALL iom_put( "EPC100" , ( sinking(:,:,ik1) + sinking2(:,:,ik1) ) * zrfact2 * tmask(:,:,1) ) ! Export of carbon at 100m 246 CALL iom_put( "EPFE100" , ( sinkfer(:,:,ik1) + sinkfer2(:,:,ik1) ) * zrfact2 * tmask(:,:,1) ) ! Export of iron at 100m 247 CALL iom_put( "EPCAL100", sinkcal(:,:,ik1) * zrfact2 * tmask(:,:,1) ) ! Export of calcite at 100m 248 CALL iom_put( "EPSI100" , sinksil(:,:,ik1) * zrfact2 * tmask(:,:,1) ) ! Export of biogenic silica at 100m 249 ENDIF 250 ELSE 251 trc2d(:,:,jp_pcs0_2d + 4) = sinking (:,:,ik1) * zrfact2 * tmask(:,:,1) 252 trc2d(:,:,jp_pcs0_2d + 5) = sinking2(:,:,ik1) * zrfact2 * tmask(:,:,1) 253 trc2d(:,:,jp_pcs0_2d + 6) = sinkfer (:,:,ik1) * zrfact2 * tmask(:,:,1) 254 trc2d(:,:,jp_pcs0_2d + 7) = sinkfer2(:,:,ik1) * zrfact2 * tmask(:,:,1) 255 trc2d(:,:,jp_pcs0_2d + 8) = sinksil (:,:,ik1) * zrfact2 * tmask(:,:,1) 256 trc2d(:,:,jp_pcs0_2d + 9) = sinkcal (:,:,ik1) * zrfact2 * tmask(:,:,1) 242 IF( lk_iomput ) THEN 243 IF( jnt == nrdttrc ) THEN 244 CALL wrk_alloc( jpi, jpj, zw2d ) 245 CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 246 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 247 ! 248 IF( iom_use( "EPC100" ) ) THEN 249 zw2d(:,:) = ( sinking(:,:,ik100) + sinking2(:,:,ik100) ) * zfact * tmask(:,:,1) ! Export of carbon at 100m 250 CALL iom_put( "EPC100" , zw2d ) 251 ENDIF 252 IF( iom_use( "EPFE100" ) ) THEN 253 zw2d(:,:) = ( sinkfer(:,:,ik100) + sinkfer2(:,:,ik100) ) * zfact * tmask(:,:,1) ! Export of iron at 100m 254 CALL iom_put( "EPFE100" , zw2d ) 255 ENDIF 256 IF( iom_use( "EPCAL100" ) ) THEN 257 zw2d(:,:) = sinkcal(:,:,ik100) * zfact * tmask(:,:,1) ! Export of calcite at 100m 258 CALL iom_put( "EPCAL100" , zw2d ) 259 ENDIF 260 IF( iom_use( "EPSI100" ) ) THEN 261 zw2d(:,:) = sinksil(:,:,ik100) * zfact * tmask(:,:,1) ! Export of bigenic silica at 100m 262 CALL iom_put( "EPSI100" , zw2d ) 263 ENDIF 264 IF( iom_use( "EXPC" ) ) THEN 265 zw3d(:,:,:) = ( sinking(:,:,:) + sinking2(:,:,:) ) * zfact * tmask(:,:,:) ! Export of carbon in the water column 266 CALL iom_put( "EXPC" , zw3d ) 267 ENDIF 268 IF( iom_use( "EXPFE" ) ) THEN 269 zw3d(:,:,:) = ( sinkfer(:,:,:) + sinkfer2(:,:,:) ) * zfact * tmask(:,:,:) ! Export of iron 270 CALL iom_put( "EXPFE" , zw3d ) 271 ENDIF 272 IF( iom_use( "EXPCAL" ) ) THEN 273 zw3d(:,:,:) = sinkcal(:,:,:) * zfact * tmask(:,:,:) ! Export of calcite 274 CALL iom_put( "EXPCAL" , zw3d ) 275 ENDIF 276 IF( iom_use( "EXPSI" ) ) THEN 277 zw3d(:,:,:) = sinksil(:,:,:) * zfact * tmask(:,:,:) ! Export of bigenic silica 278 CALL iom_put( "EXPSI" , zw3d ) 279 ENDIF 280 IF( iom_use( "tcexp" ) ) CALL iom_put( "tcexp" , t_oce_co2_exp * zfact ) ! molC/s 281 ! 282 CALL wrk_dealloc( jpi, jpj, zw2d ) 283 CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 284 ENDIF 285 ELSE 286 IF( ln_diatrc ) THEN 287 zfact = 1.e3 * rfact2r 288 trc2d(:,:,jp_pcs0_2d + 4) = sinking (:,:,ik100) * zfact * tmask(:,:,1) 289 trc2d(:,:,jp_pcs0_2d + 5) = sinking2(:,:,ik100) * zfact * tmask(:,:,1) 290 trc2d(:,:,jp_pcs0_2d + 6) = sinkfer (:,:,ik100) * zfact * tmask(:,:,1) 291 trc2d(:,:,jp_pcs0_2d + 7) = sinkfer2(:,:,ik100) * zfact * tmask(:,:,1) 292 trc2d(:,:,jp_pcs0_2d + 8) = sinksil (:,:,ik100) * zfact * tmask(:,:,1) 293 trc2d(:,:,jp_pcs0_2d + 9) = sinkcal (:,:,ik100) * zfact * tmask(:,:,1) 257 294 ENDIF 258 295 ENDIF … … 272 309 !! *** ROUTINE p4z_sink_init *** 273 310 !!---------------------------------------------------------------------- 274 311 INTEGER :: jk 312 313 ik100 = 10 ! last level where depth less than 100 m 314 DO jk = jpkm1, 1, -1 315 IF( gdept_1d(jk) > 100. ) ik100 = jk - 1 316 END DO 317 IF (lwp) WRITE(numout,*) 318 IF (lwp) WRITE(numout,*) ' Level corresponding to 100m depth ', ik100 + 1 319 IF (lwp) WRITE(numout,*) 320 ! 275 321 t_oce_co2_exp = 0._wp 276 322 ! … … 300 346 REAL(wp) :: zdiv , zdiv1, zdiv2, zdiv3, zdiv4, zdiv5 301 347 REAL(wp) :: zval1, zval2, zval3, zval4 302 REAL(wp) :: z rfact2348 REAL(wp) :: zfact 303 349 INTEGER :: ik1 304 350 CHARACTER (len=25) :: charout 305 351 REAL(wp), POINTER, DIMENSION(:,:,:) :: znum3d 352 REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d 353 REAL(wp), POINTER, DIMENSION(:,: ) :: zw2d 306 354 !!--------------------------------------------------------------------- 307 355 ! … … 477 525 478 526 ! Total primary production per year 479 t_oce_co2_exp = t_oce_co2_exp + glob_sum( ( sinking(:,:, :) ) * cvol(:,:,:) )527 t_oce_co2_exp = t_oce_co2_exp + glob_sum( ( sinking(:,:,ik100) * e1e2t(:,:) * tmask(:,:,1) ) 480 528 ! 481 IF( ln_diatrc ) THEN 482 ! 483 ik1 = iksed + 1 484 zrfact2 = 1.e3 * rfact2r 485 IF( jnt == nrdttrc ) THEN 486 CALL iom_put( "POCFlx" , sinking (:,:,:) * zrfact2 * tmask(:,:,:) ) ! POC export 487 CALL iom_put( "NumFlx" , sinking2 (:,:,:) * zrfact2 * tmask(:,:,:) ) ! Num export 488 CALL iom_put( "SiFlx" , sinksil (:,:,:) * zrfact2 * tmask(:,:,:) ) ! Silica export 489 CALL iom_put( "CaCO3Flx", sinkcal (:,:,:) * zrfact2 * tmask(:,:,:) ) ! Calcite export 490 CALL iom_put( "xnum" , znum3d (:,:,:) * tmask(:,:,:) ) ! Number of particles in aggregats 491 CALL iom_put( "W1" , wsbio3 (:,:,:) * tmask(:,:,:) ) ! sinking speed of POC 492 CALL iom_put( "W2" , wsbio4 (:,:,:) * tmask(:,:,:) ) ! sinking speed of aggregats 529 IF( lk_iomput ) THEN 530 IF( jnt == nrdttrc ) THEN 531 CALL wrk_alloc( jpi, jpj, zw2d ) 532 CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 533 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 534 ! 535 IF( iom_use( "EPC100" ) ) THEN 536 zw2d(:,:) = sinking(:,:,ik100) * zfact * tmask(:,:,1) ! Export of carbon at 100m 537 CALL iom_put( "EPC100" , zw2d ) 538 ENDIF 539 IF( iom_use( "EPN100" ) ) THEN 540 zw2d(:,:) = sinking2(:,:,ik100) * zfact * tmask(:,:,1) ! Export of number of aggregates ? 541 CALL iom_put( "EPN100" , zw2d ) 542 ENDIF 543 IF( iom_use( "EPCAL100" ) ) THEN 544 zw2d(:,:) = sinkcal(:,:,ik100) * zfact * tmask(:,:,1) ! Export of calcite at 100m 545 CALL iom_put( "EPCAL100" , zw2d ) 546 ENDIF 547 IF( iom_use( "EPSI100" ) ) THEN 548 zw2d(:,:) = sinksil(:,:,ik100) * zfact * tmask(:,:,1) ! Export of bigenic silica at 100m 549 CALL iom_put( "EPSI100" , zw2d ) 550 ENDIF 551 IF( iom_use( "EXPC" ) ) THEN 552 zw3d(:,:,:) = sinking(:,:,:) * zfact * tmask(:,:,:) ! Export of carbon in the water column 553 CALL iom_put( "EXPC" , zw3d ) 554 ENDIF 555 IF( iom_use( "EXPN" ) ) THEN 556 zw3d(:,:,:) = sinking(:,:,:) * zfact * tmask(:,:,:) ! Export of carbon in the water column 557 CALL iom_put( "EXPN" , zw3d ) 558 ENDIF 559 IF( iom_use( "EXPCAL" ) ) THEN 560 zw3d(:,:,:) = sinkcal(:,:,:) * zfact * tmask(:,:,:) ! Export of calcite 561 CALL iom_put( "EXPCAL" , zw3d ) 562 ENDIF 563 IF( iom_use( "EXPSI" ) ) THEN 564 zw3d(:,:,:) = sinksil(:,:,:) * zfact * tmask(:,:,:) ! Export of bigenic silica 565 CALL iom_put( "EXPSI" , zw3d ) 566 ENDIF 567 IF( iom_use( "XNUM" ) ) THEN 568 zw3d(:,:,:) = znum3d(:,:,:) * tmask(:,:,:) ! Number of particles on aggregats 569 CALL iom_put( "XNUM" , zw3d ) 570 ENDIF 571 IF( iom_use( "WSC" ) ) THEN 572 zw3d(:,:,:) = wsbio3(:,:,:) * tmask(:,:,:) ! Sinking speed of carbon particles 573 CALL iom_put( "WSC" , zw3d ) 574 ENDIF 575 IF( iom_use( "WSN" ) ) THEN 576 zw3d(:,:,:) = wsbio4(:,:,:) * tmask(:,:,:) ! Sinking speed of particles number 577 CALL iom_put( "WSN" , zw3d ) 578 ENDIF 579 ! 580 CALL wrk_dealloc( jpi, jpj, zw2d ) 581 CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 582 ELSE 583 IF( ln_diatrc ) THEN 584 zfact = 1.e3 * rfact2r 585 trc2d(:,: ,jp_pcs0_2d + 4) = sinking (:,:,ik100) * zfact * tmask(:,:,1) 586 trc2d(:,: ,jp_pcs0_2d + 5) = sinking2(:,:,ik100) * zfact * tmask(:,:,1) 587 trc2d(:,: ,jp_pcs0_2d + 6) = sinkfer (:,:,ik100) * zfact * tmask(:,:,1) 588 trc2d(:,: ,jp_pcs0_2d + 7) = sinksil (:,:,ik100) * zfact * tmask(:,:,1) 589 trc2d(:,: ,jp_pcs0_2d + 8) = sinkcal (:,:,ik100) * zfact * tmask(:,:,1) 590 trc3d(:,:,:,jp_pcs0_3d + 11) = sinking (:,:,:) * zfact * tmask(:,:,:) 591 trc3d(:,:,:,jp_pcs0_3d + 12) = sinking2(:,:,:) * zfact * tmask(:,:,:) 592 trc3d(:,:,:,jp_pcs0_3d + 13) = sinksil (:,:,:) * zfact * tmask(:,:,:) 593 trc3d(:,:,:,jp_pcs0_3d + 14) = sinkcal (:,:,:) * zfact * tmask(:,:,:) 594 trc3d(:,:,:,jp_pcs0_3d + 15) = znum3d (:,:,:) * tmask(:,:,:) 595 trc3d(:,:,:,jp_pcs0_3d + 16) = wsbio3 (:,:,:) * tmask(:,:,:) 596 trc3d(:,:,:,jp_pcs0_3d + 17) = wsbio4 (:,:,:) * tmask(:,:,:) 493 597 ENDIF 494 # if ! defined key_iomput495 trc2d(:,: ,jp_pcs0_2d + 4) = sinking (:,:,ik1) * zrfact2 * tmask(:,:,1)496 trc2d(:,: ,jp_pcs0_2d + 5) = sinking2(:,:,ik1) * zrfact2 * tmask(:,:,1)497 trc2d(:,: ,jp_pcs0_2d + 6) = sinkfer (:,:,ik1) * zrfact2 * tmask(:,:,1)498 trc2d(:,: ,jp_pcs0_2d + 7) = sinksil (:,:,ik1) * zrfact2 * tmask(:,:,1)499 trc2d(:,: ,jp_pcs0_2d + 8) = sinkcal (:,:,ik1) * zrfact2 * tmask(:,:,1)500 trc3d(:,:,:,jp_pcs0_3d + 11) = sinking (:,:,:) * zrfact2 * tmask(:,:,:)501 trc3d(:,:,:,jp_pcs0_3d + 12) = sinking2(:,:,:) * zrfact2 * tmask(:,:,:)502 trc3d(:,:,:,jp_pcs0_3d + 13) = sinksil (:,:,:) * zrfact2 * tmask(:,:,:)503 trc3d(:,:,:,jp_pcs0_3d + 14) = sinkcal (:,:,:) * zrfact2 * tmask(:,:,:)504 trc3d(:,:,:,jp_pcs0_3d + 15) = znum3d (:,:,:) * tmask(:,:,:)505 trc3d(:,:,:,jp_pcs0_3d + 16) = wsbio3 (:,:,:) * tmask(:,:,:)506 trc3d(:,:,:,jp_pcs0_3d + 17) = wsbio4 (:,:,:) * tmask(:,:,:)507 # endif508 !509 598 ENDIF 599 510 600 ! 511 601 IF(ln_ctl) THEN ! print mean trends (used for debugging) … … 554 644 READ ( numnatp_cfg, nampiskrs, IOSTAT = ios, ERR = 902 ) 555 645 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiskrs in configuration namelist', lwp ) 556 WRITE ( numonp, nampiskrs )646 IF(lwm) WRITE ( numonp, nampiskrs ) 557 647 558 648 IF(lwp) THEN … … 663 753 END DO 664 754 ! 755 ik100 = 10 ! last level where depth less than 100 m 756 DO jk = jpkm1, 1, -1 757 IF( gdept_1d(jk) > 100. ) iksed = jk - 1 758 END DO 759 IF (lwp) WRITE(numout,*) 760 IF (lwp) WRITE(numout,*) ' Level corresponding to 100m depth ', ik100 + 1 761 IF (lwp) WRITE(numout,*) 762 ! 665 763 t_oce_co2_exp = 0._wp 666 764 !
Note: See TracChangeset
for help on using the changeset viewer.