Index: palm/trunk/SOURCE/check_for_restart.f90
===================================================================
--- palm/trunk/SOURCE/check_for_restart.f90	(revision 2297)
+++ palm/trunk/SOURCE/check_for_restart.f90	(revision 2298)
@@ -25,4 +25,7 @@
 ! -----------------
 ! $Id$
+! type of write_binary changed from CHARACTER to LOGICAL
+! 
+! 2101 2017-01-05 16:42:31Z suehring
 !
 ! 2000 2016-08-20 18:09:15Z knoop
@@ -103,6 +106,5 @@
 !-- If necessary set a flag to stop the model run
     terminate_run_l = .FALSE.
-    IF ( remaining_time <= termination_time_needed  .AND.                      &
-         write_binary(1:4) == 'true' )  THEN
+    IF ( remaining_time <= termination_time_needed  .AND.  write_binary )  THEN
 
        terminate_run_l = .TRUE.
@@ -174,5 +176,5 @@
 
           WRITE( message_string, * ) 'run will be terminated because user ',   &
-                                  'forced a job finialization using a flag',   &
+                                  'forced a job finalization using a flag',    &
                                   'file:',                                     &
                                   '&DO_STOP_NOW: ', do_stop_now,               &
Index: palm/trunk/SOURCE/check_open.f90
===================================================================
--- palm/trunk/SOURCE/check_open.f90	(revision 2297)
+++ palm/trunk/SOURCE/check_open.f90	(revision 2298)
@@ -21,8 +21,12 @@
 ! -----------------
 ! 
-!
+! 
 ! Former revisions:
 ! -----------------
 ! $Id$
+! -return_addres, return_username, avs_coor_file_..., avs_data_file_...,
+! cross_ts_numbers, cross_ts_number_count
+!
+! 2101 2017-01-05 16:42:31Z suehring
 !
 ! 2063 2016-11-10 17:14:35Z raasch
@@ -135,7 +139,7 @@
 
     USE control_parameters,                                                    &
-        ONLY:  avs_data_file, coupling_char, data_output_2d_on_each_pe, host,  &
-               max_masks, message_string, mid, nz_do3d, openfile,              &
-               return_addres, return_username, run_description_header, runnr
+        ONLY:  coupling_char, data_output_2d_on_each_pe, host, max_masks,      &
+               message_string, mid, nz_do3d, openfile, run_description_header, &
+               runnr
 
     USE grid_variables,                                                        &
@@ -166,7 +170,4 @@
         ONLY:  fortran_sleep
 
-    USE profil_parameter,                                                      &
-        ONLY:  cross_ts_numbers, cross_ts_number_count
-
 
     IMPLICIT NONE
@@ -176,10 +177,5 @@
     CHARACTER (LEN=20)  ::  xtext = 'time in s'     !<
     CHARACTER (LEN=30)  ::  filename                !<
-    CHARACTER (LEN=40)  ::  avs_coor_file           !<
-    CHARACTER (LEN=40)  ::  avs_coor_file_localname !<
-    CHARACTER (LEN=40)  ::  avs_data_file_localname !<
     CHARACTER (LEN=80)  ::  rtext                   !<
-    CHARACTER (LEN=100) ::  avs_coor_file_catalog   !<
-    CHARACTER (LEN=100) ::  avs_data_file_catalog   !<
     CHARACTER (LEN=100) ::  batch_scp               !<
     CHARACTER (LEN=100) ::  line                    !<
@@ -201,6 +197,4 @@
     INTEGER(iwp), DIMENSION(10) ::  klist !<
 
-    LOGICAL ::  avs_coor_file_found = .FALSE. !<
-    LOGICAL ::  avs_data_file_found = .FALSE. !<
     LOGICAL ::  datleg = .TRUE.               !<
     LOGICAL ::  get_filenames                 !<
Index: palm/trunk/SOURCE/exchange_horiz.f90
===================================================================
--- palm/trunk/SOURCE/exchange_horiz.f90	(revision 2297)
+++ palm/trunk/SOURCE/exchange_horiz.f90	(revision 2298)
@@ -25,4 +25,7 @@
 ! -----------------
 ! $Id$
+! sendrecv_in_background related parts removed
+! 
+! 2119 2017-01-17 16:51:50Z raasch
 !
 ! 2118 2017-01-17 16:38:49Z raasch
@@ -148,12 +151,9 @@
 
 !
-!--       In case of background communication switched on, exchange is done
-!--       either along x or along y
+!--       Asynchroneous exchange
           IF ( send_receive == 'lr'  .OR.  send_receive == 'al' )  THEN
 
-             IF ( .NOT. sendrecv_in_background )  THEN
-                req(1:4)  = 0
-                req_count = 0
-             ENDIF
+             req(1:4)  = 0
+             req_count = 0
 !
 !--          Send left boundary, receive right one (asynchronous)
@@ -171,9 +171,5 @@
                              req(req_count+4), ierr )
 
-             IF ( .NOT. sendrecv_in_background )  THEN
-                CALL MPI_WAITALL( 4, req, wait_stat, ierr )
-             ELSE
-                req_count = req_count + 4
-             ENDIF
+             CALL MPI_WAITALL( 4, req, wait_stat, ierr )
 
           ENDIF
@@ -213,12 +209,9 @@
 
 !
-!--       In case of background communication switched on, exchange is done
-!--       either along x or along y
+!--       Asynchroneous exchange
           IF ( send_receive == 'ns'  .OR.  send_receive == 'al' )  THEN
 
-             IF ( .NOT. sendrecv_in_background )  THEN
-                req(1:4)  = 0
-                req_count = 0
-             ENDIF
+             req(1:4)  = 0
+             req_count = 0
 
 !
@@ -237,9 +230,5 @@
                              req(req_count+4), ierr )
 
-             IF ( .NOT. sendrecv_in_background )  THEN
-                CALL MPI_WAITALL( 4, req, wait_stat, ierr )
-             ELSE
-                req_count = req_count + 4
-             ENDIF
+             CALL MPI_WAITALL( 4, req, wait_stat, ierr )
 
           ENDIF
Index: palm/trunk/SOURCE/header.f90
===================================================================
--- palm/trunk/SOURCE/header.f90	(revision 2297)
+++ palm/trunk/SOURCE/header.f90	(revision 2298)
@@ -25,4 +25,7 @@
 ! -----------------
 ! $Id$
+! MPI2 related parts removed
+! 
+! 2270 2017-06-09 12:18:47Z maronga
 ! Renamed Prandtl layer to constant flux layer
 ! 
@@ -446,5 +449,4 @@
     INTEGER(iwp) ::  l              !<
     INTEGER(iwp) ::  ll             !<
-    INTEGER(iwp) ::  mpi_type       !<
     INTEGER(iwp) ::  my_cpl_id      !<
     INTEGER(iwp) ::  n              !<
@@ -502,10 +504,5 @@
     WRITE ( io, 100 )  ver_rev, TRIM( run_classification )
     IF ( TRIM( coupling_mode ) /= 'uncoupled' )  THEN
-#if defined( __mpi2 )
-       mpi_type = 2
-#else
-       mpi_type = 1
-#endif
-       WRITE ( io, 101 )  mpi_type, coupling_mode
+       WRITE ( io, 101 )  coupling_mode
     ENDIF
 #if defined( __parallel )
@@ -1942,5 +1939,5 @@
             1X,'* ',A,' *',4X,A/                               &
             1X,'******************************',4X,44('-'))
