Ignore:
Timestamp:
May 18, 2020 2:05:17 PM (4 years ago)
Author:
raasch
Message:

checks added, if index limits in header are exceeded (restart_data_mpi_io_mod), bugfix in rrd_mpi_io_int_2d, location and log_point names added/modified, cpu time per grid point and timestep does not included initialization and spinup any more (cpulog_mod)

File:
1 edited

Legend:

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

    r4536 r4539  
    2424! -----------------
    2525! $Id$
     26! checks added, if index limits in header are exceeded
     27! bugfix in rrd_mpi_io_int_2d
     28!
     29! 4536 2020-05-17 17:24:13Z raasch
    2630! messages and debug output converted to PALM routines
    2731!
     
    178182
    179183    INTEGER(KIND=rd_offset_kind)                ::  header_char_index
    180     INTEGER, PARAMETER                          ::  max_nr_text=128
    181     CHARACTER(LEN=128), DIMENSION(max_nr_text)  ::  text_lines
     184    INTEGER, PARAMETER                          ::  max_nr_char=128
     185    CHARACTER(LEN=128), DIMENSION(max_nr_char)  ::  text_lines
    182186
    183187    INTEGER(KIND=rd_offset_kind)                ::  header_real_index
     
    186190    REAL(KIND=wp), DIMENSION(max_nr_real)       ::  real_values
    187191
    188     INTEGER(KIND=rd_offset_kind)                ::  header_arr_index
     192    INTEGER(KIND=rd_offset_kind)                ::  header_array_index
    189193    INTEGER, PARAMETER                          ::  max_nr_arrays=600
    190194    CHARACTER(LEN=32), DIMENSION(max_nr_arrays) ::  array_names
     
    456460    header_int_index   = 1
    457461    header_char_index  = 1
    458     header_real_index   = 1
    459     header_arr_index  = 1
     462    header_real_index  = 1
     463    header_array_index = 1
    460464
    461465    int_names    = ' '
     
    852856             CALL MPI_FILE_SET_VIEW( fh, array_position, MPI_INTEGER, ft_2di_nb, 'native',         &
    853857                                     MPI_INFO_NULL, ierr )
    854              CALL MPI_FILE_READ_ALL( fh, array_2d, SIZE( array_2d ), MPI_INTEGER, status, ierr )
     858             CALL MPI_FILE_READ_ALL( fh, array_2di, SIZE( array_2di ), MPI_INTEGER, status, ierr )
    855859          ENDIF
    856860          CALL sm_io%sm_node_barrier()
     
    11011105
    11021106
     1107    IF ( header_int_index == max_nr_int )  THEN
     1108       STOP '+++ maximum number of INTEGER entries in restart file header exceeded'
     1109    ENDIF
     1110
    11031111    int_names(header_int_index)  = name
    11041112    int_values(header_int_index) = value
     
    11181126
    11191127
     1128    IF ( header_real_index == max_nr_real )  THEN
     1129       STOP '+++ maximum number of REAL entries in restart file header exceeded'
     1130    ENDIF
     1131
    11201132    real_names(header_real_index)  = name
    11211133    real_values(header_real_index) = value
     
    11461158
    11471159
    1148     array_names(header_arr_index)  = name
    1149     array_offset(header_arr_index) = array_position
    1150     header_arr_index = header_arr_index + 1
     1160    IF ( header_array_index == max_nr_arrays )  THEN
     1161       STOP '+++ maximum number of 2d/3d-array entries in restart file header exceeded'
     1162    ENDIF
     1163
     1164    array_names(header_array_index)  = name
     1165    array_offset(header_array_index) = array_position
     1166    header_array_index = header_array_index + 1
    11511167
    11521168    IF ( include_total_domain_boundaries )  THEN
     
    12071223
    12081224
    1209     array_names(header_arr_index)  = name
    1210     array_offset(header_arr_index) = array_position
    1211     header_arr_index = header_arr_index + 1
     1225    IF ( header_array_index == max_nr_arrays )  THEN
     1226       STOP '+++ maximum number of 2d/3d-array entries in restart file header exceeded'
     1227    ENDIF
     1228
     1229    array_names(header_array_index)  = name
     1230    array_offset(header_array_index) = array_position
     1231    header_array_index = header_array_index + 1
    12121232
    12131233    IF ( ( nxr-nxl + 1 + 2 * nbgp ) == SIZE( data, 2 ) )  THEN
     
    12781298
    12791299
    1280     array_names(header_arr_index)  = name
    1281     array_offset(header_arr_index) = array_position
    1282     header_arr_index = header_arr_index + 1
     1300    IF ( header_array_index == max_nr_arrays )  THEN
     1301       STOP '+++ maximum number of 2d/3d-array entries in restart file header exceeded'
     1302    ENDIF
     1303
     1304    array_names(header_array_index)  = name
     1305    array_offset(header_array_index) = array_position
     1306    header_array_index = header_array_index + 1
    12831307
    12841308    IF ( include_total_domain_boundaries )  THEN
     
    13471371
    13481372
    1349     array_names(header_arr_index)  = name
    1350     array_offset(header_arr_index) = array_position
    1351     header_arr_index = header_arr_index + 1
     1373    IF ( header_array_index == max_nr_arrays )  THEN
     1374       STOP '+++ maximum number of 2d/3d-array entries in restart file header exceeded'
     1375    ENDIF
     1376
     1377    array_names(header_array_index)  = name
     1378    array_offset(header_array_index) = array_position
     1379    header_array_index = header_array_index + 1
    13521380
    13531381#if defined( __parallel )
     
    14111439
    14121440
     1441    IF ( header_char_index == max_nr_char )  THEN
     1442       STOP '+++ maximum number of CHARACTER entries in restart file header exceeded'
     1443    ENDIF
     1444
    14131445    lo_line      = name
    14141446    lo_line(33:) = text
     
    16871719    offset = 0
    16881720
    1689     array_names(header_arr_index)  = name
    1690     array_offset(header_arr_index) = array_position
    1691     header_arr_index = header_arr_index + 1
     1721    IF ( header_array_index == max_nr_arrays )  THEN
     1722       STOP '+++ maximum number of 2d/3d-array entries in restart file header exceeded'
     1723    ENDIF
     1724
     1725    array_names(header_array_index)  = name
     1726    array_offset(header_array_index) = array_position
     1727    header_array_index = header_array_index + 1
    16921728
    16931729!
     
    18221858#endif
    18231859
     1860    IF ( header_array_index == max_nr_arrays )  THEN
     1861       STOP '+++ maximum number of 2d/3d-array entries in restart file header exceeded'
     1862    ENDIF
     1863
    18241864    offset = 0
    1825     array_names(header_arr_index)  = name
    1826     array_offset(header_arr_index) = array_position
    1827     header_arr_index = header_arr_index + 1
     1865    array_names(header_array_index)  = name
     1866    array_offset(header_array_index) = array_position
     1867    header_array_index = header_array_index + 1
    18281868
    18291869!
     
    20522092    ENDIF
    20532093!
    2054 !-- In case of 2d-data, name is writen only once
     2094!-- In case of 2d-data, name is written only once
    20552095    IF ( lo_first_index == 1 )  THEN
    2056        array_names(header_arr_index)  = name
    2057        array_offset(header_arr_index) = array_position
    2058        header_arr_index = header_arr_index + 1
    2059     ENDIF
     2096
     2097       IF ( header_array_index == max_nr_arrays )  THEN
     2098          STOP '+++ maximum number of 2d/3d-array entries in restart file header exceeded'
     2099       ENDIF
     2100
     2101       array_names(header_array_index)  = name
     2102       array_offset(header_array_index) = array_position
     2103       header_array_index = header_array_index + 1
     2104
     2105    ENDIF
     2106
    20602107#if defined( __parallel )
    20612108    IF ( sm_io%is_sm_active() )  THEN
     
    21552202       tgh%nr_char   = header_char_index - 1
    21562203       tgh%nr_real   = header_real_index - 1
    2157        tgh%nr_arrays = header_arr_index - 1
     2204       tgh%nr_arrays = header_array_index - 1
    21582205       tgh%total_nx  = lb%nx + 1
    21592206       tgh%total_ny  = lb%ny + 1
Note: See TracChangeset for help on using the changeset viewer.