Changeset 4457 for palm/trunk/SOURCE


Ignore:
Timestamp:
Mar 11, 2020 2:20:43 PM (4 years ago)
Author:
raasch
Message:

ghost point exchange modularized, bugfix for wrong 2d-exchange

Location:
palm/trunk/SOURCE
Files:
1 deleted
31 edited
1 moved

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/Makefile

    r4453 r4457  
    2525# -----------------
    2626# $Id$
     27# exchange horiz has been modularized and exchange horiz 2d has been merged, dependencies updated
     28# accordingly
     29#
     30# 4453 2020-03-11 08:10:13Z raasch
    2731# dependencies for exchange horiz modified
    2832#
     
    192196        disturb_heatflux.f90 \
    193197        dynamics_mod.f90 \
    194         exchange_horiz_2d.f90 \
    195         exchange_horiz.f90 \
     198        exchange_horiz_mod.f90 \
    196199        fft_xy_mod.f90 \
    197200        flow_statistics.f90 \
     
    352355        modules.o
    353356advec_ws.o: \
     357        exchange_horiz_mod.o \
    354358        mod_kinds.o \
    355359        modules.o
     
    362366average_3d_data.o: \
    363367        cpulog_mod.o \
    364         exchange_horiz_2d.o \
     368        exchange_horiz_mod.o \
    365369        mod_kinds.o \
    366370        module_interface.o \
     
    383387        advec_s_up.o \
    384388        diffusion_s.o \
     389        exchange_horiz_mod.o \
    385390        mod_kinds.o \
    386391        modules.o \
     
    431436        chem_photolysis_mod.o \
    432437        diffusion_s.o \
     438        exchange_horiz_mod.o \
    433439        mod_kinds.o \
    434440        modules.o \
     
    477483data_output_binary_module.o: \
    478484        mod_kinds.o
     485data_output_mask.o: \
     486        basic_constants_and_equations_mod.o \
     487        bulk_cloud_model_mod.o \
     488        chemistry_model_mod.o \
     489        cpulog_mod.o \
     490        diagnostic_output_quantities_mod.o \
     491        exchange_horiz_mod.o \
     492        mod_kinds.o \
     493        mod_particle_attributes.o \
     494        modules.o \
     495        netcdf_interface_mod.o \
     496        salsa_mod.o
    479497data_output_module.o: \
    480498        data_output_binary_module.o \
    481499        data_output_netcdf4_module.o \
    482500        mod_kinds.o
    483 data_output_mask.o: \
    484         basic_constants_and_equations_mod.o \
    485         bulk_cloud_model_mod.o \
    486         chemistry_model_mod.o \
    487         cpulog_mod.o \
    488         diagnostic_output_quantities_mod.o \
    489         mod_kinds.o \
    490         mod_particle_attributes.o \
    491         modules.o \
    492         netcdf_interface_mod.o \
    493         salsa_mod.o
    494501data_output_netcdf4_module.o: \
    495502        mod_kinds.o
     
    521528        bulk_cloud_model_mod.o \
    522529        cpulog_mod.o \
     530        exchange_horiz_mod.o \
    523531        land_surface_model_mod.o \
    524532        mod_kinds.o \
     
    533541        bulk_cloud_model_mod.o \
    534542        cpulog_mod.o \
     543        exchange_horiz_mod.o \
    535544        land_surface_model_mod.o \
    536545        mod_kinds.o \
     
    543552        urban_surface_mod.o
    544553diagnostic_output_quantities_mod.o: \
     554        exchange_horiz_mod.o \
    545555        mod_kinds.o \
    546556        modules.o \
     
    570580disturb_heatflux.o: \
    571581        cpulog_mod.o \
     582        exchange_horiz_mod.o \
    572583        mod_kinds.o \
    573584        modules.o \
     
    580591        pmc_interface_mod.o \
    581592        modules.o
    582 exchange_horiz.o: \
    583         cpulog_mod.o \
    584         mod_kinds.o \
    585         modules.o
    586 exchange_horiz_2d.o: \
     593exchange_horiz_mod.o: \
    587594        cpulog_mod.o \
    588595        mod_kinds.o \
     
    673680        vertical_nesting_mod.o
    674681init_grid.o: \
     682        exchange_horiz_mod.o \
    675683        mod_kinds.o \
    676684        modules.o \
     
    692700        vertical_nesting_mod.o
    693701init_pt_anomaly.o: \
     702        exchange_horiz_mod.o \
    694703        mod_kinds.o \
    695704        modules.o
    696705init_rankine.o: \
    697706        basic_constants_and_equations_mod.o \
     707        exchange_horiz_mod.o \
    698708        mod_kinds.o \
    699709        modules.o
     
    708718        basic_constants_and_equations_mod.o \
    709719        cpulog_mod.o \
     720        exchange_horiz_mod.o \
    710721        mod_kinds.o \
    711722        mod_particle_attributes.o \
     
    803814mod_particle_attributes.o: \
    804815        mod_kinds.o
     816nesting_offl_mod.o: \
     817        chem_modules.o \
     818        cpulog_mod.o \
     819        exchange_horiz_mod.o \
     820        mod_kinds.o \
     821        modules.o \
     822        netcdf_data_input_mod.o \
     823        salsa_mod.o
    805824netcdf_data_input_mod.o: \
    806825        chem_modules.o \
    807826        cpulog_mod.o \
     827        exchange_horiz_mod.o \
    808828        mod_kinds.o \
    809829        modules.o   \
     
    828848        urban_surface_mod.o \
    829849        user_module.o
    830 nesting_offl_mod.o: \
    831         chem_modules.o \
    832         cpulog_mod.o \
    833         mod_kinds.o \
    834         modules.o \
    835         netcdf_data_input_mod.o \
    836         salsa_mod.o
    837850ocean_mod.o: \
    838851        advec_s_pw.o \
     
    855868        cpulog_mod.o \
    856869        diagnostic_output_quantities_mod.o \
     870        exchange_horiz_mod.o \
    857871        land_surface_model_mod.o \
    858872        mod_kinds.o \
     
    886900plant_canopy_model_mod.o: \
    887901        bulk_cloud_model_mod.o \
     902        exchange_horiz_mod.o \
    888903        mod_kinds.o \
    889904        modules.o \
     
    936951poismg_mod.o: \
    937952        cpulog_mod.o \
     953        exchange_horiz_mod.o \
    938954        mod_kinds.o \
    939955        modules.o
    940956poismg_noopt_mod.o: \
    941957        cpulog_mod.o \
     958        exchange_horiz_mod.o \
    942959        mod_kinds.o \
    943960        modules.o
     
    946963pres.o: \
    947964        cpulog_mod.o \
     965        exchange_horiz_mod.o \
    948966        mod_kinds.o \
    949967        modules.o \
     
    9971015        bulk_cloud_model_mod.o \
    9981016        calc_mean_profile.o \
     1017        exchange_horiz_mod.o \
    9991018        mod_particle_attributes.o \
    10001019        modules.o \
     
    10431062        chem_modules.o \
    10441063        diffusion_s.o \
     1064        exchange_horiz_mod.o \
    10451065        netcdf_data_input_mod.o \
    10461066        palm_date_time_mod.o \
     
    10511071        mod_kinds.o
    10521072sor.o: \
     1073        exchange_horiz_mod.o \
    10531074        mod_kinds.o \
    10541075        modules.o
     
    10811102        chem_gasphase_mod.o \
    10821103        chem_modules.o \
    1083         exchange_horiz_2d.o \
     1104        exchange_horiz_mod.o \
    10841105        land_surface_model_mod.o \
    10851106        mod_kinds.o \
     
    11021123        basic_constants_and_equations_mod.o \
    11031124        cpulog_mod.o \
     1125        exchange_horiz_mod.o \
    11041126        mod_kinds.o \
    11051127        modules.o \
     
    11251147        diagnostic_output_quantities_mod.o \
    11261148        disturb_heatflux.o \
     1149        exchange_horiz_mod.o \
    11271150        indoor_model_mod.o \
    11281151        lagrangian_particle_model_mod.o \
     
    11561179        cpulog_mod.o \
    11571180        diagnostic_output_quantities_mod.o \
     1181        exchange_horiz_mod.o \
    11581182        land_surface_model_mod.o \
    11591183        mod_kinds.o \
     
    11941218        bulk_cloud_model_mod.o \
    11951219        cpulog_mod.o \
     1220        exchange_horiz_mod.o \
    11961221        mod_kinds.o \
    11971222        mod_particle_attributes.o \
     
    12751300        pmc_interface_mod.o
    12761301vertical_nesting_mod.o: \
     1302        exchange_horiz_mod.o \
    12771303        mod_kinds.o \
    12781304        modules.o \
     
    13051331        cpulog_mod.o \
    13061332        data_output_module.o \
     1333        exchange_horiz_mod.o \
    13071334        netcdf_data_input_mod.o \
    13081335        mod_kinds.o \
  • palm/trunk/SOURCE/advec_ws.f90

    r4414 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4414 2020-02-19 20:16:04Z suehring
    2730! Move call for initialization of control flags to ws_init
    2831!
     
    184187               dt_3d
    185188
     189    USE exchange_horiz_mod,                                                    &
     190        ONLY:  exchange_horiz_int
     191
    186192    USE indices,                                                               &
    187193        ONLY:  advc_flags_m,                                                   &
     
    208214        ONLY:  ddx, ddy
    209215
     216    USE kinds
     217
    210218    USE pegrid,                                                                &
    211219           ONLY:  threads_per_task
    212 
    213     USE kinds
    214220
    215221    USE statistics,                                                            &
  • palm/trunk/SOURCE/average_3d_data.f90

    r4360 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added,
     28! bugfix for call of exchange horiz 2d
     29!
     30! 4360 2020-01-07 11:25:50Z suehring
    2731! Move 2-m potential temperature output to diagnostic_output_quantities
    2832!
     
    6771        ONLY:  cpu_log, log_point
    6872
     73    USE exchange_horiz_mod,                                                    &
     74        ONLY:  exchange_horiz_2d
     75
    6976    USE indices,                                                               &
    70         ONLY:  nbgp, nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzt
     77        ONLY:  nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzt
    7178
    7279    USE kinds
     
    123130                   ENDDO
    124131                ENDDO
    125                 CALL exchange_horiz_2d( ghf_av, nbgp )
     132                CALL exchange_horiz_2d( ghf_av )
    126133             ENDIF
    127134
     
    133140                   ENDDO
    134141                ENDDO
    135                 CALL exchange_horiz_2d( qsws_av, nbgp )
     142                CALL exchange_horiz_2d( qsws_av )
    136143             ENDIF
    137144
     
    163170                   ENDDO
    164171                ENDDO
    165                 CALL exchange_horiz_2d( ol_av, nbgp )
     172                CALL exchange_horiz_2d( ol_av )
    166173             ENDIF
    167174
     
    284291                   ENDDO
    285292                ENDDO
    286                 CALL exchange_horiz_2d( r_a_av, nbgp )
     293                CALL exchange_horiz_2d( r_a_av )
    287294             ENDIF
    288295
     
    305312                   ENDDO
    306313                ENDDO
    307                 CALL exchange_horiz_2d( shf_av, nbgp )
     314                CALL exchange_horiz_2d( shf_av )
    308315             ENDIF
    309316
     
    315322                   ENDDO
    316323                ENDDO
    317                 CALL exchange_horiz_2d( ssws_av, nbgp )
     324                CALL exchange_horiz_2d( ssws_av )
    318325             ENDIF
    319326
     
    325332                   ENDDO
    326333                ENDDO
    327                 CALL exchange_horiz_2d( ts_av, nbgp )
     334                CALL exchange_horiz_2d( ts_av )
    328335             ENDIF
    329336
     
    335342                   ENDDO
    336343                ENDDO
    337                 CALL exchange_horiz_2d( tsurf_av, nbgp )
     344                CALL exchange_horiz_2d( tsurf_av )
    338345             ENDIF
    339346
     
    356363                   ENDDO
    357364                ENDDO
    358                 CALL exchange_horiz_2d( us_av, nbgp )
     365                CALL exchange_horiz_2d( us_av )
    359366             ENDIF
    360367
     
    399406                   ENDDO
    400407                ENDDO
    401                 CALL exchange_horiz_2d( z0_av, nbgp )
     408                CALL exchange_horiz_2d( z0_av )
    402409             ENDIF
    403410
     
    409416                   ENDDO
    410417                ENDDO
    411                 CALL exchange_horiz_2d( z0h_av, nbgp )
     418                CALL exchange_horiz_2d( z0h_av )
    412419             ENDIF
    413420
     
    419426                   ENDDO
    420427                ENDDO
    421                 CALL exchange_horiz_2d( z0q_av, nbgp )
     428                CALL exchange_horiz_2d( z0q_av )
    422429             ENDIF
    423430
  • palm/trunk/SOURCE/bulk_cloud_model_mod.f90

    r4418 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4418 2020-02-21 09:41:13Z raasch
    2730! bugfix for raindrop number adjustment
    2831!
     
    13111314    SUBROUTINE bcm_exchange_horiz
    13121315
     1316       USE exchange_horiz_mod,                                                  &
     1317           ONLY:  exchange_horiz
     1318
    13131319
    13141320       IF ( .NOT. microphysics_sat_adjust  .AND.                                &
  • palm/trunk/SOURCE/chemistry_model_mod.f90

    r4442 r4457  
    2727! -----------------
    2828! $Id$
     29! use statement for exchange horiz added,
     30! bugfix for call of exchange horiz 2d
     31!
     32! 4442 2020-03-04 19:21:13Z suehring
    2933! Change order of dimension in surface array %frac to allow for better
    3034! vectorization.
     
    623627 SUBROUTINE chem_3d_data_averaging( mode, variable )
    624628
    625 
    626629    USE control_parameters
     630
     631    USE exchange_horiz_mod,                                                    &
     632        ONLY:  exchange_horiz_2d
     633
    627634
    628635    CHARACTER (LEN=*) ::  mode     !<
     
    717724                   ENDDO
    718725                ENDDO
    719                 CALL exchange_horiz_2d( chem_species(lsp)%cssws_av, nbgp )                 
     726                CALL exchange_horiz_2d( chem_species(lsp)%cssws_av )
    720727             ENDIF
    721728          ENDDO
     
    27602767 SUBROUTINE chem_exchange_horiz_bounds
    27612768 
     2769    USE exchange_horiz_mod,                                                    &
     2770        ONLY:  exchange_horiz
     2771
    27622772   INTEGER(iwp) ::  lsp       !<
    27632773   INTEGER(iwp) ::  lsp_usr   !<
  • palm/trunk/SOURCE/data_output_2d.f90

    r4444 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4444 2020-03-05 15:59:50Z raasch
    2730! bugfix: cpp-directives for serial mode added
    2831!
     
    112115        ONLY:  cpu_log, log_point
    113116
     117    USE exchange_horiz_mod,                                                    &
     118        ONLY:  exchange_horiz
     119
    114120    USE indices,                                                               &
    115121        ONLY:  nbgp, nx, nxl, nxlg, nxr, nxrg, ny, nyn, nyng, nys, nysg,       &
  • palm/trunk/SOURCE/data_output_3d.f90

    r4444 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4444 2020-03-05 15:59:50Z raasch
    2730! bugfix: cpp-directives for serial mode added
    2831!
     
    105108    USE cpulog,                                                                &
    106109        ONLY:  log_point, cpu_log
     110
     111    USE exchange_horiz_mod,                                                    &
     112        ONLY:  exchange_horiz
    107113
    108114    USE indices,                                                               &
  • palm/trunk/SOURCE/data_output_mask.f90

    r4444 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4444 2020-03-05 15:59:50Z raasch
    2730! bugfix: cpp-directives for serial mode added
    2831!
     
    105108#endif
    106109
     110    USE cpulog,                                                                &
     111        ONLY:  cpu_log, log_point
     112
    107113    USE diagnostic_output_quantities_mod,                                      &
    108114        ONLY:  doq_output_mask
    109115
    110     USE cpulog,                                                                &
    111         ONLY:  cpu_log, log_point
     116    USE exchange_horiz_mod,                                                    &
     117        ONLY:  exchange_horiz
    112118
    113119    USE indices,                                                               &
  • palm/trunk/SOURCE/diagnostic_output_quantities_mod.f90

    r4431 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added,
     28! bugfix for call of exchange horiz 2d
     29!
     30! 4431 2020-02-27 23:23:01Z gronemeier
    2731! added wspeed and wdir output; bugfix: set fill_value in case of masked output
    2832!
     
    110114!     USE cpulog,                                                                &
    111115!         ONLY:  cpu_log, log_point
     116
     117    USE exchange_horiz_mod,                                                    &
     118        ONLY:  exchange_horiz_2d
    112119
    113120   USE grid_variables,                                                         &
     
    598605                  ENDDO
    599606               ENDDO
    600                CALL exchange_horiz_2d( pt_2m_av, nbgp )
     607               CALL exchange_horiz_2d( pt_2m_av )
    601608            ENDIF
    602609
     
    608615                  ENDDO
    609616               ENDDO
    610                CALL exchange_horiz_2d( uv_10m_av, nbgp )
     617               CALL exchange_horiz_2d( uv_10m_av )
    611618            ENDIF
    612619
  • palm/trunk/SOURCE/disturb_field.f90

    r4360 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4360 2020-01-07 11:25:50Z suehring
    2730! Introduction of wall_flags_total_0, which currently sets bits based on static
    2831! topography information used in wall_flags_static_0
     
    6467        ONLY:  cpu_log, log_point
    6568       
     69    USE exchange_horiz_mod,                                                    &
     70        ONLY:  exchange_horiz
     71
    6672    USE indices,                                                               &
    6773        ONLY:  nbgp, nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzb_max, &
  • palm/trunk/SOURCE/exchange_horiz_mod.f90

    r4456 r4457  
    2525! -----------------
    2626! $Id$
     27! routine has been modularized, file exchange_horiz_2d has been merged
     28!
     29! 4429 2020-02-27 15:24:30Z raasch
    2730! bugfix: cpp-directives added for serial mode
    2831!
     
    4548!> lateral boundary conditions, respectively.
    4649!------------------------------------------------------------------------------!
     50 MODULE exchange_horiz_mod
     51
     52    USE kinds
     53
     54    USE pegrid
     55
     56    IMPLICIT NONE
     57
     58    PRIVATE
     59    PUBLIC exchange_horiz, exchange_horiz_int, exchange_horiz_2d, exchange_horiz_2d_byte,          &
     60           exchange_horiz_2d_int
     61
     62    INTERFACE exchange_horiz
     63       MODULE PROCEDURE exchange_horiz
     64    END INTERFACE exchange_horiz
     65
     66    INTERFACE exchange_horiz_int
     67       MODULE PROCEDURE exchange_horiz_int
     68    END INTERFACE exchange_horiz_int
     69
     70    INTERFACE exchange_horiz_2d
     71       MODULE PROCEDURE exchange_horiz_2d
     72    END INTERFACE exchange_horiz_2d
     73
     74    INTERFACE exchange_horiz_2d_byte
     75       MODULE PROCEDURE exchange_horiz_2d_byte
     76    END INTERFACE exchange_horiz_2d_byte
     77
     78    INTERFACE exchange_horiz_2d_int
     79       MODULE PROCEDURE exchange_horiz_2d_int
     80    END INTERFACE exchange_horiz_2d_int
     81
     82
     83 CONTAINS
     84
     85
    4786 SUBROUTINE exchange_horiz( ar, nbgp_local)
    48  
    4987
    5088    USE control_parameters,                                                    &
     
    62100        ONLY:  nxl, nxr, nyn, nys, nzb, nzt
    63101       
    64     USE kinds
    65    
    66     USE pegrid
    67 
    68     IMPLICIT NONE
    69 
    70102
    71103#if defined( _OPENACC )
     
    293325    USE indices,                                                               &
    294326        ONLY:  nzb
    295        
    296     USE kinds
    297    
    298     USE pegrid
    299 
    300     IMPLICIT NONE
    301327
    302328    INTEGER(iwp) ::  nxl_l       !< local index bound at current grid level, left side
     
    379405#endif
    380406
    381 
    382407 END SUBROUTINE exchange_horiz_int
     408
     409! Description:
     410! ------------
     411!> Exchange of lateral (ghost) boundaries (parallel computers) and cyclic
     412!> boundary conditions, respectively, for 2D-arrays.
     413!------------------------------------------------------------------------------!
     414 SUBROUTINE exchange_horiz_2d( ar )
     415
     416    USE control_parameters,                                                    &
     417        ONLY :  bc_dirichlet_l, bc_dirichlet_n, bc_dirichlet_r,                &
     418                bc_dirichlet_s, bc_radiation_l,                                &
     419                bc_radiation_n, bc_radiation_r, bc_radiation_s
     420
     421    USE cpulog,                                                                &
     422        ONLY :  cpu_log, log_point_s
     423
     424    USE indices,                                                               &
     425        ONLY :  nbgp, nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg
     426
     427#if ! defined( __parallel )
     428    USE control_parameters,                                                    &
     429        ONLY:  bc_lr_cyc, bc_ns_cyc
     430#endif
     431
     432
     433    INTEGER(iwp) :: i  !<
     434
     435    REAL(wp) ::  ar(nysg:nyng,nxlg:nxrg)  !<
     436
     437
     438    CALL cpu_log( log_point_s(13), 'exchange_horiz_2d', 'start' )
     439
     440#if defined( __parallel )
     441
     442!
     443!-- Exchange of lateral boundary values for parallel computers
     444    IF ( pdims(1) == 1 )  THEN
     445
     446!
     447!--    One-dimensional decomposition along y, boundary values can be exchanged
     448!--    within the PE memory
     449       ar(:,nxlg:nxl-1) = ar(:,nxr-nbgp+1:nxr)
     450       ar(:,nxr+1:nxrg) = ar(:,nxl:nxl+nbgp-1)
     451
     452    ELSE
     453!
     454!--    Send left boundary, receive right one
     455
     456       CALL MPI_SENDRECV( ar(nysg,nxl), 1, type_y, pleft,  0,                 &
     457                          ar(nysg,nxr+1), 1, type_y, pright, 0,               &
     458                          comm2d, status, ierr )
     459!
     460!--    Send right boundary, receive left one
     461       CALL MPI_SENDRECV( ar(nysg,nxr+1-nbgp), 1, type_y, pright,  1,         &
     462                          ar(nysg,nxlg), 1, type_y, pleft,   1,               &
     463                          comm2d, status, ierr )
     464
     465
     466    ENDIF
     467
     468    IF ( pdims(2) == 1 )  THEN
     469!
     470!--    One-dimensional decomposition along x, boundary values can be exchanged
     471!--    within the PE memory
     472       ar(nysg:nys-1,:) = ar(nyn-nbgp+1:nyn,:)
     473       ar(nyn+1:nyng,:) = ar(nys:nys+nbgp-1,:)
     474
     475    ELSE
     476!
     477!--    Send front boundary, receive rear one
     478
     479       CALL MPI_SENDRECV( ar(nys,nxlg), 1, type_x, psouth, 0,                 &
     480                          ar(nyn+1,nxlg), 1, type_x, pnorth, 0,               &
     481                          comm2d, status, ierr )
     482!
     483!--    Send rear boundary, receive front one
     484       CALL MPI_SENDRECV( ar(nyn+1-nbgp,nxlg), 1, type_x, pnorth, 1,          &
     485                          ar(nysg,nxlg), 1, type_x, psouth, 1,                &
     486                          comm2d, status, ierr )
     487
     488    ENDIF
     489
     490#else
     491
     492!
     493!-- Lateral boundary conditions in the non-parallel case
     494    IF ( bc_lr_cyc )  THEN
     495       ar(:,nxlg:nxl-1) = ar(:,nxr-nbgp+1:nxr)
     496       ar(:,nxr+1:nxrg) = ar(:,nxl:nxl+nbgp-1)
     497    ENDIF
     498
     499    IF ( bc_ns_cyc )  THEN
     500       ar(nysg:nys-1,:) = ar(nyn-nbgp+1:nyn,:)
     501       ar(nyn+1:nyng,:) = ar(nys:nys+nbgp-1,:)
     502    ENDIF
     503
     504#endif
     505
     506!
     507!-- Neumann-conditions at inflow/outflow/nested boundaries
     508    IF ( bc_dirichlet_l  .OR.  bc_radiation_l )  THEN
     509       DO  i = nbgp, 1, -1
     510          ar(:,nxl-i) = ar(:,nxl)
     511       ENDDO
     512    ENDIF
     513    IF ( bc_dirichlet_r  .OR.  bc_radiation_r )  THEN
     514       DO  i = 1, nbgp
     515          ar(:,nxr+i) = ar(:,nxr)
     516       ENDDO
     517    ENDIF
     518    IF ( bc_dirichlet_s  .OR.  bc_radiation_s )  THEN
     519       DO  i = nbgp, 1, -1
     520          ar(nys-i,:) = ar(nys,:)
     521       ENDDO
     522    ENDIF
     523    IF ( bc_dirichlet_n  .OR.  bc_radiation_n )  THEN
     524       DO  i = 1, nbgp
     525          ar(nyn+i,:) = ar(nyn,:)
     526       ENDDO
     527    ENDIF
     528
     529    CALL cpu_log( log_point_s(13), 'exchange_horiz_2d', 'stop' )
     530
     531 END SUBROUTINE exchange_horiz_2d
     532
     533
     534!------------------------------------------------------------------------------!
     535! Description:
     536! ------------
     537!> Exchange of lateral (ghost) boundaries (parallel computers) and cyclic
     538!> boundary conditions, respectively, for 2D 8-bit integer arrays.
     539!------------------------------------------------------------------------------!
     540 SUBROUTINE exchange_horiz_2d_byte( ar, nys_l, nyn_l, nxl_l, nxr_l, nbgp_local )
     541
     542
     543    USE control_parameters,                                                    &
     544        ONLY:  bc_dirichlet_l, bc_dirichlet_n, bc_dirichlet_r, bc_dirichlet_s, &
     545               bc_radiation_l, bc_radiation_n, bc_radiation_r, bc_radiation_s, &
     546               bc_radiation_l, bc_radiation_n, bc_radiation_r, bc_radiation_s
     547
     548    USE cpulog,                                                                &
     549        ONLY:  cpu_log, log_point_s
     550
     551#if ! defined( __parallel )
     552    USE control_parameters,                                                    &
     553        ONLY:  bc_lr_cyc, bc_ns_cyc
     554#endif
     555
     556    INTEGER(iwp) ::  i           !< dummy index to zero-gradient conditions at in/outflow boundaries
     557    INTEGER(iwp) ::  nxl_l       !< local index bound at current grid level, left side
     558    INTEGER(iwp) ::  nxr_l       !< local index bound at current grid level, right side
     559    INTEGER(iwp) ::  nyn_l       !< local index bound at current grid level, north side
     560    INTEGER(iwp) ::  nys_l       !< local index bound at current grid level, south side
     561    INTEGER(iwp) ::  nbgp_local  !< number of ghost layers to be exchanged
     562
     563    INTEGER(KIND=1), DIMENSION(nys_l-nbgp_local:nyn_l+nbgp_local,              &
     564                               nxl_l-nbgp_local:nxr_l+nbgp_local) ::  ar  !< treated array
     565
     566    CALL cpu_log( log_point_s(13), 'exchange_horiz_2d', 'start' )
     567
     568#if defined( __parallel )
     569
     570!
     571!-- Exchange of lateral boundary values for parallel computers
     572    IF ( pdims(1) == 1 )  THEN
     573
     574!
     575!--    One-dimensional decomposition along y, boundary values can be exchanged
     576!--    within the PE memory
     577       ar(:,nxl_l-nbgp_local:nxl_l-1) = ar(:,nxr_l-nbgp_local+1:nxr_l)
     578       ar(:,nxr_l+1:nxr_l+nbgp_local) = ar(:,nxl_l:nxl_l+nbgp_local-1)
     579
     580    ELSE
     581!
     582!--    Send left boundary, receive right one
     583       CALL MPI_SENDRECV( ar(nys_l-nbgp_local,nxl_l),   1,                     &
     584                          type_y_byte, pleft,  0,                              &
     585                          ar(nys_l-nbgp_local,nxr_l+1), 1,                     &
     586                          type_y_byte, pright, 0,                              &
     587                          comm2d, status, ierr )
     588!
     589!--    Send right boundary, receive left one
     590       CALL MPI_SENDRECV( ar(nys_l-nbgp_local,nxr_l+1-nbgp_local), 1,          &
     591                          type_y_byte, pright, 1,                              &
     592                          ar(nys_l-nbgp_local,nxl_l-nbgp_local),   1,          &
     593                          type_y_byte, pleft,  1,                              &
     594                          comm2d, status, ierr )
     595
     596    ENDIF
     597
     598    IF ( pdims(2) == 1 )  THEN
     599!
     600!--    One-dimensional decomposition along x, boundary values can be exchanged
     601!--    within the PE memory
     602       ar(nys_l-nbgp_local:nys_l-1,:) = ar(nyn_l+1-nbgp_local:nyn_l,:)
     603       ar(nyn_l+1:nyn_l+nbgp_local,:) = ar(nys_l:nys_l-1+nbgp_local,:)
     604
     605
     606    ELSE
     607!
     608!--    Send front boundary, receive rear one
     609       CALL MPI_SENDRECV( ar(nys_l,nxl_l-nbgp_local),   1,                    &
     610                          type_x_byte, psouth, 0,                             &
     611                          ar(nyn_l+1,nxl_l-nbgp_local), 1,                    &
     612                          type_x_byte, pnorth, 0,                             &
     613                          comm2d, status, ierr )
     614
     615!
     616!--    Send rear boundary, receive front one
     617       CALL MPI_SENDRECV( ar(nyn_l+1-nbgp_local,nxl_l-nbgp_local), 1,         &
     618                          type_x_byte, pnorth, 1,                             &
     619                          ar(nys_l-nbgp_local,nxl_l-nbgp_local),   1,         &
     620                          type_x_byte, psouth, 1,                             &
     621                          comm2d, status, ierr )
     622
     623    ENDIF
     624
     625#else
     626
     627!
     628!-- Lateral boundary conditions in the non-parallel case
     629    IF ( bc_lr_cyc )  THEN
     630       ar(:,nxl_l-nbgp_local:nxl_l-1) = ar(:,nxr_l-nbgp_local+1:nxr_l)
     631       ar(:,nxr_l+1:nxr_l+nbgp_local) = ar(:,nxl_l:nxl_l+nbgp_local-1)
     632    ENDIF
     633
     634    IF ( bc_ns_cyc )  THEN
     635       ar(nys_l-nbgp_local:nys_l-1,:) = ar(nyn_l+1-nbgp_local:nyn_l,:)
     636       ar(nyn_l+1:nyn_l+nbgp_local,:) = ar(nys_l:nys_l-1+nbgp_local,:)
     637    ENDIF
     638
     639#endif
     640!
     641!-- Neumann-conditions at inflow/outflow/nested boundaries
     642    IF ( bc_dirichlet_l  .OR.  bc_radiation_l )  THEN
     643       DO  i = nbgp_local, 1, -1
     644         ar(:,nxl_l-i) = ar(:,nxl_l)
     645       ENDDO
     646    ENDIF
     647    IF ( bc_dirichlet_r  .OR.  bc_radiation_r  )  THEN
     648       DO  i = 1, nbgp_local
     649          ar(:,nxr_l+i) = ar(:,nxr_l)
     650       ENDDO
     651    ENDIF
     652    IF ( bc_dirichlet_s  .OR.  bc_radiation_s  )  THEN
     653       DO  i = nbgp_local, 1, -1
     654         ar(nys_l-i,:) = ar(nys_l,:)
     655       ENDDO
     656    ENDIF
     657    IF ( bc_dirichlet_n  .OR.  bc_radiation_n  )  THEN
     658       DO  i = 1, nbgp_local
     659         ar(nyn_l+i,:) = ar(nyn_l,:)
     660       ENDDO
     661    ENDIF
     662
     663    CALL cpu_log( log_point_s(13), 'exchange_horiz_2d', 'stop' )
     664
     665 END SUBROUTINE exchange_horiz_2d_byte
     666
     667
     668!------------------------------------------------------------------------------!
     669! Description:
     670! ------------
     671!> Exchange of lateral (ghost) boundaries (parallel computers) and cyclic
     672!> boundary conditions, respectively, for 2D 32-bit integer arrays.
     673!------------------------------------------------------------------------------!
     674 SUBROUTINE exchange_horiz_2d_int( ar, nys_l, nyn_l, nxl_l, nxr_l, nbgp_local )
     675
     676
     677    USE control_parameters,                                                    &
     678        ONLY:  bc_dirichlet_l, bc_dirichlet_n, bc_dirichlet_r, bc_dirichlet_s, &
     679               bc_radiation_l, bc_radiation_n, bc_radiation_r, bc_radiation_s, &
     680               bc_radiation_l, bc_radiation_n, bc_radiation_r, bc_radiation_s
     681
     682#if defined( __parallel )
     683    USE control_parameters,                                                    &
     684        ONLY:  grid_level
     685#endif
     686
     687    USE cpulog,                                                                &
     688        ONLY:  cpu_log, log_point_s
     689
     690#if ! defined( __parallel )
     691    USE control_parameters,                                                    &
     692        ONLY:  bc_lr_cyc, bc_ns_cyc
     693#endif
     694
     695    INTEGER(iwp) ::  i           !< dummy index to zero-gradient conditions at in/outflow boundaries
     696    INTEGER(iwp) ::  nxl_l       !< local index bound at current grid level, left side
     697    INTEGER(iwp) ::  nxr_l       !< local index bound at current grid level, right side
     698    INTEGER(iwp) ::  nyn_l       !< local index bound at current grid level, north side
     699    INTEGER(iwp) ::  nys_l       !< local index bound at current grid level, south side
     700    INTEGER(iwp) ::  nbgp_local  !< number of ghost layers to be exchanged
     701
     702    INTEGER(iwp), DIMENSION(nys_l-nbgp_local:nyn_l+nbgp_local,                 &
     703                            nxl_l-nbgp_local:nxr_l+nbgp_local) ::  ar  !< treated array
     704
     705    CALL cpu_log( log_point_s(13), 'exchange_horiz_2d', 'start' )
     706
     707#if defined( __parallel )
     708
     709!
     710!-- Exchange of lateral boundary values for parallel computers
     711    IF ( pdims(1) == 1 )  THEN
     712
     713!
     714!--    One-dimensional decomposition along y, boundary values can be exchanged
     715!--    within the PE memory
     716       ar(:,nxl_l-nbgp_local:nxl_l-1) = ar(:,nxr_l-nbgp_local+1:nxr_l)
     717       ar(:,nxr_l+1:nxr_l+nbgp_local) = ar(:,nxl_l:nxl_l+nbgp_local-1)
     718
     719    ELSE
     720!
     721!--    Send left boundary, receive right one
     722       CALL MPI_SENDRECV( ar(nys_l-nbgp_local,nxl_l),   1,                     &
     723                          type_y_int(grid_level), pleft,  0,                   &
     724                          ar(nys_l-nbgp_local,nxr_l+1), 1,                     &
     725                          type_y_int(grid_level), pright, 0,                   &
     726                          comm2d, status, ierr )
     727!
     728!--    Send right boundary, receive left one
     729       CALL MPI_SENDRECV( ar(nys_l-nbgp_local,nxr_l+1-nbgp_local), 1,          &
     730                          type_y_int(grid_level), pright, 1,                   &
     731                          ar(nys_l-nbgp_local,nxl_l-nbgp_local),   1,          &
     732                          type_y_int(grid_level), pleft,  1,                   &
     733                          comm2d, status, ierr )
     734
     735    ENDIF
     736
     737    IF ( pdims(2) == 1 )  THEN
     738!
     739!--    One-dimensional decomposition along x, boundary values can be exchanged
     740!--    within the PE memory
     741       ar(nys_l-nbgp_local:nys_l-1,:) = ar(nyn_l+1-nbgp_local:nyn_l,:)
     742       ar(nyn_l+1:nyn_l+nbgp_local,:) = ar(nys_l:nys_l-1+nbgp_local,:)
     743
     744
     745    ELSE
     746!
     747!--    Send front boundary, receive rear one
     748       CALL MPI_SENDRECV( ar(nys_l,nxl_l-nbgp_local),   1,                    &
     749                          type_x_int(grid_level), psouth, 0,                  &
     750                          ar(nyn_l+1,nxl_l-nbgp_local), 1,                    &
     751                          type_x_int(grid_level), pnorth, 0,                  &
     752                          comm2d, status, ierr )
     753
     754!
     755!--    Send rear boundary, receive front one
     756       CALL MPI_SENDRECV( ar(nyn_l+1-nbgp_local,nxl_l-nbgp_local), 1,         &
     757                          type_x_int(grid_level), pnorth, 1,                  &
     758                          ar(nys_l-nbgp_local,nxl_l-nbgp_local),   1,         &
     759                          type_x_int(grid_level), psouth, 1,                  &
     760                          comm2d, status, ierr )
     761
     762    ENDIF
     763
     764#else
     765
     766!
     767!-- Lateral boundary conditions in the non-parallel case
     768    IF ( bc_lr_cyc )  THEN
     769       ar(:,nxl_l-nbgp_local:nxl_l-1) = ar(:,nxr_l-nbgp_local+1:nxr_l)
     770       ar(:,nxr_l+1:nxr_l+nbgp_local) = ar(:,nxl_l:nxl_l+nbgp_local-1)
     771    ENDIF
     772
     773    IF ( bc_ns_cyc )  THEN
     774       ar(nys_l-nbgp_local:nys_l-1,:) = ar(nyn_l+1-nbgp_local:nyn_l,:)
     775       ar(nyn_l+1:nyn_l+nbgp_local,:) = ar(nys_l:nys_l-1+nbgp_local,:)
     776    ENDIF
     777
     778#endif
     779!
     780!-- Neumann-conditions at inflow/outflow/nested boundaries
     781    IF ( bc_dirichlet_l  .OR.  bc_radiation_l )  THEN
     782       DO  i = nbgp_local, 1, -1
     783         ar(:,nxl_l-i) = ar(:,nxl_l)
     784       ENDDO
     785    ENDIF
     786    IF ( bc_dirichlet_r  .OR.  bc_radiation_r  )  THEN
     787       DO  i = 1, nbgp_local
     788          ar(:,nxr_l+i) = ar(:,nxr_l)
     789       ENDDO
     790    ENDIF
     791    IF ( bc_dirichlet_s  .OR.  bc_radiation_s  )  THEN
     792       DO  i = nbgp_local, 1, -1
     793         ar(nys_l-i,:) = ar(nys_l,:)
     794       ENDDO
     795    ENDIF
     796    IF ( bc_dirichlet_n  .OR.  bc_radiation_n  )  THEN
     797       DO  i = 1, nbgp_local
     798         ar(nyn_l+i,:) = ar(nyn_l,:)
     799       ENDDO
     800    ENDIF
     801
     802    CALL cpu_log( log_point_s(13), 'exchange_horiz_2d', 'stop' )
     803
     804 END SUBROUTINE exchange_horiz_2d_int
     805
     806
     807 END MODULE exchange_horiz_mod
  • palm/trunk/SOURCE/init_grid.f90

    r4444 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added,
     28! bugfix for call of exchange horiz 2d
     29!
     30! 4444 2020-03-05 15:59:50Z raasch
    2731! bugfix: cpp-directives for serial mode added
    2832!
     
    934938        ONLY:  bc_lr_cyc, bc_ns_cyc, message_string, ocean_mode
    935939
     940    USE exchange_horiz_mod,                                                    &
     941        ONLY:  exchange_horiz_int, exchange_horiz_2d
     942
    936943    USE indices,                                                               &
    937944        ONLY:  nbgp, nx, nxl, nxlg, nxr, nxrg, ny, nyn, nyng, nys, nysg, nzb,  &
     
    13151322!--    initialization of building-surface properties.
    13161323       IF ( ALLOCATED( buildings_f%oro_max ) )  THEN
    1317           CALL exchange_horiz_2d( buildings_f%oro_max(:,:), nbgp )
     1324          CALL exchange_horiz_2d( buildings_f%oro_max(:,:) )
    13181325       ENDIF
    13191326!
     
    13771384    USE control_parameters,                                                    &
    13781385        ONLY:  bc_lr_cyc, bc_ns_cyc, message_string
     1386
     1387    USE exchange_horiz_mod,                                                    &
     1388        ONLY:  exchange_horiz_int, exchange_horiz_2d_byte, exchange_horiz_2d_int
    13791389
    13801390    USE indices,                                                               &
     
    15921602               tunnel_wall_depth
    15931603         
     1604    USE exchange_horiz_mod,                                                    &
     1605        ONLY:  exchange_horiz_int
     1606
    15941607    USE grid_variables,                                                        &
    15951608        ONLY:  dx, dy
     
    21822195               scalar_advec, topography, use_surface_fluxes, use_top_fluxes
    21832196
     2197    USE exchange_horiz_mod,                                                    &
     2198        ONLY:  exchange_horiz_int
     2199
    21842200    USE indices,                                                               &
    21852201        ONLY:  nbgp, nx, nxl, nxlg, nxr, nxrg, ny, nyn, nyng, nys, nysg, nzb,  &
  • palm/trunk/SOURCE/init_pt_anomaly.f90

    r4360 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4360 2020-01-07 11:25:50Z suehring
    2730! Introduction of wall_flags_total_0, which currently sets bits based on static
    2831! topography information used in wall_flags_static_0
     
    5255
    5356    USE control_parameters
     57
     58    USE exchange_horiz_mod,                                                    &
     59        ONLY:  exchange_horiz
    5460
    5561    USE grid_variables,                                                        &
  • palm/trunk/SOURCE/init_rankine.f90

    r4360 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4360 2020-01-07 11:25:50Z suehring
    2730! Corrected "Former revisions" section
    2831!
     
    5053    USE basic_constants_and_equations_mod,                                     &
    5154        ONLY:  pi
     55
     56    USE exchange_horiz_mod,                                                    &
     57        ONLY:  exchange_horiz
    5258
    5359    USE grid_variables,                                                        &
  • palm/trunk/SOURCE/lagrangian_particle_model_mod.f90

    r4444 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4444 2020-03-05 15:59:50Z raasch
    2730! bugfix: cpp-directives for serial mode added
    2831!
     
    17721775 SUBROUTINE lpm_init_sgs_tke
    17731776
     1777    USE exchange_horiz_mod,                                                    &
     1778        ONLY:  exchange_horiz
     1779
    17741780    USE statistics,                                                            &
    17751781        ONLY:  flow_statistics_called, hom, sums, sums_l
     
    20142020!------------------------------------------------------------------------------! 
    20152021 SUBROUTINE lpm_actions( location )
     2022
     2023    USE exchange_horiz_mod,                                                    &
     2024        ONLY:  exchange_horiz
    20162025
    20172026    CHARACTER (LEN=*), INTENT(IN) ::  location !< call location string
  • palm/trunk/SOURCE/nesting_offl_mod.f90

    r4360 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4360 2020-01-07 11:25:50Z suehring
    2730! Bugfix, time coordinate is relative to origin_time rather than to 00:00:00
    2831! UTC.
     
    947950!------------------------------------------------------------------------------!
    948951    SUBROUTINE nesting_offl_bc                     
     952
     953       USE exchange_horiz_mod,                                                    &
     954           ONLY:  exchange_horiz
    949955
    950956       INTEGER(iwp) ::  i !< running index x-direction
  • palm/trunk/SOURCE/netcdf_data_input_mod.f90

    r4435 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added,
     28! bugfixes for calls of exchange horiz 2d
     29!
     30! 4435 2020-03-03 10:38:41Z raasch
    2731! temporary bugfix to avoid compile problems with older NetCDFD libraries on IMUK machines
    2832!
     
    15321536           ONLY:  land_surface, urban_surface
    15331537
     1538       USE exchange_horiz_mod,                                                 &
     1539           ONLY:  exchange_horiz_2d, exchange_horiz_2d_byte, exchange_horiz_2d_int
     1540
    15341541       USE indices,                                                            &
    15351542           ONLY:  nbgp, nxl, nxr, nyn, nys
     
    20532060                                     nys, nyn, nxl, nxr )
    20542061          DO  k = 0, nz_soil
    2055              CALL exchange_horiz_2d_int(                                       & 
     2062             CALL exchange_horiz_2d_byte(                                       &
    20562063                        soil_type_f%var_3d(k,:,:), nys, nyn, nxl, nxr, nbgp )
    20572064          ENDDO
     
    20632070                                     nys, nyn, nxl, nxr )
    20642071          DO  k = 0, surface_fraction_f%nf-1
    2065              CALL exchange_horiz_2d( surface_fraction_f%frac(k,:,:), nbgp )
     2072             CALL exchange_horiz_2d( surface_fraction_f%frac(k,:,:) )
    20662073          ENDDO
    20672074       ENDIF
     
    20722079                                     nys, nyn, nxl, nxr )
    20732080          DO  k = 0, building_pars_f%np-1
    2074              CALL exchange_horiz_2d( building_pars_f%pars_xy(k,:,:), nbgp )
     2081             CALL exchange_horiz_2d( building_pars_f%pars_xy(k,:,:) )
    20752082          ENDDO
    20762083       ENDIF
     
    20812088                                     nys, nyn, nxl, nxr )
    20822089          DO  k = 0, albedo_pars_f%np-1
    2083              CALL exchange_horiz_2d( albedo_pars_f%pars_xy(k,:,:), nbgp )
     2090             CALL exchange_horiz_2d( albedo_pars_f%pars_xy(k,:,:) )
    20842091          ENDDO
    20852092       ENDIF
     
    20902097                                     nys, nyn, nxl, nxr )
    20912098          DO  k = 0, pavement_pars_f%np-1
    2092              CALL exchange_horiz_2d( pavement_pars_f%pars_xy(k,:,:), nbgp )
     2099             CALL exchange_horiz_2d( pavement_pars_f%pars_xy(k,:,:) )
    20932100          ENDDO
    20942101       ENDIF
     
    20992106                                     nys, nyn, nxl, nxr )
    21002107          DO  k = 0, vegetation_pars_f%np-1
    2101              CALL exchange_horiz_2d( vegetation_pars_f%pars_xy(k,:,:), nbgp )
     2108             CALL exchange_horiz_2d( vegetation_pars_f%pars_xy(k,:,:) )
    21022109          ENDDO
    21032110       ENDIF
     
    21082115                                     nys, nyn, nxl, nxr )
    21092116          DO  k = 0, water_pars_f%np-1
    2110              CALL exchange_horiz_2d( water_pars_f%pars_xy(k,:,:), nbgp )
     2117             CALL exchange_horiz_2d( water_pars_f%pars_xy(k,:,:) )
    21112118          ENDDO
    21122119       ENDIF
     
    21172124                                     nys, nyn, nxl, nxr )
    21182125          DO  k = 0, root_area_density_lsm_f%nz-1
    2119              CALL exchange_horiz_2d( root_area_density_lsm_f%var(k,:,:), nbgp )
     2126             CALL exchange_horiz_2d( root_area_density_lsm_f%var(k,:,:) )
    21202127          ENDDO
    21212128       ENDIF
     
    21282135                                        nys, nyn, nxl, nxr )
    21292136             DO  k = 0, soil_pars_f%np-1
    2130                 CALL exchange_horiz_2d( soil_pars_f%pars_xy(k,:,:), nbgp )
     2137                CALL exchange_horiz_2d( soil_pars_f%pars_xy(k,:,:) )
    21312138             ENDDO
    21322139             
     
    21392146             DO  k2 = 0, soil_pars_f%nz-1
    21402147                DO  k = 0, soil_pars_f%np-1
    2141                    CALL exchange_horiz_2d( soil_pars_f%pars_xyz(k,k2,:,:),     &
    2142                                            nbgp )
     2148                   CALL exchange_horiz_2d( soil_pars_f%pars_xyz(k,k2,:,:) )
    21432149                ENDDO
    21442150             ENDDO
     
    21552161             DO  k = 0, pavement_subsurface_pars_f%np-1
    21562162                CALL exchange_horiz_2d(                                        &
    2157                            pavement_subsurface_pars_f%pars_xyz(k,k2,:,:), nbgp )
     2163                           pavement_subsurface_pars_f%pars_xyz(k,k2,:,:) )
    21582164             ENDDO
    21592165          ENDDO
     
    22872293       USE control_parameters,                                                 &
    22882294           ONLY:  message_string, topography
     2295
     2296       USE exchange_horiz_mod,                                                 &
     2297           ONLY:  exchange_horiz_2d_byte, exchange_horiz_2d_int
    22892298
    22902299       USE grid_variables,                                                     &
  • palm/trunk/SOURCE/palm.f90

    r4444 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4444 2020-03-05 15:59:50Z raasch
    2730! bugfix: cpp-directives for serial mode added
    2831!
     
    105108
    106109#if defined( __parallel )
     110    USE exchange_horiz_mod,                                                    &
     111        ONLY:  exchange_horiz
     112
    107113    USE indices,                                                               &
    108114        ONLY:  nbgp
  • palm/trunk/SOURCE/plant_canopy_model_mod.f90

    r4448 r4457  
    2727! -----------------
    2828!
     29! use statement for exchange horiz added
     30!
     31!
    2932! $Id$
    3033! (salim) removed the error message PA0672 to consider PC 3d data via ascii file
     
    972975    SUBROUTINE pcm_init
    973976
     977       USE exchange_horiz_mod,                                                    &
     978           ONLY:  exchange_horiz
     979
    974980       INTEGER(iwp) ::  i   !< running index
    975981       INTEGER(iwp) ::  j   !< running index
     
    15401546    SUBROUTINE pcm_read_plant_canopy_3d
    15411547
     1548       USE exchange_horiz_mod,                                                    &
     1549           ONLY:  exchange_horiz
     1550
    15421551       INTEGER(iwp)                        ::  dtype     !< type of input data (1=lad)
    15431552       INTEGER(iwp)                        ::  pctype    !< type of plant canopy (deciduous,non-deciduous,...)
  • palm/trunk/SOURCE/poismg_mod.f90

    r4432 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4432 2020-02-28 07:43:21Z raasch
    2730! bugfix for previous revision (vector directive was changed by mistake)
    2831!
     
    7376    USE cpulog,                                                                &
    7477        ONLY:  cpu_log, log_point_s
     78
     79    USE exchange_horiz_mod,                                                    &
     80        ONLY:  exchange_horiz
    7581
    7682    USE kinds
  • palm/trunk/SOURCE/poismg_noopt_mod.f90

    r4429 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4429 2020-02-27 15:24:30Z raasch
    2730! bugfix: cpp-directives added for serial mode
    2831!
     
    7073    USE cpulog,                                                                &
    7174        ONLY:  cpu_log, log_point_s
     75
     76    USE exchange_horiz_mod,                                                    &
     77        ONLY:  exchange_horiz, exchange_horiz_int
    7278
    7379    USE kinds
  • palm/trunk/SOURCE/pres.f90

    r4360 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4360 2020-01-07 11:25:50Z suehring
    2730! Introduction of wall_flags_total_0, which currently sets bits based on static
    2831! topography information used in wall_flags_static_0
     
    6972    USE cpulog,                                                                &
    7073        ONLY:  cpu_log, log_point, log_point_s
     74
     75    USE exchange_horiz_mod,                                                    &
     76        ONLY:  exchange_horiz
    7177
    7278    USE grid_variables,                                                        &
  • palm/trunk/SOURCE/radiation_model_mod.f90

    r4452 r4457  
    2828! -----------------
    2929! $Id$
     30! use statement for exchange horiz added
     31!
     32! 4452 2020-03-10 20:15:32Z suehring
    3033! Bugfix in calc_albedo
    3134!
     
    39943997
    39953998#if defined ( __rrtmg )
     3999       USE exchange_horiz_mod,                                                 &
     4000           ONLY:  exchange_horiz
     4001
    39964002       USE indices,                                                            &
    39974003           ONLY:  nbgp
  • palm/trunk/SOURCE/salsa_mod.f90

    r4442 r4457  
    2626! -----------------
    2727! $Id$
     28! use statement for exchange horiz added
     29!
     30! 4442 2020-03-04 19:21:13Z suehring
    2831! Change order of dimension in surface array %frac to allow for better
    2932! vectorization.
     
    78717874        ONLY:  cpu_log, log_point_s
    78727875
     7876    USE exchange_horiz_mod,                                                    &
     7877        ONLY:  exchange_horiz
     7878
    78737879    IMPLICIT NONE
    78747880
     
    1239012396        ONLY:  bc_dirichlet_l, bc_dirichlet_n, bc_dirichlet_r, bc_dirichlet_s, dt_3d,              &
    1239112397               time_since_reference_point
     12398
     12399    USE exchange_horiz_mod,                                                    &
     12400        ONLY:  exchange_horiz
    1239212401
    1239312402    USE indices,                                                                                   &
  • palm/trunk/SOURCE/sor.f90

    r4360 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4360 2020-01-07 11:25:50Z suehring
    2730! Corrected "Former revisions" section
    2831!
     
    4346        ONLY:  rho_air, rho_air_zw
    4447
    45     USE grid_variables,                                                        &
    46         ONLY:  ddx2, ddy2
    47 
    48     USE indices,                                                               &
    49         ONLY:  nbgp, nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nz, nzb, nzt
    50 
    51     USE kinds
    52 
    5348    USE control_parameters,                                                    &
    5449        ONLY:  bc_dirichlet_l, bc_dirichlet_n, bc_dirichlet_r,                 &
     
    5651               bc_radiation_n, bc_radiation_r, bc_radiation_s, ibc_p_b,        &
    5752               ibc_p_t, n_sor, omega_sor
     53
     54    USE exchange_horiz_mod,                                                    &
     55        ONLY:  exchange_horiz
     56
     57    USE grid_variables,                                                        &
     58        ONLY:  ddx2, ddy2
     59
     60    USE indices,                                                               &
     61        ONLY:  nbgp, nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nz, nzb, nzt
     62
     63    USE kinds
    5864
    5965    IMPLICIT NONE
  • palm/trunk/SOURCE/synthetic_turbulence_generator_mod.f90

    r4444 r4457  
    12571257!------------------------------------------------------------------------------!
    12581258 SUBROUTINE stg_main
     1259
     1260    USE exchange_horiz_mod,                                                    &
     1261        ONLY:  exchange_horiz
    12591262
    12601263    INTEGER(iwp) :: i           !< grid index in x-direction
  • palm/trunk/SOURCE/time_integration.f90

    r4444 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4444 2020-03-05 15:59:50Z raasch
    2730! bugfix: cpp-directives for serial mode added
    2831!
     
    276279        ONLY:  doq_calculate,                                                                      &
    277280               timestep_number_at_prev_calc
     281
     282    USE exchange_horiz_mod,                                                                        &
     283        ONLY:  exchange_horiz
    278284
    279285    USE flight_mod,                                                                                &
  • palm/trunk/SOURCE/time_integration_spinup.f90

    r4444 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4444 2020-03-05 15:59:50Z raasch
    2730! bugfix: cpp-directives for serial mode added
    2831!
     
    9093    USE diagnostic_output_quantities_mod,                                      &
    9194        ONLY:  doq_calculate
     95
     96    USE exchange_horiz_mod,                                                    &
     97        ONLY:  exchange_horiz
    9298
    9399    USE indices,                                                               &
  • palm/trunk/SOURCE/turbulence_closure_mod.f90

    r4433 r4457  
    2525! -----------------
    2626! $Id$
     27! use statement for exchange horiz added
     28!
     29! 4433 2020-02-28 22:14:43Z gronemeier
    2730! remove warning for newly implemented RANS mode
    2831!
     
    13661369    USE control_parameters,                                                    &
    13671370        ONLY:  f, message_string, wall_adjustment, wall_adjustment_factor
     1371
     1372    USE exchange_horiz_mod,                                                    &
     1373        ONLY:  exchange_horiz, exchange_horiz_int
    13681374
    13691375    USE grid_variables,                                                        &
     
    44394445               e_min
    44404446
     4447    USE exchange_horiz_mod,                                                    &
     4448        ONLY:  exchange_horiz
     4449
    44414450    USE surface_layer_fluxes_mod,                                              &
    44424451        ONLY:  phi_m
  • palm/trunk/SOURCE/urban_surface_mod.f90

    r4442 r4457  
    2828! -----------------
    2929! $Id$
     30! use statement for exchange horiz added
     31!
     32! 4442 2020-03-04 19:21:13Z suehring
    3033! Change order of dimension in surface arrays %frac, %emissivity and %albedo
    3134! to allow for better vectorization in the radiation interactions.
     
    77527755!------------------------------------------------------------------------------!
    77537756    SUBROUTINE usm_surface_energy_balance( during_spinup )
     7757
     7758        USE exchange_horiz_mod,                                                    &
     7759            ONLY:  exchange_horiz
    77547760
    77557761
  • palm/trunk/SOURCE/vertical_nesting_mod.f90

    r4444 r4457  
    2626! -----------------
    2727! $Id$
     28! use statement for exchange horiz added
     29!
     30! 4444 2020-03-05 15:59:50Z raasch
    2831! bugfix: cpp-directives for serial mode added
    2932!
     
    7679!------------------------------------------------------------------------------!
    7780 MODULE vertical_nesting_mod
     81
     82    USE exchange_horiz_mod,                                                    &
     83        ONLY:  exchange_horiz, exchange_horiz_2d
    7884
    7985    USE kinds
  • palm/trunk/SOURCE/wind_turbine_model_mod.f90

    r4447 r4457  
    2626! -----------------
    2727! $Id$
     28! use statement for exchange horiz added
     29!
     30! 4447 2020-03-06 11:05:30Z oliver.maas
    2831! renamed wind_turbine_parameters namelist variables
    2932!
     
    978981           ONLY:  dz_stretch_level_start
    979982   
     983       USE exchange_horiz_mod,                                                    &
     984           ONLY:  exchange_horiz
     985
    980986       IMPLICIT NONE
    981987
Note: See TracChangeset for help on using the changeset viewer.