-101 FORMAT (35X,'coupled run using MPI-',I1,': ',A/ &
+101 FORMAT (35X,'coupled run: ',A/ &
             35X,42('-'))
 102 FORMAT (/' Date:                 ',A8,4X,'Run:       ',A20/      &
Index: palm/trunk/SOURCE/init_coupling.f90
===================================================================
--- palm/trunk/SOURCE/init_coupling.f90	(revision 2297)
+++ palm/trunk/SOURCE/init_coupling.f90	(revision 2298)
@@ -25,4 +25,7 @@
 ! ------------------
 ! $Id$
+! MPI2 coupling removed
+! 
+! 2101 2017-01-05 16:42:31Z suehring
 !
 ! 2000 2016-08-20 18:09:15Z knoop
@@ -84,23 +87,11 @@
 !
 !-- Get information about the coupling mode from standard input (PE0 only) and
-!-- distribute it to the other PEs. If __mpi2 was defined, suggest a 
-!-- coupling via MPI-2. Otherwise initate a coupling using MPI-1 only.
-!-- In this case, distribute PEs to 2 new communicators.
+!-- distribute it to the other PEs. Distribute PEs to 2 new communicators.
 !-- ATTENTION: numprocs will be reset according to the new communicators
 #if defined ( __parallel )
 
-!myid_absolut = myid
     IF ( myid == 0 )  THEN
        READ (*,*,ERR=10,END=10)  coupling_mode, bc_data(1), bc_data(2)
 10     CONTINUE
-#if defined( __mpi2 )
-       IF ( TRIM( coupling_mode ) == 'atmosphere_to_ocean' )  THEN
-          i = 1
-       ELSEIF ( TRIM( coupling_mode ) == 'ocean_to_atmosphere' )  THEN
-          i = 2
-       ELSE
-          i = 0
-       ENDIF
-#else
        IF ( TRIM( coupling_mode ) == 'coupled_run' )  THEN
           i = 1
@@ -108,5 +99,4 @@
           i = 0
        ENDIF
-#endif
        bc_data(0) = i
 
@@ -121,14 +111,4 @@
     i = bc_data(0)
 
-#if defined ( __mpi2 )
-    IF ( i == 0 )  THEN
-       coupling_mode = 'uncoupled'
-    ELSEIF ( i == 1 )  THEN
-       coupling_mode = 'atmosphere_to_ocean'
-    ELSEIF ( i == 2 )  THEN
-       coupling_mode = 'ocean_to_atmosphere'
-    ENDIF
-    target_id = myid
-#else
     IF ( i == 0 ) THEN
        coupling_mode = 'uncoupled'
@@ -165,5 +145,4 @@
     ENDIF
 #endif
-#endif
 
 !
Index: palm/trunk/SOURCE/init_dvrp.f90
===================================================================
--- palm/trunk/SOURCE/init_dvrp.f90	(revision 2297)
+++ palm/trunk/SOURCE/init_dvrp.f90	(revision 2298)
@@ -25,4 +25,7 @@
 ! -----------------
 ! $Id$
+! MPI2 related part removed
+! 
+! 2101 2017-01-05 16:42:31Z suehring
 !
 ! 2000 2016-08-20 18:09:15Z knoop
@@ -798,7 +801,4 @@
 !
 !--    Adjustment for new MPI-1 coupling. This might be unnecessary.
-#if defined( __mpi2 )
-       CALL DVRP_SPLIT( MPI_COMM_WORLD, comm_palm )
-#else
        IF ( coupling_mode /= 'uncoupled' ) THEN
           message_string = 'split of communicator not realized with' // &
@@ -810,5 +810,4 @@
           CALL DVRP_SPLIT( MPI_COMM_WORLD, comm_palm )
        ENDIF
-#endif
 
        CALL MPI_COMM_SIZE( comm_palm, numprocs, ierr )
Index: palm/trunk/SOURCE/init_pegrid.f90
===================================================================
--- palm/trunk/SOURCE/init_pegrid.f90	(revision 2297)
+++ palm/trunk/SOURCE/init_pegrid.f90	(revision 2298)
@@ -25,4 +25,7 @@
 ! -----------------
 ! $Id$
+! MPI2 related parts removed
+! 
+! 2271 2017-06-09 12:34:55Z sward
 ! Error message changed
 ! 
@@ -261,8 +264,4 @@
     INTEGER(iwp), DIMENSION(2) :: pdims_remote          !<
 
-#if defined( __mpi2 )
-    LOGICAL ::  found                                   !<
-#endif
-
 !
 !-- Get the number of OpenMP threads
@@ -627,63 +626,4 @@
 
 #if defined( __parallel )
-#if defined( __mpi2 )
-!
-!-- In case of coupled runs, get the port name on PE0 of the atmosphere model
-!-- and pass it to PE0 of the ocean model
-    IF ( myid == 0 )  THEN
-
-       IF ( coupling_mode == 'atmosphere_to_ocean' )  THEN
-
-          CALL MPI_OPEN_PORT( MPI_INFO_NULL, port_name, ierr )
-
-          CALL MPI_PUBLISH_NAME( 'palm_coupler', MPI_INFO_NULL, port_name, &
-                                 ierr )
-
-!
-!--       Write a flag file for the ocean model and the other atmosphere
-!--       processes.
-!--       There seems to be a bug in MPICH2 which causes hanging processes
-!--       in case that execution of LOOKUP_NAME is continued too early
-!--       (i.e. before the port has been created)
-          OPEN( 90, FILE='COUPLING_PORT_OPENED', FORM='FORMATTED' )
-          WRITE ( 90, '(''TRUE'')' )
-          CLOSE ( 90 )
-
-       ELSEIF ( coupling_mode == 'ocean_to_atmosphere' )  THEN
-
-!
-!--       Continue only if the atmosphere model has created the port.
-!--       There seems to be a bug in MPICH2 which causes hanging processes
-!--       in case that execution of LOOKUP_NAME is continued too early
-!--       (i.e. before the port has been created)
-          INQUIRE( FILE='COUPLING_PORT_OPENED', EXIST=found )
-          DO WHILE ( .NOT. found )
-             INQUIRE( FILE='COUPLING_PORT_OPENED', EXIST=found )
-          ENDDO
-
-          CALL MPI_LOOKUP_NAME( 'palm_coupler', MPI_INFO_NULL, port_name, ierr )
-
-       ENDIF
-
-    ENDIF
-
-!
-!-- In case of coupled runs, establish the connection between the atmosphere
-!-- and the ocean model and define the intercommunicator (comm_inter)
-    CALL MPI_BARRIER( comm2d, ierr )
-    IF ( coupling_mode == 'atmosphere_to_ocean' )  THEN
-
-       CALL MPI_COMM_ACCEPT( port_name, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &
-                             comm_inter, ierr )
-       coupling_mode_remote = 'ocean_to_atmosphere'
-
-    ELSEIF ( coupling_mode == 'ocean_to_atmosphere' )  THEN
-
-       CALL MPI_COMM_CONNECT( port_name, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &
-                              comm_inter, ierr )
-       coupling_mode_remote = 'atmosphere_to_ocean'
-
-    ENDIF
-#endif
 
 ! 
Index: palm/trunk/SOURCE/land_surface_model_mod.f90
===================================================================
--- palm/trunk/SOURCE/land_surface_model_mod.f90	(revision 2297)
+++ palm/trunk/SOURCE/land_surface_model_mod.f90	(revision 2298)
@@ -25,4 +25,7 @@
 ! -----------------
 ! $Id$
+! type of write_binary changed from CHARACTER to LOGICAL
+! 
+! 2296 2017-06-28 07:53:56Z maronga
 ! Bugfix in calculation of bare soil heat capacity.
 ! Bugfix in calculation of shf
@@ -4022,5 +4025,5 @@
     IMPLICIT NONE
 
-    IF ( write_binary(1:4) == 'true' )  THEN
+    IF ( write_binary )  THEN
        IF ( ALLOCATED( c_liq_av ) )  THEN
           WRITE ( 14 )  'c_liq_av            ';  WRITE ( 14 ) c_liq_av
Index: palm/trunk/SOURCE/modules.f90
===================================================================
--- palm/trunk/SOURCE/modules.f90	(revision 2297)
+++ palm/trunk/SOURCE/modules.f90	(revision 2298)
@@ -25,4 +25,13 @@
 ! -----------------
 ! $Id$
+! missing variable descriptions have been added,
+! type of write_binary changed from CHARACTER to LOGICAL
+! -plot_precision, plot_3d_precision, return_addres, return_username,
+! avs_data_file, exchange_mg, sendrecvcound_yxd, sendrecv_in_background,
+! port_name, profile_number, cross_ts_numbers, cross_ts_number_count,
+! dots_crossindex, dots_index, cross_ts_uymax, cross_ts_uymax_computed,
+! cross_ts_uymin, cross_ts_uymin_computed
+! 
+! 2296 2017-06-28 07:53:56Z maronga
 ! Added parameters for model spinup
 ! 
@@ -470,7 +479,5 @@
 ! Description:
 ! ------------
-!> Definition of all variables
-!>
-!> @todo Add missing variable descriptions (Siggi)
+!> Definition of global variables
 !------------------------------------------------------------------------------!
 
@@ -485,8 +492,8 @@
     USE kinds
 
-    REAL(wp), DIMENSION(:), ALLOCATABLE ::  aex  !< Siggi 
-    REAL(wp), DIMENSION(:), ALLOCATABLE ::  bex  !< Siggi 
-    REAL(wp), DIMENSION(:), ALLOCATABLE ::  dex  !< Siggi 
-    REAL(wp), DIMENSION(:), ALLOCATABLE ::  eex  !< Siggi 
+    REAL(wp), DIMENSION(:), ALLOCATABLE ::  aex  !< exponential coefficient for the Bott-Chlond advection scheme
+    REAL(wp), DIMENSION(:), ALLOCATABLE ::  bex  !< exponential coefficient for the Bott-Chlond advection scheme
+    REAL(wp), DIMENSION(:), ALLOCATABLE ::  dex  !< exponential coefficient for the Bott-Chlond advection scheme
+    REAL(wp), DIMENSION(:), ALLOCATABLE ::  eex  !< exponential coefficient for the Bott-Chlond advection scheme
     
     SAVE
@@ -504,10 +511,10 @@
     USE kinds
 
-    REAL(wp), DIMENSION(:), ALLOCATABLE ::  c_u_m                  !< Siggi 
-    REAL(wp), DIMENSION(:), ALLOCATABLE ::  c_u_m_l                !< Siggi 
-    REAL(wp), DIMENSION(:), ALLOCATABLE ::  c_v_m                  !< Siggi 
-    REAL(wp), DIMENSION(:), ALLOCATABLE ::  c_v_m_l                !< Siggi 
-    REAL(wp), DIMENSION(:), ALLOCATABLE ::  c_w_m                  !< Siggi 
-    REAL(wp), DIMENSION(:), ALLOCATABLE ::  c_w_m_l                !< Siggi    
+    REAL(wp), DIMENSION(:), ALLOCATABLE ::  c_u_m                  !< mean phase velocity at outflow for u-component used in radiation boundary condition
+    REAL(wp), DIMENSION(:), ALLOCATABLE ::  c_u_m_l                !< mean phase velocity at outflow for u-component used in radiation boundary condition (local subdomain value)
+    REAL(wp), DIMENSION(:), ALLOCATABLE ::  c_v_m                  !< mean phase velocity at outflow for v-component used in radiation boundary condition
+    REAL(wp), DIMENSION(:), ALLOCATABLE ::  c_v_m_l                !< mean phase velocity at outflow for v-component used in radiation boundary condition (local subdomain value)
+    REAL(wp), DIMENSION(:), ALLOCATABLE ::  c_w_m                  !< mean phase velocity at outflow for w-component used in radiation boundary condition
+    REAL(wp), DIMENSION(:), ALLOCATABLE ::  c_w_m_l                !< mean phase velocity at outflow for w-component used in radiation boundary condition (local subdomain value)
     REAL(wp), DIMENSION(:), ALLOCATABLE ::  ddzu                   !< 1/dzu 
     REAL(wp), DIMENSION(:), ALLOCATABLE ::  ddzu_pres              !< modified ddzu for pressure solver 
@@ -576,7 +583,7 @@
     REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  flux_s_v              !< 6th-order advective flux at south face of grid box - v-component
     REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  flux_s_w              !< 6th-order advective flux at south face of grid box - w-component
-    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  f1_mg                 !< Siggi
-    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  f2_mg                 !< Siggi
-    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  f3_mg                 !< Siggi
+    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  f1_mg                 !< grid factor used in right hand side of Gauss-Seidel equation (multigrid)
+    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  f2_mg                 !< grid factor used in right hand side of Gauss-Seidel equation (multigrid)
+    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  f3_mg                 !< grid factor used in right hand side of Gauss-Seidel equation (multigrid)
     REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  mean_inflow_profiles  !< used for turbulent inflow (non-cyclic boundary conditions)
     REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  precipitation_amount  !< precipitation amount due to gravitational settling (bulk microphysics)
@@ -591,6 +598,6 @@
     REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  td_sub_lpt            !< temperature tendency due to subsidence/ascent (large scale forcing)
     REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  td_sub_q              !< specific humidity tendency due to subsidence/ascent (large scale forcing)
-    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  total_2d_a            !< Siggi 
-    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  total_2d_o            !< Siggi
+    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  total_2d_a            !< horizontal array to store the total domain data, used for atmosphere-ocean coupling (atmosphere data)
+    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  total_2d_o            !< horizontal array to store the total domain data, used for atmosphere-ocean coupling (ocean data)
     REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  ug_vert               !< vertical profile of geostrophic wind component in x-direction interpolated to vertical grid (large scale forcing)
     REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  unudge                !< vertical profile of wind component in x-direction interpolated to vertical grid (nudging) 
@@ -633,19 +640,19 @@
     REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  l_wall     !< near-wall mixing length
     REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  prr        !< rain rate
-    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  p_loc      !< Siggi
+    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  p_loc      !< local array in multigrid/sor solver containing the pressure which is iteratively advanced in each iteration step
     REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  tend       !< tendency field (time integration)
-    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  tric       !< Siggi
-    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  u_m_l      !< Siggi
-    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  u_m_n      !< Siggi
-    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  u_m_r      !< Siggi
-    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  u_m_s      !< Siggi
-    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  v_m_l      !< Siggi
-    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  v_m_n      !< Siggi
-    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  v_m_r      !< Siggi
-    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  v_m_s      !< Siggi
-    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  w_m_l      !< Siggi
-    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  w_m_n      !< Siggi 
-    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  w_m_r      !< Siggi
-    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  w_m_s      !< Siggi
+    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  tric       !< coefficients of the tridiagonal matrix for solution of the Poisson equation in Fourier space
+    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  u_m_l      !< velocity data (u at left boundary) from time level t-dt required for radiation boundary condition
+    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  u_m_n      !< velocity data (u at north boundary) from time level t-dt required for radiation boundary condition
+    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  u_m_r      !< velocity data (u at right boundary) from time level t-dt required for radiation boundary condition
+    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  u_m_s      !< velocity data (u at south boundary) from time level t-dt required for radiation boundary condition
+    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  v_m_l      !< velocity data (v at left boundary) from time level t-dt required for radiation boundary condition
+    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  v_m_n      !< velocity data (v at north boundary) from time level t-dt required for radiation boundary condition
+    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  v_m_r      !< velocity data (v at right boundary) from time level t-dt required for radiation boundary condition
+    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  v_m_s      !< velocity data (v at south boundary) from time level t-dt required for radiation boundary condition
+    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  w_m_l      !< velocity data (w at left boundary) from time level t-dt required for radiation boundary condition
+    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  w_m_n      !< velocity data (w at north boundary) from time level t-dt required for radiation boundary condition
+    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  w_m_r      !< velocity data (w at right boundary) from time level t-dt required for radiation boundary condition
+    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  w_m_s      !< velocity data (w at south boundary) from time level t-dt required for radiation boundary condition
 
 #if defined( __nopointer )
@@ -786,5 +793,5 @@
 #endif
 
-    REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE ::  tri      !< Siggi 
+    REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE ::  tri    !<  array to hold the tridiagonal matrix for solution of the Poisson equation in Fourier space (4th dimension for threads)
 
     REAL(wp), DIMENSION(:), ALLOCATABLE ::  rho_air      !< air density profile on the uv grid
@@ -918,18 +925,7 @@
     USE kinds
 
-    TYPE plot_precision
-       CHARACTER (LEN=8) ::  variable   !< Siggi
-       INTEGER(iwp)      ::  precision  !< Siggi
-    END TYPE plot_precision
-
-    TYPE(plot_precision), DIMENSION(100) ::  plot_3d_precision =               &  !< Siggi
-                        (/ plot_precision( 'u', 2 ), plot_precision( 'v', 2 ), & 
-                           plot_precision( 'w', 2 ), plot_precision( 'p', 5 ), & 
-                           plot_precision( 'pt', 2 ),                          & 
-                           ( plot_precision( ' ', 1 ), i9 = 1,95 ) /)
-
     TYPE file_status
-       LOGICAL ::  opened         !< Siggi
-       LOGICAL ::  opened_before  !< Siggi
+       LOGICAL ::  opened         !< file is currently open
+       LOGICAL ::  opened_before  !< file is currently closed, but has been openend before
     END TYPE file_status
     
@@ -938,11 +934,10 @@
     INTEGER(iwp), PARAMETER ::  varnamelength = 30        !< length of output variable names
 
-    TYPE(file_status), DIMENSION(200+2*max_masks) ::                &  !< Siggi
+    TYPE(file_status), DIMENSION(200+2*max_masks) ::                &  !< indicates if file is open or if it has been opened before
                              openfile = file_status(.FALSE.,.FALSE.)
 
     CHARACTER (LEN=1)    ::  cycle_mg = 'w'                               !< namelist parameter (see documentation)
     CHARACTER (LEN=1)    ::  timestep_reason = ' '                        !< 'A'dvection or 'D'iffusion criterion, written to RUN_CONTROL file
-    CHARACTER (LEN=3)    ::  coupling_char = ''                           !< Siggi
-    CHARACTER (LEN=5)    ::  write_binary = 'false'                       !< internal namelist parameter Siggi--> Why is this not a flag?
+    CHARACTER (LEN=3)    ::  coupling_char = ''                           !< appended to filenames in coupled ocean-atmosphere runs ('_O': ocean PE, '_A': atmosphere PE)
     CHARACTER (LEN=8)    ::  most_method = 'newton'                       !< namelist parameter
     CHARACTER (LEN=8)    ::  run_date                                     !< date of simulation run, printed to HEADER file
@@ -952,6 +947,6 @@
     CHARACTER (LEN=12)   ::  version = ' '                                !< PALM version number
     CHARACTER (LEN=12)   ::  revision = ' '                               !< PALM revision number
-    CHARACTER (LEN=12)   ::  user_interface_current_revision = ' '        !< Siggi
-    CHARACTER (LEN=12)   ::  user_interface_required_revision = ' '       !< Siggi
+    CHARACTER (LEN=12)   ::  user_interface_current_revision = ' '        !< revision number of the currently used user-interface (must match user_interface_required_revision)
+    CHARACTER (LEN=12)   ::  user_interface_required_revision = ' '       !< required user-interface revision number
     CHARACTER (LEN=16)   ::  conserve_volume_flow_mode = 'default'        !< namelist parameter
     CHARACTER (LEN=16)   ::  loop_optimization = 'default'                !< namelist parameter
@@ -978,5 +973,5 @@
     CHARACTER (LEN=20)   ::  cloud_scheme = 'saturation_adjust'           !< namelist parameter
     CHARACTER (LEN=20)   ::  coupling_mode = 'uncoupled'                  !< coupling mode for atmosphere-ocean coupling  
-    CHARACTER (LEN=20)   ::  coupling_mode_remote = 'uncoupled'           !< Siggi
+    CHARACTER (LEN=20)   ::  coupling_mode_remote = 'uncoupled'           !< coupling mode of the remote process in case of coupled atmosphere-ocean runs
     CHARACTER (LEN=20)   ::  dissipation_1d = 'detering'                  !< namelist parameter
     CHARACTER (LEN=20)   ::  fft_method = 'system-specific'               !< namelist parameter
@@ -984,14 +979,11 @@
     CHARACTER (LEN=20)   ::  random_generator = 'random-parallel'         !< namelist parameter
     CHARACTER (LEN=20)   ::  reference_state = 'initial_profile'          !< namelist parameter  
-    CHARACTER (LEN=20)   ::  return_addres                                !< Siggi
-    CHARACTER (LEN=20)   ::  return_username                              !< Siggi
     CHARACTER (LEN=20)   ::  timestep_scheme = 'runge-kutta-3'            !< namelist parameter       
-    CHARACTER (LEN=40)   ::  avs_data_file                                !< Siggi
     CHARACTER (LEN=40)   ::  topography = 'flat'                          !< namelist parameter 
-    CHARACTER (LEN=64)   ::  host = ' '                                   !< Siggi
-    CHARACTER (LEN=80)   ::  log_message                                  !< Siggi
-    CHARACTER (LEN=80)   ::  run_identifier                               !< Siggi
+    CHARACTER (LEN=64)   ::  host = ' '                                   !< hostname on which PALM is running, ENVPAR namelist parameter provided by mrun
+    CHARACTER (LEN=80)   ::  log_message                                  !< user-defined message for debugging (sse data_log.f90)
+    CHARACTER (LEN=80)   ::  run_identifier                               !< run identifier as given by mrun option -d, ENVPAR namelist parameter provided by mrun
     CHARACTER (LEN=100)  ::  initializing_actions = ' '                   !< namelist parameter
-    CHARACTER (LEN=210)  ::  run_description_header                       !< Siggi
+    CHARACTER (LEN=210)  ::  run_description_header                       !< string containing diverse run informations as run identifier, coupling mode, host, ensemble number, run date and time
     CHARACTER (LEN=1000) ::  message_string = ' '                         !< dynamic string for error message output
 
@@ -1021,6 +1013,6 @@
     INTEGER(iwp) ::  average_count_3d = 0              !< number of samples in 3d output
     INTEGER(iwp) ::  current_timestep_number = 0       !< current timestep number, printed to RUN_CONTROL file
-    INTEGER(iwp) ::  coupling_topology = 0             !< processor topology for atmosphere-ocean coupling  Siggi
-    INTEGER(iwp) ::  dist_range = 0                    !< Siggi
+    INTEGER(iwp) ::  coupling_topology = 0             !< switch for atmosphere-ocean-coupling: 0: same number of grid points and PEs along x and y in atmosphere and ocean, otherwise 1
+    INTEGER(iwp) ::  dist_range = 0                    !< switch for steering the horizontal disturbance range, 1: inflow disturbances in case of non-cyclic horizontal BC, 0: otherwise
     INTEGER(iwp) ::  disturbance_level_ind_b           !< lowest grid index where flow disturbance is applied
     INTEGER(iwp) ::  disturbance_level_ind_t           !< highest grid index where flow disturbance is applied
@@ -1031,10 +1023,10 @@
     INTEGER(iwp) ::  dots_time_count = 0               !< number of output intervals for timeseries output
     INTEGER(iwp) ::  dp_level_ind_b = 0                !< lowest grid index for external pressure gradient forcing
-    INTEGER(iwp) ::  dvrp_filecount = 0                !< Siggi
-    INTEGER(iwp) ::  dz_stretch_level_index            !< Siggi
+    INTEGER(iwp) ::  dvrp_filecount = 0                !< parameter for dvr visualization software
+    INTEGER(iwp) ::  dz_stretch_level_index            !< vertical grid level index above which the vertical grid spacing is stretched
     INTEGER(iwp) ::  ensemble_member_nr = 0            !< namelist parameter
-    INTEGER(iwp) ::  gamma_mg                          !< Siggi
-    INTEGER(iwp) ::  gathered_size                     !< Siggi
-    INTEGER(iwp) ::  grid_level                        !< Siggi
+    INTEGER(iwp) ::  gamma_mg                          !< switch for steering the multigrid cycle: 1: v-cycle, 2: w-cycle
+    INTEGER(iwp) ::  gathered_size                     !< number of total domain grid points of the grid level which is gathered on PE0 (multigrid solver)
+    INTEGER(iwp) ::  grid_level                        !< current grid level handled in the multigrid solver
     INTEGER(iwp) ::  ibc_e_b                           !< integer flag for bc_e_b
     INTEGER(iwp) ::  ibc_p_b                           !< integer flag for bc_p_b
@@ -1053,13 +1045,13 @@
     INTEGER(iwp) ::  intermediate_timestep_count       !< number of current Runge-Kutta substep
     INTEGER(iwp) ::  intermediate_timestep_count_max   !< maximum number of Runge-Kutta substeps
-    INTEGER(iwp) ::  io_group = 0                      !< Siggi
-    INTEGER(iwp) ::  io_blocks = 1                     !< Siggi
+    INTEGER(iwp) ::  io_group = 0                      !< I/O group to which the PE belongs (= #PE / io_blocks)
+    INTEGER(iwp) ::  io_blocks = 1                     !< number of blocks for which I/O is done in sequence (total number of PEs / maximum_parallel_io_streams)
     INTEGER(iwp) ::  iran = -1234567                   !< integer random number used for flow disturbances
     INTEGER(iwp) ::  lod = 1                           !< level of detail, topography input parameter 
     INTEGER(iwp) ::  masks = 0                         !< counter for number of masked output quantities
-    INTEGER(iwp) ::  maximum_grid_level                !< Siggi
-    INTEGER(iwp) ::  maximum_parallel_io_streams = -1  !< Siggi
+    INTEGER(iwp) ::  maximum_grid_level                !< number of grid levels that the multigrid solver is using
+    INTEGER(iwp) ::  maximum_parallel_io_streams = -1  !< maximum number of parallel io streams that the underlying parallel file system allows, set with mrun option -w, ENVPAR namelist parameter, provided by mrun
     INTEGER(iwp) ::  max_pr_user = 0                   !< number of user-defined profiles (must not change within a job chain)
-    INTEGER(iwp) ::  mgcycles = 0                      !< Siggi
+    INTEGER(iwp) ::  mgcycles = 0                      !< number of multigrid cycles that the multigrid solver has actually carried out
     INTEGER(iwp) ::  mg_cycles = -1                    !< namelist parameter
     INTEGER(iwp) ::  mg_switch_to_pe0_level = -1       !< namelist parameter
@@ -1081,7 +1073,7 @@
     INTEGER(iwp) ::  runnr = 0                         !< number of run in job chain
     INTEGER(iwp) ::  subdomain_size                    !< number of grid points in (3d) subdomain including ghost points
-    INTEGER(iwp) ::  terminate_coupled = 0             !< Siggi
-    INTEGER(iwp) ::  terminate_coupled_remote = 0      !< Siggi
-    INTEGER(iwp) ::  timestep_count = 0                !< Siggi --> is it not analogue to intermediate_timestep_count
+    INTEGER(iwp) ::  terminate_coupled = 0             !< switch for steering termination in case of coupled runs
+    INTEGER(iwp) ::  terminate_coupled_remote = 0      !< switch for steering termination in case of coupled runs (condition of the remote model)
+    INTEGER(iwp) ::  timestep_count = 0                !< number of timesteps carried out since the beginning of the initial run
     INTEGER(iwp) ::  dist_nxl(0:1)                               !< left boundary of disturbance region
     INTEGER(iwp) ::  dist_nxr(0:1)                               !< right boundary of disturbance region
@@ -1116,5 +1108,5 @@
     INTEGER(iwp), DIMENSION(0:1) ::  ntdim_3d     !< number of output intervals for 3d data
 
-    INTEGER(iwp), DIMENSION(:), ALLOCATABLE ::  grid_level_count  !< Siggi
+    INTEGER(iwp), DIMENSION(:), ALLOCATABLE ::  grid_level_count  !< internal switch for steering the multigrid v- and w-cycles
 
     INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE ::  mask_i         !< subdomain grid index of masked output point on x-dimension
@@ -1158,10 +1150,9 @@
     LOGICAL ::  dt_3d_reached                                !< internal timestep for particle advection
     LOGICAL ::  dt_3d_reached_l                              !< internal timestep for particle advection
-    LOGICAL ::  exchange_mg = .FALSE.                        !< (Siggi add short description) 
     LOGICAL ::  first_call_lpm = .TRUE.                      !< call lpm only once per timestep?
     LOGICAL ::  force_print_header = .FALSE.                 !< namelist parameter
     LOGICAL ::  galilei_transformation = .FALSE.             !< namelist parameter
     LOGICAL ::  humidity = .FALSE.                           !< namelist parameter
-    LOGICAL ::  humidity_remote = .FALSE.                    !< (Siggi add short description)
+    LOGICAL ::  humidity_remote = .FALSE.                    !< switch for receiving near-surface humidity flux (atmosphere-ocean coupling)
     LOGICAL ::  inflow_l = .FALSE.                           !< left domain boundary has non-cyclic inflow?
     LOGICAL ::  inflow_n = .FALSE.                           !< north domain boundary has non-cyclic inflow?
@@ -1179,5 +1170,5 @@
     LOGICAL ::  microphysics_morrison = .FALSE.              !< use 2-moment Morrison (add. prog. eq. for nc and qc)
     LOGICAL ::  microphysics_seifert = .FALSE.               !< use 2-moment Seifert and Beheng scheme
-    LOGICAL ::  mg_switch_to_pe0 = .FALSE.                   !< (Siggi add short description)
+    LOGICAL ::  mg_switch_to_pe0 = .FALSE.                   !< internal multigrid switch for steering the ghost point exchange in case that data has been collected on PE0
     LOGICAL ::  nest_bound_l = .FALSE.                       !< nested boundary on left side?
     LOGICAL ::  nest_bound_n = .FALSE.                       !< nested boundary on north side?
@@ -1197,10 +1188,9 @@
     LOGICAL ::  recycling_yshift = .FALSE.                   !< namelist parameter
     LOGICAL ::  run_control_header = .FALSE.                 !< onetime output of RUN_CONTROL header
-    LOGICAL ::  run_coupled = .TRUE.                         !< (Siggi add short description)
+    LOGICAL ::  run_coupled = .TRUE.                         !< internal switch telling PALM to run in coupled mode (i.e. to exchange surface data) in case of atmosphere-ocean coupling
     LOGICAL ::  scalar_rayleigh_damping = .TRUE.             !< namelist parameter
-    LOGICAL ::  sloping_surface = .FALSE.                    !< use sloped surface?
-                                                             !< (namelist parameter alpha_surface)
+    LOGICAL ::  sloping_surface = .FALSE.                    !< use sloped surface? (namelist parameter alpha_surface)
     LOGICAL ::  spinup = .FALSE.                             !< perform model spinup without atmosphere code?
-    LOGICAL ::  stop_dt = .FALSE.                            !< (Siggi add short description)
+    LOGICAL ::  stop_dt = .FALSE.                            !< internal switch to stop the time stepping
     LOGICAL ::  synchronous_exchange = .FALSE.               !< namelist parameter
     LOGICAL ::  synthetic_turbulence_generator = .FALSE.     !< flag for synthetic turbulence generator module
@@ -1222,6 +1212,8 @@
     LOGICAL ::  virtual_flight = .FALSE.                     !< use virtual flight model?
     LOGICAL ::  wall_adjustment = .TRUE.                     !< namelist parameter
+    LOGICAL ::  write_binary = .FALSE.                       !< ENVPAR namelist parameter to steer restart I/O (ENVPAR is created by mrun)
     LOGICAL ::  ws_scheme_sca = .FALSE.                      !< use Wicker-Skamarock scheme (scalar advection)?
     LOGICAL ::  ws_scheme_mom = .FALSE.                      !< use Wicker-Skamarock scheme (momentum advection)?
+
     LOGICAL ::  data_output_xy(0:1) = .FALSE.                !< output of xy cross-section data?
     LOGICAL ::  data_output_xz(0:1) = .FALSE.                !< output of xz cross-section data?
@@ -1364,5 +1356,5 @@
     REAL(wp) ::  time_restart = 9999999.9_wp                   !< time at which run shall be terminated and restarted
     REAL(wp) ::  time_run_control = 0.0_wp                     !< time since last RUN_CONTROL output
-    REAL(wp) ::  time_since_reference_point                    !< Siggi
+    REAL(wp) ::  time_since_reference_point                    !< time after atmosphere-ocean coupling has been activated, or time after spinup phase of LSM has been finished
     REAL(wp) ::  top_heatflux = 9999999.9_wp                   !< namelist parameter
     REAL(wp) ::  top_momentumflux_u = 9999999.9_wp             !< namelist parameter
@@ -1414,7 +1406,7 @@
     REAL(wp) ::  vg_vertical_gradient(10) = 0.0_wp                 !< namelist parameter
     REAL(wp) ::  vg_vertical_gradient_level(10) = -9999999.9_wp    !< namelist parameter
-    REAL(wp) ::  volume_flow(1:3) = 0.0_wp                         !< Siggi
-    REAL(wp) ::  volume_flow_area(1:3) = 0.0_wp                    !< Siggi
-    REAL(wp) ::  volume_flow_initial(1:3) = 0.0_wp                 !< Siggi
+    REAL(wp) ::  volume_flow(1:3) = 0.0_wp                         !< volume flow through 1:yz-plane, 2: xz-plane, 3: xy-plane (nest childs only)
+    REAL(wp) ::  volume_flow_area(1:3) = 0.0_wp                    !< area of the respective volume flow planes
+    REAL(wp) ::  volume_flow_initial(1:3) = 0.0_wp                 !< initial volume flow (t=0) through the respective volume flow planes
     REAL(wp) ::  wall_heatflux(0:5) = 0.0_wp                       !< namelist parameter
     REAL(wp) ::  wall_humidityflux(0:5) = 0.0_wp                   !< namelist parameter
@@ -1453,107 +1445,108 @@
     USE kinds
 
-    CHARACTER (LEN=10) ::  dvrp_output = 'rtsp'        !< Siggi (entire MODULE)
-    CHARACTER (LEN=10) ::  particle_color = 'none'     !< 
-    CHARACTER (LEN=10) ::  particle_dvrpsize = 'none'  !< 
-
-    CHARACTER (LEN=20), DIMENSION(10) ::  mode_dvrp = &  !< 
+    CHARACTER (LEN=10) ::  dvrp_output = 'rtsp'        !< dvr namelist parameter
+    CHARACTER (LEN=10) ::  particle_color = 'none'     !< dvr namelist parameter
+    CHARACTER (LEN=10) ::  particle_dvrpsize = 'none'  !< dvr namelist parameter
+
+    CHARACTER (LEN=20), DIMENSION(10) ::  mode_dvrp = &  !< dvr namelist parameter
                                      (/ ( '                    ', i9 = 1,10 ) /)
 
-    CHARACTER (LEN=80) ::  dvrp_directory = 'default'                     !< 
-    CHARACTER (LEN=80) ::  dvrp_file      = 'default'                     !< 
-    CHARACTER (LEN=80) ::  dvrp_host      = 'origin.rvs.uni-hannover.de'  !< 
-    CHARACTER (LEN=80) ::  dvrp_password  = '********'                    !< 
-    CHARACTER (LEN=80) ::  dvrp_username  = ' '                           !< 
-
-    INTEGER(iwp) ::  cluster_size = 1                   !< 
-    INTEGER(iwp) ::  dvrp_colortable_entries = 4        !< 
-    INTEGER(iwp) ::  dvrp_colortable_entries_prt = 22   !< 
-    INTEGER(iwp) ::  islice_dvrp                        !< 
-    INTEGER(iwp) ::  nx_dvrp                            !< 
-    INTEGER(iwp) ::  nxl_dvrp                           !< 
-    INTEGER(iwp) ::  nxr_dvrp                           !< 
-    INTEGER(iwp) ::  ny_dvrp                            !< 
-    INTEGER(iwp) ::  nyn_dvrp                           !< 
-    INTEGER(iwp) ::  nys_dvrp                           !< 
-    INTEGER(iwp) ::  nz_dvrp, pathlines_fadeintime = 5  !< 
-    INTEGER(iwp) ::  pathlines_fadeouttime = 5          !< 
-    INTEGER(iwp) ::  pathlines_linecount = 1000         !< 
-    INTEGER(iwp) ::  pathlines_maxhistory = 40          !< 
-    INTEGER(iwp) ::  pathlines_wavecount = 10           !< 
-    INTEGER(iwp) ::  pathlines_wavetime = 50            !< 
-    INTEGER(iwp) ::  vc_gradient_normals = 0            !< 
-    INTEGER(iwp) ::  vc_mode = 0                        !< 
-    INTEGER(iwp) ::  vc_size_x = 2                      !< 
-    INTEGER(iwp) ::  vc_size_y = 2                      !< 
-    INTEGER(iwp) ::  vc_size_z = 2                      !< 
-
-    INTEGER(iwp), DIMENSION(10) ::  slicer_position_dvrp  !< 
-
-    LOGICAL ::  cyclic_dvrp = .FALSE.                      !< 
-    LOGICAL ::  dvrp_overlap                               !< 
-    LOGICAL ::  dvrp_total_overlap                         !< 
-    LOGICAL ::  local_dvrserver_running                    !< internally set namelist parameter
-    LOGICAL ::  lock_steering_update = .FALSE.             !< 
-    LOGICAL ::  use_seperate_pe_for_dvrp_output = .FALSE.  !< 
-
-    REAL(wp) ::  clip_dvrp_l = 9999999.9_wp  !< 
-    REAL(wp) ::  clip_dvrp_n = 9999999.9_wp  !< 
-    REAL(wp) ::  clip_dvrp_r = 9999999.9_wp  !< 
-    REAL(wp) ::  clip_dvrp_s = 9999999.9_wp  !< 
-    REAL(wp) ::  superelevation = 1.0_wp     !< 
-    REAL(wp) ::  superelevation_x = 1.0_wp   !< 
-    REAL(wp) ::  superelevation_y = 1.0_wp   !< 
-    REAL(wp) ::  vc_alpha = 38.0_wp          !< 
-
-    REAL(wp), DIMENSION(2) ::  color_interval = (/ 0.0_wp, 1.0_wp /)     !< 
-    REAL(wp), DIMENSION(2) ::  dvrpsize_interval = (/ 0.0_wp, 1.0_wp /)  !< 
-
-    REAL(wp), DIMENSION(3) ::  groundplate_color = (/ 0.0_wp, 0.6_wp, 0.0_wp /)  !< 
-    REAL(wp), DIMENSION(3) ::  topography_color = (/ 0.8_wp, 0.7_wp, 0.6_wp /)   !< 
-
-    REAL(wp), DIMENSION(2,10) ::  slicer_range_limits_dvrp  !< 
-
-    REAL(wp), DIMENSION(3,10) ::  isosurface_color  !<
-
-    REAL(sp), DIMENSION(2,100) ::  interval_values_dvrp          !< 
-    REAL(sp), DIMENSION(2,100) ::  interval_values_dvrp_prt      !< 
-    REAL(sp), DIMENSION(2,100) ::  interval_h_dvrp               !< 
-    REAL(sp), DIMENSION(2,100) ::  interval_h_dvrp_prt           !< 
-    REAL(sp), DIMENSION(2,100) ::  interval_l_dvrp = 0.5_sp      !< 
-    REAL(sp), DIMENSION(2,100) ::  interval_l_dvrp_prt = 0.5_sp  !< 
-    REAL(sp), DIMENSION(2,100) ::  interval_s_dvrp = 1.0_sp      !< 
-    REAL(sp), DIMENSION(2,100) ::  interval_s_dvrp_prt = 1.0_sp  !< 
-    REAL(sp), DIMENSION(2,100) ::  interval_a_dvrp = 0.0_sp      !< 
-    REAL(sp), DIMENSION(2,100) ::  interval_a_dvrp_prt = 0.0_sp  !< 
-
-    DATA  slicer_range_limits_dvrp / -1.0_wp, 1.0_wp, -1.0_wp, 1.0_wp, -1.0_wp, 1.0_wp, &  !< 
+    CHARACTER (LEN=80) ::  dvrp_directory = 'default'                     !< dvr namelist parameter
+    CHARACTER (LEN=80) ::  dvrp_file      = 'default'                     !< dvr namelist parameter
+    CHARACTER (LEN=80) ::  dvrp_host      = 'origin.rvs.uni-hannover.de'  !< dvr namelist parameter
+    CHARACTER (LEN=80) ::  dvrp_password  = '********'                    !< dvr namelist parameter
+    CHARACTER (LEN=80) ::  dvrp_username  = ' '                           !< dvr namelist parameter
+
+    INTEGER(iwp) ::  cluster_size = 1                   !< dvr namelist parameter
+    INTEGER(iwp) ::  dvrp_colortable_entries = 4        !< internal dvr software variable
+    INTEGER(iwp) ::  dvrp_colortable_entries_prt = 22   !< internal dvr software variable
+    INTEGER(iwp) ::  islice_dvrp                        !< internal dvr software variable
+    INTEGER(iwp) ::  nx_dvrp                            !< internal dvr software variable
+    INTEGER(iwp) ::  nxl_dvrp                           !< internal dvr software variable
+    INTEGER(iwp) ::  nxr_dvrp                           !< internal dvr software variable
+    INTEGER(iwp) ::  ny_dvrp                            !< internal dvr software variable
+    INTEGER(iwp) ::  nyn_dvrp                           !< internal dvr software variable
+    INTEGER(iwp) ::  nys_dvrp                           !< internal dvr software variable
+    INTEGER(iwp) ::  nz_dvrp                            !< internal dvr software variable
+    INTEGER(iwp) ::  pathlines_fadeintime = 5           !< dvr namelist parameter
+    INTEGER(iwp) ::  pathlines_fadeouttime = 5          !< dvr namelist parameter
+    INTEGER(iwp) ::  pathlines_linecount = 1000         !< dvr namelist parameter
+    INTEGER(iwp) ::  pathlines_maxhistory = 40          !< dvr namelist parameter
+    INTEGER(iwp) ::  pathlines_wavecount = 10           !< dvr namelist parameter
+    INTEGER(iwp) ::  pathlines_wavetime = 50            !< dvr namelist parameter
+    INTEGER(iwp) ::  vc_gradient_normals = 0            !< dvr namelist parameter
+    INTEGER(iwp) ::  vc_mode = 0                        !< dvr namelist parameter
+    INTEGER(iwp) ::  vc_size_x = 2                      !< dvr namelist parameter
+    INTEGER(iwp) ::  vc_size_y = 2                      !< dvr namelist parameter
+    INTEGER(iwp) ::  vc_size_z = 2                      !< dvr namelist parameter
+
+    INTEGER(iwp), DIMENSION(10) ::  slicer_position_dvrp  !< internal dvr software variable
+
+    LOGICAL ::  cyclic_dvrp = .FALSE.                      !< internal dvr software variable
+    LOGICAL ::  dvrp_overlap                               !< internal dvr software variable
+    LOGICAL ::  dvrp_total_overlap                         !< internal dvr software variable
+    LOGICAL ::  local_dvrserver_running                    !< namelist parameter (ENVPAR namelist provided by mrun)
+    LOGICAL ::  lock_steering_update = .FALSE.             !< internal dvr software variable
+    LOGICAL ::  use_seperate_pe_for_dvrp_output = .FALSE.  !< internal dvr software variable
+
+    REAL(wp) ::  clip_dvrp_l = 9999999.9_wp  !< dvr namelist parameter
+    REAL(wp) ::  clip_dvrp_n = 9999999.9_wp  !< dvr namelist parameter
+    REAL(wp) ::  clip_dvrp_r = 9999999.9_wp  !< dvr namelist parameter
+    REAL(wp) ::  clip_dvrp_s = 9999999.9_wp  !< dvr namelist parameter
+    REAL(wp) ::  superelevation = 1.0_wp     !< dvr namelist parameter
+    REAL(wp) ::  superelevation_x = 1.0_wp   !< dvr namelist parameter
+    REAL(wp) ::  superelevation_y = 1.0_wp   !< dvr namelist parameter
+    REAL(wp) ::  vc_alpha = 38.0_wp          !< dvr namelist parameter
+
+    REAL(wp), DIMENSION(2) ::  color_interval = (/ 0.0_wp, 1.0_wp /)     !< dvr namelist parameter
+    REAL(wp), DIMENSION(2) ::  dvrpsize_interval = (/ 0.0_wp, 1.0_wp /)  !< dvr namelist parameter
+
+    REAL(wp), DIMENSION(3) ::  groundplate_color = (/ 0.0_wp, 0.6_wp, 0.0_wp /)  !< dvr namelist parameter
+    REAL(wp), DIMENSION(3) ::  topography_color = (/ 0.8_wp, 0.7_wp, 0.6_wp /)   !< dvr namelist parameter
+
+    REAL(wp), DIMENSION(2,10) ::  slicer_range_limits_dvrp  !< dvr namelist parameter
+
+    REAL(wp), DIMENSION(3,10) ::  isosurface_color  !< dvr namelist parameter
+
+    REAL(sp), DIMENSION(2,100) ::  interval_values_dvrp          !< internal dvr software variable
+    REAL(sp), DIMENSION(2,100) ::  interval_values_dvrp_prt      !< internal dvr software variable
+    REAL(sp), DIMENSION(2,100) ::  interval_h_dvrp               !< internal dvr software variable
+    REAL(sp), DIMENSION(2,100) ::  interval_h_dvrp_prt           !< internal dvr software variable
+    REAL(sp), DIMENSION(2,100) ::  interval_l_dvrp = 0.5_sp      !< internal dvr software variable
+    REAL(sp), DIMENSION(2,100) ::  interval_l_dvrp_prt = 0.5_sp  !< internal dvr software variable
+    REAL(sp), DIMENSION(2,100) ::  interval_s_dvrp = 1.0_sp      !< internal dvr software variable
+    REAL(sp), DIMENSION(2,100) ::  interval_s_dvrp_prt = 1.0_sp  !< internal dvr software variable
+    REAL(sp), DIMENSION(2,100) ::  interval_a_dvrp = 0.0_sp      !< internal dvr software variable
+    REAL(sp), DIMENSION(2,100) ::  interval_a_dvrp_prt = 0.0_sp  !< internal dvr software variable
+
+    DATA  slicer_range_limits_dvrp / -1.0_wp, 1.0_wp, -1.0_wp, 1.0_wp, -1.0_wp, 1.0_wp, &  !< internal dvr software variable
                                      -1.0_wp, 1.0_wp, -1.0_wp, 1.0_wp, -1.0_wp, 1.0_wp, &
                                      -1.0_wp, 1.0_wp, -1.0_wp, 1.0_wp, -1.0_wp, 1.0_wp, &
                                      -1.0_wp, 1.0_wp /
 
-    DATA  isosurface_color / 0.9_wp, 0.9_wp, 0.9_wp,  0.8_wp, 0.1_wp, 0.1_wp,  0.1_wp, 0.1_wp, 0.8_wp, &  !< 
+    DATA  isosurface_color / 0.9_wp, 0.9_wp, 0.9_wp,  0.8_wp, 0.1_wp, 0.1_wp,  0.1_wp, 0.1_wp, 0.8_wp, &  !< internal dvr software variable
                              0.1_wp, 0.8_wp, 0.1_wp,  0.6_wp, 0.1_wp, 0.1_wp,  0.1_wp, 0.1_wp, 0.6_wp, &
                              0.1_wp, 0.6_wp, 0.1_wp,  0.4_wp, 0.1_wp, 0.1_wp,  0.1_wp, 0.1_wp, 0.4_wp, &
                              0.1_wp, 0.4_wp, 0.1_wp /
 
-    DATA  interval_h_dvrp / 270.0_wp, 225.0_wp, 225.0_wp, 180.0_wp, 70.0_wp, 25.0_wp, &  !< 
+    DATA  interval_h_dvrp / 270.0_wp, 225.0_wp, 225.0_wp, 180.0_wp, 70.0_wp, 25.0_wp, &  !< internal dvr software variable
                             25.0_wp, -25.0_wp, 192 * 0.0_wp /
 
-    DATA  interval_h_dvrp_prt / 270.0_wp, 225.0_wp, 225.0_wp, 180.0_wp, 70.0_wp, 25.0_wp, &  !< 
+    DATA  interval_h_dvrp_prt / 270.0_wp, 225.0_wp, 225.0_wp, 180.0_wp, 70.0_wp, 25.0_wp, &  !< internal dvr software variable
                                 25.0_wp, -25.0_wp, 192 * 0.0_wp /
 
-    REAL(sp), DIMENSION(:), ALLOCATABLE ::  xcoor_dvrp  !< 
-    REAL(sp), DIMENSION(:), ALLOCATABLE ::  ycoor_dvrp  !< 
-    REAL(sp), DIMENSION(:), ALLOCATABLE ::  zcoor_dvrp  !< 
+    REAL(sp), DIMENSION(:), ALLOCATABLE ::  xcoor_dvrp  !< internal dvr software variable
+    REAL(sp), DIMENSION(:), ALLOCATABLE ::  ycoor_dvrp  !< internal dvr software variable
+    REAL(sp), DIMENSION(:), ALLOCATABLE ::  zcoor_dvrp  !< internal dvr software variable
 
     TYPE steering
-       CHARACTER (LEN=24) ::  name  !<
-       REAL(sp)           ::  min   !<
-       REAL(sp)           ::  max   !<
-       INTEGER(iwp)       ::  imin  !<
-       INTEGER(iwp)       ::  imax  !<
+       CHARACTER (LEN=24) ::  name  !< internal dvr software variable
+       REAL(sp)           ::  min   !< internal dvr software variable
+       REAL(sp)           ::  max   !< internal dvr software variable
+       INTEGER(iwp)       ::  imin  !< internal dvr software variable
+       INTEGER(iwp)       ::  imax  !< internal dvr software variable
     END TYPE steering
 
-    TYPE(steering), DIMENSION(:), ALLOCATABLE ::  steering_dvrp  !< 
+    TYPE(steering), DIMENSION(:), ALLOCATABLE ::  steering_dvrp  !< internal dvr software variable
 
     SAVE
@@ -1605,9 +1598,9 @@
     INTEGER(iwp) ::  nnx          !< number of subdomain grid points in x-direction
     INTEGER(iwp) ::  nx = 0       !< nx+1 = total number of grid points in x-direction
-    INTEGER(iwp) ::  nx_a         !< Siggi
-    INTEGER(iwp) ::  nx_o         !< Siggi
+    INTEGER(iwp) ::  nx_a         !< in coupled atmosphere-ocean runs: total number of grid points along x (atmosphere)
+    INTEGER(iwp) ::  nx_o         !< in coupled atmosphere-ocean runs: total number of grid points along x (ocean)
     INTEGER(iwp) ::  nxl          !< left-most grid index of subdomain (excluding ghost points)
     INTEGER(iwp) ::  nxlg         !< left-most grid index of subdomain (including ghost points)
-    INTEGER(iwp) ::  nxlu         !< =nxl+1 (at left domain boundary with inflow from left), else =nxl
+    INTEGER(iwp) ::  nxlu         !< =nxl+1 (at left domain boundary with inflow from left), else =nxl (used for u-velocity component)
     INTEGER(iwp) ::  nxr          !< right-most grid index of subdomain (excluding ghost points)
     INTEGER(iwp) ::  nxrg         !< right-most grid index of subdomain (including ghost points)
@@ -1615,11 +1608,11 @@
     INTEGER(iwp) ::  nny          !< number of subdomain grid points in y-direction
     INTEGER(iwp) ::  ny = 0       !< ny+1 = total number of grid points in y-direction
-    INTEGER(iwp) ::  ny_a         !< Siggi
-    INTEGER(iwp) ::  ny_o         !< Siggi
+    INTEGER(iwp) ::  ny_a         !< in coupled atmosphere-ocean runs: total number of grid points along y (atmosphere)
+    INTEGER(iwp) ::  ny_o         !< in coupled atmosphere-ocean runs: total number of grid points along y (ocean)
     INTEGER(iwp) ::  nyn          !< north-most grid index of subdomain (excluding ghost points)
     INTEGER(iwp) ::  nyng         !< north-most grid index of subdomain (including ghost points)
     INTEGER(iwp) ::  nys          !< south-most grid index of subdomain (excluding ghost points)
     INTEGER(iwp) ::  nysg         !< south-most grid index of subdomain (including ghost points)
-    INTEGER(iwp) ::  nysv         !< =nys+1 (at south domain boundary with inflow from south), else =nys
+    INTEGER(iwp) ::  nysv         !< =nys+1 (at south domain boundary with inflow from south), else =nys (used for v-velocity component)
     INTEGER(iwp) ::  ny_on_file   !< ny of previous run in job chain
     INTEGER(iwp) ::  nnz          !< number of subdomain grid points in z-direction
@@ -1643,5 +1636,5 @@
     INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE ::  ngp_2dh_outer     !< number of horizontal grid points which are non-topography and non-surface-bounded
     INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE ::  ngp_2dh_s_inner   !< number of horizontal grid points which are non-topography
-    INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE ::  mg_loc_ind        !< Siggi
+    INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE ::  mg_loc_ind        !< internal array to store index bounds of all PEs of that multigrid level where data is collected to PE0
     INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE ::  nzb_diff_s_inner  !< will be removed
     INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE ::  nzb_diff_s_outer  !< will be removed
@@ -1693,22 +1686,22 @@
 !> @todo Missing subroutine description.
 !------------------------------------------------------------------------------!
-       SUBROUTINE global_min_max ( i1, i2, j1, j2, k1, k2, feld, mode, offset, &
-                                   wert, wert_ijk, wert1, wert1_ijk )
+       SUBROUTINE global_min_max ( i1, i2, j1, j2, k1, k2, array, mode, offset, &
+                                   result, result_ijk, result1, result1_ijk )
 
           USE kinds
 
-          CHARACTER (LEN=*), INTENT(IN) ::  mode                     !< Siggi (entire module, some variables are still in German)
-          INTEGER(iwp), INTENT(IN)      ::  i1                       !< 
-          INTEGER(iwp), INTENT(IN)      ::  i2                       !< 
-          INTEGER(iwp), INTENT(IN)      ::  j1                       !< 
-          INTEGER(iwp), INTENT(IN)      ::  j2                       !< 
-          INTEGER(iwp), INTENT(IN)      ::  k1                       !< 
-          INTEGER(iwp), INTENT(IN)      ::  k2                       !<  
-          INTEGER(iwp)                  ::  wert_ijk(3)              !< 
-          INTEGER(iwp), OPTIONAL        ::  wert1_ijk(3)             !<  
-          REAL(wp)                      ::  offset                   !< 
-          REAL(wp)                      ::  wert                     !< 
-          REAL(wp), OPTIONAL            ::  wert1                    !< 
-          REAL(wp), INTENT(IN)          ::  feld(i1:i2,j1:j2,k1:k2)  !< 
+          CHARACTER (LEN=*), INTENT(IN) ::  mode                      !< mode of global min/max function: can be 'min', 'max', 'minmax', 'abs', or 'absoff'
+          INTEGER(iwp), INTENT(IN)      ::  i1                        !< internal index of min/max function
+          INTEGER(iwp), INTENT(IN)      ::  i2                        !< internal index of min/max function
+          INTEGER(iwp), INTENT(IN)      ::  j1                        !< internal index of min/max function
+          INTEGER(iwp), INTENT(IN)      ::  j2                        !< internal index of min/max function
+          INTEGER(iwp), INTENT(IN)      ::  k1                        !< internal index of min/max function
+          INTEGER(iwp), INTENT(IN)      ::  k2                        !< internal index of min/max function
+          INTEGER(iwp)                  ::  result_ijk(3)             !< grid index result of min/max function
+          INTEGER(iwp), OPTIONAL        ::  result1_ijk(3)            !< optional grid index result of min/max function
+          REAL(wp)                      ::  offset                    !< min/max function calculates absolute value with respect to an offset
+          REAL(wp)                      ::  result                    !< result of min/max function
+          REAL(wp), OPTIONAL            ::  result1                   !< optional result of min/max function
+          REAL(wp), INTENT(IN)          ::  array(i1:i2,j1:j2,k1:k2)  !< input array of min/max function
 
        END SUBROUTINE global_min_max
@@ -1818,5 +1811,5 @@
 ! ------------
 !> Definition of variables which define processor topology and the exchange of
-!> ghost point layers. This modules must be placed in all routines which contain
+!> ghost point layers. This module must be placed in all routines containing
 !> MPI-calls.
 !------------------------------------------------------------------------------!
@@ -1832,25 +1825,25 @@
 #endif
 #endif
-    CHARACTER(LEN=2) ::  send_receive = 'al'     !< Siggi
+    CHARACTER(LEN=2) ::  send_receive = 'al'     !<
     CHARACTER(LEN=7) ::  myid_char = ''          !< character string containing processor id number
     
-    INTEGER(iwp) ::  comm1dx                     !< Siggi
-    INTEGER(iwp) ::  comm1dy                     !< Siggi
-    INTEGER(iwp) ::  comm2d                      !< Siggi
-    INTEGER(iwp) ::  comm_inter                  !< Siggi
-    INTEGER(iwp) ::  comm_palm                   !< Siggi
+    INTEGER(iwp) ::  comm1dx                     !< communicator for domain decomposition along x
+    INTEGER(iwp) ::  comm1dy                     !< communicator for domain decomposition along y
+    INTEGER(iwp) ::  comm2d                      !< standard 2d (xy) communicator used in PALM for the process group the PE belongs to
+    INTEGER(iwp) ::  comm_inter                  !< intercommunicator that connects atmosphere/ocean process groups
+    INTEGER(iwp) ::  comm_palm                   !< internal communicator used during the MPI setup at the beginning of a run
     INTEGER(iwp) ::  id_inflow = 0               !< myidx of procs at inflow (turbulent inflow method)
     INTEGER(iwp) ::  id_outflow = 0              !< myidx of procs at outflow (turbulent outflow method)
     INTEGER(iwp) ::  id_outflow_source = 0       !< myidx of procs including ouflow source plane (turbulent outflow method)
     INTEGER(iwp) ::  id_recycling = 0            !< myidx of procs containing the recycling plane (turbulence recycling method)
-    INTEGER(iwp) ::  ierr                        !< Siggi
+    INTEGER(iwp) ::  ierr                        !< standard error parameter in MPI calls
     INTEGER(iwp) ::  myid = 0                    !< id number of processor element
     INTEGER(iwp) ::  myidx = 0                   !< id number of processor elements with same position along x-direction
     INTEGER(iwp) ::  myidy = 0                   !< id number of processor elements with same position along y-direction
-    INTEGER(iwp) ::  ndim = 2                    !< Siggi
-    INTEGER(iwp) ::  ngp_a                       !< number of grid points in atmosphere domain   Siggi
-    INTEGER(iwp) ::  ngp_o                       !< number of grid points in ocean domain   Siggi
-    INTEGER(iwp) ::  ngp_xy                      !< number of grid points at atmosphere-ocean interface   Siggi   
-    INTEGER(iwp) ::  ngp_y                       !< Siggi
+    INTEGER(iwp) ::  ndim = 2                    !< dimension of the virtual PE grid
+    INTEGER(iwp) ::  ngp_a                       !< used in atmosphere/ocean coupling: total number of horizontal grid points (atmosphere)
+    INTEGER(iwp) ::  ngp_o                       !< used in atmosphere/ocean coupling: total number of horizontal grid points (ocean)
+    INTEGER(iwp) ::  ngp_xy                      !< used in atmosphere/ocean coupling: number of grid points of the subdomain
+    INTEGER(iwp) ::  ngp_y                       !< number of subdomain grid points along y including ghost points
     INTEGER(iwp) ::  npex = -1                   !< number of processor elements in x-direction
     INTEGER(iwp) ::  npey = -1                   !< number of processor elements in y-direction
@@ -1862,12 +1855,11 @@
     INTEGER(iwp) ::  psouth                      !< MPI-address of the processor south of the current one
     INTEGER(iwp) ::  req_count = 0               !< MPI return variable - checks if Send-Receive operation is already finished
-    INTEGER(iwp) ::  sendrecvcount_xy            !< Siggi
-    INTEGER(iwp) ::  sendrecvcount_yz            !< Siggi
-    INTEGER(iwp) ::  sendrecvcount_zx            !< Siggi
-    INTEGER(iwp) ::  sendrecvcount_zyd           !< Siggi
-    INTEGER(iwp) ::  sendrecvcount_yxd           !< Siggi
-    INTEGER(iwp) ::  target_id                   !< Siggi
-    INTEGER(iwp) ::  tasks_per_node = -9999      !< MPI tasks per computing node 
-    INTEGER(iwp) ::  threads_per_task = 1        !< OPENMP threads per MPI task
+    INTEGER(iwp) ::  sendrecvcount_xy            !< number of subdomain gridpoints to be exchanged in direct transpositions (y --> x, or x --> y) or second (2d) transposition x --> y
+    INTEGER(iwp) ::  sendrecvcount_yz            !< number of subdomain gridpoints to be exchanged in third (2d) transposition y --> z
+    INTEGER(iwp) ::  sendrecvcount_zx            !< number of subdomain gridpoints to be exchanged in first (2d) transposition z --> x
+    INTEGER(iwp) ::  sendrecvcount_zyd           !< number of subdomain gridpoints to be exchanged in direct transpositions z --> y (used for calculating spectra)
+    INTEGER(iwp) ::  target_id                   !< in atmosphere/ocean coupling: id of the ocean/atmosphere counterpart PE with whom the atmosphere/ocean PE exchanges data
+    INTEGER(iwp) ::  tasks_per_node = -9999      !< MPI tasks per compute node
+    INTEGER(iwp) ::  threads_per_task = 1        !< number of OPENMP threads per MPI task
     INTEGER(iwp) ::  type_x                      !< derived MPI datatype for 2-D ghost-point exchange - north / south 
     INTEGER(iwp) ::  type_xy                     !< derived MPI datatype for 2-D ghost-point exchange - north / south 
@@ -1880,17 +1872,12 @@
     INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE ::  hor_index_bounds_previous_run  !< horizontal index bounds of previous run
 
-    LOGICAL ::  collective_wait = .FALSE.          !< Siggi
-    LOGICAL ::  sendrecv_in_background = .FALSE.   !< Siggi
+    LOGICAL ::  collective_wait = .FALSE.          !< switch to set an explicit MPI barrier in front of all collective MPI calls
 
 #if defined( __parallel )
-#if defined( __mpi2 )
-    CHARACTER (LEN=MPI_MAX_PORT_NAME) ::  port_name  !< Siggi
-#endif
-
-    INTEGER(iwp) ::  ibuf(12)                 !< Siggi
-    INTEGER(iwp) ::  pcoord(2)                !< Siggi
-    INTEGER(iwp) ::  status(MPI_STATUS_SIZE)  !< Siggi
+    INTEGER(iwp) ::  ibuf(12)                 !< internal buffer for calculating MPI settings
+    INTEGER(iwp) ::  pcoord(2)                !< PE coordinates along x and y
+    INTEGER(iwp) ::  status(MPI_STATUS_SIZE)  !< MPI status variable used in various MPI calls
     
-    INTEGER(iwp), DIMENSION(MPI_STATUS_SIZE,100) ::  wait_stat  !< Siggi
+    INTEGER(iwp), DIMENSION(MPI_STATUS_SIZE,100) ::  wait_stat  !< MPI status variable used in various MPI calls
     
     INTEGER(iwp) ::  ngp_yz_int   !< number of ghost points in yz-plane 
@@ -1907,10 +1894,10 @@
     LOGICAL ::  left_border_pe  = .FALSE.  !< = .TRUE. if PE is on left border of computational domain
     LOGICAL ::  north_border_pe = .FALSE.  !< = .TRUE. if PE is on north border of computational domain
-    LOGICAL ::  reorder = .TRUE.           !< Siggi
+    LOGICAL ::  reorder = .TRUE.           !< switch to allow MPI the reorder of ranking (e.g. row-major or column-major)
     LOGICAL ::  right_border_pe = .FALSE.  !< = .TRUE. if PE is on right border of computational domain
     LOGICAL ::  south_border_pe = .FALSE.  !< = .TRUE. if PE is on south border of computational domain
 
-    LOGICAL, DIMENSION(2) ::  cyclic = (/ .TRUE. , .TRUE. /)  !< Siggi
-    LOGICAL, DIMENSION(2) ::  remain_dims                     !< Siggi
+    LOGICAL, DIMENSION(2) ::  cyclic = (/ .TRUE. , .TRUE. /)  !< boundary conditions of the virtual PE grid
+    LOGICAL, DIMENSION(2) ::  remain_dims                     !< internal array used to determine sub-topologies for transpositions
 #endif
 
@@ -1929,7 +1916,7 @@
     USE kinds
 
-    INTEGER(iwp), PARAMETER ::  crmax = 100  !< Siggi (entire module)
-
-    CHARACTER (LEN=20), DIMENSION(20) ::  cross_ts_profiles = &  !< 
+    INTEGER(iwp), PARAMETER ::  crmax = 100  !< maximum number of coordinate systems for profile output
+
+    CHARACTER (LEN=20), DIMENSION(20) ::  cross_ts_profiles = &  !< time series to be plotted into one coordinate system, respectively
                            (/ ' E E*               ', ' dt                 ', &
                               ' u* w*              ', ' th*                ', &
@@ -1940,5 +1927,5 @@
                             ( '                    ', i9 = 1, 9 ) /)
 
-    CHARACTER (LEN=100), DIMENSION(crmax) ::  cross_profiles = &  !< 
+    CHARACTER (LEN=100), DIMENSION(crmax) ::  cross_profiles = &  !< quantities to be plotted into one coordinate system, respectively
                            (/ ' u v                           ', &
                               ' pt                            ', &
@@ -1949,29 +1936,10 @@
                          ( '                               ', i9 = 1, 94 ) /)
 
-    INTEGER(iwp) ::  profile_columns = 2  !< 
-    INTEGER(iwp) ::  profile_rows = 3     !< 
-    INTEGER(iwp) ::  profile_number = 0   !< 
-
-    INTEGER(iwp) ::  cross_ts_numbers(crmax,crmax) = 0  !< 
-    INTEGER(iwp) ::  cross_ts_number_count(crmax) = 0   !< 
-    INTEGER(iwp) ::  dopr_index(300) = 0                !< 
-    INTEGER(iwp) ::  dopr_initial_index(300) = 0        !< 
-    INTEGER(iwp) ::  dots_crossindex(100) = 0           !< 
-    INTEGER(iwp) ::  dots_index(100) = 0                !< 
+    INTEGER(iwp) ::  profile_columns = 2  !< number of coordinate systems on a profile plot per column
+    INTEGER(iwp) ::  profile_rows = 3     !< number of coordinate systems on a profile plot per row
+
+    INTEGER(iwp) ::  dopr_index(300) = 0                !< index number of respective profile quantity
+    INTEGER(iwp) ::  dopr_initial_index(300) = 0        !< index number of initial profiles to be output
                 
-
-    REAL(wp) ::  cross_ts_uymax(20) = &                    !< 
-                             (/ 999.999_wp, 999.999_wp, 999.999_wp, 999.999_wp, 999.999_wp,   &
-                                999.999_wp, 999.999_wp, 999.999_wp, 999.999_wp, 999.999_wp,   &
-                                999.999_wp, 999.999_wp, 999.999_wp, 999.999_wp, 999.999_wp,   &
-                                999.999_wp, 999.999_wp, 999.999_wp, 999.999_wp, 999.999_wp /)
-    REAL(wp) ::  cross_ts_uymax_computed(20) = 999.999_wp  !< 
-    REAL(wp) ::  cross_ts_uymin(20) = &                    !< 
-                             (/ 999.999_wp, 999.999_wp, 999.999_wp,  -5.000_wp, 999.999_wp,   &
-                                999.999_wp,   0.000_wp, 999.999_wp, 999.999_wp, 999.999_wp,   &
-                                999.999_wp, 999.999_wp, 999.999_wp, 999.999_wp, 999.999_wp,   &
-                                999.999_wp, 999.999_wp, 999.999_wp, 999.999_wp, 999.999_wp /)
-    REAL(wp) ::  cross_ts_uymin_computed(20) = 999.999_wp  !< 
-
     SAVE
 
@@ -2003,5 +1971,5 @@
     REAL(wp) ::  w_max  !< maximum of absolute w-veloctiy in entire domain
     
-    REAL(wp), DIMENSION(:), ALLOCATABLE ::  mean_surface_level_height  !< Siggi
+    REAL(wp), DIMENSION(:), ALLOCATABLE ::  mean_surface_level_height  !< mean surface level height for the different statistic regions
     REAL(wp), DIMENSION(:), ALLOCATABLE ::  sums_divnew_l              !< subdomain sum (_l) of divergence after pressure 
                                                                        !< solver call (new)
@@ -2051,20 +2019,20 @@
     USE kinds
 
-    INTEGER(iwp) ::  nxl_y   !< Siggi (entire module)
-    INTEGER(iwp) ::  nxl_yd  !< 
-    INTEGER(iwp) ::  nxl_z   !< 
-    INTEGER(iwp) ::  nxr_y   !< 
-    INTEGER(iwp) ::  nxr_yd  !< 
-    INTEGER(iwp) ::  nxr_z   !< 
-    INTEGER(iwp) ::  nyn_x   !< 
-    INTEGER(iwp) ::  nyn_z   !< 
-    INTEGER(iwp) ::  nys_x   !< 
-    INTEGER(iwp) ::  nys_z   !< 
-    INTEGER(iwp) ::  nzb_x   !< 
-    INTEGER(iwp) ::  nzb_y   !< 
-    INTEGER(iwp) ::  nzb_yd  !< 
-    INTEGER(iwp) ::  nzt_x   !< 
-    INTEGER(iwp) ::  nzt_y   !< 
-    INTEGER(iwp) ::  nzt_yd  !< 
+    INTEGER(iwp) ::  nxl_y   !< internal index bound for transpositions
+    INTEGER(iwp) ::  nxl_yd  !< internal index bound for transpositions
+    INTEGER(iwp) ::  nxl_z   !< internal index bound for transpositions
+    INTEGER(iwp) ::  nxr_y   !< internal index bound for transpositions
+    INTEGER(iwp) ::  nxr_yd  !< internal index bound for transpositions
+    INTEGER(iwp) ::  nxr_z   !< internal index bound for transpositions
+    INTEGER(iwp) ::  nyn_x   !< internal index bound for transpositions
+    INTEGER(iwp) ::  nyn_z   !< internal index bound for transpositions
+    INTEGER(iwp) ::  nys_x   !< internal index bound for transpositions
+    INTEGER(iwp) ::  nys_z   !< internal index bound for transpositions
+    INTEGER(iwp) ::  nzb_x   !< internal index bound for transpositions
+    INTEGER(iwp) ::  nzb_y   !< internal index bound for transpositions
+    INTEGER(iwp) ::  nzb_yd  !< internal index bound for transpositions
+    INTEGER(iwp) ::  nzt_x   !< internal index bound for transpositions
+    INTEGER(iwp) ::  nzt_y   !< internal index bound for transpositions
+    INTEGER(iwp) ::  nzt_yd  !< internal index bound for transpositions
                 
     SAVE
Index: palm/trunk/SOURCE/palm.f90
===================================================================
--- palm/trunk/SOURCE/palm.f90	(revision 2297)
+++ palm/trunk/SOURCE/palm.f90	(revision 2298)
@@ -25,4 +25,8 @@
 ! -----------------
 ! $Id$
+! type of write_binary changed from CHARACTER to LOGICAL,
+! user interface required revision updated, MPI2 related part removed
+! 
+! 2296 2017-06-28 07:53:56Z maronga
 ! Added call to new spinup routine
 ! 
@@ -236,5 +240,5 @@
 
     version = 'PALM 4.0'
-    user_interface_required_revision = 'r1819'
+    user_interface_required_revision = 'r2297'
 
 #if defined( __parallel )
@@ -425,5 +429,5 @@
 !
 !-- If required, write binary data for restart runs
-    IF ( write_binary(1:4) == 'true' )  THEN
+    IF ( write_binary )  THEN
 
        CALL cpu_log( log_point(22), 'write_3d_binary', 'start' )
@@ -475,5 +479,5 @@
           ENDIF
           CALL user_last_actions
-          IF ( write_binary(1:4) == 'true' )  CALL close_file( 14 )
+          IF ( write_binary )  CALL close_file( 14 )
        ENDIF
 #if defined( __parallel )
@@ -485,16 +489,4 @@
     CALL cpu_log( log_point(4), 'last actions', 'stop' )
 
-#if defined( __mpi2 )
-!
-!-- Test exchange via intercommunicator in case of a MPI-2 coupling
-    IF ( coupling_mode == 'atmosphere_to_ocean' )  THEN
-       i = 12345 + myid
-       CALL MPI_SEND( i, 1, MPI_INTEGER, myid, 11, comm_inter, ierr )
-    ELSEIF ( coupling_mode == 'ocean_to_atmosphere' )  THEN
-       CALL MPI_RECV( i, 1, MPI_INTEGER, myid, 11, comm_inter, status, ierr )
-       PRINT*, '### myid: ', myid, '   received from atmosphere:  i = ', i
-    ENDIF
-#endif
-
 !
 !-- Write run number to file (used by mrun to create unified cycle numbers for
Index: palm/trunk/SOURCE/parin.f90
===================================================================
--- palm/trunk/SOURCE/parin.f90	(revision 2297)
+++ palm/trunk/SOURCE/parin.f90	(revision 2298)
@@ -25,4 +25,8 @@
 ! -----------------
 ! $Id$
+! -return_addres, return_username in ENVPAR, -cross_ts_uymax, cross_ts_uymin in
+! d3par
+! 
+! 2296 2017-06-28 07:53:56Z maronga
 ! Added parameters for model spinup
 ! 
@@ -315,6 +319,5 @@
 
     USE profil_parameter,                                                      &
-        ONLY:  cross_profiles, cross_ts_uymax, cross_ts_uymin,                 &
-               profile_columns, profile_rows
+        ONLY:  cross_profiles, profile_columns, profile_rows
 
     USE progress_bar,                                                          &
@@ -412,6 +415,5 @@
     NAMELIST /d3par/  averaging_interval, averaging_interval_pr,               &
              cpu_log_barrierwait, create_disturbances,                         &
-             cross_profiles, cross_ts_uymax, cross_ts_uymin,                   &
-             data_output, data_output_masks,                                   &
+             cross_profiles, data_output, data_output_masks,                   &
              data_output_pr, data_output_2d_on_each_pe, disturbance_amplitude, &
              disturbance_energy_limit, disturbance_level_b,                    &
@@ -435,6 +437,5 @@
     NAMELIST /envpar/  batch_job, host, local_dvrserver_running,               &
                        maximum_cpu_time_allowed, maximum_parallel_io_streams,  &
-                       revision, return_addres, return_username,               &
-                       run_identifier, tasks_per_node, write_binary
+                       revision, run_identifier, tasks_per_node, write_binary
 
 !
Index: palm/trunk/SOURCE/poismg_mod.f90
===================================================================
--- palm/trunk/SOURCE/poismg_mod.f90	(revision 2297)
+++ palm/trunk/SOURCE/poismg_mod.f90	(revision 2298)
@@ -25,4 +25,7 @@
 ! -----------------
 ! $Id$
+! sendrecv_in_background related parts removed
+! 
+! 2232 2017-05-30 17:47:52Z suehring
 !
 ! 2073 2016-11-30 14:34:05Z raasch
@@ -1850,5 +1853,4 @@
        INTEGER(iwp) ::  ixr      !< index for upper local PE boundary along x 
 
-       LOGICAL      ::  sendrecv_in_background_save  !< dummy to reset sendrecv_in_background to prescribed value
        LOGICAL      ::  synchronous_exchange_save    !< dummy to reset synchronous_exchange to prescribed value
 
@@ -1856,6 +1858,4 @@
 
 #if defined ( __parallel )
-       sendrecv_in_background_save = sendrecv_in_background
-       sendrecv_in_background      = .FALSE.
        synchronous_exchange_save   = synchronous_exchange
        synchronous_exchange        = .FALSE.
@@ -2357,5 +2357,4 @@
 !
 !--    Reset values to default PALM setup
-       sendrecv_in_background = sendrecv_in_background_save
        synchronous_exchange   = synchronous_exchange_save
        send_receive = 'al'
Index: palm/trunk/SOURCE/pres.f90
===================================================================
--- palm/trunk/SOURCE/pres.f90	(revision 2297)
+++ palm/trunk/SOURCE/pres.f90	(revision 2298)
@@ -25,4 +25,7 @@
 ! -----------------
 ! $Id$
+! comment changed + some formatting
+! 
+! 2233 2017-05-30 18:08:54Z suehring
 !
 ! 2232 2017-05-30 17:47:52Z suehring
@@ -537,7 +540,7 @@
           !$OMP PARALLEL DO PRIVATE( i, j, k )
           DO  m = 1, bc_h(0)%ns
-             i             = bc_h(0)%i(m)            
-             j             = bc_h(0)%j(m)
-             k             = bc_h(0)%k(m)
+             i = bc_h(0)%i(m)
+             j = bc_h(0)%j(m)
+             k = bc_h(0)%k(m)
              tend(k-1,j,i) = tend(k,j,i)
           ENDDO
@@ -546,7 +549,7 @@
           !$OMP PARALLEL DO PRIVATE( i, j, k )
           DO  m = 1, bc_h(1)%ns
-             i             = bc_h(1)%i(m)            
-             j             = bc_h(1)%j(m)
-             k             = bc_h(1)%k(m)
+             i = bc_h(1)%i(m)
+             j = bc_h(1)%j(m)
+             k = bc_h(1)%k(m)
              tend(k+1,j,i) = tend(k,j,i)
           ENDDO
@@ -559,7 +562,7 @@
           !$OMP PARALLEL DO PRIVATE( i, j, k )
           DO  m = 1, bc_h(0)%ns
-             i             = bc_h(0)%i(m)            
-             j             = bc_h(0)%j(m)
-             k             = bc_h(0)%k(m)
+             i = bc_h(0)%i(m)
+             j = bc_h(0)%j(m)
+             k = bc_h(0)%k(m)
              tend(k-1,j,i) = 0.0_wp
           ENDDO
@@ -568,7 +571,7 @@
           !$OMP PARALLEL DO PRIVATE( i, j, k )
           DO  m = 1, bc_h(1)%ns
-             i             = bc_h(1)%i(m)            
-             j             = bc_h(1)%j(m)
-             k             = bc_h(1)%k(m)
+             i = bc_h(1)%i(m)
+             j = bc_h(1)%j(m)
+             k = bc_h(1)%k(m)
              tend(k+1,j,i) = 0.0_wp
           ENDDO
@@ -616,7 +619,5 @@
 !
 !--    Solve Poisson equation for perturbation pressure using Multigrid scheme,
-!--    array tend is used to store the residuals, logical exchange_mg is used
-!--    to discern data exchange in multigrid ( 1 ghostpoint ) and normal grid
-!--    ( nbgp ghost points ).
+!--    array tend is used to store the residuals.
 
 !--    If the number of grid points of the gathered grid, which is collected
Index: palm/trunk/SOURCE/radiation_model_mod.f90
===================================================================
--- palm/trunk/SOURCE/radiation_model_mod.f90	(revision 2297)
+++ palm/trunk/SOURCE/radiation_model_mod.f90	(revision 2298)
@@ -25,4 +25,7 @@
 ! -----------------
 ! $Id$
+! type of write_binary changed from CHARACTER to LOGICAL
+! 
+! 2296 2017-06-28 07:53:56Z maronga
 ! Added output of rad_sw_out for radiation_scheme = 'constant'
 ! 
@@ -3342,5 +3345,5 @@
     IMPLICIT NONE
 
-    IF ( write_binary(1:4) == 'true' )  THEN
+    IF ( write_binary )  THEN
        IF ( ALLOCATED( rad_net ) )  THEN
           WRITE ( 14 )  'rad_net             ';  WRITE ( 14 )  rad_net  
Index: palm/trunk/SOURCE/user_last_actions.f90
===================================================================
--- palm/trunk/SOURCE/user_last_actions.f90	(revision 2297)
+++ palm/trunk/SOURCE/user_last_actions.f90	(revision 2298)
@@ -25,4 +25,7 @@
 ! -----------------
 ! $Id$
+! type of write_binary changed from CHARACTER to LOGICAL
+! 
+! 2101 2017-01-05 16:42:31Z suehring
 !
 ! 2000 2016-08-20 18:09:15Z knoop
@@ -59,5 +62,5 @@
 !-- Here the user-defined actions at the end of a job follow.
 !-- Sample for user-defined output:
-    IF ( write_binary(1:4) == 'true' )  THEN
+    IF ( write_binary )  THEN
 !       IF ( ALLOCATED( u2_av ) )  THEN
 !          WRITE ( 14 )  'u2_av               ';  WRITE ( 14 )  u2_av
Index: palm/trunk/SOURCE/user_parin.f90
===================================================================
--- palm/trunk/SOURCE/user_parin.f90	(revision 2297)
+++ palm/trunk/SOURCE/user_parin.f90	(revision 2298)
@@ -25,4 +25,7 @@
 ! -----------------
 ! $Id$
+! user interface current revision updated
+! 
+! 2101 2017-01-05 16:42:31Z suehring
 !
 ! 2000 2016-08-20 18:09:15Z knoop
@@ -99,5 +102,5 @@
 !-- current revision does not match with previous revisions (e.g. if routines
 !-- have been added/deleted or if parameter lists in subroutines have been changed).
-    user_interface_current_revision = 'r1819'
+    user_interface_current_revision = 'r2297'
 
 !
