Ignore:
Timestamp:
Dec 23, 2010 12:06:00 PM (11 years ago)
Author:
suehring
Message:

summary:


Gryschka:

  • Coupling with different resolution and different numbers of PEs in ocean and atmosphere is available
  • Exchange of u and v from ocean surface to atmosphere surface
  • Mirror boundary condition for u and v at the bottom are replaced by dirichlet boundary conditions
  • Inflow turbulence is now defined by flucuations around spanwise mean
  • Bugfixes for cyclic_fill and constant_volume_flow

Suehring:

  • New advection added ( Wicker and Skamarock 5th order ), therefore:
    • New module advec_ws.f90
    • Modified exchange of ghost boundaries.
    • Modified evaluation of turbulent fluxes
    • New index bounds nxlg, nxrg, nysg, nyng

advec_ws.f90


Advection scheme for scalars and momentum using the flux formulation of
Wicker and Skamarock 5th order.
Additionally the module contains of a routine using for initialisation and
steering of the statical evaluation. The computation of turbulent fluxes takes
place inside the advection routines.
In case of vector architectures Dirichlet and Radiation boundary conditions are
outstanding and not available. Furthermore simulations within topography are
not possible so far. A further routine local_diss_ij is available and is used
if a control of dissipative fluxes is desired.

check_parameters.f90


Exchange of parameters between ocean and atmosphere via PE0
Check for illegal combination of ws-scheme and timestep scheme.
Check for topography and ws-scheme.
Check for not cyclic boundary conditions in combination with ws-scheme and
loop_optimization = 'vector'.
Check for call_psolver_at_all_substeps and ws-scheme for momentum_advec.

Different processor/grid topology in atmosphere and ocean is now allowed!
Bugfixes in checking for conserve_volume_flow_mode.

exchange_horiz.f90


Dynamic exchange of ghost points with nbgp_local to ensure that no useless
ghost points exchanged in case of multigrid. type_yz(0) and type_xz(0) used for
normal grid, the remaining types used for the several grid levels.
Exchange is done via MPI-Vectors with a dynamic value of ghost points which
depend on the advection scheme. Exchange of left and right PEs is 10% faster
with MPI-Vectors than without.

flow_statistics.f90


When advection is computed with ws-scheme, turbulent fluxes are already
computed in the respective advection routines and buffered in arrays
sums_xxxx_ws_l(). This is due to a consistent treatment of statistics
with the numerics and to avoid unphysical kinks near the surface. So some if-
requests has to be done to dicern between fluxes from ws-scheme other advection
schemes. Furthermore the computation of z_i is only done if the heat flux
exceeds a minimum value. This affects only simulations of a neutral boundary
layer and is due to reasons of computations in the advection scheme.

inflow_turbulence.f90


Using nbgp recycling planes for a better resolution of the turbulent flow near
the inflow.

init_grid.f90


Definition of new array bounds nxlg, nxrg, nysg, nyng on each PE.
Furthermore the allocation of arrays and steering of loops is done with these
parameters. Call of exchange_horiz are modified.
In case of dirichlet bounday condition at the bottom zu(0)=0.0
dzu_mg has to be set explicitly for a equally spaced grid near bottom.
ddzu_pres added to use a equally spaced grid near bottom.

init_pegrid.f90


Moved determination of target_id's from init_coupling
Determination of parameters needed for coupling (coupling_topology, ngp_a, ngp_o)
with different grid/processor-topology in ocean and atmosphere

Adaption of ngp_xy, ngp_y to a dynamic number of ghost points.
The maximum_grid_level changed from 1 to 0. 0 is the normal grid, 1 to
maximum_grid_level the grids for multigrid, in which 0 and 1 are normal grids.
This distinction is due to reasons of data exchange and performance for the
normal grid and grids in poismg.
The definition of MPI-Vectors adapted to a dynamic numer of ghost points.
New MPI-Vectors for data exchange between left and right boundaries added.
This is due to reasons of performance (10% faster).

ATTENTION: nnz_x undefined problem still has to be solved!!!!!!!!
TEST OUTPUT (TO BE REMOVED) logging mpi2 ierr values

parin.f90


Steering parameter dissipation_control added in inipar.

Makefile


Module advec_ws added.

Modules


Removed u_nzb_p1_for_vfc and v_nzb_p1_for_vfc

For coupling with different resolution in ocean and atmophere:
+nx_a, +nx_o, ny_a, +ny_o, ngp_a, ngp_o, +total_2d_o, +total_2d_a,
+coupling_topology

Buffer arrays for the left sided advective fluxes added in arrays_3d.
+flux_s_u, +flux_s_v, +flux_s_w, +diss_s_u, +diss_s_v, +diss_s_w,
+flux_s_pt, +diss_s_pt, +flux_s_e, +diss_s_e, +flux_s_q, +diss_s_q,
+flux_s_sa, +diss_s_sa
3d arrays for dissipation control added. (only necessary for vector arch.)
+var_x, +var_y, +var_z, +gamma_x, +gamma_y, +gamma_z
Default of momentum_advec and scalar_advec changed to 'ws-scheme' .
+exchange_mg added in control_parameters to steer the data exchange.
Parameters +nbgp, +nxlg, +nxrg, +nysg, +nyng added in indices.
flag array +boundary_flags added in indices to steer the degradation of order
of the advective fluxes when non-cyclic boundaries are used.
MPI-datatypes +type_y, +type_y_int and +type_yz for data_exchange added in
pegrid.
+sums_wsus_ws_l, +sums_wsvs_ws_l, +sums_us2_ws_l, +sums_vs2_ws_l,
+sums_ws2_ws_l, +sums_wspts_ws_l, +sums_wssas_ws_l, +sums_wsqs_ws_l
and +weight_substep added in statistics to steer the statistical evaluation
of turbulent fluxes in the advection routines.
LOGICALS +ws_scheme_sca and +ws_scheme_mom added to get a better performance
in prognostic_equations.
LOGICAL +dissipation_control control added to steer numerical dissipation
in ws-scheme.

