Ignore:
Timestamp:
Jul 6, 2020 3:56:08 PM (10 months ago)
Author:
raasch
Message:

files re-formatted to follow the PALM coding standard

File:
1 edited

Legend:

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

    r4539 r4591  
    11!> @file restart_data_mpi_io_mod.f90
    2 !------------------------------------------------------------------------------!
     2!--------------------------------------------------------------------------------------------------!
    33! This file is part of the PALM model system.
    44!
     
    1515!
    1616! Copyright 1997-2020 Leibniz Universitaet Hannover
    17 ! -------------------------------------------------------------------------------------------------!
     17!--------------------------------------------------------------------------------------------------!
     18!
    1819!
    1920! Current revisions:
    2021! -----------------
    21 ! 
    22 ! 
     22!
     23!
    2324! Former revisions:
    2425! -----------------
    2526! $Id$
    26 ! checks added, if index limits in header are exceeded
    27 ! bugfix in rrd_mpi_io_int_2d
    28 !
     27! File re-formatted to follow the PALM coding standard
     28!
     29!
     30! 4539 2020-05-18 14:05:17Z raasch
     31! Checks added, if index limits in header are exceeded
     32! Bugfix in rrd_mpi_io_int_2d
     33!
    2934! 4536 2020-05-17 17:24:13Z raasch
    30 ! messages and debug output converted to PALM routines
    31 ! 
     35! Messages and debug output converted to PALM routines
     36!
    3237! 4534 2020-05-14 18:35:22Z raasch
    3338! I/O on reduced number of cores added (using shared memory MPI)
    34 ! 
     39!
    3540! 4500 2020-04-17 10:12:45Z suehring
    3641! Fix too long lines
    37 ! 
     42!
    3843! 4498 2020-04-15 14:26:31Z raasch
    39 ! bugfix for creation of filetypes, argument removed from rd_mpi_io_open
    40 ! 
     44! Bugfix for creation of filetypes, argument removed from rd_mpi_io_open
     45!
    4146! 4497 2020-04-15 10:20:51Z raasch
    42 ! last bugfix deactivated because of compile problems
    43 ! 
     47! Last bugfix deactivated because of compile problems
     48!
    4449! 4496 2020-04-15 08:37:26Z raasch
    45 ! problem with posix read arguments for surface data fixed
    46 ! 
     50! Problem with posix read arguments for surface data fixed
     51!
    4752! 4495 2020-04-13 20:11:20Z raasch
    4853! Initial version (K. Ketelsen), adjusted to PALM formatting standards (s. Raasch)
    4954!
    50 ! 
     55!
    5156!
    5257! Description:
     
    6469#else
    6570    USE posix_interface,                                                                           &
    66         ONLY:  posix_close, posix_lseek, posix_open, posix_read, posix_write
     71        ONLY:  posix_close,                                                                        &
     72               posix_lseek,                                                                        &
     73               posix_open,                                                                         &
     74               posix_read,                                                                         &
     75               posix_write
    6776#endif
    6877
     
    7079
    7180    USE control_parameters,                                                                        &
    72         ONLY:  debug_output, debug_string, include_total_domain_boundaries, message_string,        &
    73                restart_data_format_input, restart_data_format_output, restart_file_size
     81        ONLY:  debug_output,                                                                       &
     82               debug_string,                                                                       &
     83               include_total_domain_boundaries,                                                    &
     84               message_string,                                                                     &
     85               restart_data_format_input,                                                          &
     86               restart_data_format_output,                                                         &
     87               restart_file_size
    7488
    7589    USE exchange_horiz_mod,                                                                        &
    76         ONLY:  exchange_horiz, exchange_horiz_2d
     90        ONLY:  exchange_horiz,                                                                     &
     91               exchange_horiz_2d
    7792
    7893    USE indices,                                                                                   &
    79         ONLY:  nbgp, nnx, nny, nx, nxl, nxlg, nxr, nxrg, ny, nyn, nyng, nys, nysg, nz, nzb, nzt
     94        ONLY:  nbgp,                                                                               &
     95               nnx,                                                                                &
     96               nny,                                                                                &
     97               nx,                                                                                 &
     98               nxl,                                                                                &
     99               nxlg,                                                                               &
     100               nxr,                                                                                &
     101               nxrg,                                                                               &
     102               ny,                                                                                 &
     103               nyn,                                                                                &
     104               nyng,                                                                               &
     105               nys,                                                                                &
     106               nysg,                                                                               &
     107               nz,                                                                                 &
     108               nzb,                                                                                &
     109               nzt
    80110
    81111    USE kinds
    82112
    83113    USE pegrid,                                                                                    &
    84         ONLY:  comm1dx, comm1dy, comm2d, myid, myidx, myidy, npex, npey, numprocs, pdims
     114        ONLY:  comm1dx,                                                                            &
     115               comm1dy,                                                                            &
     116               comm2d,                                                                             &
     117               myid,                                                                               &
     118               myidx,                                                                              &
     119               myidy,                                                                              &
     120               npex,                                                                               &
     121               npey,                                                                               &
     122               numprocs,                                                                           &
     123               pdims
    85124
    86125    USE shared_memory_io_mod,                                                                      &
    87         ONLY:  local_boundaries, sm_class
    88 
    89 
    90     IMPLICIT NONE
    91 
    92     CHARACTER(LEN=128) :: io_file_name  !> internal variable to communicate filename between
    93                                         !> different subroutines
     126        ONLY:  local_boundaries,                                                                   &
     127               sm_class
     128
     129
     130    IMPLICIT NONE
     131
     132    CHARACTER(LEN=128) ::  io_file_name  !> internal variable to communicate filename between different subroutines
    94133
    95134#if defined( __parallel )
     
    99138#else
    100139    INTEGER(iwp), PARAMETER ::  rd_offset_kind = C_SIZE_T         !<
    101     INTEGER(iwp), PARAMETER ::  rd_status_size = 1       !< Not required in sequential mode
    102 #endif
    103 
    104     INTEGER(iwp)            ::  debug_level = 1 !< TODO: replace with standard debug output steering
    105 
    106     INTEGER(iwp)            ::  comm_io       !< Communicator for MPI-IO
    107     INTEGER(iwp)            ::  fh            !< MPI-IO file handle
    108 #if defined( __parallel )
    109     INTEGER(iwp)            ::  fhs = -1      !< MPI-IO file handle to open file with comm2d always
    110 #endif
    111     INTEGER(iwp)            ::  ft_surf = -1  !< MPI filetype surface data
    112 #if defined( __parallel )
    113     INTEGER(iwp)            ::  ft_2di_nb     !< MPI filetype 2D array INTEGER no outer boundary
    114     INTEGER(iwp)            ::  ft_2d         !< MPI filetype 2D array REAL with outer boundaries
    115     INTEGER(iwp)            ::  ft_3d         !< MPI filetype 3D array REAL with outer boundaries
    116     INTEGER(iwp)            ::  ft_3dsoil     !< MPI filetype for 3d-soil array
    117 #endif
    118     INTEGER(iwp)            ::  glo_start     !< global start index on this PE
    119 #if defined( __parallel )
    120     INTEGER(iwp)            ::  local_start   !<
    121 #endif
    122     INTEGER(iwp)            ::  nr_iope       !<
    123     INTEGER(iwp)            ::  nr_val        !< local number of values in x and y direction
    124 #if defined( __parallel )
    125     INTEGER(iwp)            ::  win_2di
    126     INTEGER(iwp)            ::  win_2dr
    127     INTEGER(iwp)            ::  win_3dr
    128     INTEGER(iwp)            ::  win_3ds
    129     INTEGER(iwp)            ::  win_surf = -1
    130 #endif
    131     INTEGER(iwp)            ::  total_number_of_surface_values    !< total number of values for one variable
     140    INTEGER(iwp), PARAMETER ::  rd_status_size = 1                !< Not required in sequential mode
     141#endif
     142
     143    INTEGER(iwp)            ::  debug_level = 1  !< TODO: replace with standard debug output steering
     144
     145    INTEGER(iwp)            ::  comm_io          !< Communicator for MPI-IO
     146    INTEGER(iwp)            ::  fh               !< MPI-IO file handle
     147#if defined( __parallel )
     148    INTEGER(iwp)            ::  fhs = -1         !< MPI-IO file handle to open file with comm2d always
     149#endif
     150    INTEGER(iwp)            ::  ft_surf = -1     !< MPI filetype surface data
     151#if defined( __parallel )
     152    INTEGER(iwp)            ::  ft_2di_nb        !< MPI filetype 2D array INTEGER no outer boundary
     153    INTEGER(iwp)            ::  ft_2d            !< MPI filetype 2D array REAL with outer boundaries
     154    INTEGER(iwp)            ::  ft_3d            !< MPI filetype 3D array REAL with outer boundaries
     155    INTEGER(iwp)            ::  ft_3dsoil        !< MPI filetype for 3d-soil array
     156#endif
     157    INTEGER(iwp)            ::  glo_start        !< global start index on this PE
     158#if defined( __parallel )
     159    INTEGER(iwp)            ::  local_start      !<
     160#endif
     161    INTEGER(iwp)            ::  nr_iope          !<
     162    INTEGER(iwp)            ::  nr_val           !< local number of values in x and y direction
     163#if defined( __parallel )
     164    INTEGER(iwp)            ::  win_2di          !<
     165    INTEGER(iwp)            ::  win_2dr          !<
     166    INTEGER(iwp)            ::  win_3dr          !<
     167    INTEGER(iwp)            ::  win_3ds          !<
     168    INTEGER(iwp)            ::  win_surf = -1    !<
     169#endif
     170    INTEGER(iwp)            ::  total_number_of_surface_values  !< total number of values for one variable
    132171
    133172    INTEGER(KIND=rd_offset_kind) ::  array_position   !<
     
    137176
    138177    INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE ::  m_end_index     !<
     178    INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE ::  m_global_start  !<
    139179    INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE ::  m_start_index   !<
    140     INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE ::  m_global_start  !<
    141 
    142     LOGICAL ::  all_pes_write                     !< all PEs have data to write
    143     LOGICAL ::  filetypes_created                 !<
    144     LOGICAL ::  io_on_limited_cores_per_node      !< switch to shared memory MPI-IO
    145     LOGICAL ::  rd_flag                           !< file is opened for read
    146     LOGICAL ::  wr_flag                           !< file is opened for write
     180
     181
     182    LOGICAL ::  all_pes_write                 !< all PEs have data to write
     183    LOGICAL ::  filetypes_created             !<
     184    LOGICAL ::  io_on_limited_cores_per_node  !< switch to shared memory MPI-IO
     185    LOGICAL ::  rd_flag                       !< file is opened for read
     186    LOGICAL ::  wr_flag                       !< file is opened for write
    147187
    148188#if defined( __parallel )
     
    160200!-- General Header (first 32 byte in restart file)
    161201    TYPE general_header
     202       INTEGER(iwp) :: endian         !< little endian (1) or big endian (2) internal format
     203       INTEGER(iwp) :: i_outer_bound  !< if 1, outer boundaries are stored in restart file
     204       INTEGER(iwp) :: nr_arrays      !< number of arrays in restart files
     205       INTEGER(iwp) :: nr_char        !< number of Text strings entries in header
    162206       INTEGER(iwp) :: nr_int         !< number of INTEGER entries in header
    163        INTEGER(iwp) :: nr_char        !< number of Text strings entries in header
    164207       INTEGER(iwp) :: nr_real        !< number of REAL entries in header
    165        INTEGER(iwp) :: nr_arrays      !< number of arrays in restart files
    166208       INTEGER(iwp) :: total_nx       !< total number of points in x-direction
    167209       INTEGER(iwp) :: total_ny       !< total number of points in y-direction
    168        INTEGER(iwp) :: i_outer_bound  !< if 1, outer boundaries are stored in restart file
    169        INTEGER(iwp) :: endian         !< little endian (1) or big endian (2) internal format
    170210    END TYPE general_header
    171211
    172     TYPE(general_header), TARGET ::  tgh
    173 
    174     TYPE(sm_class)               ::  sm_io
     212    TYPE(general_header), TARGET ::  tgh    !<
     213
     214    TYPE(sm_class)               ::  sm_io  !<
    175215
    176216!
     
    194234    CHARACTER(LEN=32), DIMENSION(max_nr_arrays) ::  array_names
    195235    INTEGER(KIND=rd_offset_kind), DIMENSION(max_nr_arrays) :: array_offset
    196 
    197236    SAVE
    198237
     
    267306    END INTERFACE wrd_mpi_io_surface
    268307
    269     PUBLIC  rd_mpi_io_check_array, rd_mpi_io_close, rd_mpi_io_open, rrd_mpi_io,                    &
    270             rrd_mpi_io_global_array, rrd_mpi_io_surface, rd_mpi_io_surface_filetypes, wrd_mpi_io,  &
    271             wrd_mpi_io_global_array, wrd_mpi_io_surface
     308    PUBLIC  rd_mpi_io_check_array,                                                                 &
     309            rd_mpi_io_close,                                                                       &
     310            rd_mpi_io_open,                                                                        &
     311            rrd_mpi_io,                                                                            &
     312            rrd_mpi_io_global_array,                                                               &
     313            rrd_mpi_io_surface,                                                                    &
     314            rd_mpi_io_surface_filetypes,                                                           &
     315            wrd_mpi_io,                                                                            &
     316            wrd_mpi_io_global_array,                                                               &
     317            wrd_mpi_io_surface
    272318
    273319
     
    284330    IMPLICIT NONE
    285331
    286     CHARACTER(LEN=*), INTENT(IN)  ::  action                           !<
    287     CHARACTER(LEN=*), INTENT(IN)  ::  file_name                        !<
    288 
    289     INTEGER(iwp)                  ::  i                                !<
    290     INTEGER(iwp)                  ::  gh_size                          !<
    291 
    292     INTEGER(KIND=rd_offset_kind)  ::  offset                           !<
    293 
    294 #if defined( __parallel )
    295     INTEGER, DIMENSION(rd_status_size) ::  status                      !<
    296 #endif
    297 
    298     LOGICAL, INTENT(IN), OPTIONAL ::  open_for_global_io_only          !<
    299     LOGICAL                       ::  set_filetype                     !<
     332    CHARACTER(LEN=*), INTENT(IN) ::  action     !<
     333    CHARACTER(LEN=*), INTENT(IN) ::  file_name  !<
     334
     335    INTEGER(iwp)                 ::  i          !<
     336    INTEGER(iwp)                 ::  gh_size    !<
     337
     338    INTEGER(KIND=rd_offset_kind) ::  offset     !<
     339
     340#if defined( __parallel )
     341    INTEGER, DIMENSION(rd_status_size) ::  status  !<
     342#endif
     343
     344    LOGICAL, INTENT(IN), OPTIONAL ::  open_for_global_io_only  !<
     345    LOGICAL                       ::  set_filetype             !<
    300346
    301347#if ! defined( __parallel )
    302     TYPE(C_PTR)                   ::  buf_ptr                          !<
     348    TYPE(C_PTR)                   ::  buf_ptr  !<
    303349#endif
    304350
     
    377423
    378424          IF ( ierr /= 0 )  THEN
    379              message_string = 'error opening restart file "' // TRIM( io_file_name ) //      &
     425             message_string = 'error opening restart file "' // TRIM( io_file_name ) //            &
    380426                              '" for reading with MPI-IO'
    381427             CALL message( 'rrd_mpi_io_open', 'PA0727', 3, 2, 0, 6, 0 )
     
    400446
    401447          IF ( ierr /= 0 )  THEN
    402              message_string = 'error opening restart file "' // TRIM( io_file_name ) //      &
     448             message_string = 'error opening restart file "' // TRIM( io_file_name ) //            &
    403449                              '" for writing with MPI-IO'
    404450             CALL message( 'rrd_mpi_io_open', 'PA0728', 3, 2, 0, 6, 0 )
     
    418464
    419465       IF ( debug_output )  THEN
    420           WRITE( debug_string, * )  'open restart file "' // TRIM( io_file_name ) //            &
     466          WRITE( debug_string, * )  'open restart file "' // TRIM( io_file_name ) //               &
    421467                                    '" for read in serial mode (posix)'
    422468          CALL debug_message( debug_string, 'start' )
     
    426472
    427473       IF ( debug_output )  THEN
    428           WRITE( debug_string, * )  'open restart file "' // TRIM( io_file_name ) //            &
     474          WRITE( debug_string, * )  'open restart file "' // TRIM( io_file_name ) //               &
    429475                                    '" for read in serial mode (posix)'
    430476          CALL debug_message( debug_string, 'end' )
     
    434480
    435481       IF ( debug_output )  THEN
    436           WRITE( debug_string, * )  'open restart file "' // TRIM( io_file_name ) //            &
     482          WRITE( debug_string, * )  'open restart file "' // TRIM( io_file_name ) //               &
    437483                                    '" for write in serial mode (posix)'
    438484          CALL debug_message( debug_string, 'start' )
     
    442488
    443489       IF ( debug_output )  THEN
    444           WRITE( debug_string, * )  'open restart file "' // TRIM( io_file_name ) //            &
     490          WRITE( debug_string, * )  'open restart file "' // TRIM( io_file_name ) //               &
    445491                                    '" for write in serial mode (posix)'
    446492          CALL debug_message( debug_string, 'end' )
     
    479525    header_int_index = header_int_index+3
    480526
    481     DO   i = 1, max_nr_arrays
     527    DO  i = 1, max_nr_arrays
    482528       array_offset(i) = 0
    483529       array_names(i)  = ' '
     
    489535       IF ( sm_io%iam_io_pe )  THEN
    490536!
    491 !--       File is open for read.
     537!--       File is open for reading
    492538#if defined( __parallel )
    493539!--       Set the default view
     
    513559
    514560!
    515 !--    File types depend on if boundaries of the total domain is included in data. This has been
     561!--    File types depend on boundaries of the total domain being included in data. This has been
    516562!--    checked with the previous statement.
    517563       IF ( set_filetype )  THEN
     
    535581          CALL MPI_FILE_SEEK( fh, header_position, MPI_SEEK_SET, ierr )
    536582          CALL MPI_FILE_READ( fh, text_lines, SIZE( text_lines ) * 128, MPI_CHAR, status, ierr )
    537           header_position = header_position+size(text_lines) * 128
     583          header_position = header_position + SIZE ( text_lines ) * 128
    538584!
    539585!--       REAL values
     
    640686    INTEGER(iwp) ::  i  !<
    641687
    642     LOGICAl      ::  found  !<
     688    LOGICAl ::  found  !<
    643689
    644690
     
    666712    IMPLICIT NONE
    667713
    668     CHARACTER(LEN=*), INTENT(IN)   :: name
    669 
    670     INTEGER(iwp)                   ::  i
    671     INTEGER(KIND=iwp), INTENT(OUT) ::  value
    672 
    673     LOGICAL                        ::  found
     714    CHARACTER(LEN=*), INTENT(IN) :: name  !<
     715
     716    INTEGER(iwp)                   ::  i      !<
     717    INTEGER(KIND=iwp), INTENT(OUT) ::  value  !<
     718
     719    LOGICAL ::  found  !<
    674720
    675721
     
    703749    IMPLICIT NONE
    704750
    705     CHARACTER(LEN=*), INTENT(IN)   ::  name
    706 
    707     INTEGER(iwp)                   ::  i
    708 
    709     LOGICAL                        ::  found
    710 
    711     REAL(KIND=wp), INTENT(OUT)     ::  value
     751    CHARACTER(LEN=*), INTENT(IN) ::  name   !<
     752
     753    INTEGER(iwp)                 ::  i      !<
     754
     755    LOGICAL                      ::  found  !<
     756
     757    REAL(KIND=wp), INTENT(OUT)   ::  value  !<
    712758
    713759
     
    741787    IMPLICIT NONE
    742788
    743     CHARACTER(LEN=*), INTENT(IN)       ::  name
    744 
    745 #if defined( __parallel )
    746     INTEGER, DIMENSION(rd_status_size) ::  status
    747 #endif
    748     INTEGER(iwp)                       ::  i
    749 
    750     LOGICAL                            ::  found
    751 
    752     REAL(wp), INTENT(INOUT), DIMENSION(nysg:nyng,nxlg:nxrg) ::  data
     789    CHARACTER(LEN=*), INTENT(IN)       ::  name    !<
     790
     791#if defined( __parallel )
     792    INTEGER, DIMENSION(rd_status_size) ::  status  !<
     793#endif
     794    INTEGER(iwp)                       ::  i       !<
     795
     796    LOGICAL                            ::  found   !<
     797
     798    REAL(wp), INTENT(INOUT), DIMENSION(nysg:nyng,nxlg:nxrg) ::  data  !<
    753799
    754800
     
    765811    IF ( found )  THEN
    766812#if defined( __parallel )
    767        CALL sm_io%sm_node_barrier()  ! has no effect if I/O on limited number of cores is inactive
     813       CALL sm_io%sm_node_barrier()  ! Has no effect if I/O on limited number of cores is inactive
    768814       IF ( sm_io%iam_io_pe )  THEN
    769           CALL MPI_FILE_SET_VIEW( fh, array_position, MPI_REAL, ft_2d, 'native', MPI_INFO_NULL,   &
     815          CALL MPI_FILE_SET_VIEW( fh, array_position, MPI_REAL, ft_2d, 'native', MPI_INFO_NULL,    &
    770816                                  ierr )
    771817          CALL MPI_FILE_READ_ALL( fh, array_2d, SIZE( array_2d ), MPI_REAL, status, ierr )
     
    809855    IMPLICIT NONE
    810856
    811     CHARACTER(LEN=*), INTENT(IN)        ::  name
    812 
    813     INTEGER(iwp)                        ::  i
    814     INTEGER(iwp)                        ::  j
    815 
    816 #if defined( __parallel )
    817     INTEGER, DIMENSION(rd_status_size)  ::  status
    818 #endif
    819 
    820     INTEGER(KIND=iwp), INTENT(INOUT), DIMENSION(:,:) ::  data
    821 
    822     LOGICAL                             ::  found
     857    CHARACTER(LEN=*), INTENT(IN)       ::  name    !<
     858
     859    INTEGER(iwp)                       ::  i       !<
     860    INTEGER(iwp)                       ::  j       !<
     861
     862#if defined( __parallel )
     863    INTEGER, DIMENSION(rd_status_size) ::  status  !<
     864#endif
     865
     866    INTEGER(KIND=iwp), INTENT(INOUT), DIMENSION(:,:) ::  data  !<
     867
     868    LOGICAL ::  found  !<
    823869
    824870
     
    835881    IF ( found )  THEN
    836882
    837        IF ( ( nxr - nxl + 1 + 2*nbgp ) == SIZE( data, 2 ) )  THEN
     883       IF ( ( nxr - nxl + 1 + 2 * nbgp ) == SIZE( data, 2 ) )  THEN
    838884!
    839885!--       Output array with Halos.
    840 !--       ATTENTION: INTEGER array with ghost boundaries are not implemented yet. This kind of array
    841 !--                  would be dimensioned in the caller subroutine like this:
     886!--       ATTENTION: INTEGER arrays with ghost boundaries are not implemented yet. This kind of
     887!--                  array would be dimensioned in the caller subroutine like this:
    842888!--                  INTEGER, DIMENSION(nysg:nyng,nxlg:nxrg)::  data
    843889          message_string = '2d-INTEGER array "' // TRIM( name ) // '" to be read from restart ' // &
     
    845891          CALL message( 'rrd_mpi_io_int_2d', 'PA0723', 3, 2, 0, 6, 0 )
    846892
    847        ELSEIF ( (nxr-nxl+1) == SIZE( data, 2 ) )  THEN
     893       ELSEIF ( (nxr - nxl + 1) == SIZE( data, 2 ) )  THEN
    848894!
    849895!--       INTEGER input array without Halos.
     
    852898
    853899#if defined( __parallel )
    854           CALL sm_io%sm_node_barrier() ! has no effect if I/O on limited number of cores is inactive
     900          CALL sm_io%sm_node_barrier() ! Has no effect if I/O on limited number of cores is inactive
    855901          IF ( sm_io%iam_io_pe )  THEN
    856902             CALL MPI_FILE_SET_VIEW( fh, array_position, MPI_INTEGER, ft_2di_nb, 'native',         &
     
    898944    IMPLICIT NONE
    899945
    900     CHARACTER(LEN=*), INTENT(IN)       ::  name
    901 
    902     INTEGER(iwp)                       ::  i
    903 
    904 #if defined( __parallel )
    905     INTEGER, DIMENSION(rd_status_size) ::  status
    906 #endif
    907 
    908     LOGICAL                            ::  found
    909 
    910     REAL(wp), INTENT(INOUT), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  data
     946    CHARACTER(LEN=*), INTENT(IN)       ::  name    !<
     947
     948    INTEGER(iwp)                       ::  i       !<
     949
     950#if defined( __parallel )
     951    INTEGER, DIMENSION(rd_status_size) ::  status  !<
     952#endif
     953
     954    LOGICAL                            ::  found   !<
     955
     956    REAL(wp), INTENT(INOUT), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  data  !<
    911957
    912958
     
    923969    IF ( found )  THEN
    924970#if defined( __parallel )
    925        CALL sm_io%sm_node_barrier()  ! has no effect if I/O on limited number of cores is inactive
     971       CALL sm_io%sm_node_barrier()  ! Has no effect if I/O on limited number of cores is inactive
    926972       IF( sm_io%iam_io_pe )  THEN
    927973          CALL MPI_FILE_SET_VIEW( fh, array_position, MPI_REAL, ft_3d, 'native', MPI_INFO_NULL,    &
     
    9681014    IMPLICIT NONE
    9691015
    970     CHARACTER(LEN=*), INTENT(IN)       ::  name
    971 
    972     INTEGER(iwp)                       ::  i
    973     INTEGER, INTENT(IN)                ::  nzb_soil
    974     INTEGER, INTENT(IN)                ::  nzt_soil
    975 
    976 #if defined( __parallel )
    977     INTEGER, DIMENSION(rd_status_size) ::  status
    978 #endif
    979 
    980     LOGICAL                            ::  found
    981 
    982     REAL(wp), INTENT(INOUT), DIMENSION(nzb_soil:nzt_soil,nysg:nyng,nxlg:nxrg) ::  data
     1016    CHARACTER(LEN=*), INTENT(IN)       ::  name      !<
     1017
     1018    INTEGER(iwp)                       ::  i         !<
     1019    INTEGER, INTENT(IN)                ::  nzb_soil  !<
     1020    INTEGER, INTENT(IN)                ::  nzt_soil  !<
     1021
     1022#if defined( __parallel )
     1023    INTEGER, DIMENSION(rd_status_size) ::  status    !<
     1024#endif
     1025
     1026    LOGICAL                            ::  found     !<
     1027
     1028    REAL(wp), INTENT(INOUT), DIMENSION(nzb_soil:nzt_soil,nysg:nyng,nxlg:nxrg) ::  data  !<
    9831029
    9841030
     
    9961042#if defined( __parallel )
    9971043       CALL rd_mpi_io_create_filetypes_3dsoil( nzb_soil, nzt_soil )
    998        CALL sm_io%sm_node_barrier()  ! has no effect if I/O on limited number of cores is inactive
     1044       CALL sm_io%sm_node_barrier()  ! Has no effect if I/O on limited number of cores is inactive
    9991045       IF ( sm_io%iam_io_pe )  THEN
    1000           CALL MPI_FILE_SET_VIEW( fh, array_position, MPI_REAL, ft_3dsoil, 'native', MPI_INFO_NULL,&
    1001                                   ierr )
     1046          CALL MPI_FILE_SET_VIEW( fh, array_position, MPI_REAL, ft_3dsoil, 'native',               &
     1047                                  MPI_INFO_NULL, ierr )
    10021048          CALL MPI_FILE_READ_ALL( fh, array_3d_soil, SIZE( array_3d_soil ), MPI_REAL, status, ierr )
    10031049          CALL MPI_TYPE_FREE( ft_3dsoil, ierr )
     
    10381084    IMPLICIT NONE
    10391085
    1040     CHARACTER(LEN=*), INTENT(IN)   ::  name
    1041     CHARACTER(LEN=*), INTENT(OUT)  ::  text
    1042     CHARACTER(LEN=128)             ::  line
    1043 
    1044     INTEGER(iwp)                   ::  i
    1045 
    1046     LOGICAL                        ::  found
     1086    CHARACTER(LEN=*), INTENT(IN)  ::  name   !<
     1087    CHARACTER(LEN=*), INTENT(OUT) ::  text   !<
     1088    CHARACTER(LEN=128)            ::  line   !<
     1089
     1090    INTEGER(iwp)                  ::  i      !<
     1091
     1092    LOGICAL                       ::  found  !<
    10471093
    10481094
     
    10771123    IMPLICIT NONE
    10781124
    1079     CHARACTER(LEN=*), INTENT(IN) ::  name
    1080 
    1081     INTEGER(iwp)                 ::  logical_as_integer
    1082 
    1083     LOGICAL, INTENT(OUT)         ::  value
     1125    CHARACTER(LEN=*), INTENT(IN) ::  name                !<
     1126
     1127    INTEGER(iwp)                 ::  logical_as_integer  !<
     1128
     1129    LOGICAL, INTENT(OUT)         ::  value               !<
    10841130
    10851131
     
    11001146    IMPLICIT NONE
    11011147
    1102     CHARACTER(LEN=*), INTENT(IN)  ::  name
    1103 
    1104     INTEGER(KIND=iwp), INTENT(IN) ::  value
     1148    CHARACTER(LEN=*), INTENT(IN)  ::  name   !<
     1149
     1150    INTEGER(KIND=iwp), INTENT(IN) ::  value  !<
    11051151
    11061152
     
    11161162
    11171163
    1118 
     1164!--------------------------------------------------------------------------------------------------!
     1165! Description:
     1166! ------------
     1167!> To do: Description missing!
     1168!--------------------------------------------------------------------------------------------------!
    11191169 SUBROUTINE wrd_mpi_io_real( name, value )
    11201170
    11211171    IMPLICIT NONE
    11221172
    1123     CHARACTER(LEN=*), INTENT(IN) ::  name
    1124 
    1125     REAL(wp), INTENT(IN)         ::  value
     1173    CHARACTER(LEN=*), INTENT(IN) ::  name   !<
     1174
     1175    REAL(wp), INTENT(IN)         ::  value  !<
    11261176
    11271177
     
    11471197    IMPLICIT NONE
    11481198
    1149     CHARACTER(LEN=*), INTENT(IN)       ::  name
    1150 
    1151     INTEGER(iwp)                       ::  i
    1152 
    1153 #if defined( __parallel )
    1154     INTEGER, DIMENSION(rd_status_size) ::  status
    1155 #endif
    1156 
    1157     REAL(wp), INTENT(IN), DIMENSION(nysg:nyng,nxlg:nxrg)    :: data
     1199    CHARACTER(LEN=*), INTENT(IN)       ::  name    !<
     1200
     1201    INTEGER(iwp)                       ::  i       !<
     1202
     1203#if defined( __parallel )
     1204    INTEGER, DIMENSION(rd_status_size) ::  status  !<
     1205#endif
     1206
     1207    REAL(wp), INTENT(IN), DIMENSION(nysg:nyng,nxlg:nxrg) ::  data  !<
    11581208
    11591209
     
    11681218    IF ( include_total_domain_boundaries )  THEN
    11691219!
    1170 !--    Prepare Output with outer boundaries
     1220!--    Prepare output with outer boundaries
    11711221       DO  i = lb%nxl, lb%nxr
    11721222          array_2d(i,lb%nys:lb%nyn) = data(lb%nys-nbgp:lb%nyn-nbgp,i-nbgp)
     
    11751225    ELSE
    11761226!
    1177 !--    Prepare Output without outer boundaries
     1227!--    Prepare output without outer boundaries
    11781228       DO  i = nxl,nxr
    11791229          array_2d(i,lb%nys:lb%nyn) = data(nys:nyn,i)
     
    11831233
    11841234#if defined( __parallel )
    1185     CALL sm_io%sm_node_barrier()  ! has no effect if I/O on limited number of cores is inactive
     1235    CALL sm_io%sm_node_barrier()  ! Has no effect if I/O on limited number of cores is inactive
    11861236    IF ( sm_io%iam_io_pe )  THEN
    11871237       CALL MPI_FILE_SET_VIEW( fh, array_position, MPI_REAL, ft_2d, 'native', MPI_INFO_NULL, ierr )
     
    11941244#endif
    11951245!
    1196 !-- Type conversion required, otherwise rigth hand side brackets are calculated assuming 4 byte INT.
     1246!-- Type conversion required, otherwise right hand side brackets are calculated assuming 4 byte INT.
    11971247!-- Maybe a compiler problem.
    11981248    array_position = array_position + ( INT( lb%ny, KIND=rd_offset_kind ) + 1 ) *                  &
     
    12121262    IMPLICIT NONE
    12131263
    1214     CHARACTER(LEN=*), INTENT(IN)                  ::  name
    1215 
    1216     INTEGER(iwp)                                  ::  i
    1217     INTEGER(iwp)                                  ::  j
    1218 
    1219 #if defined( __parallel )
    1220     INTEGER, DIMENSION(rd_status_size)            ::  status
    1221 #endif
    1222     INTEGER(KIND=iwp), INTENT(IN), DIMENSION(:,:) ::  data
     1264    CHARACTER(LEN=*), INTENT(IN)                  ::  name    !<
     1265
     1266    INTEGER(iwp)                                  ::  i       !<
     1267    INTEGER(iwp)                                  ::  j       !<
     1268
     1269#if defined( __parallel )
     1270    INTEGER, DIMENSION(rd_status_size)            ::  status  !<
     1271#endif
     1272    INTEGER(KIND=iwp), INTENT(IN), DIMENSION(:,:) ::  data    !<
    12231273
    12241274
     
    12311281    header_array_index = header_array_index + 1
    12321282
    1233     IF ( ( nxr-nxl + 1 + 2 * nbgp ) == SIZE( data, 2 ) )  THEN
     1283    IF ( ( nxr - nxl + 1 + 2 * nbgp ) == SIZE( data, 2 ) )  THEN
    12341284!
    12351285!--    Integer arrays with ghost layers are not implemented yet. These kind of arrays would be
     
    12511301       ENDDO
    12521302#if defined( __parallel )
    1253        CALL sm_io%sm_node_barrier()  ! has no effect if I/O on limited number of cores is inactive
     1303       CALL sm_io%sm_node_barrier()  ! Has no effect if I/O on limited number of cores is inactive
    12541304       IF ( sm_io%iam_io_pe )  THEN
    12551305          CALL MPI_FILE_SET_VIEW( fh, array_position, MPI_INTEGER, ft_2di_nb, 'native',            &
     
    12891339    IMPLICIT NONE
    12901340
    1291     CHARACTER(LEN=*), INTENT(IN)       ::  name
    1292 
    1293     INTEGER(iwp)                       ::  i
    1294 #if defined( __parallel )
    1295     INTEGER, DIMENSION(rd_status_size) ::  status
    1296 #endif
    1297     REAL(wp), INTENT(IN), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg)  ::  data
     1341    CHARACTER(LEN=*), INTENT(IN)       ::  name    !<
     1342
     1343    INTEGER(iwp)                       ::  i       !<
     1344#if defined( __parallel )
     1345    INTEGER, DIMENSION(rd_status_size) ::  status  !<
     1346#endif
     1347    REAL(wp), INTENT(IN), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  data !<
    12981348
    12991349
     
    13081358    IF ( include_total_domain_boundaries )  THEN
    13091359!
    1310 !--    Prepare output of 3d-REAL-array with ghost layers.
    1311 !--    In the virtual PE grid, the first dimension is PEs along x, and the second along y.
    1312 !--    For MPI-IO it is recommended to have the index order of the array in the same way, i.e.
    1313 !--    the first dimension should be along x and the second along y.
    1314 !--    For this reason, the original PALM data need to be swaped.
     1360!--    Prepare output of 3d-REAL-array with ghost layers. In the virtual PE grid, the first
     1361!--    dimension is PEs along x, and the second along y. For MPI-IO it is recommended to have the
     1362!--    index order of the array in the same way, i.e. the first dimension should be along x and the
     1363!--    second along y. For this reason, the original PALM data need to be swaped.
    13151364       DO  i = lb%nxl, lb%nxr
    13161365          array_3d(:,i,lb%nys:lb%nyn) = data(:,lb%nys-nbgp:lb%nyn-nbgp,i-nbgp)
     
    13261375    ENDIF
    13271376#if defined( __parallel )
    1328     CALL sm_io%sm_node_barrier()  ! has no effect if I/O on limited number of cores is inactive
     1377    CALL sm_io%sm_node_barrier()  ! Has no effect if I/O on limited number of cores is inactive
    13291378    IF ( sm_io%iam_io_pe )  THEN
    13301379       CALL MPI_FILE_SET_VIEW( fh, array_position, MPI_REAL, ft_3d, 'native', MPI_INFO_NULL, ierr )
     
    13371386#endif
    13381387!
    1339 !-- Type conversion required, otherwise rigth hand side brackets are calculated assuming 4 byte INT.
     1388!-- Type conversion required, otherwise right hand side brackets are calculated assuming 4 byte INT.
    13401389!-- Maybe a compiler problem.
    1341     array_position = array_position + INT(    (nz+2), KIND=rd_offset_kind ) *                      &
    1342                                       INT( (lb%ny+1), KIND=rd_offset_kind ) *                      &
    1343                                       INT( (lb%nx+1), KIND=rd_offset_kind ) * wp
     1390    array_position = array_position + INT(    (nz+2), KIND = rd_offset_kind ) *                    &
     1391                                      INT( (lb%ny+1), KIND = rd_offset_kind ) *                    &
     1392                                      INT( (lb%nx+1), KIND = rd_offset_kind ) * wp
    13441393
    13451394 END SUBROUTINE wrd_mpi_io_real_3d
     
    13581407    IMPLICIT NONE
    13591408
    1360     CHARACTER(LEN=*), INTENT(IN)       ::  name
    1361 
    1362     INTEGER(iwp)                       ::  i
    1363     INTEGER, INTENT(IN)                ::  nzb_soil
    1364     INTEGER, INTENT(IN)                ::  nzt_soil
    1365 
    1366 #if defined( __parallel )
    1367     INTEGER, DIMENSION(rd_status_size) ::  status
    1368 #endif
    1369 
    1370     REAL(wp), INTENT(IN), DIMENSION(nzb_soil:nzt_soil,nysg:nyng,nxlg:nxrg)  ::  data
     1409    CHARACTER(LEN=*), INTENT(IN)       ::  name      !<
     1410
     1411    INTEGER(iwp)                       ::  i         !<
     1412    INTEGER, INTENT(IN)                ::  nzb_soil  !<
     1413    INTEGER, INTENT(IN)                ::  nzt_soil  !<
     1414
     1415#if defined( __parallel )
     1416    INTEGER, DIMENSION(rd_status_size) ::  status  !<
     1417#endif
     1418
     1419    REAL(wp), INTENT(IN), DIMENSION(nzb_soil:nzt_soil,nysg:nyng,nxlg:nxrg) ::  data  !<
    13711420
    13721421
     
    13851434    IF ( include_total_domain_boundaries)  THEN
    13861435!
    1387 !--    Prepare output of 3d-REAL-array with ghost layers.
    1388 !--    In the virtual PE grid, the first dimension is PEs along x, and the second along y.
    1389 !--    For MPI-IO it is recommended to have the index order of the array in the same way, i.e.
    1390 !--    the first dimension should be along x and the second along y.
    1391 !--    For this reason, the original PALM data need to be swaped.
     1436!--    Prepare output of 3d-REAL-array with ghost layers. In the virtual PE grid, the first
     1437!--    dimension is PEs along x, and the second along y. For MPI-IO it is recommended to have the
     1438!--    index order of the array in the same way, i.e. the first dimension should be along x and the
     1439!--    second along y. For this reason, the original PALM data need to be swaped.
    13921440       DO  i = lb%nxl, lb%nxr
    13931441          array_3d_soil(:,i,lb%nys:lb%nyn) = data(:,lb%nys-nbgp:lb%nyn-nbgp,i-nbgp)
     
    14031451    ENDIF
    14041452#if defined( __parallel )
    1405     CALL sm_io%sm_node_barrier()  ! has no effect if I/O on limited number of cores is inactive
     1453    CALL sm_io%sm_node_barrier()  ! Has no effect if I/O on limited number of cores is inactive
    14061454    IF ( sm_io%iam_io_pe )  THEN
    14071455       CALL MPI_FILE_SET_VIEW( fh, array_position, MPI_REAL, ft_3dsoil, 'native', MPI_INFO_NULL,   &
     
    14151463#endif
    14161464!
    1417 !-- Type conversion required, otherwise rigth hand side brackets are calculated assuming 4 byte INT.
     1465!-- Type conversion required, otherwise right hand side brackets are calculated assuming 4 byte INT.
    14181466!-- Maybe a compiler problem.
    1419     array_position = array_position + INT( (nzt_soil-nzb_soil+1), KIND=rd_offset_kind ) *          &
    1420                                       INT( (lb%ny+1),             KIND=rd_offset_kind ) *          &
    1421                                       INT( (lb%nx+1),             KIND=rd_offset_kind ) * wp
     1467    array_position = array_position + INT( (nzt_soil-nzb_soil+1), KIND = rd_offset_kind ) *        &
     1468                                      INT( (lb%ny+1),             KIND = rd_offset_kind ) *        &
     1469                                      INT( (lb%nx+1),             KIND = rd_offset_kind ) * wp
    14221470
    14231471 END SUBROUTINE wrd_mpi_io_real_3d_soil
     
    14341482    IMPLICIT NONE
    14351483
    1436     CHARACTER(LEN=128)           ::  lo_line
    1437     CHARACTER(LEN=*), INTENT(IN) ::  name
    1438     CHARACTER(LEN=*), INTENT(IN) ::  text
     1484    CHARACTER(LEN=128)           ::  lo_line  !<
     1485    CHARACTER(LEN=*), INTENT(IN) ::  name     !<
     1486    CHARACTER(LEN=*), INTENT(IN) ::  text     !<
    14391487
    14401488
     
    14611509    IMPLICIT NONE
    14621510
    1463     CHARACTER(LEN=*), INTENT(IN) ::  name
    1464 
    1465     INTEGER(iwp)                 ::  logical_as_integer
    1466 
    1467     LOGICAL, INTENT(IN)          ::  value
     1511    CHARACTER(LEN=*), INTENT(IN) ::  name                !<
     1512
     1513    INTEGER(iwp)                 ::  logical_as_integer  !<
     1514
     1515    LOGICAL, INTENT(IN)          ::  value               !<
    14681516
    14691517
     
    14901538    IMPLICIT NONE
    14911539
    1492     CHARACTER(LEN=*), INTENT(IN)       ::  name
    1493 
    1494     INTEGER(iwp)                       ::  i
    1495     INTEGER(KIND=rd_offset_kind)       ::  offset
    1496 
    1497 #if defined( __parallel )
    1498     INTEGER, DIMENSION(rd_status_size) ::  status
    1499 #endif
    1500 
    1501     LOGICAL                            ::  found
    1502 
    1503     REAL(KIND=wp), INTENT(INOUT), DIMENSION(:) ::  data
     1540    CHARACTER(LEN=*), INTENT(IN)       ::  name    !<
     1541
     1542    INTEGER(iwp)                       ::  i       !<
     1543    INTEGER(KIND=rd_offset_kind)       ::  offset  !<
     1544
     1545#if defined( __parallel )
     1546    INTEGER, DIMENSION(rd_status_size) ::  status  !<
     1547#endif
     1548
     1549    LOGICAL                            ::  found   !<
     1550
     1551    REAL(KIND=wp), INTENT(INOUT), DIMENSION(:) ::  data  !<
    15041552
    15051553
     
    15251573       ENDIF
    15261574       IF ( sm_io%is_sm_active() )  THEN
    1527           CALL MPI_BCAST( data, SIZE(data), MPI_REAL, 0, sm_io%comm_shared, ierr )
     1575          CALL MPI_BCAST( data, SIZE( data ), MPI_REAL, 0, sm_io%comm_shared, ierr )
    15281576       ENDIF
    15291577#else
     
    15541602    IMPLICIT NONE
    15551603
    1556     CHARACTER(LEN=*), INTENT(IN)                      ::  name
    1557 
    1558     INTEGER, DIMENSION(1)                             ::  bufshape
    1559 
    1560     REAL(KIND=wp), INTENT(IN), DIMENSION(:,:), TARGET ::  data
    1561     REAL(KIND=wp), POINTER, DIMENSION(:)              ::  buf
    1562 
    1563     TYPE(C_PTR)                                       ::  c_data
     1604    CHARACTER(LEN=*), INTENT(IN)                      ::  name      !<
     1605
     1606    INTEGER, DIMENSION(1)                             ::  bufshape  !<
     1607
     1608    REAL(KIND=wp), INTENT(IN), DIMENSION(:,:), TARGET ::  data      !<
     1609    REAL(KIND=wp), POINTER, DIMENSION(:)              ::  buf       !<
     1610
     1611    TYPE(C_PTR)                                       ::  c_data    !<
    15641612
    15651613
     
    15841632    IMPLICIT NONE
    15851633
    1586     CHARACTER(LEN=*), INTENT(IN)                        ::  name
    1587 
    1588     INTEGER, DIMENSION(1)                               ::  bufshape
    1589 
    1590     REAL(KIND=wp), INTENT(IN), DIMENSION(:,:,:), TARGET ::  data
    1591     REAL(KIND=wp), POINTER, DIMENSION(:)                ::  buf
    1592 
    1593     TYPE(C_PTR)                                         ::  c_data
     1634    CHARACTER(LEN=*), INTENT(IN)                        ::  name      !<
     1635
     1636    INTEGER, DIMENSION(1)                               ::  bufshape  !<
     1637
     1638    REAL(KIND=wp), INTENT(IN), DIMENSION(:,:,:), TARGET ::  data      !<
     1639    REAL(KIND=wp), POINTER, DIMENSION(:)                ::  buf       !<
     1640
     1641    TYPE(C_PTR)                                         ::  c_data    !<
    15941642
    15951643
     
    16141662    IMPLICIT NONE
    16151663
    1616     CHARACTER(LEN=*), INTENT(IN)                          ::  name
    1617 
    1618     INTEGER, DIMENSION(1)                                 ::  bufshape
    1619 
    1620     REAL(KIND=wp), INTENT(IN), DIMENSION(:,:,:,:), TARGET ::  data
    1621     REAL(KIND=wp), POINTER, DIMENSION(:)                  ::  buf
    1622 
    1623     TYPE(C_PTR)                                           ::  c_data
     1664    CHARACTER(LEN=*), INTENT(IN)                          ::  name      !<
     1665
     1666    INTEGER, DIMENSION(1)                                 ::  bufshape  !<
     1667
     1668    REAL(KIND=wp), INTENT(IN), DIMENSION(:,:,:,:), TARGET ::  data      !<
     1669    REAL(KIND=wp), POINTER, DIMENSION(:)                  ::  buf       !<
     1670
     1671    TYPE(C_PTR)                                           ::  c_data    !<
    16241672
    16251673
     
    16441692    IMPLICIT NONE
    16451693
    1646     CHARACTER(LEN=*), INTENT(IN)                   ::  name
    1647 
    1648     INTEGER(iwp)                                   ::  i
    1649     INTEGER(KIND=rd_offset_kind)                   ::  offset
    1650 
    1651 #if defined( __parallel )
    1652     INTEGER, DIMENSION(rd_status_size)             ::  status
    1653 #endif
    1654     INTEGER(KIND=iwp), INTENT(INOUT), DIMENSION(:) ::  data
    1655 
    1656     LOGICAL                                        ::  found
     1694    CHARACTER(LEN=*), INTENT(IN)                   ::  name    !<
     1695
     1696    INTEGER(iwp)                                   ::  i       !<
     1697    INTEGER(KIND=rd_offset_kind)                   ::  offset  !<
     1698
     1699#if defined( __parallel )
     1700    INTEGER, DIMENSION(rd_status_size)             ::  status  !<
     1701#endif
     1702    INTEGER(KIND=iwp), INTENT(INOUT), DIMENSION(:) ::  data    !<
     1703
     1704    LOGICAL                                        ::  found   !<
    16571705
    16581706
     
    16611709
    16621710    DO  i = 1, tgh%nr_arrays
    1663        IF ( TRIM(array_names(i)) == TRIM( name ) )  THEN
     1711       IF ( TRIM( array_names(i) ) == TRIM( name ) )  THEN
    16641712          array_position = array_offset(i)
    16651713          found = .TRUE.
     
    16781726       ENDIF
    16791727       IF ( sm_io%is_sm_active() )  THEN
    1680           CALL MPI_BCAST( data, SIZE(data), MPI_INTEGER, 0, sm_io%comm_shared, ierr )
     1728          CALL MPI_BCAST( data, SIZE( data ), MPI_INTEGER, 0, sm_io%comm_shared, ierr )
    16811729       ENDIF
    16821730#else
     
    17061754    IMPLICIT NONE
    17071755
    1708     CHARACTER(LEN=*), INTENT(IN)            ::  name
    1709 
    1710     INTEGER(KIND=rd_offset_kind)            ::  offset
    1711 
    1712 #if defined( __parallel )
    1713     INTEGER, DIMENSION(rd_status_size)      ::  status
    1714 #endif
    1715 
    1716     REAL(KIND=wp), INTENT(IN), DIMENSION(:) ::  data
     1756    CHARACTER(LEN=*), INTENT(IN)            ::  name    !<
     1757
     1758    INTEGER(KIND=rd_offset_kind)            ::  offset  !<
     1759
     1760#if defined( __parallel )
     1761    INTEGER, DIMENSION(rd_status_size)      ::  status  !<
     1762#endif
     1763
     1764    REAL(KIND=wp), INTENT(IN), DIMENSION(:) ::  data    !<
    17171765
    17181766
     
    17371785    IF ( myid == 0 )  THEN
    17381786       CALL MPI_FILE_SEEK( fh, array_position, MPI_SEEK_SET, ierr )
    1739        CALL MPI_FILE_WRITE( fh, data, SIZE( data), MPI_REAL, status, ierr )
     1787       CALL MPI_FILE_WRITE( fh, data, SIZE( data ), MPI_REAL, status, ierr )
    17401788    ENDIF
    17411789#else
     
    17591807    IMPLICIT NONE
    17601808
    1761     CHARACTER(LEN=*), INTENT(IN)                      ::  name
    1762 
    1763     INTEGER, DIMENSION(1)                             ::  bufshape
    1764 
    1765     REAL(KIND=wp), POINTER, DIMENSION(:)              ::  buf
    1766     REAL(KIND=wp), INTENT(IN), DIMENSION(:,:), TARGET ::  data
    1767 
    1768     TYPE(C_PTR)                                       ::  c_data
     1809    CHARACTER(LEN=*), INTENT(IN)                      ::  name      !<
     1810
     1811    INTEGER, DIMENSION(1)                             ::  bufshape  !<
     1812
     1813    REAL(KIND=wp), POINTER, DIMENSION(:)              ::  buf       !<
     1814    REAL(KIND=wp), INTENT(IN), DIMENSION(:,:), TARGET ::  data      !<
     1815
     1816    TYPE(C_PTR)                                       ::  c_data    !<
    17691817
    17701818
     
    17891837    IMPLICIT NONE
    17901838
    1791     CHARACTER(LEN=*), INTENT(IN)                        ::  name
    1792 
    1793     INTEGER, DIMENSION(1)                               ::  bufshape
    1794 
    1795     REAL(KIND=wp), POINTER, DIMENSION(:)                ::  buf
    1796     REAL(KIND=wp), INTENT(IN), DIMENSION(:,:,:), TARGET ::  data
    1797 
    1798     TYPE(C_PTR)                                         ::  c_data
     1839    CHARACTER(LEN=*), INTENT(IN)                        ::  name      !<
     1840
     1841    INTEGER, DIMENSION(1)                               ::  bufshape  !<
     1842
     1843    REAL(KIND=wp), POINTER, DIMENSION(:)                ::  buf       !<
     1844    REAL(KIND=wp), INTENT(IN), DIMENSION(:,:,:), TARGET ::  data      !<
     1845
     1846    TYPE(C_PTR)                                         ::  c_data    !<
    17991847
    18001848
     
    18191867    IMPLICIT NONE
    18201868
    1821     CHARACTER(LEN=*), INTENT(IN)                          ::  name
    1822 
    1823     INTEGER, DIMENSION(1)                                 ::  bufshape
    1824 
    1825     REAL(KIND=wp), POINTER, DIMENSION(:)                  ::  buf
    1826     REAL(KIND=wp), INTENT(IN), DIMENSION(:,:,:,:), TARGET ::  data
    1827 
    1828     TYPE(C_PTR)                                           ::  c_data
     1869    CHARACTER(LEN=*), INTENT(IN)                          ::  name      !<
     1870
     1871    INTEGER, DIMENSION(1)                                 ::  bufshape  !<
     1872
     1873    REAL(KIND=wp), POINTER, DIMENSION(:)                  ::  buf       !<
     1874    REAL(KIND=wp), INTENT(IN), DIMENSION(:,:,:,:), TARGET ::  data      !<
     1875
     1876    TYPE(C_PTR)                                           ::  c_data    !<
    18291877
    18301878
     
    18491897    IMPLICIT NONE
    18501898
    1851     CHARACTER(LEN=*), INTENT(IN)                ::  name
    1852 
    1853     INTEGER(KIND=rd_offset_kind)                ::  offset
    1854 
    1855     INTEGER(KIND=iwp), INTENT(IN), DIMENSION(:) ::  data
    1856 #if defined( __parallel )
    1857     INTEGER, DIMENSION(rd_status_size)          ::  status
     1899    CHARACTER(LEN=*), INTENT(IN)                ::  name    !<
     1900
     1901    INTEGER(KIND=rd_offset_kind)                ::  offset  !<
     1902
     1903    INTEGER(KIND=iwp), INTENT(IN), DIMENSION(:) ::  data    !<
     1904#if defined( __parallel )
     1905    INTEGER, DIMENSION(rd_status_size)          ::  status  !<
    18581906#endif
    18591907
     
    18751923!
    18761924!-- Only PE 0 writes replicated data
    1877     IF ( myid == 0 )  THEN                        !
     1925    IF ( myid == 0 )  THEN
    18781926       CALL MPI_FILE_SEEK( fh, array_position, MPI_SEEK_SET, ierr )
    18791927       CALL MPI_FILE_WRITE( fh, data, SIZE( data), MPI_INTEGER, status, ierr )
     
    18981946    IMPLICIT NONE
    18991947
    1900     CHARACTER(LEN=*), INTENT(IN) ::  name
    1901 
    1902     INTEGER(KIND=rd_offset_kind) ::  disp          !< displacement of actual indices
    1903     INTEGER(KIND=rd_offset_kind) ::  disp_f        !< displacement in file
    1904     INTEGER(KIND=rd_offset_kind) ::  disp_n        !< displacement of next column
    1905     INTEGER(iwp), OPTIONAL       ::  first_index
    1906 
    1907     INTEGER(iwp)                 ::  i
    1908     INTEGER(iwp)                 ::  i_f
    1909     INTEGER(iwp)                 ::  j
    1910     INTEGER(iwp)                 ::  j_f
    1911     INTEGER(iwp)                 ::  lo_first_index
    1912     INTEGER(iwp)                 ::  nr_bytes
    1913     INTEGER(iwp)                 ::  nr_bytes_f
    1914     INTEGER(iwp)                 ::  nr_words
    1915 #if defined( __parallel )
    1916     INTEGER, DIMENSION(rd_status_size)  ::  status
    1917 #endif
    1918 
    1919     LOGICAL                             ::  found
    1920 
    1921     REAL(wp), INTENT(OUT), DIMENSION(:) ::  data
     1948    CHARACTER(LEN=*), INTENT(IN) ::  name            !<
     1949
     1950    INTEGER(KIND=rd_offset_kind) ::  disp            !< displacement of actual indices
     1951    INTEGER(KIND=rd_offset_kind) ::  disp_f          !< displacement in file
     1952    INTEGER(KIND=rd_offset_kind) ::  disp_n          !< displacement of next column
     1953    INTEGER(iwp), OPTIONAL       ::  first_index     !<
     1954
     1955    INTEGER(iwp)                 ::  i               !<
     1956    INTEGER(iwp)                 ::  i_f             !<
     1957    INTEGER(iwp)                 ::  j               !<
     1958    INTEGER(iwp)                 ::  j_f             !<
     1959    INTEGER(iwp)                 ::  lo_first_index  !<
     1960    INTEGER(iwp)                 ::  nr_bytes        !<
     1961    INTEGER(iwp)                 ::  nr_bytes_f      !<
     1962    INTEGER(iwp)                 ::  nr_words        !<
     1963#if defined( __parallel )
     1964    INTEGER, DIMENSION(rd_status_size)  ::  status   !<
     1965#endif
     1966
     1967    LOGICAL                             ::  found    !<
     1968
     1969    REAL(wp), INTENT(OUT), DIMENSION(:) ::  data     !<
    19221970
    19231971
     
    19251973    lo_first_index = 1
    19261974
    1927     IF ( MAXVAL( m_global_start ) == -1 )   RETURN   ! nothing to do on this PE
     1975    IF ( MAXVAL( m_global_start ) == -1 )   RETURN   ! Nothing to do on this PE
    19281976
    19291977    IF ( PRESENT( first_index ) )   THEN
     
    19341982        IF ( TRIM( array_names(i) ) == TRIM( name ) )  THEN
    19351983           array_position = array_offset(i) + ( lo_first_index - 1 ) *                             &
    1936                                               total_number_of_surface_values * wp
     1984                            total_number_of_surface_values * wp
    19371985           found = .TRUE.
    19381986           EXIT
     
    19532001                nr_bytes = nr_words * wp
    19542002             ENDIF
    1955              IF ( disp >= 0  .AND.  disp_f == -1 )  THEN   ! first Entry
     2003             IF ( disp >= 0  .AND.  disp_f == -1 )  THEN   ! First entry
    19562004                disp_f     = disp
    19572005                nr_bytes_f = 0
     
    19592007                j_f = j
    19602008             ENDIF
    1961              IF ( j == nyn  .AND.  i == nxr )  THEN        ! last Entry
     2009             IF ( j == nyn  .AND.  i == nxr )  THEN        ! Last entry
    19622010                disp_n = -1
    19632011                IF (  nr_bytes > 0 )  THEN
    19642012                   nr_bytes_f = nr_bytes_f+nr_bytes
    19652013                ENDIF
    1966              ELSEIF ( j == nyn )  THEN                     ! next x
     2014             ELSEIF ( j == nyn )  THEN                     ! Next x
    19672015                IF ( m_global_start(nys,i+1) > 0  .AND.  disp > 0 )  THEN
    19682016                   disp_n = array_position + ( m_global_start(nys,i+1) - 1 ) * wp
     
    19792027
    19802028
    1981              IF ( disp + nr_bytes == disp_n )  THEN        ! contiguous block
     2029             IF ( disp + nr_bytes == disp_n )  THEN        ! Contiguous block
    19822030                nr_bytes_f = nr_bytes_f + nr_bytes
    1983              ELSE                                          ! read
     2031             ELSE                                          ! Read
    19842032#if defined( __parallel )
    19852033                CALL MPI_FILE_SEEK( fhs, disp_f, MPI_SEEK_SET, ierr )
    19862034                nr_words = nr_bytes_f / wp
    1987                 CALL MPI_FILE_READ( fhs, data(m_start_index(j_f,i_f)), nr_words, MPI_REAL, status, ierr )
     2035                CALL MPI_FILE_READ( fhs, data(m_start_index(j_f,i_f)), nr_words, MPI_REAL, status, &
     2036                                    ierr )
    19882037#else
    19892038                CALL posix_lseek( fh, disp_f )
     
    20272076    IMPLICIT NONE
    20282077
    2029     CHARACTER(LEN=*), INTENT(IN)          ::  name
    2030 
    2031     INTEGER(iwp)                          ::  i
    2032 
    2033     REAL(wp), INTENT(OUT), DIMENSION(:,:) ::  data
    2034     REAL(wp), DIMENSION(SIZE( data,2))    ::  tmp
    2035 
    2036 
    2037     DO  i = 1, SIZE( data,1)
     2078    CHARACTER(LEN=*), INTENT(IN)          ::  name  !<
     2079
     2080    INTEGER(iwp)                          ::  i     !<
     2081
     2082    REAL(wp), INTENT(OUT), DIMENSION(:,:) ::  data  !<
     2083    REAL(wp), DIMENSION(SIZE( data,2))    ::  tmp   !<
     2084
     2085
     2086    DO  i = 1, SIZE( data, 1 )
    20382087       CALL rrd_mpi_io_surface( name, tmp, first_index = i )
    20392088       data(i,:) = tmp
     
    20422091!
    20432092!-- Comment from Klaus Ketelsen (September 2018)
    2044 !-- The intention of the following loop was let the compiler do the copying on return.
    2045 !-- In my understanding is it standard conform to pass the second dimension to a 1d-
    2046 !-- array inside a subroutine and the compiler is responsible to generate code for
    2047 !-- copying. Acually this works fine for INTENT(IN) variables (wrd_mpi_io_surface_2d).
    2048 !-- For INTENT(OUT) like in this case the code works on pgi compiler. But both, the Intel 16
    2049 !-- and the Cray compiler show wrong answers using this loop.
    2050 !-- That is the reason why the above auxiliary array tmp was introduced.
     2093!-- The intention of the following loop was to let the compiler do the copying on return.
     2094!-- In my understanding it is standard conform to pass the second dimension to a 1d-array inside a
     2095!-- subroutine and the compiler is responsible to generate code for copying. Acually this works fine
     2096!-- for INTENT(IN) variables (wrd_mpi_io_surface_2d). For INTENT(OUT) like in this case the code
     2097!-- works on pgi compiler. But both, the Intel 16 and the Cray compiler show wrong answers using
     2098!-- this loop. That is the reason why the above auxiliary array tmp was introduced.
    20512099!    DO  i = 1, SIZE(  data,1)
    20522100!       CALL rrd_mpi_io_surface( name, data(i,:), first_index = i )
     
    20662114    IMPLICIT NONE
    20672115
    2068     CHARACTER(LEN=*), INTENT(IN)       ::  name
    2069 
    2070 #if defined( __parallel )
    2071     INTEGER(KIND=rd_offset_kind)       ::  disp
    2072 #endif
    2073     INTEGER(iwp), OPTIONAL             ::  first_index
    2074 #if defined( __parallel )
    2075     INTEGER(iwp)                       ::  i
    2076 #endif
    2077     INTEGER(iwp)                       ::  lo_first_index
    2078     INTEGER(KIND=rd_offset_kind)       ::  offset
    2079 
    2080 #if defined( __parallel )
    2081     INTEGER, DIMENSION(rd_status_size) ::  status
    2082 #endif
    2083 
    2084     REAL(wp), INTENT(IN), DIMENSION(:), TARGET ::  data
     2116    CHARACTER(LEN=*), INTENT(IN)       ::  name            !<
     2117
     2118#if defined( __parallel )
     2119    INTEGER(KIND=rd_offset_kind)       ::  disp            !<
     2120#endif
     2121    INTEGER(iwp), OPTIONAL             ::  first_index     !<
     2122#if defined( __parallel )
     2123    INTEGER(iwp)                       ::  i               !<
     2124#endif
     2125    INTEGER(iwp)                       ::  lo_first_index  !<
     2126    INTEGER(KIND=rd_offset_kind)       ::  offset          !<
     2127
     2128#if defined( __parallel )
     2129    INTEGER, DIMENSION(rd_status_size) ::  status          !<
     2130#endif
     2131
     2132    REAL(wp), INTENT(IN), DIMENSION(:), TARGET ::  data    !<
    20852133
    20862134
     
    20882136    lo_first_index = 1
    20892137
    2090     IF ( PRESENT(first_index) )  THEN
     2138    IF ( PRESENT( first_index ) )  THEN
    20912139       lo_first_index = first_index
    20922140    ENDIF
     
    21162164    ENDIF
    21172165
    2118     CALL sm_io%sm_node_barrier()  ! has no effect if I/O on limited number of cores is inactive
     2166    CALL sm_io%sm_node_barrier()  ! Has no effect if I/O on limited number of cores is inactive
    21192167    IF ( sm_io%iam_io_pe )  THEN
    21202168       IF ( all_pes_write )  THEN
     
    21542202! ------------
    21552203!> Read 2d-REAL surface data array with MPI-IO.
    2156 !> These consist of multiple 1d-REAL surface data arrays.
     2204!> This consist of multiple 1d-REAL surface data arrays.
    21572205!--------------------------------------------------------------------------------------------------!
    21582206 SUBROUTINE wrd_mpi_io_surface_2d( name, data )
     
    21602208    IMPLICIT NONE
    21612209
    2162     CHARACTER(LEN=*), INTENT(IN)         ::  name
    2163 
    2164     INTEGER(iwp)                         ::  i
    2165 
    2166     REAL(wp), INTENT(IN), DIMENSION(:,:) ::  data
    2167 
    2168 
    2169     DO  i = 1, SIZE( data,1)
     2210    CHARACTER(LEN=*), INTENT(IN)         ::  name  !<
     2211
     2212    INTEGER(iwp)                         ::  i     !<
     2213
     2214    REAL(wp), INTENT(IN), DIMENSION(:,:) ::  data  !<
     2215
     2216
     2217    DO  i = 1, SIZE( data, 1 )
    21702218       CALL wrd_mpi_io_surface( name, data(i,:), first_index = i )
    21712219    ENDDO
     
    21842232    IMPLICIT NONE
    21852233
    2186     INTEGER(iwp)                       ::  gh_size
    2187     INTEGER(KIND=rd_offset_kind)       ::  offset
    2188 #if defined( __parallel )
    2189     INTEGER, DIMENSION(rd_status_size) ::  status
     2234    INTEGER(iwp)                       ::  gh_size  !<
     2235    INTEGER(KIND=rd_offset_kind)       ::  offset   !<
     2236#if defined( __parallel )
     2237    INTEGER, DIMENSION(rd_status_size) ::  status   !<
    21902238#endif
    21912239
    21922240#if ! defined( __parallel )
    2193     TYPE(C_PTR)                        ::  buf_ptr
     2241    TYPE(C_PTR)                        ::  buf_ptr  !<
    21942242#endif
    21952243
     
    22052253       tgh%total_nx  = lb%nx + 1
    22062254       tgh%total_ny  = lb%ny + 1
    2207        IF ( include_total_domain_boundaries )  THEN   ! not sure, if LOGICAL interpretation is the same for all compilers,
    2208           tgh%i_outer_bound = 1        ! therefore store as INTEGER in general header
     2255       IF ( include_total_domain_boundaries )  THEN   ! Not sure, if LOGICAL interpretation is the same for all compilers,
     2256          tgh%i_outer_bound = 1                       ! therefore store as INTEGER in general header
    22092257       ELSE
    22102258          tgh%i_outer_bound = 0
     
    22312279!--       INTEGER values
    22322280          CALL MPI_FILE_SEEK( fh, header_position, MPI_SEEK_SET, ierr )
    2233           CALL MPI_FILE_WRITE( fh, int_names, SIZE( int_names )*32, MPI_CHAR, status, ierr )
     2281          CALL MPI_FILE_WRITE( fh, int_names, SIZE( int_names ) * 32, MPI_CHAR, status, ierr )
    22342282          header_position = header_position + SIZE( int_names ) * 32
    22352283
     
    22402288!--       Character entries
    22412289          CALL MPI_FILE_SEEK( fh, header_position, MPI_SEEK_SET, ierr )
    2242           CALL MPI_FILE_WRITE( fh, text_lines, SIZE( text_lines )*128, MPI_CHAR, status, ierr )
     2290          CALL MPI_FILE_WRITE( fh, text_lines, SIZE( text_lines ) * 128, MPI_CHAR, status, ierr )
    22432291          header_position = header_position + SIZE( text_lines ) * 128
    22442292!
    22452293!---      REAL values
    22462294          CALL MPI_FILE_SEEK( fh, header_position, MPI_SEEK_SET, ierr )
    2247           CALL MPI_FILE_WRITE( fh, real_names, SIZE( real_names )*32, MPI_CHAR, status, ierr )
     2295          CALL MPI_FILE_WRITE( fh, real_names, SIZE( real_names ) * 32, MPI_CHAR, status, ierr )
    22482296          header_position = header_position + SIZE( real_names ) * 32
    22492297
     
    22542302!--       2d- and 3d- distributed array headers, all replicated array headers
    22552303          CALL MPI_FILE_SEEK( fh, header_position, MPI_SEEK_SET, ierr )
    2256           CALL MPI_FILE_WRITE( fh, array_names, SIZE( array_names )*32, MPI_CHAR, status, ierr )
     2304          CALL MPI_FILE_WRITE( fh, array_names, SIZE( array_names ) * 32, MPI_CHAR, status, ierr )
    22572305          header_position = header_position + SIZE( array_names ) * 32
    22582306
    22592307          CALL MPI_FILE_SEEK( fh, header_position, MPI_SEEK_SET, ierr )
    2260           CALL MPI_FILE_WRITE( fh, array_offset, SIZE( array_offset )*MPI_OFFSET_KIND, MPI_BYTE,  &
     2308          CALL MPI_FILE_WRITE( fh, array_offset, SIZE( array_offset ) * MPI_OFFSET_KIND, MPI_BYTE, &
    22612309                               status, ierr )  ! There is no I*8 datatype in Fortran
    22622310          header_position = header_position + SIZE( array_offset ) * rd_offset_kind
     
    23502398    IMPLICIT NONE
    23512399
    2352     INTEGER(iwp)                          ::  i            !<  loop index
    2353     INTEGER(KIND=rd_offset_kind)          ::  offset
    2354 
    2355     INTEGER(iwp), DIMENSION(1)            ::  dims1
    2356     INTEGER(iwp), DIMENSION(1)            ::  lize1
    2357     INTEGER(iwp), DIMENSION(1)            ::  start1
    2358     INTEGER(iwp), DIMENSION(0:numprocs-1) ::  lo_nr_val    !< local number of values in x and y direction
    2359     INTEGER(iwp), DIMENSION(0:numprocs-1) ::  all_nr_val   !< number of values for all PEs
    2360 
    2361     INTEGER, INTENT(IN), DIMENSION(nys:nyn,nxl:nxr)  ::  end_index
    2362     INTEGER, INTENT(OUT), DIMENSION(nys:nyn,nxl:nxr) ::  global_start
    2363     INTEGER, INTENT(IN), DIMENSION(nys:nyn,nxl:nxr)  ::  start_index
    2364 
    2365     LOGICAL, INTENT(OUT)                  ::  data_to_write  !< returns, if surface data have to be written
     2400    INTEGER(iwp)                          ::  i           !<  loop index
     2401    INTEGER(KIND=rd_offset_kind)          ::  offset      !<
     2402
     2403    INTEGER(iwp), DIMENSION(1)            ::  dims1       !<
     2404    INTEGER(iwp), DIMENSION(1)            ::  lize1       !<
     2405    INTEGER(iwp), DIMENSION(1)            ::  start1      !<
     2406
     2407    INTEGER(iwp), DIMENSION(0:numprocs-1) ::  all_nr_val  !< number of values for all PEs
     2408    INTEGER(iwp), DIMENSION(0:numprocs-1) ::  lo_nr_val   !< local number of values in x and y direction
     2409
     2410
     2411    INTEGER, INTENT(IN), DIMENSION(nys:nyn,nxl:nxr)  ::  end_index     !<
     2412    INTEGER, INTENT(OUT), DIMENSION(nys:nyn,nxl:nxr) ::  global_start  !<
     2413    INTEGER, INTENT(IN), DIMENSION(nys:nyn,nxl:nxr)  ::  start_index   !<
     2414
     2415    LOGICAL, INTENT(OUT) ::  data_to_write  !< returns, if surface data have to be written
    23662416
    23672417
     
    23722422    CALL MPI_ALLREDUCE( lo_nr_val, all_nr_val, numprocs, MPI_INTEGER, MPI_SUM, comm2d, ierr )
    23732423    IF ( ft_surf /= -1  .AND.  sm_io%iam_io_pe )  THEN
    2374        CALL MPI_TYPE_FREE( ft_surf, ierr )    ! if set, free last surface filetype
     2424       CALL MPI_TYPE_FREE( ft_surf, ierr )    ! If set, free last surface filetype
    23752425    ENDIF
    23762426
     
    24042454
    24052455!
    2406 !-- Actions during read
     2456!-- Actions during reading
    24072457    IF ( rd_flag )  THEN
    24082458       IF ( .NOT. ALLOCATED( m_start_index )  )  ALLOCATE( m_start_index(nys:nyn,nxl:nxr)  )
     
    24222472
    24232473!
    2424 !-- Actions during write
     2474!-- Actions during writing
    24252475    IF ( wr_flag )  THEN
    24262476!
     
    25022552    IMPLICIT NONE
    25032553
    2504     INTEGER, DIMENSION(2) ::  dims2
    2505     INTEGER, DIMENSION(2) ::  lize2
    2506     INTEGER, DIMENSION(2) ::  start2
    2507 
    2508     INTEGER, DIMENSION(3) ::  dims3
    2509     INTEGER, DIMENSION(3) ::  lize3
    2510     INTEGER, DIMENSION(3) ::  start3
     2554    INTEGER, DIMENSION(2) ::  dims2   !<
     2555    INTEGER, DIMENSION(2) ::  lize2   !<
     2556    INTEGER, DIMENSION(2) ::  start2  !<
     2557
     2558    INTEGER, DIMENSION(3) ::  dims3   !<
     2559    INTEGER, DIMENSION(3) ::  lize3   !<
     2560    INTEGER, DIMENSION(3) ::  start3  !<
    25112561
    25122562    TYPE(local_boundaries) ::  save_io_grid  !< temporary variable to store grid settings
     
    26562706! Description:
    26572707! ------------
    2658 !> This subroutine creates file types to access 3d-soil arrays
    2659 !> distributed in blocks among processes to a single file that contains the global arrays.
    2660 !> It is not required for the serial mode.
     2708!> This subroutine creates file types to access 3d-soil arrays distributed in blocks among processes
     2709!> to a single file that contains the global arrays. It is not required for the serial mode.
    26612710!--------------------------------------------------------------------------------------------------!
    26622711#if defined( __parallel )
     
    26652714    IMPLICIT NONE
    26662715
    2667     INTEGER, INTENT(IN)  ::  nzb_soil
    2668     INTEGER, INTENT(IN)  ::  nzt_soil
    2669 
    2670     INTEGER, DIMENSION(3) ::  dims3
    2671     INTEGER, DIMENSION(3) ::  lize3
    2672     INTEGER, DIMENSION(3) ::  start3
     2716    INTEGER, INTENT(IN)   ::  nzb_soil  !<
     2717    INTEGER, INTENT(IN)   ::  nzt_soil  !<
     2718
     2719    INTEGER, DIMENSION(3) ::  dims3     !<
     2720    INTEGER, DIMENSION(3) ::  lize3     !<
     2721    INTEGER, DIMENSION(3) ::  start3    !<
    26732722
    26742723
     
    27642813    IMPLICIT NONE
    27652814
    2766     INTEGER(iwp) ::  i
     2815    INTEGER(iwp) ::  i  !<
    27672816
    27682817
     
    28162865    IMPLICIT NONE
    28172866
    2818     INTEGER, INTENT(out)                   ::  i_endian
    2819     INTEGER(KIND=8), TARGET                ::  int8
    2820 
    2821     INTEGER, DIMENSION(1)                  ::  bufshape
    2822     INTEGER(KIND=4), POINTER, DIMENSION(:) ::  int4
    2823 
    2824     TYPE(C_PTR)                            ::  ptr
     2867    INTEGER, INTENT(out)                   ::  i_endian  !<
     2868    INTEGER(KIND=8), TARGET                ::  int8      !<
     2869
     2870    INTEGER, DIMENSION(1)                  ::  bufshape  !<
     2871    INTEGER(KIND=4), POINTER, DIMENSION(:) ::  int4      !<
     2872
     2873    TYPE(C_PTR)                            ::  ptr       !<
    28252874
    28262875
     
    28322881
    28332882    IF ( int4(1) == 1 )  THEN
    2834        i_endian = 1    ! little endian
     2883       i_endian = 1    ! Little endian
    28352884    ELSE
    2836        i_endian = 2    ! big endian
     2885       i_endian = 2    ! Big endian
    28372886    ENDIF
    28382887
Note: See TracChangeset for help on using the changeset viewer.