Changeset 7845 for branches/UKMO
- Timestamp:
- 2017-03-30T11:39:38+02:00 (7 years ago)
- Location:
- branches/UKMO/GO6_dyn_vrt_diag/NEMOGCM/NEMO/OPA_SRC/DYN
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/GO6_dyn_vrt_diag/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90
r7649 r7845 35 35 USE wrk_nemo ! Memory Allocation 36 36 USE timing ! Timing 37 USE iom ! I/O Manager for dyn_vrt_dia 37 USE iom ! I/O Manager for dyn_vrt_dia_2d 38 38 39 39 IMPLICIT NONE 40 40 PRIVATE 41 41 42 PUBLIC div_cur ! routine called by step.F90 and istate.F90 43 PUBLIC dyn_vrt_dia ! routine called by various modules 42 PUBLIC div_cur ! routine called by step.F90 and istate.F90 43 PUBLIC dyn_vrt_dia_3d ! routine called by various modules 44 PUBLIC dyn_vrt_dia_2d ! routine called by various modules 44 45 45 46 !! * Substitutions … … 342 343 343 344 344 SUBROUTINE dyn_vrt_dia( utend, vtend, id_dia_vor_int, id_dia_vor_mn) 345 346 !!---------------------------------------------------------------------- 347 !! 348 !! ** Purpose : compute the integral and mean vorticity tendencies. 345 SUBROUTINE dyn_vrt_dia_3d( utend, vtend, id_dia_vor_int, id_dia_vor_mn) 346 347 !!---------------------------------------------------------------------- 348 !! 349 !! ** Purpose : compute the vertical integrals of utend and vtend, and 350 !! then pass to dyn_vrt_dia_2d to calculate vorticity 351 !! tendencies. 349 352 !! 350 353 !! ** Action : a) Calculate the vertical integrals of utend & of vtend 351 354 !! (u_int & v_int) 352 !! b) Calculate the vorticity tendencies for the vertical 353 !! integrals. 354 !! c) Calculate the vertical means, u_mn, v_mn from u_int 355 !! and v_int by dividing by the depth 356 !! d) Calculate the vorticity tendencies for the vertical 357 !! means 358 !! e) Call iom_put for the vertical integral vorticity 359 !! tendencies (using id_dia_vor_int) 360 !! f) Call iom_put for the vertical mean vorticity 361 !! tendencies (using id_dia_vor_mn) 355 !! b) Call dyn_vrt_dia_2d with vertical integrals 362 356 !! 363 357 !!---------------------------------------------------------------------- … … 370 364 ! 371 365 INTEGER :: ji, jj, jk ! dummy loop indices 372 INTEGER :: ikbu, ikbv ! dummy loop indices373 366 ! 374 367 REAL(wp), POINTER, DIMENSION(:,:) :: u_int ! u vertical integral 375 368 REAL(wp), POINTER, DIMENSION(:,:) :: v_int ! v vertical integral 376 REAL(wp), POINTER, DIMENSION(:,:) :: u_mn ! u vertical means377 REAL(wp), POINTER, DIMENSION(:,:) :: v_mn ! u vertical means378 REAL(wp), POINTER, DIMENSION(:,:) :: vor_int ! vort trend of vert integrals379 REAL(wp), POINTER, DIMENSION(:,:) :: vor_mn ! vort trend of vert means380 369 381 370 CALL wrk_alloc(jpi, jpj, u_int) 382 371 CALL wrk_alloc(jpi, jpj, v_int) 383 CALL wrk_alloc(jpi, jpj, u_mn)384 CALL wrk_alloc(jpi, jpj, v_mn)385 CALL wrk_alloc(jpi, jpj, vor_int)386 CALL wrk_alloc(jpi, jpj, vor_mn)387 372 388 373 u_int(:,:) = 0.0_wp … … 402 387 END DO 403 388 389 CALL lbc_lnk( u_int, 'U', 1. ) 390 CALL lbc_lnk( v_int, 'V', 1. ) 391 392 CALL dyn_vrt_dia_2d(u_int, v_int, id_dia_vor_int, id_dia_vor_mn) 393 394 CALL wrk_dealloc(jpi, jpj, u_int) 395 CALL wrk_dealloc(jpi, jpj, v_int) 396 397 END SUBROUTINE dyn_vrt_dia_3d 398 399 400 SUBROUTINE dyn_vrt_dia_2d( u_int, v_int, id_dia_vor_int, id_dia_vor_mn) 401 402 !!---------------------------------------------------------------------- 403 !! 404 !! ** Purpose : compute the integral and mean vorticity tendencies. 405 !! 406 !! ** Action : a) Calculate the vorticity tendencies for the vertical 407 !! integrals. 408 !! b) Calculate the vertical means, u_mn, v_mn from u_int 409 !! and v_int by dividing by the depth 410 !! c) Calculate the vorticity tendencies for the vertical 411 !! means 412 !! d) Call iom_put for the vertical integral vorticity 413 !! tendencies (using id_dia_vor_int) 414 !! e) Call iom_put for the vertical mean vorticity 415 !! tendencies (using id_dia_vor_mn) 416 !! 417 !!---------------------------------------------------------------------- 418 REAL :: u_int(jpi,jpj) ! u vertical integral 419 REAL :: v_int(jpi,jpj) ! v vertical integral 420 INTEGER :: id_dia_vor_int ! identifier for the vertical integral vorticity diagnostic 421 INTEGER :: id_dia_vor_mn ! identifier for the vertical mean vorticity diagnostic 422 ! 423 !!---------------------------------------------------------------------- 424 ! 425 INTEGER :: ji, jj ! dummy loop indices 426 INTEGER :: ikbu, ikbv ! dummy loop indices 427 ! 428 REAL(wp), POINTER, DIMENSION(:,:) :: u_mn ! u vertical means 429 REAL(wp), POINTER, DIMENSION(:,:) :: v_mn ! u vertical means 430 REAL(wp), POINTER, DIMENSION(:,:) :: vor_int ! vort trend of vert integrals 431 REAL(wp), POINTER, DIMENSION(:,:) :: vor_mn ! vort trend of vert means 432 433 CALL wrk_alloc(jpi, jpj, u_mn) 434 CALL wrk_alloc(jpi, jpj, v_mn) 435 CALL wrk_alloc(jpi, jpj, vor_int) 436 CALL wrk_alloc(jpi, jpj, vor_mn) 437 404 438 ! 405 439 ! Calculate the vorticity tendencies for the vertical integrals. … … 469 503 ENDIF 470 504 471 CALL wrk_dealloc(jpi, jpj, u_int)472 CALL wrk_dealloc(jpi, jpj, v_int)473 505 CALL wrk_dealloc(jpi, jpj, u_mn) 474 506 CALL wrk_dealloc(jpi, jpj, v_mn) … … 476 508 CALL wrk_dealloc(jpi, jpj, vor_mn) 477 509 478 END SUBROUTINE dyn_vrt_dia 510 END SUBROUTINE dyn_vrt_dia_2d 479 511 480 512 -
branches/UKMO/GO6_dyn_vrt_diag/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90
r7649 r7845 36 36 USE trd_oce ! trends: ocean variables 37 37 USE trddyn ! trend manager: dynamics 38 USE divcur ! for dyn_vrt_dia 38 USE divcur ! for dyn_vrt_dia_3d 39 39 ! 40 40 USE in_out_manager ! I/O manager … … 445 445 ! calculate dia_vor_int & dia_vor_mn if required 446 446 IF ( ( id_dia_vrt_hpg_int == 1 ) .or. ( id_dia_vrt_hpg_mean == 1 ) ) THEN 447 CALL dyn_vrt_dia (zhpi, zhpj, id_dia_vrt_hpg_int, id_dia_vrt_hpg_mean)447 CALL dyn_vrt_dia_3d(zhpi, zhpj, id_dia_vrt_hpg_int, id_dia_vrt_hpg_mean) 448 448 END IF 449 449 ! -
branches/UKMO/GO6_dyn_vrt_diag/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90
r7649 r7845 17 17 USE trd_oce ! trends: ocean variables 18 18 USE trddyn ! trend manager: dynamics 19 USE divcur ! for dyn_vrt_dia 19 USE divcur ! for dyn_vrt_dia_3d 20 20 ! 21 21 USE in_out_manager ! I/O manager … … 149 149 ! 150 150 IF ( ( id_dia_vrt_keg_int == 1 ) .or. ( id_dia_vrt_keg_mean == 1 ) ) THEN 151 CALL dyn_vrt_dia (zhkei, zhkej, id_dia_vrt_keg_int, id_dia_vrt_keg_mean)151 CALL dyn_vrt_dia_3d(zhkei, zhkej, id_dia_vrt_keg_int, id_dia_vrt_keg_mean) 152 152 END IF 153 153 ! -
branches/UKMO/GO6_dyn_vrt_diag/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilap.F90
r7649 r7845 19 19 USE dom_oce ! ocean space and time domain 20 20 USE ldfdyn_oce ! ocean dynamics: lateral physics 21 USE divcur ! for dyn_vrt_dia 21 USE divcur ! for dyn_vrt_dia_3d 22 22 ! 23 23 USE in_out_manager ! I/O manager … … 210 210 ! ! =============== 211 211 IF ( ( id_dia_vrt_ldf_int == 1 ) .or. ( id_dia_vrt_ldf_mean == 1 ) ) THEN 212 CALL dyn_vrt_dia (zua, zva, id_dia_vrt_ldf_int, id_dia_vrt_ldf_mean)212 CALL dyn_vrt_dia_3d(zua, zva, id_dia_vrt_ldf_int, id_dia_vrt_ldf_mean) 213 213 END IF 214 214 ! -
branches/UKMO/GO6_dyn_vrt_diag/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r6487 r7845 41 41 USE timing ! Timing 42 42 USE sbcapr ! surface boundary condition: atmospheric pressure 43 USE divcur ! for dyn_vrt_dia_2d 43 44 USE dynadv, ONLY: ln_dynadv_vec 44 45 #if defined key_agrif … … 144 145 INTEGER :: ji, jj, jk, jn ! dummy loop indices 145 146 INTEGER :: ikbu, ikbv, noffset ! local integers 147 INTEGER :: id_dia_vrt_spg_int = 1 ! TODO remove once flags set properly 148 INTEGER :: id_dia_vrt_spg_mean = 1 ! TODO remove once flags set properly 146 149 REAL(wp) :: zraur, z1_2dt_b, z2dt_bf ! local scalars 147 150 REAL(wp) :: zx1, zy1, zx2, zy2 ! - - … … 450 453 ENDIF 451 454 ENDIF 455 ! 456 ! Calculate dia_vor_int & 457 ! dia_vor_mn if required 458 IF ( ( id_dia_vrt_spg_int == 1 ) .or. (id_dia_vrt_spg_mean == 1 ) ) THEN 459 CALL dyn_vrt_dia_2d(zu_frc, zv_frc, di_dia_vrt_spg_int, id_dia_vrt_spg_mean) 460 END IF 452 461 ! !* Right-Hand-Side of the barotropic ssh equation 453 462 ! ! ----------------------------------------------- -
branches/UKMO/GO6_dyn_vrt_diag/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90
r7649 r7845 38 38 USE wrk_nemo ! Memory Allocation 39 39 USE timing ! Timing 40 USE divcur ! For dyn_vrt_dia 40 USE divcur ! For dyn_vrt_dia_3d 41 41 42 42 … … 708 708 ! ! =============== 709 709 IF ( ( id_dia_vrt_vor_int == 1 ) .or. ( id_dia_vrt_vor_mn == 1 ) ) THEN 710 CALL dyn_vrt_dia (zua, zva, id_dia_vrt_vor_int, id_dia_vrt_vor_mn)710 CALL dyn_vrt_dia_3d(zua, zva, id_dia_vrt_vor_int, id_dia_vrt_vor_mn) 711 711 END IF 712 712 ! -
branches/UKMO/GO6_dyn_vrt_diag/NEMOGCM/NEMO/OPA_SRC/DYN/dynzad.F90
r7649 r7845 18 18 USE trd_oce ! trends: ocean variables 19 19 USE trddyn ! trend manager: dynamics 20 USE divcur ! for dyn_vrt_dia 20 USE divcur ! for dyn_vrt_dia_3d 21 21 ! 22 22 USE in_out_manager ! I/O manager … … 146 146 ! 147 147 IF ( ( id_dia_vrt_zad_int == 1 ) .or. ( id_dia_vrt_zad_mean == 1 ) ) THEN 148 CALL dyn_vrt_dia (zua, zva, id_dia_vrt_zad_int, id_dia_vrt_zad_mean)148 CALL dyn_vrt_dia_3d(zua, zva, id_dia_vrt_zad_int, id_dia_vrt_zad_mean) 149 149 END IF 150 150 ! -
branches/UKMO/GO6_dyn_vrt_diag/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90
r6486 r7845 27 27 USE wrk_nemo ! Memory Allocation 28 28 USE timing ! Timing 29 USE divcur ! for dyn_vrt_dia_3d 29 30 30 31 IMPLICIT NONE … … 58 59 INTEGER, INTENT( in ) :: kt ! ocean time-step index 59 60 ! 61 INTEGER :: id_dia_vrt_zdf_int = 1 ! TODO remove once flags set properly 62 INTEGER :: id_dia_vrt_zdf_mean = 1 ! TODO remove once flags set properly 60 63 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv 61 64 !!--------------------------------------------------------------------- … … 68 71 ENDIF 69 72 70 IF ( l_trddyn )THEN ! temporary save of ta and sa trends73 IF ( ( l_trddyn ) .or. ( id_dia_vrt_zdf_int == 1 ) .or. ( id_dia_vrt_zdf_mean == 1 ) ) THEN ! temporary save of ta and sa trends 71 74 CALL wrk_alloc( jpi, jpj, jpk, ztrdu, ztrdv ) 72 75 ztrdu(:,:,:) = ua(:,:,:) … … 88 91 END SELECT 89 92 90 IF ( l_trddyn )THEN ! save the vertical diffusive trends for further diagnostics93 IF ( ( l_trddyn ) .or. ( id_dia_vrt_zdf_int == 1 ) .or. ( id_dia_vrt_zdf_mean == 1 ) ) THEN ! save the vertical diffusive trends for further diagnostics 91 94 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 92 95 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 96 97 ! Calculate dia_vor_int & dia_vor_mn if required. 98 IF ( ( id_dia_vrt_zdf_int == 1 ) .or. ( id_dia_vrt_zdf_mean == 1 ) ) THEN 99 CALL dyn_vrt_dia_3d(ztrdu, ztrdv, id_dia_vrt_zdf_int, id_dia_vrt_zdf_mean) 100 END IF 101 93 102 CALL trd_dyn( ztrdu, ztrdv, jpdyn_zdf, kt ) 94 103 CALL wrk_dealloc( jpi, jpj, jpk, ztrdu, ztrdv )
Note: See TracChangeset
for help on using the changeset viewer.