Changed length of string run_description_header

pres.f90


New allocation of tend when ws-scheme and multigrid is used. This is due to
reasons of perforance of the data_exchange. The same is done with p after
poismg is called.
nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng when no
multigrid is used. Calls of exchange_horiz are modified.

bugfix: After pressure correction no volume flow correction in case of
non-cyclic boundary conditions
(has to be done only before pressure correction)

Call of SOR routine is referenced with ddzu_pres.

prognostic_equations.f90


Calls of the advection routines with WS5 added.
Calls of ws_statistics added to set the statistical arrays to zero after each
time step.

advec_particles.f90


Declaration of de_dx, de_dy, de_dz adapted to additional ghost points.
Furthermore the calls of exchange_horiz were modified.

asselin_filter.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng

average_3d_data.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng

boundary_conds.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng
Removed mirror boundary conditions for u and v at the bottom in case of
ibc_uv_b == 0. Instead, dirichelt boundary conditions (u=v=0) are set
in init_3d_model

calc_liquid_water_content.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng

calc_spectra.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng for
allocation of tend.

check_open.f90


Output of total array size was adapted to nbgp.

data_output_2d.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng in loops and
allocation of arrays local_2d and total_2d.
Calls of exchange_horiz are modified.

data_output_2d.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng in loops and
allocation of arrays. Calls of exchange_horiz are modified.
Skip-value skip_do_avs changed to a dynamic adaption of ghost points.

data_output_mask.f90


Calls of exchange_horiz are modified.

diffusion_e.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng

diffusion_s.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng

diffusion_u.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng

diffusion_v.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng

diffusion_w.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng

diffusivities.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng

diffusivities.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng.
Calls of exchange_horiz are modified.

exchange_horiz_2d.f90


Dynamic exchange of ghost points with nbgp, which depends on the advection
scheme. Exchange between left and right PEs is now done with MPI-vectors.

global_min_max.f90


Adapting of the index arrays, because MINLOC assumes lowerbound
at 1 and not at nbgp.

init_3d_model.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng in loops and
allocation of arrays. Calls of exchange_horiz are modified.
Call ws_init to initialize arrays needed for statistical evaluation and
optimization when ws-scheme is used.
Initial volume flow is now calculated by using the variable hom_sum.
Therefore the correction of initial volume flow for non-flat topography
removed (removed u_nzb_p1_for_vfc and v_nzb_p1_for_vfc)
Changed surface boundary conditions for u and v in case of ibc_uv_b == 0 from
mirror bc to dirichlet boundary conditions (u=v=0), so that k=nzb is
representative for the height z0

Bugfix: type conversion of '1' to 64bit for the MAX function (ngp_3d_inner)

init_coupling.f90


determination of target_id's moved to init_pegrid

init_pt_anomaly.f90


Call of exchange_horiz are modified.

init_rankine.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng.
Calls of exchange_horiz are modified.

init_slope.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng.

header.f90


Output of advection scheme.

poismg.f90


Calls of exchange_horiz are modified.

prandtl_fluxes.f90


Changed surface boundary conditions for u and v from mirror bc to dirichelt bc,
therefore u(uzb,:,:) and v(nzb,:,:) is now representative for the height z0
nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng

production_e.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng

read_3d_binary.f90


+/- 1 replaced with +/- nbgp when swapping and allocating variables.

sor.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng.
Call of exchange_horiz are modified.
bug removed in declaration of ddzw(), nz replaced by nzt+1

subsidence.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng.

sum_up_3d_data.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng.

surface_coupler.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng in
MPI_SEND() and MPI_RECV.
additional case for nonequivalent processor and grid topopolgy in ocean and
atmosphere added (coupling_topology = 1)

Added exchange of u and v from Ocean to Atmosphere

time_integration.f90


Calls of exchange_horiz are modified.
Adaption to slooping surface.

timestep.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng.

user_3d_data_averaging.f90, user_data_output_2d.f90, user_data_output_3d.f90,
user_actions.f90, user_init.f90, user_init_plant_canopy.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng.

user_read_restart_data.f90


Allocation with nbgp.

wall_fluxes.f90


nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng.

write_compressed.f90


Array bounds and nx, ny adapted with nbgp.

sor.f90


bug removed in declaration of ddzw(), nz replaced by nzt+1

