Changeset 1783 for palm/trunk/SOURCE/pmc_interface.f90
- Timestamp:
- Mar 6, 2016 6:36:17 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/pmc_interface.f90
r1782 r1783 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 22 ! calculation of nest top area simplified, 23 ! interpolation and anterpolation moved to seperate wrapper subroutines 23 24 ! 24 25 ! Former revisions: … … 678 679 INTEGER(iwp), DIMENSION(5) :: val !: 679 680 680 REAL(wp) :: area_t_l !:681 681 REAL(wp), DIMENSION(1) :: fval !: 682 682 REAL(wp) :: xcs !: … … 684 684 REAL(wp) :: ycs !: 685 685 REAL(wp) :: yce !: 686 REAL(wp) :: zct !:687 REAL(wp), DIMENSION(4) :: ztt !:688 686 689 687 … … 830 828 !-- Finally, compute the total area of the top-boundary face of the domain. 831 829 !-- This is needed in the pmc_ensure_nest_mass_conservation 832 area_t_l = ( nxr + 1 - nxl ) * ( nyn + 1 - nys ) * dx * dy 833 IF ( collective_wait ) CALL MPI_BARRIER( comm2d, ierr ) 834 CALL MPI_ALLREDUCE( area_t_l, area_t, 1, MPI_REAL, MPI_SUM, comm2d, ierr ) 835 836 ! 837 !-- TO_DO: Why not just simply? test this! 838 !area_t_l = ( nx + 1 ) * (ny + 1 ) * dx * dy 830 area_t = ( nx + 1 ) * (ny + 1 ) * dx * dy 839 831 840 832 ENDIF … … 1079 1071 1080 1072 REAL(wp), ALLOCATABLE, DIMENSION(:) :: lcr !: 1081 LOGICAL :: more !:1082 1073 1083 1074 ! … … 2399 2390 CALL cpu_log( log_point_s(73), 'PMC Client Recv', 'stop' ) 2400 2391 2401 ! 2402 !-- The interpolation. Add IF-condition here: IF not vertical nesting 2403 IF ( nest_bound_l ) THEN ! Left border pe 2404 CALL pmci_interp_tril_lr( u, uc, icu, jco, kco, r1xu, r2xu, r1yo, r2yo, r1zo, r2zo, & 2405 nzb_u_inner, logc_u_l, logc_ratio_u_l, nzt_topo_nestbc_l, 'l', 'u' ) 2406 CALL pmci_interp_tril_lr( v, vc, ico, jcv, kco, r1xo, r2xo, r1yv, r2yv, r1zo, r2zo, & 2407 nzb_v_inner, logc_v_l, logc_ratio_v_l, nzt_topo_nestbc_l, 'l', 'v' ) 2408 CALL pmci_interp_tril_lr( w, wc, ico, jco, kcw, r1xo, r2xo, r1yo, r2yo, r1zw, r2zw, & 2409 nzb_w_inner, logc_w_l, logc_ratio_w_l, nzt_topo_nestbc_l, 'l', 'w' ) 2410 CALL pmci_interp_tril_lr( e, ec, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2411 nzb_s_inner, logc_u_l, logc_ratio_u_l, nzt_topo_nestbc_l, 'l', 'e' ) 2412 CALL pmci_interp_tril_lr( pt, ptc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2413 nzb_s_inner, logc_u_l, logc_ratio_u_l, nzt_topo_nestbc_l, 'l', 's' ) 2414 IF ( humidity .OR. passive_scalar ) THEN 2415 CALL pmci_interp_tril_lr( q, qc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2416 nzb_s_inner, logc_u_l, logc_ratio_u_l, nzt_topo_nestbc_l, 'l', 's' ) 2417 ENDIF 2418 IF ( nesting_mode == 'one-way' ) THEN 2419 CALL pmci_extrap_ifoutflow_lr( u, nzb_u_inner, 'l', 'u' ) 2420 CALL pmci_extrap_ifoutflow_lr( v, nzb_v_inner, 'l', 'v' ) 2421 CALL pmci_extrap_ifoutflow_lr( w, nzb_w_inner, 'l', 'w' ) 2422 CALL pmci_extrap_ifoutflow_lr( e, nzb_s_inner, 'l', 'e' ) 2423 CALL pmci_extrap_ifoutflow_lr( pt,nzb_s_inner, 'l', 's' ) 2424 IF ( humidity .OR. passive_scalar ) THEN 2425 CALL pmci_extrap_ifoutflow_lr( q, nzb_s_inner, 'l', 's' ) 2426 ENDIF 2427 ENDIF 2428 ENDIF 2429 IF ( nest_bound_r ) THEN ! Right border pe 2430 CALL pmci_interp_tril_lr( u, uc, icu, jco, kco, r1xu, r2xu, r1yo, r2yo, r1zo, r2zo, & 2431 nzb_u_inner, logc_u_r, logc_ratio_u_r, nzt_topo_nestbc_r, 'r', 'u' ) 2432 CALL pmci_interp_tril_lr( v, vc, ico, jcv, kco, r1xo, r2xo, r1yv, r2yv, r1zo, r2zo, & 2433 nzb_v_inner, logc_v_r, logc_ratio_v_r, nzt_topo_nestbc_r, 'r', 'v' ) 2434 CALL pmci_interp_tril_lr( w, wc, ico, jco, kcw, r1xo, r2xo, r1yo, r2yo, r1zw, r2zw, & 2435 nzb_w_inner, logc_w_r, logc_ratio_w_r, nzt_topo_nestbc_r, 'r', 'w' ) 2436 CALL pmci_interp_tril_lr( e, ec, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2437 nzb_s_inner, logc_u_r, logc_ratio_u_r, nzt_topo_nestbc_r, 'r', 'e' ) 2438 CALL pmci_interp_tril_lr( pt, ptc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2439 nzb_s_inner, logc_u_r, logc_ratio_u_r, nzt_topo_nestbc_r, 'r', 's' ) 2440 IF ( humidity .OR. passive_scalar ) THEN 2441 CALL pmci_interp_tril_lr( q, qc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2442 nzb_s_inner, logc_u_r, logc_ratio_u_r, nzt_topo_nestbc_r, 'r', 's' ) 2443 ENDIF 2444 IF ( nesting_mode == 'one-way' ) THEN 2445 CALL pmci_extrap_ifoutflow_lr( u, nzb_u_inner, 'r', 'u' ) 2446 CALL pmci_extrap_ifoutflow_lr( v, nzb_v_inner, 'r', 'v' ) 2447 CALL pmci_extrap_ifoutflow_lr( w, nzb_w_inner, 'r', 'w' ) 2448 CALL pmci_extrap_ifoutflow_lr( e, nzb_s_inner, 'r', 'e' ) 2449 CALL pmci_extrap_ifoutflow_lr( pt,nzb_s_inner, 'r', 's' ) 2450 IF ( humidity .OR. passive_scalar ) THEN 2451 CALL pmci_extrap_ifoutflow_lr( q, nzb_s_inner, 'r', 's' ) 2452 ENDIF 2453 ENDIF 2454 ENDIF 2455 IF ( nest_bound_s ) THEN ! South border pe 2456 CALL pmci_interp_tril_sn( u, uc, icu, jco, kco, r1xu, r2xu, r1yo, r2yo, r1zo, r2zo, & 2457 nzb_u_inner, logc_u_s, logc_ratio_u_s, nzt_topo_nestbc_s, 's', 'u' ) 2458 CALL pmci_interp_tril_sn( v, vc, ico, jcv, kco, r1xo, r2xo, r1yv, r2yv, r1zo, r2zo, & 2459 nzb_v_inner, logc_v_s, logc_ratio_v_s, nzt_topo_nestbc_s, 's', 'v' ) 2460 CALL pmci_interp_tril_sn( w, wc, ico, jco, kcw, r1xo, r2xo, r1yo, r2yo, r1zw, r2zw, & 2461 nzb_w_inner, logc_w_s, logc_ratio_w_s, nzt_topo_nestbc_s, 's', 'w' ) 2462 CALL pmci_interp_tril_sn( e, ec, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2463 nzb_s_inner, logc_u_s, logc_ratio_u_s, nzt_topo_nestbc_s, 's', 'e' ) 2464 CALL pmci_interp_tril_sn( pt, ptc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2465 nzb_s_inner, logc_u_s, logc_ratio_u_s, nzt_topo_nestbc_s, 's', 's' ) 2466 IF ( humidity .OR. passive_scalar ) THEN 2467 CALL pmci_interp_tril_sn( q, qc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2468 nzb_s_inner, logc_u_s, logc_ratio_u_s, nzt_topo_nestbc_s, 's', 's' ) 2469 ENDIF 2470 IF ( nesting_mode == 'one-way' ) THEN 2471 CALL pmci_extrap_ifoutflow_sn( u, nzb_u_inner, 's', 'u' ) 2472 CALL pmci_extrap_ifoutflow_sn( v, nzb_v_inner, 's', 'v' ) 2473 CALL pmci_extrap_ifoutflow_sn( w, nzb_w_inner, 's', 'w' ) 2474 CALL pmci_extrap_ifoutflow_sn( e, nzb_s_inner, 's', 'e' ) 2475 CALL pmci_extrap_ifoutflow_sn( pt,nzb_s_inner, 's', 's' ) 2476 IF ( humidity .OR. passive_scalar ) THEN 2477 CALL pmci_extrap_ifoutflow_sn( q, nzb_s_inner, 's', 's' ) 2478 ENDIF 2479 ENDIF 2480 ENDIF 2481 IF ( nest_bound_n ) THEN ! North border pe 2482 CALL pmci_interp_tril_sn( u, uc, icu, jco, kco, r1xu, r2xu, r1yo, r2yo, r1zo, r2zo, & 2483 nzb_u_inner, logc_u_n, logc_ratio_u_n, nzt_topo_nestbc_n, 'n', 'u' ) 2484 CALL pmci_interp_tril_sn( v, vc, ico, jcv, kco, r1xo, r2xo, r1yv, r2yv, r1zo, r2zo, & 2485 nzb_v_inner, logc_v_n, logc_ratio_v_n, nzt_topo_nestbc_n, 'n', 'v' ) 2486 CALL pmci_interp_tril_sn( w, wc, ico, jco, kcw, r1xo, r2xo, r1yo, r2yo, r1zw, r2zw, & 2487 nzb_w_inner, logc_w_n, logc_ratio_w_n, nzt_topo_nestbc_n, 'n', 'w' ) 2488 CALL pmci_interp_tril_sn( e, ec, ico,jco,kco,r1xo,r2xo,r1yo,r2yo,r1zo,r2zo, & 2489 nzb_s_inner, logc_u_n, logc_ratio_u_n, nzt_topo_nestbc_n, 'n', 'e' ) 2490 CALL pmci_interp_tril_sn( pt, ptc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2491 nzb_s_inner, logc_u_n, logc_ratio_u_n, nzt_topo_nestbc_n, 'n', 's' ) 2492 IF ( humidity .OR. passive_scalar ) THEN 2493 CALL pmci_interp_tril_sn( q, qc, ico,jco,kco,r1xo,r2xo,r1yo,r2yo,r1zo,r2zo, & 2494 nzb_s_inner, logc_u_n, logc_ratio_u_n, nzt_topo_nestbc_n, 'n', 's' ) 2495 ENDIF 2496 IF ( nesting_mode == 'one-way' ) THEN 2497 CALL pmci_extrap_ifoutflow_sn( u, nzb_u_inner, 'n', 'u' ) 2498 CALL pmci_extrap_ifoutflow_sn( v, nzb_v_inner, 'n', 'v' ) 2499 CALL pmci_extrap_ifoutflow_sn( w, nzb_w_inner, 'n', 'w' ) 2500 CALL pmci_extrap_ifoutflow_sn( e, nzb_s_inner, 'n', 'e' ) 2501 CALL pmci_extrap_ifoutflow_sn( pt,nzb_s_inner, 'n', 's' ) 2502 IF ( humidity .OR. passive_scalar ) THEN 2503 CALL pmci_extrap_ifoutflow_sn( q, nzb_s_inner, 'n', 's' ) 2504 ENDIF 2505 ENDIF 2506 ENDIF 2507 2508 ! 2509 !-- All PEs are top-border PEs 2510 CALL pmci_interp_tril_t( u, uc, icu, jco, kco, r1xu, r2xu, r1yo, r2yo, r1zo, r2zo, 'u' ) 2511 CALL pmci_interp_tril_t( v, vc, ico, jcv, kco, r1xo, r2xo, r1yv, r2yv, r1zo, r2zo, 'v' ) 2512 CALL pmci_interp_tril_t( w, wc, ico, jco, kcw, r1xo, r2xo, r1yo, r2yo, r1zw, r2zw, 'w' ) 2513 CALL pmci_interp_tril_t( e, ec, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, 'e' ) 2514 CALL pmci_interp_tril_t( pt, ptc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, 's' ) 2515 IF ( humidity .OR. passive_scalar ) THEN 2516 CALL pmci_interp_tril_t( q, qc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, 's' ) 2517 ENDIF 2518 IF ( nesting_mode == 'one-way' ) THEN 2519 CALL pmci_extrap_ifoutflow_t( u, 'u' ) 2520 CALL pmci_extrap_ifoutflow_t( v, 'v' ) 2521 CALL pmci_extrap_ifoutflow_t( w, 'w' ) 2522 CALL pmci_extrap_ifoutflow_t( e, 'e' ) 2523 CALL pmci_extrap_ifoutflow_t( pt, 's' ) 2524 IF ( humidity .OR. passive_scalar ) THEN 2525 CALL pmci_extrap_ifoutflow_t( q, 's' ) 2526 ENDIF 2527 ENDIF 2528 ELSE ! IF ( direction == server_to_client ) 2529 CALL pmci_anterp_tophat( u, uc, kceu, iflu, ifuu, jflo, jfuo, kflo, kfuo, nzb_u_inner, 'u' ) 2530 CALL pmci_anterp_tophat( v, vc, kceu, iflo, ifuo, jflv, jfuv, kflo, kfuo, nzb_v_inner, 'v' ) 2531 CALL pmci_anterp_tophat( w, wc, kcew, iflo, ifuo, jflo, jfuo, kflw, kfuw, nzb_w_inner, 'w' ) 2532 CALL pmci_anterp_tophat( pt, ptc, kceu, iflo, ifuo, jflo, jfuo, kflo, kfuo, nzb_s_inner, 's' ) 2533 IF ( humidity .OR. passive_scalar ) THEN 2534 CALL pmci_anterp_tophat( q, qc, kceu, iflo, ifuo, jflo, jfuo, kflo, kfuo, nzb_s_inner, 's' ) 2535 ENDIF 2392 CALL pmci_interpolation 2393 2394 ELSE ! IF ( direction == server_to_client ) 2395 2396 CALL pmci_anterpolation 2397 2536 2398 CALL cpu_log( log_point_s(74), 'PMC Client Send', 'start' ) 2537 2399 CALL pmc_c_putbuffer( WaitTime = WaitTime ) … … 2539 2401 ENDIF 2540 2402 ENDIF 2541 2403 2542 2404 CONTAINS 2405 2406 2407 SUBROUTINE pmci_interpolation 2408 2409 ! 2410 !-- A wrapper routine for all interpolation and extrapolation actions. 2411 IMPLICIT NONE 2412 2413 ! 2414 !-- Add IF-condition here: IF not vertical nesting 2415 IF ( nest_bound_l ) THEN ! Left border pe 2416 CALL pmci_interp_tril_lr( u, uc, icu, jco, kco, r1xu, r2xu, r1yo, r2yo, r1zo, r2zo, & 2417 nzb_u_inner, logc_u_l, logc_ratio_u_l, nzt_topo_nestbc_l, 'l', 'u' ) 2418 CALL pmci_interp_tril_lr( v, vc, ico, jcv, kco, r1xo, r2xo, r1yv, r2yv, r1zo, r2zo, & 2419 nzb_v_inner, logc_v_l, logc_ratio_v_l, nzt_topo_nestbc_l, 'l', 'v' ) 2420 CALL pmci_interp_tril_lr( w, wc, ico, jco, kcw, r1xo, r2xo, r1yo, r2yo, r1zw, r2zw, & 2421 nzb_w_inner, logc_w_l, logc_ratio_w_l, nzt_topo_nestbc_l, 'l', 'w' ) 2422 CALL pmci_interp_tril_lr( e, ec, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2423 nzb_s_inner, logc_u_l, logc_ratio_u_l, nzt_topo_nestbc_l, 'l', 'e' ) 2424 CALL pmci_interp_tril_lr( pt, ptc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2425 nzb_s_inner, logc_u_l, logc_ratio_u_l, nzt_topo_nestbc_l, 'l', 's' ) 2426 IF ( humidity .OR. passive_scalar ) THEN 2427 CALL pmci_interp_tril_lr( q, qc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2428 nzb_s_inner, logc_u_l, logc_ratio_u_l, nzt_topo_nestbc_l, 'l', 's' ) 2429 ENDIF 2430 IF ( nesting_mode == 'one-way' ) THEN 2431 CALL pmci_extrap_ifoutflow_lr( u, nzb_u_inner, 'l', 'u' ) 2432 CALL pmci_extrap_ifoutflow_lr( v, nzb_v_inner, 'l', 'v' ) 2433 CALL pmci_extrap_ifoutflow_lr( w, nzb_w_inner, 'l', 'w' ) 2434 CALL pmci_extrap_ifoutflow_lr( e, nzb_s_inner, 'l', 'e' ) 2435 CALL pmci_extrap_ifoutflow_lr( pt,nzb_s_inner, 'l', 's' ) 2436 IF ( humidity .OR. passive_scalar ) THEN 2437 CALL pmci_extrap_ifoutflow_lr( q, nzb_s_inner, 'l', 's' ) 2438 ENDIF 2439 ENDIF 2440 ENDIF 2441 IF ( nest_bound_r ) THEN ! Right border pe 2442 CALL pmci_interp_tril_lr( u, uc, icu, jco, kco, r1xu, r2xu, r1yo, r2yo, r1zo, r2zo, & 2443 nzb_u_inner, logc_u_r, logc_ratio_u_r, nzt_topo_nestbc_r, 'r', 'u' ) 2444 CALL pmci_interp_tril_lr( v, vc, ico, jcv, kco, r1xo, r2xo, r1yv, r2yv, r1zo, r2zo, & 2445 nzb_v_inner, logc_v_r, logc_ratio_v_r, nzt_topo_nestbc_r, 'r', 'v' ) 2446 CALL pmci_interp_tril_lr( w, wc, ico, jco, kcw, r1xo, r2xo, r1yo, r2yo, r1zw, r2zw, & 2447 nzb_w_inner, logc_w_r, logc_ratio_w_r, nzt_topo_nestbc_r, 'r', 'w' ) 2448 CALL pmci_interp_tril_lr( e, ec, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2449 nzb_s_inner, logc_u_r, logc_ratio_u_r, nzt_topo_nestbc_r, 'r', 'e' ) 2450 CALL pmci_interp_tril_lr( pt, ptc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2451 nzb_s_inner, logc_u_r, logc_ratio_u_r, nzt_topo_nestbc_r, 'r', 's' ) 2452 IF ( humidity .OR. passive_scalar ) THEN 2453 CALL pmci_interp_tril_lr( q, qc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2454 nzb_s_inner, logc_u_r, logc_ratio_u_r, nzt_topo_nestbc_r, 'r', 's' ) 2455 ENDIF 2456 IF ( nesting_mode == 'one-way' ) THEN 2457 CALL pmci_extrap_ifoutflow_lr( u, nzb_u_inner, 'r', 'u' ) 2458 CALL pmci_extrap_ifoutflow_lr( v, nzb_v_inner, 'r', 'v' ) 2459 CALL pmci_extrap_ifoutflow_lr( w, nzb_w_inner, 'r', 'w' ) 2460 CALL pmci_extrap_ifoutflow_lr( e, nzb_s_inner, 'r', 'e' ) 2461 CALL pmci_extrap_ifoutflow_lr( pt,nzb_s_inner, 'r', 's' ) 2462 IF ( humidity .OR. passive_scalar ) THEN 2463 CALL pmci_extrap_ifoutflow_lr( q, nzb_s_inner, 'r', 's' ) 2464 ENDIF 2465 ENDIF 2466 ENDIF 2467 IF ( nest_bound_s ) THEN ! South border pe 2468 CALL pmci_interp_tril_sn( u, uc, icu, jco, kco, r1xu, r2xu, r1yo, r2yo, r1zo, r2zo, & 2469 nzb_u_inner, logc_u_s, logc_ratio_u_s, nzt_topo_nestbc_s, 's', 'u' ) 2470 CALL pmci_interp_tril_sn( v, vc, ico, jcv, kco, r1xo, r2xo, r1yv, r2yv, r1zo, r2zo, & 2471 nzb_v_inner, logc_v_s, logc_ratio_v_s, nzt_topo_nestbc_s, 's', 'v' ) 2472 CALL pmci_interp_tril_sn( w, wc, ico, jco, kcw, r1xo, r2xo, r1yo, r2yo, r1zw, r2zw, & 2473 nzb_w_inner, logc_w_s, logc_ratio_w_s, nzt_topo_nestbc_s, 's', 'w' ) 2474 CALL pmci_interp_tril_sn( e, ec, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2475 nzb_s_inner, logc_u_s, logc_ratio_u_s, nzt_topo_nestbc_s, 's', 'e' ) 2476 CALL pmci_interp_tril_sn( pt, ptc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2477 nzb_s_inner, logc_u_s, logc_ratio_u_s, nzt_topo_nestbc_s, 's', 's' ) 2478 IF ( humidity .OR. passive_scalar ) THEN 2479 CALL pmci_interp_tril_sn( q, qc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2480 nzb_s_inner, logc_u_s, logc_ratio_u_s, nzt_topo_nestbc_s, 's', 's' ) 2481 ENDIF 2482 IF ( nesting_mode == 'one-way' ) THEN 2483 CALL pmci_extrap_ifoutflow_sn( u, nzb_u_inner, 's', 'u' ) 2484 CALL pmci_extrap_ifoutflow_sn( v, nzb_v_inner, 's', 'v' ) 2485 CALL pmci_extrap_ifoutflow_sn( w, nzb_w_inner, 's', 'w' ) 2486 CALL pmci_extrap_ifoutflow_sn( e, nzb_s_inner, 's', 'e' ) 2487 CALL pmci_extrap_ifoutflow_sn( pt,nzb_s_inner, 's', 's' ) 2488 IF ( humidity .OR. passive_scalar ) THEN 2489 CALL pmci_extrap_ifoutflow_sn( q, nzb_s_inner, 's', 's' ) 2490 ENDIF 2491 ENDIF 2492 ENDIF 2493 IF ( nest_bound_n ) THEN ! North border pe 2494 CALL pmci_interp_tril_sn( u, uc, icu, jco, kco, r1xu, r2xu, r1yo, r2yo, r1zo, r2zo, & 2495 nzb_u_inner, logc_u_n, logc_ratio_u_n, nzt_topo_nestbc_n, 'n', 'u' ) 2496 CALL pmci_interp_tril_sn( v, vc, ico, jcv, kco, r1xo, r2xo, r1yv, r2yv, r1zo, r2zo, & 2497 nzb_v_inner, logc_v_n, logc_ratio_v_n, nzt_topo_nestbc_n, 'n', 'v' ) 2498 CALL pmci_interp_tril_sn( w, wc, ico, jco, kcw, r1xo, r2xo, r1yo, r2yo, r1zw, r2zw, & 2499 nzb_w_inner, logc_w_n, logc_ratio_w_n, nzt_topo_nestbc_n, 'n', 'w' ) 2500 CALL pmci_interp_tril_sn( e, ec, ico,jco,kco,r1xo,r2xo,r1yo,r2yo,r1zo,r2zo, & 2501 nzb_s_inner, logc_u_n, logc_ratio_u_n, nzt_topo_nestbc_n, 'n', 'e' ) 2502 CALL pmci_interp_tril_sn( pt, ptc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, & 2503 nzb_s_inner, logc_u_n, logc_ratio_u_n, nzt_topo_nestbc_n, 'n', 's' ) 2504 IF ( humidity .OR. passive_scalar ) THEN 2505 CALL pmci_interp_tril_sn( q, qc, ico,jco,kco,r1xo,r2xo,r1yo,r2yo,r1zo,r2zo, & 2506 nzb_s_inner, logc_u_n, logc_ratio_u_n, nzt_topo_nestbc_n, 'n', 's' ) 2507 ENDIF 2508 IF ( nesting_mode == 'one-way' ) THEN 2509 CALL pmci_extrap_ifoutflow_sn( u, nzb_u_inner, 'n', 'u' ) 2510 CALL pmci_extrap_ifoutflow_sn( v, nzb_v_inner, 'n', 'v' ) 2511 CALL pmci_extrap_ifoutflow_sn( w, nzb_w_inner, 'n', 'w' ) 2512 CALL pmci_extrap_ifoutflow_sn( e, nzb_s_inner, 'n', 'e' ) 2513 CALL pmci_extrap_ifoutflow_sn( pt,nzb_s_inner, 'n', 's' ) 2514 IF ( humidity .OR. passive_scalar ) THEN 2515 CALL pmci_extrap_ifoutflow_sn( q, nzb_s_inner, 'n', 's' ) 2516 ENDIF 2517 ENDIF 2518 ENDIF 2519 2520 ! 2521 !-- All PEs are top-border PEs 2522 CALL pmci_interp_tril_t( u, uc, icu, jco, kco, r1xu, r2xu, r1yo, r2yo, r1zo, r2zo, 'u' ) 2523 CALL pmci_interp_tril_t( v, vc, ico, jcv, kco, r1xo, r2xo, r1yv, r2yv, r1zo, r2zo, 'v' ) 2524 CALL pmci_interp_tril_t( w, wc, ico, jco, kcw, r1xo, r2xo, r1yo, r2yo, r1zw, r2zw, 'w' ) 2525 CALL pmci_interp_tril_t( e, ec, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, 'e' ) 2526 CALL pmci_interp_tril_t( pt, ptc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, 's' ) 2527 IF ( humidity .OR. passive_scalar ) THEN 2528 CALL pmci_interp_tril_t( q, qc, ico, jco, kco, r1xo, r2xo, r1yo, r2yo, r1zo, r2zo, 's' ) 2529 ENDIF 2530 IF ( nesting_mode == 'one-way' ) THEN 2531 CALL pmci_extrap_ifoutflow_t( u, 'u' ) 2532 CALL pmci_extrap_ifoutflow_t( v, 'v' ) 2533 CALL pmci_extrap_ifoutflow_t( w, 'w' ) 2534 CALL pmci_extrap_ifoutflow_t( e, 'e' ) 2535 CALL pmci_extrap_ifoutflow_t( pt, 's' ) 2536 IF ( humidity .OR. passive_scalar ) THEN 2537 CALL pmci_extrap_ifoutflow_t( q, 's' ) 2538 ENDIF 2539 ENDIF 2540 END SUBROUTINE pmci_interpolation 2541 2542 2543 2544 SUBROUTINE pmci_anterpolation 2545 2546 ! 2547 !-- A wrapper routine for all anterpolation actions. 2548 IMPLICIT NONE 2549 2550 CALL pmci_anterp_tophat( u, uc, kceu, iflu, ifuu, jflo, jfuo, kflo, kfuo, nzb_u_inner, 'u' ) 2551 CALL pmci_anterp_tophat( v, vc, kceu, iflo, ifuo, jflv, jfuv, kflo, kfuo, nzb_v_inner, 'v' ) 2552 CALL pmci_anterp_tophat( w, wc, kcew, iflo, ifuo, jflo, jfuo, kflw, kfuw, nzb_w_inner, 'w' ) 2553 CALL pmci_anterp_tophat( pt, ptc, kceu, iflo, ifuo, jflo, jfuo, kflo, kfuo, nzb_s_inner, 's' ) 2554 IF ( humidity .OR. passive_scalar ) THEN 2555 CALL pmci_anterp_tophat( q, qc, kceu, iflo, ifuo, jflo, jfuo, kflo, kfuo, nzb_s_inner, 's' ) 2556 ENDIF 2557 2558 END SUBROUTINE pmci_anterpolation 2543 2559 2544 2560
Note: See TracChangeset
for help on using the changeset viewer.