Ignore:
Timestamp:
Mar 6, 2016 6:36:17 PM (9 years ago)
Author:
raasch
Message:

NetCDF routines modularized; new parameter netcdf_deflate; further changes in the pmc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/pmc_interface.f90

    r1782 r1783  
    2020! Current revisions:
    2121! ------------------
    22 !
     22! calculation of nest top area simplified,
     23! interpolation and anterpolation moved to seperate wrapper subroutines
    2324!
    2425! Former revisions:
     
    678679    INTEGER(iwp), DIMENSION(5) ::  val        !:
    679680   
    680     REAL(wp)                   ::  area_t_l   !:
    681681    REAL(wp), DIMENSION(1)     ::  fval       !:
    682682    REAL(wp)                   ::  xcs        !:
     
    684684    REAL(wp)                   ::  ycs        !:
    685685    REAL(wp)                   ::  yce        !:
    686     REAL(wp)                   ::  zct        !:
    687     REAL(wp), DIMENSION(4)     ::  ztt        !:
    688686                                             
    689687
     
    830828!--    Finally, compute the total area of the top-boundary face of the domain.
    831829!--    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
    839831
    840832    ENDIF
     
    10791071
    10801072      REAL(wp), ALLOCATABLE, DIMENSION(:) ::  lcr   !:
    1081       LOGICAL  ::  more             !:
    10821073
    10831074!
     
    23992390          CALL cpu_log( log_point_s(73), 'PMC Client Recv', 'stop' )
    24002391
    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
    25362398          CALL cpu_log( log_point_s(74), 'PMC Client Send', 'start' )
    25372399          CALL pmc_c_putbuffer( WaitTime = WaitTime )
     
    25392401       ENDIF
    25402402    ENDIF
    2541    
     2403
    25422404 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
    25432559
    25442560
Note: See TracChangeset for help on using the changeset viewer.