Location:
palm/trunk/SOURCE
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE

    • Property svn:mergeinfo set to (toggle deleted branches)
      /palm/branches/suehring423-666
      /palm/branches/letzel/masked_output/SOURCE296-409
  • palm/trunk/SOURCE/read_3d_binary.f90

    r449 r667  
    44! Current revisions:
    55! -----------------
    6 !
     6! +/- 1 replaced with +/- nbgp when swapping and allocating variables.
     7! Bugfix: When using initializing_actions = 'cyclic_fill' in some cases
     8! not the whole model domain was filled with data of the prerun.
    79!
    810! Former revisions:
     
    128130!--    matches another time(s) in the current subdomain by shifting it
    129131!--    for nx_on_file+1, ny_on_file+1 respectively
    130 
     132   
    131133       shift_y = 0
    132        j       = 0  ! counter for the number of files to be opened
    133 
    134        DO WHILE ( nyspr+shift_y <= nyn-offset_y  .AND.  &
    135                   nynpr+shift_y >= nys-offset_y )
    136 
    137           shift_x = 0
    138 
    139           DO WHILE ( nxlpr+shift_x <= nxr-offset_x  .AND. &
    140                      nxrpr+shift_x >= nxl-offset_x )
    141 
    142              j = j +1
    143 
    144              IF ( j > 1000 )  THEN
    145 !
    146 !--             Array bound exceeded
    147                 message_string = 'data from subdomain of previous' // &
    148                                  ' run mapped more than 1000 times'
    149                 CALL message( 'read_3d_binary', 'PA0284', 2, 2, -1, 6, 1 )
    150  
    151              ENDIF
    152 
    153              IF ( j == 1 )  THEN
    154                 files_to_be_opened = files_to_be_opened + 1
    155                 file_list(files_to_be_opened) = i-1
    156              ENDIF
    157 
    158              offset_xa(files_to_be_opened,j) = offset_x + shift_x
    159              offset_ya(files_to_be_opened,j) = offset_y + shift_y
    160 
    161 !
    162 !--          Index bounds of overlapping data
    163              nxlfa(files_to_be_opened,j) = MAX( nxl-offset_x-shift_x, nxlpr )
    164              nxrfa(files_to_be_opened,j) = MIN( nxr-offset_x-shift_x, nxrpr )
    165              nysfa(files_to_be_opened,j) = MAX( nys-offset_y, nyspr )
    166              nynfa(files_to_be_opened,j) = MIN( nyn-offset_y, nynpr )
    167 
    168              shift_x = shift_x + ( nx_on_file + 1 )
    169 
    170           ENDDO
    171 
    172           shift_y = shift_y + ( ny_on_file + 1 )
    173 
     134       j       = 0
     135       DO WHILE (  nyspr+shift_y <= nyn-offset_y )
     136         
     137          IF ( nynpr+shift_y >= nys-offset_y ) THEN
     138
     139             shift_x = 0
     140             DO WHILE ( nxlpr+shift_x <= nxr-offset_x )
     141               
     142                IF ( nxrpr+shift_x >= nxl-offset_x ) THEN
     143                   j = j +1
     144                   IF ( j > 1000 )  THEN
     145!
     146!--                   Array bound exceeded
     147                      message_string = 'data from subdomain of previous' // &
     148                                       ' run mapped more than 1000 times'
     149                      CALL message( 'read_3d_binary', 'PA0284', 2, 2, -1,   &
     150                                       6, 1 )
     151                   ENDIF
     152
     153                   IF ( j == 1 )  THEN
     154                      files_to_be_opened = files_to_be_opened + 1
     155                      file_list(files_to_be_opened) = i-1
     156                   ENDIF
     157                     
     158                   offset_xa(files_to_be_opened,j) = offset_x + shift_x
     159                   offset_ya(files_to_be_opened,j) = offset_y + shift_y
     160!
     161!--                Index bounds of overlapping data
     162                   nxlfa(files_to_be_opened,j) = MAX( nxl-offset_x-shift_x, nxlpr )
     163                   nxrfa(files_to_be_opened,j) = MIN( nxr-offset_x-shift_x, nxrpr )
     164                   nysfa(files_to_be_opened,j) = MAX( nys-offset_y-shift_y, nyspr )
     165                   nynfa(files_to_be_opened,j) = MIN( nyn-offset_y-shift_y, nynpr )
     166
     167                ENDIF
     168
     169                shift_x = shift_x + ( nx_on_file + 1 )
     170             ENDDO
     171       
     172          ENDIF
     173             
     174          shift_y = shift_y + ( ny_on_file + 1 )             
    174175       ENDDO
    175 
     176         
    176177       IF ( j > 0 )  overlap_count(files_to_be_opened) = j
    177178
     
    180181       IF ( j > 0 )  THEN
    181182          WRITE (9,*) '*** reading from file: ', i, j, ' times'
    182           WRITE (9,*) '    nxl = ', nxl, ' nxr = ', nxr, ' nys = ', nys, ' nyn = ', nyn
     183          WRITE (9,*) '    nxl = ', nxl, ' nxr = ', nxr, ' nys = ', &
     184                                    nys, ' nyn = ', nyn
    183185          WRITE (9,*) ' '
    184186          DO  k = 1, j
    185187             WRITE (9,*) 'k = ', k
    186              WRITE (9,'(6(A,I4))')  'nxlfa = ', nxlfa(files_to_be_opened,k), &
    187                          ' nxrfa = ', nxrfa(files_to_be_opened,k), &
    188                          ' offset_xa = ', offset_xa(files_to_be_opened,k), &
    189                          ' nysfa = ', nysfa(files_to_be_opened,k), &
    190                          ' nynfa = ', nynfa(files_to_be_opened,k), &
    191                          ' offset_ya = ', offset_ya(files_to_be_opened,k)
     188             WRITE (9,'(6(A,I4))') 'nxlfa = ', nxlfa(files_to_be_opened,k),&
     189                     ' nxrfa = ', nxrfa(files_to_be_opened,k), &
     190                     ' offset_xa = ', offset_xa(files_to_be_opened,k), &
     191                     ' nysfa = ', nysfa(files_to_be_opened,k), &
     192                     ' nynfa = ', nynfa(files_to_be_opened,k), &
     193                     ' offset_ya = ', offset_ya(files_to_be_opened,k)
    192194          ENDDO
    193195          CALL local_flush( 9 )
    194196       ENDIF
    195197
     198         
    196199    ENDDO
    197 
     200   
    198201!
    199202!-- Save the id-string of the current process, since myid_char may now be used
    200203!-- to open files created by PEs with other id.
    201     myid_char_save = myid_char
     204          myid_char_save = myid_char
    202205
    203206!
    204207!-- Test output (remove later)
     208         
    205209    DO i = 1, numprocs_previous_run
    206210       WRITE (9,*) 'i=',i-1, ' ibs= ',hor_index_bounds_previous_run(1:4,i-1)
     
    311315!
    312316!--    Allocate temporary arrays sized as the arrays on the restart file
    313        ALLOCATE( tmp_2d(nys_on_file-1:nyn_on_file+1,           &
    314                         nxl_on_file-1:nxr_on_file+1),          &
    315                  tmp_3d(nzb:nzt+1,nys_on_file-1:nyn_on_file+1, &
    316                         nxl_on_file-1:nxr_on_file+1) )
     317       ALLOCATE( tmp_2d(nys_on_file-nbgp:nyn_on_file+nbgp,           &
     318                        nxl_on_file-nbgp:nxr_on_file+nbgp),          &
     319                 tmp_3d(nzb:nzt+1,nys_on_file-nbgp:nyn_on_file+nbgp, &
     320                        nxl_on_file-nbgp:nxr_on_file+nbgp) )
    317321
    318322!
     
    349353                CASE ( 'e' )
    350354                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    351                    e(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    352                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     355                   e(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     356                           tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    353357
    354358                CASE ( 'e_av' )
    355359                   IF ( .NOT. ALLOCATED( e_av ) )  THEN
    356                       ALLOCATE( e_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    357                    ENDIF
    358                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    359                    e_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    360                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     360                      ALLOCATE( e_av(nzb:nzt+1,nys-nbgp:nyn+nbgp,nxl-nbgp:nxr+nbgp) )
     361                   ENDIF
     362                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     363                   e_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     364                            tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    361365
    362366                CASE ( 'e_m' )
    363367                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    364                    e_m(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    365                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     368                   e_m(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     369                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    366370
    367371                CASE ( 'iran' ) ! matching random numbers is still unresolved
     
    371375                CASE ( 'kh' )
    372376                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    373                    kh(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    374                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     377                   kh(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     378                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    375379
    376380                CASE ( 'kh_m' )
    377381                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    378                    kh_m(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    379                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     382                   kh_m(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     383                              tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    380384
    381385                CASE ( 'km' )
    382386                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    383                    km(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    384                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     387                   km(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     388                               tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    385389
    386390                CASE ( 'km_m' )
    387391                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    388                    km_m(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    389                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     392                   km_m(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     393                                tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    390394
    391395                CASE ( 'lwp_av' )
    392396                   IF ( .NOT. ALLOCATED( lwp_av ) )  THEN
    393                       ALLOCATE( lwp_av(nys-1:nyn+1,nxl-1:nxr+1) )
    394                    ENDIF
    395                    IF ( k == 1 )  READ ( 13 )  tmp_2d
    396                    lwp_av(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    397                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     397                      ALLOCATE( lwp_av(nysg:nyng,nxlg:nxrg) )
     398                   ENDIF
     399                   IF ( k == 1 )  READ ( 13 )  tmp_2d
     400                   lwp_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     401                                  tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    398402
    399403                CASE ( 'p' )
    400404                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    401                    p(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    402                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     405                   p(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     406                                 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    403407
    404408                CASE ( 'p_av' )
    405409                   IF ( .NOT. ALLOCATED( p_av ) )  THEN
    406                       ALLOCATE( p_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    407                    ENDIF
    408                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    409                    p_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    410                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     410                      ALLOCATE( p_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     411                   ENDIF
     412                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     413                   p_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     414                                  tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    411415
    412416                CASE ( 'pc_av' )
    413417                   IF ( .NOT. ALLOCATED( pc_av ) )  THEN
    414                       ALLOCATE( pc_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    415                    ENDIF
    416                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    417                    pc_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    418                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     418                      ALLOCATE( pc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     419                   ENDIF
     420                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     421                   pc_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     422                                  tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    419423
    420424                CASE ( 'pr_av' )
    421425                   IF ( .NOT. ALLOCATED( pr_av ) )  THEN
    422                       ALLOCATE( pr_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    423                    ENDIF
    424                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    425                    pr_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    426                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     426                      ALLOCATE( pr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     427                   ENDIF
     428                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     429                   pr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     430                                   tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    427431
    428432                CASE ( 'precipitation_amount' )
    429433                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    430                    precipitation_amount(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    431                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     434                   precipitation_amount(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     435                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    432436
    433437                CASE ( 'precipitation_rate_a' )
    434438                   IF ( .NOT. ALLOCATED( precipitation_rate_av ) )  THEN
    435                       ALLOCATE( precipitation_rate_av(nys-1:nyn+1,nxl-1:nxr+1) )
    436                    ENDIF
    437                    IF ( k == 1 )  READ ( 13 )  tmp_2d
    438                    precipitation_rate_av(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    439                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     439                      ALLOCATE( precipitation_rate_av(nysg:nyng,nxlg:nxrg) )
     440                   ENDIF
     441                   IF ( k == 1 )  READ ( 13 )  tmp_2d
     442                   precipitation_rate_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     443                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    440444
    441445                CASE ( 'pt' )
    442446                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    443                    pt(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    444                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     447                   pt(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     448                                   tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    445449
    446450                CASE ( 'pt_av' )
    447451                   IF ( .NOT. ALLOCATED( pt_av ) )  THEN
    448                       ALLOCATE( pt_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    449                    ENDIF
    450                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    451                    pt_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    452                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     452                      ALLOCATE( pt_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     453                   ENDIF
     454                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     455                   pt_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     456                                    tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    453457
    454458                CASE ( 'pt_m' )
    455459                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    456                    pt_m(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    457                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     460                   pt_m(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     461                                    tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    458462
    459463                CASE ( 'q' )
    460464                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    461                    q(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    462                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     465                   q(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     466                                    tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    463467
    464468                CASE ( 'q_av' )
    465469                   IF ( .NOT. ALLOCATED( q_av ) )  THEN
    466                       ALLOCATE( q_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    467                    ENDIF
    468                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    469                    q_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    470                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     470                      ALLOCATE( q_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg ))
     471                   ENDIF
     472                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     473                   q_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     474                                     tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    471475
    472476                CASE ( 'q_m' )
    473477                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    474                    q_m(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    475                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     478                   q_m(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     479                                      tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    476480
    477481                CASE ( 'ql' )
    478482                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    479                    ql(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    480                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     483                   ql(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     484                                       tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    481485
    482486                CASE ( 'ql_av' )
    483487                   IF ( .NOT. ALLOCATED( ql_av ) )  THEN
    484                       ALLOCATE( ql_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    485                    ENDIF
    486                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    487                    ql_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    488                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     488                      ALLOCATE( ql_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     489                   ENDIF
     490                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     491                   ql_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     492                                       tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    489493
    490494                CASE ( 'ql_c_av' )
    491495                   IF ( .NOT. ALLOCATED( ql_c_av ) )  THEN
    492                       ALLOCATE( ql_c_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    493                    ENDIF
    494                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    495                    ql_c_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    496                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     496                      ALLOCATE( ql_c_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     497                   ENDIF
     498                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     499                   ql_c_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     500                                        tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    497501
    498502                CASE ( 'ql_v_av' )
    499503                   IF ( .NOT. ALLOCATED( ql_v_av ) )  THEN
    500                       ALLOCATE( ql_v_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    501                    ENDIF
    502                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    503                    ql_v_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    504                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     504                      ALLOCATE( ql_v_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     505                   ENDIF
     506                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     507                   ql_v_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     508                                        tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    505509
    506510                CASE ( 'ql_vp_av' )
    507511                   IF ( .NOT. ALLOCATED( ql_vp_av ) )  THEN
    508                       ALLOCATE( ql_vp_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    509                    ENDIF
    510                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    511                    ql_vp_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    512                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     512                      ALLOCATE( ql_vp_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     513                   ENDIF
     514                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     515                   ql_vp_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     516                                        tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    513517
    514518                CASE ( 'qs' )
    515519                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    516                    qs(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    517                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     520                   qs(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     521                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    518522
    519523                CASE ( 'qsws' )
    520524                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    521                    qsws(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    522                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     525                   qsws(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     526                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    523527
    524528                CASE ( 'qsws_m' )
    525529                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    526                    qsws_m(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    527                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     530                   qsws_m(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     531                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    528532
    529533                CASE ( 'qsws_av' )
    530534                   IF ( .NOT. ALLOCATED( qsws_av ) )  THEN
    531                       ALLOCATE( qsws_av(nys-1:nyn+1,nxl-1:nxr+1) )
     535                      ALLOCATE( qsws_av(nysg:nyng,nxlg:nxrg) )
    532536                   ENDIF 
    533537                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    534                    qsws_av(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    535                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     538                   qsws_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     539                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    536540
    537541                CASE ( 'qswst' )
    538542                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    539                    qswst(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    540                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     543                   qswst(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     544                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    541545
    542546                CASE ( 'qswst_m' )
    543547                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    544                    qswst_m(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    545                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     548                   qswst_m(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     549                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    546550
    547551                CASE ( 'qv_av' )
    548552                   IF ( .NOT. ALLOCATED( qv_av ) )  THEN
    549                       ALLOCATE( qv_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    550                    ENDIF
    551                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    552                    qv_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    553                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     553                      ALLOCATE( qv_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     554                   ENDIF
     555                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     556                   qv_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     557                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    554558
    555559                CASE ( 'random_iv' )  ! still unresolved issue
     
    559563                CASE ( 'rho_av' )
    560564                   IF ( .NOT. ALLOCATED( rho_av ) )  THEN
    561                       ALLOCATE( rho_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    562                    ENDIF
    563                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    564                    rho_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    565                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     565                      ALLOCATE( rho_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     566                   ENDIF
     567                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     568                   rho_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     569                                tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    566570
    567571                CASE ( 'rif' )
    568572                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    569                    rif(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    570                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     573                   rif(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     574                                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    571575
    572576                CASE ( 'rif_m' )
    573577                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    574                    rif_m(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    575                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     578                   rif_m(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     579                        tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    576580
    577581                CASE ( 'rif_wall' )
    578582                   IF ( k == 1 )  THEN
    579                       ALLOCATE( tmp_4d(nzb:nzt+1,nys_on_file-1:nyn_on_file+1, &
    580                                        nxl_on_file-1:nxr_on_file+1,1:4) )
     583                      ALLOCATE( tmp_4d(nzb:nzt+1,nys_on_file-nbgp:nyn_on_file+nbgp, &
     584                                       nxl_on_file-nbgp:nxr_on_file+nbgp,1:4) )
    581585                      READ ( 13 )  tmp_4d
    582586                   ENDIF
    583                    rif_wall(:,nysc-1:nync+1,nxlc-1:nxrc+1,:) = &
    584                                          tmp_4d(:,nysf-1:nynf+1,nxlf-1:nxrf+1,:)
     587                   rif_wall(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp,:) = &
     588                            tmp_4d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp,:)
    585589
    586590                CASE ( 's_av' )
    587591                   IF ( .NOT. ALLOCATED( s_av ) )  THEN
    588                       ALLOCATE( s_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    589                    ENDIF
    590                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    591                    s_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    592                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     592                      ALLOCATE( s_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg))
     593                   ENDIF
     594                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     595                   s_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     596                                 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    593597
    594598                CASE ( 'sa' )
    595599                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    596                    sa(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    597                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     600                   sa(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     601                                  tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    598602
    599603                CASE ( 'sa_av' )
    600604                   IF ( .NOT. ALLOCATED( sa_av ) )  THEN
    601                       ALLOCATE( sa_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    602                    ENDIF
    603                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    604                    sa_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    605                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     605                      ALLOCATE( sa_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     606                   ENDIF
     607                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     608                   sa_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     609                                    tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    606610
    607611                CASE ( 'saswsb' )
    608612                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    609                    saswsb(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    610                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     613                   saswsb(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     614                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    611615
    612616                CASE ( 'saswst' )
    613617                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    614                    saswst(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    615                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     618                   saswst(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     619                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    616620
    617621                CASE ( 'shf' )
    618622                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    619                    shf(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    620                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     623                   shf(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     624                      tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    621625
    622626                CASE ( 'shf_m' )
    623627                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    624                    shf_m(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    625                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     628                   shf_m(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     629                        tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    626630                CASE ( 'shf_av' )
    627631                   IF ( .NOT. ALLOCATED( shf_av ) )  THEN
    628                       ALLOCATE( shf_av(nys-1:nyn+1,nxl-1:nxr+1) )
    629                    ENDIF
    630                    IF ( k == 1 )  READ ( 13 )  tmp_2d
    631                    shf_av(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    632                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     632                      ALLOCATE( shf_av(nysg:nyng,nxlg:nxrg) )
     633                   ENDIF
     634                   IF ( k == 1 )  READ ( 13 )  tmp_2d
     635                   shf_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     636                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    633637                CASE ( 'spectrum_x' )
    634638                   IF ( k == 1 )  THEN
     
    663667                CASE ( 'ts' )
    664668                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    665                    ts(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    666                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     669                   ts(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     670                     tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    667671
    668672                CASE ( 'ts_av' )
    669673                   IF ( .NOT. ALLOCATED( ts_av ) )  THEN
    670                       ALLOCATE( ts_av(nys-1:nyn+1,nxl-1:nxr+1) )
    671                    ENDIF
    672                    IF ( k == 1 )  READ ( 13 )  tmp_2d
    673                    ts_av(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    674                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     674                      ALLOCATE( ts_av(nysg:nyng,nxlg:nxrg) )
     675                   ENDIF
     676                   IF ( k == 1 )  READ ( 13 )  tmp_2d
     677                   ts_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     678                        tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    675679
    676680                CASE ( 'tswst' )
    677681                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    678                    tswst(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    679                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     682                   tswst(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     683                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    680684
    681685                CASE ( 'tswst_m' )
    682686                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    683                    tswst_m(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    684                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     687                   tswst_m(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     688                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    685689
    686690                CASE ( 'u' )
    687691                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    688                    u(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    689                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     692                   u(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     693                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    690694
    691695                CASE ( 'u_av' )
    692696                   IF ( .NOT. ALLOCATED( u_av ) )  THEN
    693                       ALLOCATE( u_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    694                    ENDIF
    695                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    696                    u_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    697                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     697                      ALLOCATE( u_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     698                   ENDIF
     699                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     700                   u_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     701                               tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    698702
    699703                CASE ( 'u_m' )
    700704                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    701                    u_m(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    702                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     705                   u_m(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     706                                 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    703707
    704708                CASE ( 'u_m_l' )
    705709                   IF ( k == 1 )  THEN
    706710                      ALLOCATE( tmp_3dwul(nzb:nzt+1, &
    707                                           nys_on_file-1:nyn_on_file+1,1:2) )
     711                                          nys_on_file-nbgp:nyn_on_file+nbgp,1:2) )
    708712                      READ ( 13 )  tmp_3dwul
    709713                   ENDIF
    710714                   IF ( outflow_l )  THEN
    711                       u_m_l(:,nysc-1:nync+1,:) = tmp_3dwul(:,nysf-1:nynf+1,:)
     715                      u_m_l(:,nysc-nbgp:nync+nbgp,:) = tmp_3dwul(:,nysf-nbgp:nynf+nbgp,:)
    712716                   ENDIF
    713717
     
    715719                   IF ( k == 1 )  THEN
    716720                      ALLOCATE( tmp_3dwun(nzb:nzt+1,ny-1:ny, &
    717                                           nxl_on_file-1:nxr_on_file+1) )
     721                                          nxl_on_file-nbgp:nxr_on_file+nbgp) )
    718722                      READ ( 13 )  tmp_3dwun
    719723                   ENDIF
    720724                   IF ( outflow_n )  THEN
    721                       u_m_n(:,:,nxlc-1:nxrc+1) = tmp_3dwun(:,:,nxlf-1:nxrf+1)
     725                      u_m_n(:,:,nxlc-nbgp:nxrc+nbgp) = tmp_3dwun(:,:,nxlf-nbgp:nxrf+nbgp)
    722726                   ENDIF
    723727
     
    725729                   IF ( k == 1 )  THEN
    726730                      ALLOCATE( tmp_3dwur(nzb:nzt+1,&
    727                                           nys_on_file-1:nyn_on_file+1,nx-1:nx) )
     731                                          nys_on_file-nbgp:nyn_on_file+nbgp,nx-1:nx) )
    728732                      READ ( 13 )  tmp_3dwur
    729733                   ENDIF
    730734                   IF ( outflow_r )  THEN
    731                       u_m_r(:,nysc-1:nync+1,:) = tmp_3dwur(:,nysf-1:nynf+1,:)
     735                      u_m_r(:,nysc-nbgp:nync+nbgp,:) = tmp_3dwur(:,nysf-nbgp:nynf+nbgp,:)
    732736                   ENDIF
    733737
     
    735739                   IF ( k == 1 )  THEN
    736740                      ALLOCATE( tmp_3dwus(nzb:nzt+1,0:1, &
    737                                           nxl_on_file-1:nxr_on_file+1) )
     741                                          nxl_on_file-nbgp:nxr_on_file+nbgp) )
    738742                      READ ( 13 )  tmp_3dwus
    739743                   ENDIF
    740744                   IF ( outflow_s )  THEN
    741                       u_m_s(:,:,nxlc-1:nxrc+1) = tmp_3dwus(:,:,nxlf-1:nxrf+1)
     745                      u_m_s(:,:,nxlc-nbgp:nxrc+nbgp) = tmp_3dwus(:,:,nxlf-nbgp:nxrf+nbgp)
    742746                   ENDIF
    743747
    744748                CASE ( 'us' )
    745749                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    746                    us(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    747                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     750                   us(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     751                     tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    748752
    749753                CASE ( 'usws' )
    750754                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    751                    usws(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    752                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     755                   usws(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     756                       tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    753757
    754758                CASE ( 'uswst' )
    755759                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    756                    uswst(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    757                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     760                   uswst(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     761                        tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    758762
    759763                CASE ( 'usws_m' )
    760764                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    761                    usws_m(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    762                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     765                   usws_m(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     766                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    763767
    764768                CASE ( 'uswst_m' )
    765769                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    766                    uswst_m(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    767                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     770                   uswst_m(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     771                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    768772
    769773                CASE ( 'us_av' )
    770774                   IF ( .NOT. ALLOCATED( us_av ) )  THEN
    771                       ALLOCATE( us_av(nys-1:nyn+1,nxl-1:nxr+1) )
    772                    ENDIF
    773                    IF ( k == 1 )  READ ( 13 )  tmp_2d
    774                    us_av(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    775                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     775                      ALLOCATE( us_av(nysg:nyng,nxlg:nxrg) )
     776                   ENDIF
     777                   IF ( k == 1 )  READ ( 13 )  tmp_2d
     778                   us_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     779                        tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    776780
    777781                CASE ( 'v' )
    778782                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    779                    v(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    780                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     783                   v(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     784                              tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    781785
    782786                CASE ( 'v_av' )
    783787                   IF ( .NOT. ALLOCATED( v_av ) )  THEN
    784                       ALLOCATE( v_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    785                    ENDIF
    786                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    787                    v_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    788                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     788                      ALLOCATE( v_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     789                   ENDIF
     790                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     791                   v_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     792                               tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    789793
    790794                CASE ( 'v_m' )
    791795                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    792                    v_m(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    793                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     796                   v_m(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     797                                tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    794798
    795799                CASE ( 'v_m_l' )
    796800                   IF ( k == 1 )  THEN
    797801                      ALLOCATE( tmp_3dwvl(nzb:nzt+1,&
    798                                           nys_on_file-1:nyn_on_file+1,0:1) )
     802                                          nys_on_file-nbgp:nyn_on_file+nbgp,0:1) )
    799803                      READ ( 13 )  tmp_3dwvl
    800804                   ENDIF
    801805                   IF ( outflow_l )  THEN
    802                       v_m_l(:,nysc-1:nync+1,:) = tmp_3dwvl(:,nysf-1:nynf+1,:)
     806                      v_m_l(:,nysc-nbgp:nync+nbgp,:) = tmp_3dwvl(:,nysf-nbgp:nynf+nbgp,:)
    803807                   ENDIF
    804808
     
    806810                   IF ( k == 1 )  THEN
    807811                      ALLOCATE( tmp_3dwvn(nzb:nzt+1,ny-1:ny, &
    808                                           nxl_on_file-1:nxr_on_file+1) )
     812                                          nxl_on_file-nbgp:nxr_on_file+nbgp) )
    809813                      READ ( 13 )  tmp_3dwvn
    810814                   ENDIF
    811815                   IF ( outflow_n )  THEN
    812                       v_m_n(:,:,nxlc-1:nxrc+1) = tmp_3dwvn(:,:,nxlf-1:nxrf+1)
     816                      v_m_n(:,:,nxlc-nbgp:nxrc+nbgp) = tmp_3dwvn(:,:,nxlf-nbgp:nxrf+nbgp)
    813817                   ENDIF
    814818
     
    816820                   IF ( k == 1 )  THEN
    817821                      ALLOCATE( tmp_3dwvr(nzb:nzt+1,&
    818                                           nys_on_file-1:nyn_on_file+1,nx-1:nx) )
     822                                          nys_on_file-nbgp:nyn_on_file+nbgp,nx-1:nx) )
    819823                      READ ( 13 )  tmp_3dwvr
    820824                   ENDIF
    821825                   IF ( outflow_r )  THEN
    822                       v_m_r(:,nysc-1:nync+1,:) = tmp_3dwvr(:,nysf-1:nynf+1,:)
     826                      v_m_r(:,nysc-nbgp:nync+nbgp,:) = tmp_3dwvr(:,nysf-nbgp:nynf+nbgp,:)
    823827                   ENDIF
    824828
     
    826830                   IF ( k == 1 )  THEN
    827831                      ALLOCATE( tmp_3dwvs(nzb:nzt+1,1:2, &
    828                                           nxl_on_file-1:nxr_on_file+1) )
     832                                          nxl_on_file-nbgp:nxr_on_file+nbgp) )
    829833                      READ ( 13 )  tmp_3dwvs
    830834                   ENDIF
    831835                   IF ( outflow_s )  THEN
    832                       v_m_s(:,:,nxlc-1:nxrc+1) = tmp_3dwvs(:,:,nxlf-1:nxrf+1)
     836                      v_m_s(:,:,nxlc-nbgp:nxrc+nbgp) = tmp_3dwvs(:,:,nxlf-nbgp:nxrf+nbgp)
    833837                   ENDIF
    834838
    835839                CASE ( 'vpt' )
    836840                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    837                    vpt(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    838                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     841                   vpt(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     842                               tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    839843
    840844                CASE ( 'vpt_av' )
    841845                   IF ( .NOT. ALLOCATED( vpt_av ) )  THEN
    842                       ALLOCATE( vpt_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    843                    ENDIF
    844                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    845                    vpt_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    846                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     846                      ALLOCATE( vpt_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     847                   ENDIF
     848                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     849                   vpt_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     850                               tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    847851
    848852                CASE ( 'vpt_m' )
    849853                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    850                    vpt_m(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    851                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     854                   vpt_m(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     855                                tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    852856
    853857                CASE ( 'vsws' )
    854858                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    855                    vsws(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    856                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     859                   vsws(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     860                       tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    857861
    858862                CASE ( 'vswst' )
    859863                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    860                    vswst(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    861                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     864                   vswst(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     865                        tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    862866
    863867                CASE ( 'vsws_m' )
    864868                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    865                    vsws_m(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    866                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     869                   vsws_m(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     870                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    867871
    868872                CASE ( 'vswst_m' )
    869873                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    870                    vswst_m(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    871                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     874                   vswst_m(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     875                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    872876
    873877                CASE ( 'w' )
    874878                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    875                    w(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    876                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     879                   w(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     880                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    877881
    878882                CASE ( 'w_av' )
    879883                   IF ( .NOT. ALLOCATED( w_av ) )  THEN
    880                       ALLOCATE( w_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    881                    ENDIF
    882                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    883                    w_av(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    884                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     884                      ALLOCATE( w_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     885                   ENDIF
     886                   IF ( k == 1 )  READ ( 13 )  tmp_3d
     887                   w_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     888                               tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    885889
    886890                CASE ( 'w_m' )
    887891                   IF ( k == 1 )  READ ( 13 )  tmp_3d
    888                    w_m(:,nysc-1:nync+1,nxlc-1:nxrc+1) = &
    889                                           tmp_3d(:,nysf-1:nynf+1,nxlf-1:nxrf+1)
     892                   w_m(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     893                                tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    890894
    891895                CASE ( 'w_m_l' )
    892896                   IF ( k == 1 )  THEN
    893897                      ALLOCATE( tmp_3dwwl(nzb:nzt+1,&
    894                                           nys_on_file-1:nyn_on_file+1,0:1) )
     898                                          nys_on_file-nbgp:nyn_on_file+nbgp,0:1) )
    895899                      READ ( 13 )  tmp_3dwwl
    896900                   ENDIF
    897901                   IF ( outflow_l )  THEN
    898                       w_m_l(:,nysc-1:nync+1,:) = tmp_3dwwl(:,nysf-1:nynf+1,:)
     902                      w_m_l(:,nysc-nbgp:nync+nbgp,:) = tmp_3dwwl(:,nysf-nbgp:nynf+nbgp,:)
    899903                   ENDIF
    900904
     
    902906                   IF ( k == 1 )  THEN
    903907                      ALLOCATE( tmp_3dwwn(nzb:nzt+1,ny-1:ny, &
    904                                           nxl_on_file-1:nxr_on_file+1) )
     908                                          nxl_on_file-nbgp:nxr_on_file+nbgp) )
    905909                      READ ( 13 )  tmp_3dwwn
    906910                   ENDIF
    907911                   IF ( outflow_n )  THEN
    908                       w_m_n(:,:,nxlc-1:nxrc+1) = tmp_3dwwn(:,:,nxlf-1:nxrf+1)
     912                      w_m_n(:,:,nxlc-nbgp:nxrc+nbgp) = tmp_3dwwn(:,:,nxlf-nbgp:nxrf+nbgp)
    909913                   ENDIF
    910914
     
    912916                   IF ( k == 1 )  THEN
    913917                      ALLOCATE( tmp_3dwwr(nzb:nzt+1,&
    914                                           nys_on_file-1:nyn_on_file+1,nx-1:nx) )
     918                                          nys_on_file-nbgp:nyn_on_file+nbgp,nx-1:nx) )
    915919                      READ ( 13 )  tmp_3dwwr
    916920                   ENDIF
    917921                   IF ( outflow_r )  THEN
    918                       w_m_r(:,nysc-1:nync+1,:) = tmp_3dwwr(:,nysf-1:nynf+1,:)
     922                      w_m_r(:,nysc-nbgp:nync+nbgp,:) = tmp_3dwwr(:,nysf-nbgp:nynf+nbgp,:)
    919923                   ENDIF
    920924
     
    922926                   IF ( k == 1 )  THEN
    923927                      ALLOCATE( tmp_3dwws(nzb:nzt+1,0:1, &
    924                                           nxl_on_file-1:nxr_on_file+1) )
     928                                          nxl_on_file-nbgp:nxr_on_file+nbgp) )
    925929                      READ ( 13 )  tmp_3dwws
    926930                   ENDIF
    927931                   IF ( outflow_s )  THEN
    928                       w_m_s(:,:,nxlc-1:nxrc+1) = tmp_3dwws(:,:,nxlf-1:nxrf+1)
     932                      w_m_s(:,:,nxlc-nbgp:nxrc+nbgp) = tmp_3dwws(:,:,nxlf-nbgp:nxrf+nbgp)
    929933                   ENDIF
    930934                   DEALLOCATE( tmp_3dwws )
     
    932936                CASE ( 'z0' )
    933937                   IF ( k == 1 )  READ ( 13 )  tmp_2d
    934                    z0(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    935                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     938                   z0(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     939                     tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    936940
    937941                CASE ( 'z0_av' )
    938942                   IF ( .NOT. ALLOCATED( z0_av ) )  THEN
    939                       ALLOCATE( z0_av(nys-1:nyn+1,nxl-1:nxr+1) )
    940                    ENDIF
    941                    IF ( k == 1 )  READ ( 13 )  tmp_2d
    942                    z0_av(nysc-1:nync+1,nxlc-1:nxrc+1) = &
    943                                           tmp_2d(nysf-1:nynf+1,nxlf-1:nxrf+1)
     943                      ALLOCATE( z0_av(nysg:nyng,nxlg:nxrg) )
     944                   ENDIF
     945                   IF ( k == 1 )  READ ( 13 )  tmp_2d
     946                   z0_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
     947                       tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    944948
    945949                CASE DEFAULT
Note: See TracChangeset for help on using the changeset viewer.