Changeset 3028
- Timestamp:
- 2011-10-31T09:42:39+01:00 (12 years ago)
- Location:
- branches/2011/dev_LOCEAN_2011/NEMOGCM/NEMO/TOP_SRC
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_LOCEAN_2011/NEMOGCM/NEMO/TOP_SRC/C14b/trcsms_c14b.F90
r2977 r3028 96 96 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 97 97 USE wrk_nemo, ONLY: zatmbc14 => wrk_2d_1 98 USE wrk_nemo, ONLY: z w3d=> wrk_3d_198 USE wrk_nemo, ONLY: zdecay => wrk_3d_1 99 99 ! 100 100 INTEGER, INTENT(in) :: kt ! ocean time-step index … … 251 251 ! cumulation of surface flux at each time step 252 252 qint_c14(ji,jj) = qint_c14(ji,jj) + qtr_c14(ji,jj) * rdt 253 254 ! ! Save 2D diagnostics255 IF( .NOT.lk_iomput .AND. ln_diatrc ) THEN256 trc2d(ji,jj,jp_c14b0_2d ) = qtr_c14 (ji,jj)257 trc2d(ji,jj,jp_c14b0_2d + 1) = qint_c14(ji,jj)258 ENDIF259 253 ! 260 254 END DO … … 266 260 DO ji = 1, jpi 267 261 #if defined key_degrad 268 z tra= trn(ji,jj,jk,jpc14) * ( 1. - EXP( -xlambda * rdt * facvol(ji,jj,jk) ) )262 zdecay(ji,jj,jk) = trn(ji,jj,jk,jpc14) * ( 1. - EXP( -xlambda * rdt * facvol(ji,jj,jk) ) ) 269 263 #else 270 z tra= trn(ji,jj,jk,jpc14) * xaccum264 zdecay(ji,jj,jk) = trn(ji,jj,jk,jpc14) * xaccum 271 265 #endif 272 tra(ji,jj,jk,jpc14) = tra(ji,jj,jk,jpc14) - ztra / rdt 273 ! ! save 3D diag : radioactive decay 274 IF( ln_diatrc ) THEN 275 IF( lk_iomput ) THEN ; zw3d(ji,jj,jk) = ztra 276 ELSE ; trc3d(ji,jj,jk,jp_c14b0_3d ) = ztra 277 ENDIF 278 ENDIF 266 tra(ji,jj,jk,jpc14) = tra(ji,jj,jk,jpc14) - zdecay(ji,jj,jk) / rdt 279 267 ! 280 268 END DO … … 282 270 END DO 283 271 284 IF( lk_iomput ) THEN 285 CALL iom_put( "qtrC14b" , qtr_c14 ) 286 CALL iom_put( "qintC14b" , qint_c14 ) 287 CALL iom_put( "fdecay" , zw3d ) 272 IF( ln_diatrc ) THEN 273 IF( lk_iomput ) THEN 274 CALL iom_put( "qtrC14b" , qtr_c14 ) 275 CALL iom_put( "qintC14b" , qint_c14 ) 276 CALL iom_put( "fdecay" , zdecay ) 277 ELSE 278 trc2d(:,: ,jp_c14b0_2d ) = qtr_c14 (:,:) 279 trc2d(:,: ,jp_c14b0_2d + 1 ) = qint_c14(:,:) 280 trc3d(:,:,:,jp_c14b0_3d ) = zdecay (:,:,:) 281 ENDIF 288 282 ENDIF 289 283 -
branches/2011/dev_LOCEAN_2011/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcbio.F90
r3010 r3028 80 80 !!--------------------------------------------------------------------- 81 81 82 IF( ln_diatrc .AND. lk_iomput) THEN82 IF( ln_diatrc ) THEN 83 83 IF( ( wrk_in_use(3, 2) ) .OR. ( wrk_in_use(4, 1) ) ) THEN 84 84 CALL ctl_stop('trc_bio : requested workspace arrays unavailable.') ; RETURN … … 97 97 fbod(:,:) = 0.e0 98 98 IF( ln_diatrc ) THEN 99 ! 100 IF( lk_iomput ) THEN 101 zw2d (:,:,:) = 0.e0 102 zw3d(:,:,:,:) = 0.e0 103 ELSE 104 trc2d(:,:, jp_lob0_2d:jp_lob1_2d) = 0.e0 105 trc3d(:,:,:,jp_lob0_3d:jp_lob1_3d) = 0.e0 106 ENDIF 107 ! 99 zw2d (:,:,:) = 0.e0 100 zw3d(:,:,:,:) = 0.e0 108 101 ENDIF 109 102 … … 223 216 ! convert fluxes in per day 224 217 ze3t = fse3t(ji,jj,jk) * 86400. 225 IF( lk_iomput ) THEN 226 zw2d(ji,jj,1) = zw2d(ji,jj,1) + zno3phy * ze3t 227 zw2d(ji,jj,2) = zw2d(ji,jj,2) + znh4phy * ze3t 228 zw2d(ji,jj,3) = zw2d(ji,jj,3) + zphydom * ze3t 229 zw2d(ji,jj,4) = zw2d(ji,jj,4) + zphynh4 * ze3t 230 zw2d(ji,jj,5) = zw2d(ji,jj,5) + zphyzoo * ze3t 231 zw2d(ji,jj,6) = zw2d(ji,jj,6) + zphydet * ze3t 232 zw2d(ji,jj,7) = zw2d(ji,jj,7) + zdetzoo * ze3t 233 zw2d(ji,jj,8) = zw2d(ji,jj,8) + zzoodet * ze3t 234 zw2d(ji,jj,9) = zw2d(ji,jj,9) + zzoobod * ze3t 235 zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t 236 zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t 237 zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t 238 zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t 239 zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t 240 zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t 241 zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t 242 zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t 243 ! 244 zw3d(ji,jj,jk,1) = zno3phy * 86400 245 zw3d(ji,jj,jk,2) = znh4phy * 86400 246 zw3d(ji,jj,jk,3) = znh4no3 * 86400 247 ELSE 248 trc2d(ji,jj,jp_lob0_2d ) = trc2d(ji,jj, jp_lob0_2d ) + zno3phy * ze3t 249 trc2d(ji,jj,jp_lob0_2d + 1) = trc2d(ji,jj, jp_lob0_2d + 1) + znh4phy * ze3t 250 trc2d(ji,jj,jp_lob0_2d + 2) = trc2d(ji,jj, jp_lob0_2d + 2) + zphydom * ze3t 251 trc2d(ji,jj,jp_lob0_2d + 3) = trc2d(ji,jj, jp_lob0_2d + 3) + zphynh4 * ze3t 252 trc2d(ji,jj,jp_lob0_2d + 4) = trc2d(ji,jj, jp_lob0_2d + 4) + zphyzoo * ze3t 253 trc2d(ji,jj,jp_lob0_2d + 5) = trc2d(ji,jj, jp_lob0_2d + 5) + zphydet * ze3t 254 trc2d(ji,jj,jp_lob0_2d + 6) = trc2d(ji,jj, jp_lob0_2d + 6) + zdetzoo * ze3t 255 ! trend number 8 is in trcsed.F 256 trc2d(ji,jj,jp_lob0_2d + 8) = trc2d(ji,jj,jp_lob0_2d + 8) + zzoodet * ze3t 257 trc2d(ji,jj,jp_lob0_2d + 9) = trc2d(ji,jj,jp_lob0_2d + 9) + zzoobod * ze3t 258 trc2d(ji,jj,jp_lob0_2d + 10) = trc2d(ji,jj,jp_lob0_2d + 10) + zzoonh4 * ze3t 259 trc2d(ji,jj,jp_lob0_2d + 11) = trc2d(ji,jj,jp_lob0_2d + 11) + zzoodom * ze3t 260 trc2d(ji,jj,jp_lob0_2d + 12) = trc2d(ji,jj,jp_lob0_2d + 12) + znh4no3 * ze3t 261 trc2d(ji,jj,jp_lob0_2d + 13) = trc2d(ji,jj,jp_lob0_2d + 13) + zdomnh4 * ze3t 262 trc2d(ji,jj,jp_lob0_2d + 14) = trc2d(ji,jj,jp_lob0_2d + 14) + zdetnh4 * ze3t 263 trc2d(ji,jj,jp_lob0_2d + 15) = trc2d(ji,jj,jp_lob0_2d + 15) + ( zno3phy + znh4phy - zphynh4 & 264 & - zphydom - zphyzoo - zphydet ) * ze3t 265 trc2d(ji,jj,jp_lob0_2d + 16) = trc2d(ji,jj,jp_lob0_2d + 16) + ( zphyzoo + zdetzoo - zzoodet & 266 & - zzoobod - zzoonh4 - zzoodom ) * ze3t 267 trc2d(ji,jj,jp_lob0_2d + 17) = trc2d(ji,jj,jp_lob0_2d + 17) + zdetdom * ze3t 268 ! trend number 19 is in trcexp.F 269 trc3d(ji,jj,jk,jp_lob0_3d ) = zno3phy * 86400 270 trc3d(ji,jj,jk,jp_lob0_3d + 1) = znh4phy * 86400 271 trc3d(ji,jj,jk,jp_lob0_3d + 2) = znh4no3 * 86400 272 ! 273 ENDIF 218 zw2d(ji,jj,1) = zw2d(ji,jj,1) + zno3phy * ze3t 219 zw2d(ji,jj,2) = zw2d(ji,jj,2) + znh4phy * ze3t 220 zw2d(ji,jj,3) = zw2d(ji,jj,3) + zphydom * ze3t 221 zw2d(ji,jj,4) = zw2d(ji,jj,4) + zphynh4 * ze3t 222 zw2d(ji,jj,5) = zw2d(ji,jj,5) + zphyzoo * ze3t 223 zw2d(ji,jj,6) = zw2d(ji,jj,6) + zphydet * ze3t 224 zw2d(ji,jj,7) = zw2d(ji,jj,7) + zdetzoo * ze3t 225 zw2d(ji,jj,8) = zw2d(ji,jj,8) + zzoodet * ze3t 226 zw2d(ji,jj,9) = zw2d(ji,jj,9) + zzoobod * ze3t 227 zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t 228 zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t 229 zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t 230 zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t 231 zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t 232 zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t 233 zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t 234 zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t 235 ! 236 zw3d(ji,jj,jk,1) = zno3phy * 86400 237 zw3d(ji,jj,jk,2) = znh4phy * 86400 238 zw3d(ji,jj,jk,3) = znh4no3 * 86400 274 239 ! 275 240 ENDIF … … 372 337 ! convert fluxes in per day 373 338 ze3t = fse3t(ji,jj,jk) * 86400. 374 IF( lk_iomput ) THEN 375 zw2d(ji,jj,1) = zw2d(ji,jj,1) + zno3phy * ze3t 376 zw2d(ji,jj,2) = zw2d(ji,jj,2) + znh4phy * ze3t 377 zw2d(ji,jj,3) = zw2d(ji,jj,3) + zphydom * ze3t 378 zw2d(ji,jj,4) = zw2d(ji,jj,4) + zphynh4 * ze3t 379 zw2d(ji,jj,5) = zw2d(ji,jj,5) + zphyzoo * ze3t 380 zw2d(ji,jj,6) = zw2d(ji,jj,6) + zphydet * ze3t 381 zw2d(ji,jj,7) = zw2d(ji,jj,7) + zdetzoo * ze3t 382 zw2d(ji,jj,8) = zw2d(ji,jj,8) + zzoodet * ze3t 383 zw2d(ji,jj,9) = zw2d(ji,jj,9) + zzoobod * ze3t 384 zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t 385 zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t 386 zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t 387 zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t 388 zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t 389 zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t 390 zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t 391 zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t 392 ! 393 zw3d(ji,jj,jk,1) = zno3phy * 86400 394 zw3d(ji,jj,jk,2) = znh4phy * 86400 395 zw3d(ji,jj,jk,3) = znh4no3 * 86400 396 ELSE 397 trc2d(ji,jj,jp_lob0_2d ) = trc2d(ji,jj, jp_lob0_2d ) + zno3phy * ze3t 398 trc2d(ji,jj,jp_lob0_2d + 1) = trc2d(ji,jj, jp_lob0_2d + 1) + znh4phy * ze3t 399 trc2d(ji,jj,jp_lob0_2d + 2) = trc2d(ji,jj, jp_lob0_2d + 2) + zphydom * ze3t 400 trc2d(ji,jj,jp_lob0_2d + 3) = trc2d(ji,jj, jp_lob0_2d + 3) + zphynh4 * ze3t 401 trc2d(ji,jj,jp_lob0_2d + 4) = trc2d(ji,jj, jp_lob0_2d + 4) + zphyzoo * ze3t 402 trc2d(ji,jj,jp_lob0_2d + 5) = trc2d(ji,jj, jp_lob0_2d + 5) + zphydet * ze3t 403 trc2d(ji,jj,jp_lob0_2d + 6) = trc2d(ji,jj, jp_lob0_2d + 6) + zdetzoo * ze3t 404 ! trend number 8 is in trcsed.F 405 trc2d(ji,jj,jp_lob0_2d + 8) = trc2d(ji,jj,jp_lob0_2d + 8) + zzoodet * ze3t 406 trc2d(ji,jj,jp_lob0_2d + 9) = trc2d(ji,jj,jp_lob0_2d + 9) + zzoobod * ze3t 407 trc2d(ji,jj,jp_lob0_2d + 10) = trc2d(ji,jj,jp_lob0_2d + 10) + zzoonh4 * ze3t 408 trc2d(ji,jj,jp_lob0_2d + 11) = trc2d(ji,jj,jp_lob0_2d + 11) + zzoodom * ze3t 409 trc2d(ji,jj,jp_lob0_2d + 12) = trc2d(ji,jj,jp_lob0_2d + 12) + znh4no3 * ze3t 410 trc2d(ji,jj,jp_lob0_2d + 13) = trc2d(ji,jj,jp_lob0_2d + 13) + zdomnh4 * ze3t 411 trc2d(ji,jj,jp_lob0_2d + 14) = trc2d(ji,jj,jp_lob0_2d + 14) + zdetnh4 * ze3t 412 trc2d(ji,jj,jp_lob0_2d + 15) = trc2d(ji,jj,jp_lob0_2d + 15) + ( zno3phy + znh4phy - zphynh4 & 413 & - zphydom - zphyzoo - zphydet ) * ze3t 414 trc2d(ji,jj,jp_lob0_2d + 16) = trc2d(ji,jj,jp_lob0_2d + 16) + ( zphyzoo + zdetzoo - zzoodet & 415 & - zzoobod - zzoonh4 - zzoodom ) * ze3t 416 trc2d(ji,jj,jp_lob0_2d + 17) = trc2d(ji,jj,jp_lob0_2d + 17) + zdetdom * ze3t 417 ! trend number 19 is in trcexp.F 418 trc3d(ji,jj,jk,jp_lob0_3d ) = zno3phy * 86400 419 trc3d(ji,jj,jk,jp_lob0_3d + 1) = znh4phy * 86400 420 trc3d(ji,jj,jk,jp_lob0_3d + 2) = znh4no3 * 86400 421 ! 422 ENDIF 339 zw2d(ji,jj,1) = zw2d(ji,jj,1) + zno3phy * ze3t 340 zw2d(ji,jj,2) = zw2d(ji,jj,2) + znh4phy * ze3t 341 zw2d(ji,jj,3) = zw2d(ji,jj,3) + zphydom * ze3t 342 zw2d(ji,jj,4) = zw2d(ji,jj,4) + zphynh4 * ze3t 343 zw2d(ji,jj,5) = zw2d(ji,jj,5) + zphyzoo * ze3t 344 zw2d(ji,jj,6) = zw2d(ji,jj,6) + zphydet * ze3t 345 zw2d(ji,jj,7) = zw2d(ji,jj,7) + zdetzoo * ze3t 346 zw2d(ji,jj,8) = zw2d(ji,jj,8) + zzoodet * ze3t 347 zw2d(ji,jj,9) = zw2d(ji,jj,9) + zzoobod * ze3t 348 zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t 349 zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t 350 zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t 351 zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t 352 zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t 353 zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t 354 zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t 355 zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t 356 ! 357 zw3d(ji,jj,jk,1) = zno3phy * 86400 358 zw3d(ji,jj,jk,2) = znh4phy * 86400 359 zw3d(ji,jj,jk,3) = znh4no3 * 86400 423 360 ! 424 361 ENDIF … … 429 366 IF( ln_diatrc ) THEN 430 367 ! 368 DO jl = 1, 17 369 CALL lbc_lnk( zw2d(:,:,jl),'T', 1. ) 370 END DO 371 DO jl = 1, 3 372 CALL lbc_lnk( zw3d(:,:,:,jl),'T', 1. ) 373 END DO 431 374 IF( lk_iomput ) THEN 432 DO jl = 1, 17433 CALL lbc_lnk( zw2d(:,:,jl),'T', 1. )434 END DO435 DO jl = 1, 3436 CALL lbc_lnk( zw3d(:,:,:,jl),'T', 1. )437 END DO438 375 ! Save diagnostics 439 376 CALL iom_put( "TNO3PHY", zw2d(:,:,1) ) … … 460 397 ELSE 461 398 ! 462 DO jl = jp_lob0_2d, jp_lob1_2d 463 CALL lbc_lnk( trc2d(:,:,jl),'T', 1. ) 464 END DO 465 ! 466 DO jl = jp_lob0_3d, jp_lob1_3d 467 CALL lbc_lnk( trc3d(:,:,1,jl),'T', 1. ) 468 END DO 469 ! 470 ENDIF 399 trc2d(:,:,jp_lob0_2d ) = zw2d(:,:,1) 400 trc2d(:,:,jp_lob0_2d + 1) = zw2d(:,:,2) 401 trc2d(:,:,jp_lob0_2d + 2) = zw2d(:,:,3) 402 trc2d(:,:,jp_lob0_2d + 3) = zw2d(:,:,4) 403 trc2d(:,:,jp_lob0_2d + 4) = zw2d(:,:,5) 404 trc2d(:,:,jp_lob0_2d + 5) = zw2d(:,:,6) 405 trc2d(:,:,jp_lob0_2d + 6) = zw2d(:,:,7) 406 ! trend number 8 is in trcsed.F 407 trc2d(:,:,jp_lob0_2d + 8) = zw2d(:,:,8) 408 trc2d(:,:,jp_lob0_2d + 9) = zw2d(:,:,9) 409 trc2d(:,:,jp_lob0_2d + 10) = zw2d(:,:,10) 410 trc2d(:,:,jp_lob0_2d + 11) = zw2d(:,:,11) 411 trc2d(:,:,jp_lob0_2d + 12) = zw2d(:,:,12) 412 trc2d(:,:,jp_lob0_2d + 13) = zw2d(:,:,13) 413 trc2d(:,:,jp_lob0_2d + 14) = zw2d(:,:,14) 414 trc2d(:,:,jp_lob0_2d + 15) = zw2d(:,:,15) 415 trc2d(:,:,jp_lob0_2d + 16) = zw2d(:,:,16) 416 trc2d(:,:,jp_lob0_2d + 17) = zw2d(:,:,17) 417 ! trend number 19 is in trcexp.F 418 trc3d(:,:,:,jp_lob0_3d ) = zw3d(:,:,:,1) 419 trc3d(:,:,:,jp_lob0_3d + 1) = zw3d(:,:,:,2) 420 trc3d(:,:,:,jp_lob0_3d + 2) = zw3d(:,:,:,3) 421 ENDIF 471 422 ! 472 423 ENDIF -
branches/2011/dev_LOCEAN_2011/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcsed.F90
r2977 r3028 57 57 !!--------------------------------------------------------------------- 58 58 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 59 USE wrk_nemo, ONLY: zw2d => wrk_2d_1, zwork => wrk_3d_2 59 USE wrk_nemo, ONLY: zwork => wrk_3d_2, ztra => wrk_3d_3 60 USE wrk_nemo, ONLY: zw2d => wrk_2d_1 60 61 !! 61 62 INTEGER, INTENT( in ) :: kt ! ocean time-step index 62 63 !! 63 64 INTEGER :: ji, jj, jk, jl, ierr 64 REAL(wp) :: ztra, ze3t65 65 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrbio 66 66 CHARACTER (len=25) :: charout … … 73 73 ENDIF 74 74 75 IF( wrk_in_use(2, 1) .OR. wrk_in_use(3, 2 ) ) THEN75 IF( wrk_in_use(2, 1) .OR. wrk_in_use(3, 2,3) ) THEN 76 76 CALL ctl_stop('trc_sed : requested workspace arrays unavailable.') ; RETURN 77 77 END IF … … 85 85 ENDIF 86 86 87 IF( ln_diatrc .AND. lk_iomput) zw2d(:,:) = 0.87 IF( ln_diatrc ) zw2d(:,:) = 0. 88 88 89 89 ! sedimentation of detritus : upstream scheme … … 103 103 DO jj = 1, jpj 104 104 DO ji = 1, jpi 105 ztra = - ( zwork(ji,jj,jk) - zwork(ji,jj,jk+1) ) / fse3t(ji,jj,jk) 106 tra(ji,jj,jk,jp_lob_det) = tra(ji,jj,jk,jp_lob_det) + ztra 107 ! 108 IF( ln_diabio ) trbio(ji,jj,jk,jp_lob0_trd + 7) = ztra 109 IF( ln_diatrc ) THEN 110 ze3t = ztra * fse3t(ji,jj,jk) * 86400. 111 IF( lk_iomput ) THEN ; zw2d(ji,jj) = zw2d(ji,jj) + ze3t 112 ELSE ; trc2d(ji,jj,jp_lob0_2d + 7) = trc2d(ji,jj,jp_lob0_2d + 7) + ze3t 113 ENDIF 114 ENDIF 115 ! 105 ztra(ji,jj,jk) = - ( zwork(ji,jj,jk) - zwork(ji,jj,jk+1) ) / fse3t(ji,jj,jk) 106 tra(ji,jj,jk,jp_lob_det) = tra(ji,jj,jk,jp_lob_det) + ztra(ji,jj,jk) 116 107 END DO 117 108 END DO 118 109 END DO 119 110 120 IF( ln_diatrc .AND. lk_iomput ) CALL iom_put( "TDETSED", zw2d ) 121 111 IF( ln_diatrc ) THEN 112 zw2d(:,:) = 0. 113 DO jk = 1, jpkm1 114 DO jj = 1, jpj 115 DO ji = 1, jpi 116 zw2d(ji,jj) = zw2d(ji,jj) + ztra(ji,jj,jk) * fse3t(ji,jj,jk) * 86400. 117 END DO 118 END DO 119 END DO 120 IF( lk_iomput ) THEN 121 CALL iom_put( "TDETSED", zw2d ) 122 ELSE 123 trc2d(:,:,jp_lob0_2d + 7) = zw2d(:,:) 124 ENDIF 125 ENDIF 126 ! 127 IF( ln_diabio ) trbio(:,:,:,jp_lob0_trd + 7) = ztra(:,:,:) 128 ! 122 129 IF( l_trdtrc ) THEN 123 130 ztrbio(:,:,:) = tra(:,:,:,jp_lob_det) - ztrbio(:,:,:) … … 133 140 ENDIF 134 141 135 IF( ( wrk_not_released(2, 1) ) .OR. ( wrk_not_released(3, 2 ) ) ) &142 IF( ( wrk_not_released(2, 1) ) .OR. ( wrk_not_released(3, 2,3) ) ) & 136 143 & CALL ctl_stop('trc_sed : failed to release workspace arrays.') 137 144 -
branches/2011/dev_LOCEAN_2011/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zflx.F90
r2987 r3028 83 83 !! - Add option for time-interpolation of atcco2.txt 84 84 !!--------------------------------------------------------------------- 85 USE wrk_nemo, ONLY: 86 USE wrk_nemo, ONLY: zkgco2 => wrk_2d_11 , zkgo2 => wrk_2d_12 , zh2co3 => wrk_2d_1387 USE wrk_nemo, ONLY: zoflx => wrk_2d_14 , zkg => wrk_2d_1588 USE wrk_nemo, ONLY: zdpco2 => wrk_2d_16 , zdpo2 => wrk_2d_1785 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 86 USE wrk_nemo, ONLY: zkgco2 => wrk_2d_11 , zkgo2 => wrk_2d_12 87 USE wrk_nemo, ONLY: zh2co3 => wrk_2d_13 , zoflx => wrk_2d_14 88 USE wrk_nemo, ONLY: 89 89 ! 90 90 INTEGER, INTENT(in) :: kt ! … … 98 98 !!--------------------------------------------------------------------- 99 99 100 IF( wrk_in_use(2, 11,12,13,14 ,15,16,17) ) THEN100 IF( wrk_in_use(2, 11,12,13,14) ) THEN 101 101 CALL ctl_stop('p4z_flx: requested workspace arrays unavailable') ; RETURN 102 102 ENDIF … … 196 196 zfld16 = atcox * patm(ji,jj) * chemc(ji,jj,2) * tmask(ji,jj,1) * zkgo2(ji,jj) ! (mol/L) * (m/s) 197 197 zflu16 = trn(ji,jj,1,jpoxy) * tmask(ji,jj,1) * zkgo2(ji,jj) 198 tra(ji,jj,1,jpoxy) = tra(ji,jj,1,jpoxy) + ( zfld16 - zflu16 ) / fse3t(ji,jj,1) 199 200 IF( ln_diatrc ) THEN ! Save diagnostics 201 IF( lk_iomput ) THEN 202 zoflx(ji,jj) = ( zfld16 - zflu16 ) * 1000. * tmask(ji,jj,1) 203 zkg (ji,jj) = zkgco2(ji,jj) * tmask(ji,jj,1) 204 zdpco2(ji,jj) = ( satmco2(ji,jj) * patm(ji,jj) - zh2co3(ji,jj) / ( chemc(ji,jj,1) + rtrn ) ) * tmask(ji,jj,1) 205 zdpo2 (ji,jj) = ( atcox * patm(ji,jj) - trn(ji,jj,1,jpoxy) / ( chemc(ji,jj,2) + rtrn ) ) * tmask(ji,jj,1) 206 ELSE 207 zfact = 1. / e1e2t(ji,jj) / rfact 208 trc2d(ji,jj,jp_pcs0_2d ) = oce_co2(ji,jj) * zfact 209 trc2d(ji,jj,jp_pcs0_2d + 1) = ( zfld16 - zflu16 ) * 1000. * tmask(ji,jj,1) 210 trc2d(ji,jj,jp_pcs0_2d + 2) = zkgco2(ji,jj) * tmask(ji,jj,1) 211 trc2d(ji,jj,jp_pcs0_2d + 3) = ( satmco2(ji,jj) * patm(ji,jj) - zh2co3(ji,jj) / ( chemc(ji,jj,1) + rtrn ) ) & 212 & * tmask(ji,jj,1) 213 ENDIF 214 ENDIF 198 zoflx(ji,jj) = zfld16 - zflu16 199 tra(ji,jj,1,jpoxy) = tra(ji,jj,1,jpoxy) + zoflx(ji,jj) / fse3t(ji,jj,1) 215 200 END DO 216 201 END DO … … 241 226 242 227 IF( ln_diatrc ) THEN 243 CALL iom_put( "Cflx" , oce_co2(:,:) / e1e2t(:,:) / rfact ) 244 CALL iom_put( "Oflx" , zoflx ) 245 CALL iom_put( "Kg" , zkg ) 246 CALL iom_put( "Dpco2", zdpco2 ) 247 CALL iom_put( "Dpo2" , zdpo2 ) 248 ENDIF 249 ! 250 IF( wrk_not_released(2, 11,12,13,14,15,16,17) ) & 251 & CALL ctl_stop('p4z_flx: failed to release workspace arrays') 228 IF( lk_iomput ) THEN 229 CALL iom_put( "Cflx" , oce_co2(:,:) / e1e2t(:,:) / rfact ) 230 CALL iom_put( "Oflx" , zoflx(:,:) * 1000 * tmask(:,:,1) ) 231 CALL iom_put( "Kg" , zkgco2(:,:) * tmask(:,:,1) ) 232 CALL iom_put( "Dpco2", ( satmco2(:,:) * patm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) ) 233 CALL iom_put( "Dpo2" , ( atcox * patm(:,:) - trn(:,:,1,jpoxy) / ( chemc(:,:,2) + rtrn ) ) * tmask(:,:,1) ) 234 ELSE 235 trc2d(:,:,jp_pcs0_2d ) = oce_co2(:,:) / e1e2t(:,:) / rfact 236 trc2d(:,:,jp_pcs0_2d + 1) = zoflx(:,:) * 1000 * tmask(:,:,1) 237 trc2d(:,:,jp_pcs0_2d + 2) = zkgco2(:,:) * tmask(:,:,1) 238 trc2d(:,:,jp_pcs0_2d + 3) = ( satmco2(:,:) * patm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) 239 ENDIF 240 ENDIF 241 ! 242 IF( wrk_not_released(2, 11,12,13,14) ) CALL ctl_stop('p4z_flx: failed to release workspace arrays') 252 243 ! 253 244 END SUBROUTINE p4z_flx
Note: See TracChangeset
for help on using the changeset viewer.