Changeset 433 for trunk/NEMO/TOP_SRC/trcrst.F90
- Timestamp:
- 2006-04-10T17:40:29+02:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/TOP_SRC/trcrst.F90
r352 r433 19 19 USE sms 20 20 USE trctrp_lec 21 USE lib_mpp 21 22 22 23 IMPLICIT NONE … … 89 90 REAL(wp), DIMENSION(3) :: zinfo 90 91 91 #if defined key_trc_pisces && ( defined key_orca_r4 || defined key_orca_r2 || defined key_orca_r05 || defined key_orca_r025 )92 REAL(wp) , DIMENSION(jpi,jpj,jpk) :: zvolk 92 #if defined key_trc_pisces 93 #if ! defined key_cfg_1d && ( defined key_orca_r4 || defined key_orca_r2 || defined key_orca_r05 || defined key_orca_r025 ) 93 94 REAL(wp) :: zareatot, zpo4tot 95 #endif 94 96 #endif 95 97 … … 247 249 #if defined key_trc_pisces 248 250 249 #if defined key_orca_r4 || defined key_orca_r2 || defined key_orca_r05 || defined key_orca_r025 250 251 zvolk(:,:,:) = 0. 252 zareatot = 0. 253 DO jk = 1, jpkm1 254 DO jj = 2, jpjm1 255 DO ji = 2, jpim1 256 zvolk(ji,jj,jk) = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) * tmask(ji,jj,jk) 257 zareatot = zareatot + zvolk(ji,jj,jk) 258 ENDDO 259 ENDDO 260 ENDDO 261 251 #if ! defined key_cfg_1d && ( defined key_orca_r4 || defined key_orca_r2 || defined key_orca_r05 || defined key_orca_r025 ) 252 253 zareatot = 0. 254 DO jk = 1, jpk 255 DO jj = 1, jpj 256 DO ji = 1, jpi 257 zareatot = zareatot + tmask(ji,jj,jk) * tmask_i(ji,jj) * & 258 & e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 259 END DO 260 END DO 261 END DO 262 263 IF( lk_mpp ) THEN 264 CALL mpp_sum( zareatot ) ! sum over the global domain 265 END IF 262 266 263 267 zpo4tot = 0. 264 DO jk = 1, jpkm1 265 DO jj = 2, jpjm1 266 DO ji = 2, jpim1 267 zpo4tot = zpo4tot + trn(ji,jj,jk,jptal) * zvolk(ji,jj,jk) 268 DO jk = 1, jpk 269 DO jj = 1, jpj 270 DO ji = 1, jpi 271 zpo4tot = zpo4tot + trn(ji,jj,jk,jptal) * tmask(ji,jj,jk) * tmask_i(ji,jj) * & 272 & e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 268 273 END DO 269 274 END DO 270 275 END DO 276 277 IF( lk_mpp ) THEN 278 CALL mpp_sum( zpo4tot ) ! sum over the global domain 279 END IF 271 280 272 281 WRITE(0,*) 'TALK moyen ', zpo4tot/zareatot*1E6 … … 274 283 trn(:,:,:,jptal) = trn(:,:,:,jptal)*2391./zpo4tot 275 284 276 277 285 zpo4tot = 0. 278 DO jk = 1, jpkm1 279 DO jj = 2, jpjm1 280 DO ji = 2, jpim1 281 zpo4tot = zpo4tot + trn(ji,jj,jk,jppo4) * zvolk(ji,jj,jk) 286 DO jk = 1, jpk 287 DO jj = 1, jpj 288 DO ji = 1, jpi 289 zpo4tot = zpo4tot + trn(ji,jj,jk,jppo4) * tmask(ji,jj,jk) * tmask_i(ji,jj) * & 290 & e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 282 291 END DO 283 292 END DO 284 293 END DO 294 295 IF( lk_mpp ) THEN 296 CALL mpp_sum( zpo4tot ) ! sum over the global domain 297 END IF 298 285 299 286 300 WRITE(0,*) 'PO4 moyen ', zpo4tot/zareatot*1E6/122. … … 288 302 trn(:,:,:,jppo4) = trn(:,:,:,jppo4)*2.165/zpo4tot 289 303 290 291 304 zpo4tot = 0. 292 DO jk = 1, jpkm1 293 DO jj = 2, jpjm1 294 DO ji = 2, jpim1 295 zpo4tot = zpo4tot + trn(ji,jj,jk,jpno3) * zvolk(ji,jj,jk) 305 DO jk = 1, jpk 306 DO jj = 1, jpj 307 DO ji = 1, jpi 308 zpo4tot = zpo4tot + trn(ji,jj,jk,jpno3) * tmask(ji,jj,jk) * tmask_i(ji,jj) * & 309 & e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 296 310 END DO 297 311 END DO 298 312 END DO 313 314 IF( lk_mpp ) THEN 315 CALL mpp_sum( zpo4tot ) ! sum over the global domain 316 END IF 317 299 318 300 319 WRITE(0,*) 'NO3 moyen ', zpo4tot/zareatot*1E6/7.6 … … 303 322 304 323 zpo4tot = 0. 305 DO jk = 1, jpkm1 306 DO jj = 2, jpjm1 307 DO ji = 2, jpim1 308 zpo4tot = zpo4tot + trn(ji,jj,jk,jpsil) * zvolk(ji,jj,jk) 324 DO jk = 1, jpk 325 DO jj = 1, jpj 326 DO ji = 1, jpi 327 zpo4tot = zpo4tot + trn(ji,jj,jk,jpsil) * tmask(ji,jj,jk) * tmask_i(ji,jj) * & 328 & e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 309 329 END DO 310 330 END DO 311 331 END DO 332 333 IF( lk_mpp ) THEN 334 CALL mpp_sum( zpo4tot ) ! sum over the global domain 335 END IF 312 336 313 337 WRITE(0,*) 'SiO3 moyen ', zpo4tot/zareatot*1E6 … … 402 426 403 427 REAL(wp) :: zdate0, zinfo(3),zdiag_var, & 404 zdiag_varmin, zdiag_varmax 428 zdiag_varmin, zdiag_varmax, zdiag_tot, zder 405 429 406 430 … … 412 436 IF(lwp) WRITE(numout,*) 'trc_wri : write passive tracers restart.output NetCDF file' 413 437 IF(lwp) WRITE(numout,*) '~~~~~~~' 438 439 440 areatot = 0. 441 DO jk = 1, jpk 442 DO jj = 1, jpj 443 DO ji = 1, jpi 444 areatot = areatot + tmask(ji,jj,jk)*tmask_i(ji,jj)*e1t(ji,jj)*e2t(ji,jj)*fse3t(ji,jj,jk) 445 END DO 446 END DO 447 END DO 448 449 IF( lk_mpp ) THEN 450 CALL mpp_sum(areatot) ! sum over the global domain 451 END IF 452 453 trai = 0. 454 DO jn = 1, jptra 455 DO jk = 1,jpk 456 DO jj = 1, jpj 457 DO ji = 1, jpi 458 trai=trai+tmask(ji,jj,jk)*trn(ji,jj,jk,jn)* & 459 & tmask_i(ji,jj)* e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 460 END DO 461 END DO 462 END DO 463 END DO 464 465 IF( lk_mpp ) THEN 466 CALL mpp_sum(trai) ! sum over the global domain 467 END IF 468 469 IF (lwp) WRITE(numout,*) 'Integral of all tracers over the full domain at NIT000 =',trai 470 414 471 ENDIF 415 472 … … 452 509 IF(cexper(jc:jc) /= ' ') ic = jc 453 510 END DO 454 WRITE(cln,'("_",i 2.2,i2.2,i2.2,"_restart.trc")') nyear, nmonth, nday511 WRITE(cln,'("_",i4.4,i2.2,i2.2,"_restart.trc")') nyear, nmonth, nday 455 512 clname=cexper(1:ic)//cln 456 513 ic=1 … … 469 526 ! -------------------- 470 527 528 IF (lwp) WRITE(numout,*) '----TRACER STAT----' 529 zdiag_tot=0. 471 530 DO jn=1,jptra 472 531 clname='TRN'//ctrcnm(jn) … … 476 535 zdiag_varmin=0. 477 536 zdiag_varmax=0. 478 IF (lwp) WRITE(numout,*) '----TRACER STAT----' 479 480 DO ji=1,jpi 481 DO jj=1,jpj 537 538 DO ji=1, jpi 539 DO jj=1, jpj 482 540 DO jk=1,jpk 483 484 zdiag_var=zdiag_var+tmask(ji,jj,jk)*trn(ji,jj,jk,jn) 485 486 IF (tmask(ji,jj,jk).EQ.1.) THEN 487 IF (zdiag_varmin.GT.trn(ji,jj,jk,jn)) & 488 zdiag_varmin = trn(ji,jj,jk,jn) 489 IF (zdiag_varmax.LT.trn(ji,jj,jk,jn)) & 490 zdiag_varmax = trn(ji,jj,jk,jn) 491 492 ENDIF 541 zdiag_var=zdiag_var+tmask(ji,jj,jk)*trn(ji,jj,jk,jn)* & 542 tmask_i(ji,jj)* e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 493 543 494 544 END DO … … 496 546 END DO 497 547 498 499 zdiag_var=zdiag_var/(jpi*jpj*jpk) 500 501 IF(lwp) WRITE(numout,*) 'MEAN NO ',jn,' =',zdiag_var,'MIN= ' & 548 zdiag_varmin=MINVAL(trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.))) 549 zdiag_varmax=MAXVAL(trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.))) 550 551 IF( lk_mpp ) THEN 552 CALL mpp_min(zdiag_varmin) ! min over the global domain 553 CALL mpp_max(zdiag_varmax) ! max over the global domain 554 CALL mpp_sum(zdiag_var) ! sum over the global domain 555 END IF 556 557 zdiag_tot=zdiag_tot+zdiag_var 558 zdiag_var=zdiag_var/areatot 559 560 IF (lwp) WRITE(numout,*) 'MEAN NO ',jn,ctrcnm(jn),' =',zdiag_var,'MIN= ' & 502 561 ,zdiag_varmin,'MAX= ',zdiag_varmax 503 562 504 563 END DO 564 565 zdiag_tot=zdiag_tot 566 zder=((zdiag_tot-trai)/trai)*100._wp 567 IF (lwp) WRITE(numout,*) 'Integral of all tracers over the full domain =',zdiag_tot 568 IF (lwp) WRITE(numout,*) 'Drift of the sum of all tracers =',zder, '%' 505 569 506 570 DO jn=1,jptra … … 508 572 CALL restput(nutwrs,clname,jpi,jpj,jpk,0,trb(:,:,:,jn)) 509 573 END DO 510 511 574 512 575 #if defined key_trc_lobster1
Note: See TracChangeset
for help on using the changeset viewer.