- Timestamp:
- 2017-06-13T18:50:51+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/GO6_dyn_vrt_diag/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90
r7900 r8168 343 343 344 344 345 SUBROUTINE dyn_vrt_dia_3d( utend, vtend, id_dia_vor_int, id_dia_vor_mn) 345 ! TODO - remove kt only used for validation 346 SUBROUTINE dyn_vrt_dia_3d( utend, vtend, id_dia_vor_int, id_dia_vor_mn, kt) 346 347 347 348 !!---------------------------------------------------------------------- … … 356 357 !! 357 358 !!---------------------------------------------------------------------- 358 REAL :: utend(jpi,jpj,jpk) ! contribution to du/dt 359 REAL :: vtend(jpi,jpj,jpk) ! contribution to dv/dt 360 INTEGER :: id_dia_vor_int ! identifier for the vertical integral vorticity diagnostic 361 INTEGER :: id_dia_vor_mn ! identifier for the vertical mean vorticity diagnostic 362 ! 363 !!---------------------------------------------------------------------- 364 ! 365 INTEGER :: ji, jj, jk ! dummy loop indices 359 REAL, INTENT(in) :: utend(jpi,jpj,jpk) ! contribution to du/dt 360 REAL, INTENT(in) :: vtend(jpi,jpj,jpk) ! contribution to dv/dt 361 INTEGER, INTENT(in) :: id_dia_vor_int ! identifier for the vertical integral vorticity diagnostic 362 INTEGER, INTENT(in) :: id_dia_vor_mn ! identifier for the vertical mean vorticity diagnostic 363 INTEGER :: kt ! ocean time-step index 364 ! 365 !!---------------------------------------------------------------------- 366 ! 367 INTEGER :: ji, jj, jk ! dummy loop indices 368 INTEGER :: ji_min, ji_max ! dummy loop indices for dynspg_flt 366 369 ! 367 370 REAL(wp), POINTER, DIMENSION(:,:) :: u_int ! u vertical integral … … 370 373 CALL wrk_alloc(jpi, jpj, u_int) 371 374 CALL wrk_alloc(jpi, jpj, v_int) 375 376 ji_min = 1 377 ji_max = jpi 378 379 IF ( id_dia_vor_int == 71 .OR. id_dia_vor_mn == 72 ) THEN 380 ji_min = fs_2 381 ji_max = fs_jpim1 382 END IF 372 383 373 384 u_int(:,:) = 0.0_wp … … 380 391 DO jk = 1,jpk 381 392 DO jj = 1,jpj 382 DO ji = 1,jpi393 DO ji = ji_min,ji_max 383 394 u_int(ji,jj) = u_int(ji,jj) + utend(ji,jj,jk)*fse3u(ji,jj,jk) 384 395 v_int(ji,jj) = v_int(ji,jj) + vtend(ji,jj,jk)*fse3v(ji,jj,jk) 396 397 ! TODO remove - for validation only 398 IF ( kt == 1 .AND. ji == 17 .AND. jj == 12 .AND. id_dia_vor_int == 11 ) THEN 399 WRITE(numout, *) 'dyn_vrt_dia_3d id:', id_dia_vor_int, & 400 & ':ji:', ji, & 401 & ':jj:', jj, & 402 & ':jk:', jk, & 403 & ':u_int:', u_int(ji,jj), & 404 & ':u_tend:', utend(ji,jj,jk), & 405 & ':fse3u:', fse3u(ji,jj,jk) 406 WRITE(numout, *) 'dyn_vrt_dia_3d id:', id_dia_vor_int, & 407 & ':ji:', ji, & 408 & ':jj:', jj, & 409 & ':jk:', jk, & 410 & ':v_int:', v_int(ji,jj), & 411 & ':v_tend:', vtend(ji,jj,jk), & 412 & ':fse3v:', fse3v(ji,jj,jk) 413 END IF 385 414 END DO 386 415 END DO 387 416 END DO 388 417 389 CALL dyn_vrt_dia_2d(u_int, v_int, id_dia_vor_int, id_dia_vor_mn )418 CALL dyn_vrt_dia_2d(u_int, v_int, id_dia_vor_int, id_dia_vor_mn, kt) 390 419 391 420 CALL wrk_dealloc(jpi, jpj, u_int) … … 395 424 396 425 397 SUBROUTINE dyn_vrt_dia_2d( u_int, v_int, id_dia_vor_int, id_dia_vor_mn) 426 ! TODO - remove kt only used for validation 427 SUBROUTINE dyn_vrt_dia_2d( u_int, v_int, id_dia_vor_int, id_dia_vor_mn, kt) 398 428 399 429 !!---------------------------------------------------------------------- … … 413 443 !! 414 444 !!---------------------------------------------------------------------- 415 REAL :: u_int(jpi,jpj)! u vertical integral416 REAL :: v_int(jpi,jpj)! v vertical integral445 REAL :: u_int(jpi,jpj) ! u vertical integral 446 REAL :: v_int(jpi,jpj) ! v vertical integral 417 447 INTEGER :: id_dia_vor_int ! identifier for the vertical integral vorticity diagnostic 418 448 INTEGER :: id_dia_vor_mn ! identifier for the vertical mean vorticity diagnostic 449 INTEGER :: kt ! ocean time-step index 419 450 ! 420 451 !!---------------------------------------------------------------------- … … 427 458 REAL(wp), POINTER, DIMENSION(:,:) :: vor_int ! vort trend of vert integrals 428 459 REAL(wp), POINTER, DIMENSION(:,:) :: vor_mn ! vort trend of vert means 460 CHARACTER(len=20) :: cid_dia_vor_int ! Identifier for iom_put 461 CHARACTER(len=20) :: cid_dia_vor_mn ! Identifier for iom_put 429 462 430 463 CALL wrk_alloc(jpi, jpj, u_mn) … … 435 468 CALL lbc_lnk( u_int, 'U', 1. ) 436 469 CALL lbc_lnk( v_int, 'V', 1. ) 470 471 WRITE ( cid_dia_vor_int, "(A16,I2)" ) "dia_vor_int-", id_dia_vor_int 472 WRITE ( cid_dia_vor_mn, "(A17,I2)" ) "dia_vor_mean-", id_dia_vor_mn 437 473 438 474 ! … … 448 484 & - u_int(ji,jj+1) * e1u(ji,jj+1) ) & 449 485 & / ( e1f(ji,jj) * e2f(ji,jj) ) 486 487 ! TODO remove - for validation only 488 IF ( kt == 1 .AND. ji == 17 .AND. jj == 12 .AND. id_dia_vor_int == 11 ) THEN 489 WRITE(numout, *) 'dyn_vrt_dia_2d id:', id_dia_vor_int, & 490 & ':ji:', ji, & 491 & ':jj:', jj, & 492 & ':vor_int:', vor_int(ji,jj), & 493 & ':v_int(i+1):', v_int(ji+1,jj), & 494 & ':e2v(j+1):', e2v(ji+1,jj), & 495 & ':v_int:', v_int(ji,jj), & 496 & ':e2v:', e2v(ji,jj), & 497 & ':u_int:', u_int(ji,jj), & 498 & ':e1u:', e1u(ji,jj), & 499 & ':u_int(j+1):', u_int(ji,jj+1), & 500 & ':e1u(j+1):', e1u(ji,jj+1), & 501 & ':e1f:', e1f(ji,jj), & 502 & ':e2f:', e2f(ji,jj) 503 END IF 450 504 END DO 451 505 END DO … … 473 527 ELSE 474 528 v_mn(ji,jj) = 0.0_wp 529 END IF 530 531 ! TODO remove - for validation only 532 IF ( kt == 1 .AND. ji == 17 .AND. jj == 12 .AND. id_dia_vor_int == 11 ) THEN 533 WRITE(numout, *) 'dyn_vrt_dia_2d id:', id_dia_vor_int, & 534 & ':ikbu:', ikbu, & 535 & ':u_int:', u_int(ji,jj), & 536 & ':u_mn:', u_mn(ji,jj), & 537 & ':ikbv:', ikbv, & 538 & ':v_int:', v_int(ji,jj), & 539 & ':v_mn:', v_mn(ji,jj) 475 540 END IF 476 541 END DO … … 489 554 & - u_mn(ji,jj+1) * e1u(ji,jj+1) ) & 490 555 & / ( e1f(ji,jj) * e2f(ji,jj) ) 556 557 ! TODO remove - for validation only 558 IF ( kt == 1 .AND. ji == 17 .AND. jj == 12 .AND. id_dia_vor_int == 11 ) THEN 559 WRITE(numout, *) 'dyn_vrt_dia_2d id:', id_dia_vor_int, & 560 & ':ji:', ji, & 561 & ':jj:', jj, & 562 & ':vor_mn:', vor_mn(ji,jj), & 563 & ':v_mn(i+1):', v_mn(ji+1,jj), & 564 & ':e2v(j+1):', e2v(ji+1,jj), & 565 & ':v_mn:', v_mn(ji,jj), & 566 & ':e2v:', e2v(ji,jj), & 567 & ':u_mn:', u_mn(ji,jj), & 568 & ':e1u:', e1u(ji,jj), & 569 & ':u_mn(j+1):', u_mn(ji,jj+1), & 570 & ':e1u(j+1):', e1u(ji,jj+1), & 571 & ':e1f:', e1f(ji,jj), & 572 & ':e2f:', e2f(ji,jj) 573 END IF 491 574 END DO 492 575 END DO … … 494 577 495 578 ! Call iom_put for the vertical integral vorticity tendencies 496 IF (id_dia_vor_int == 1) THEN 497 CALL iom_put( "dia_vor_int", vor_int(:,:)) 498 ENDIF 579 CALL iom_put( cid_dia_vor_int, vor_int(:,:)) 499 580 500 581 ! Call iom_put for the vertical mean vorticity tendencies 501 IF (id_dia_vor_int == 1) THEN 502 CALL iom_put( "dia_vor_mn", vor_mn(:,:)) 503 ENDIF 582 CALL iom_put( cid_dia_vor_mn, vor_mn(:,:)) 504 583 505 584 CALL wrk_dealloc(jpi, jpj, u_mn)
Note: See TracChangeset
for help on using the changeset viewer.