Changeset 4539 for palm/trunk/SOURCE/restart_data_mpi_io_mod.f90
- Timestamp:
- May 18, 2020 2:05:17 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/restart_data_mpi_io_mod.f90
r4536 r4539 24 24 ! ----------------- 25 25 ! $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 26 30 ! messages and debug output converted to PALM routines 27 31 ! … … 178 182 179 183 INTEGER(KIND=rd_offset_kind) :: header_char_index 180 INTEGER, PARAMETER :: max_nr_ text=128181 CHARACTER(LEN=128), DIMENSION(max_nr_ text) :: text_lines184 INTEGER, PARAMETER :: max_nr_char=128 185 CHARACTER(LEN=128), DIMENSION(max_nr_char) :: text_lines 182 186 183 187 INTEGER(KIND=rd_offset_kind) :: header_real_index … … 186 190 REAL(KIND=wp), DIMENSION(max_nr_real) :: real_values 187 191 188 INTEGER(KIND=rd_offset_kind) :: header_arr _index192 INTEGER(KIND=rd_offset_kind) :: header_array_index 189 193 INTEGER, PARAMETER :: max_nr_arrays=600 190 194 CHARACTER(LEN=32), DIMENSION(max_nr_arrays) :: array_names … … 456 460 header_int_index = 1 457 461 header_char_index = 1 458 header_real_index 459 header_arr _index= 1462 header_real_index = 1 463 header_array_index = 1 460 464 461 465 int_names = ' ' … … 852 856 CALL MPI_FILE_SET_VIEW( fh, array_position, MPI_INTEGER, ft_2di_nb, 'native', & 853 857 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 ) 855 859 ENDIF 856 860 CALL sm_io%sm_node_barrier() … … 1101 1105 1102 1106 1107 IF ( header_int_index == max_nr_int ) THEN 1108 STOP '+++ maximum number of INTEGER entries in restart file header exceeded' 1109 ENDIF 1110 1103 1111 int_names(header_int_index) = name 1104 1112 int_values(header_int_index) = value … … 1118 1126 1119 1127 1128 IF ( header_real_index == max_nr_real ) THEN 1129 STOP '+++ maximum number of REAL entries in restart file header exceeded' 1130 ENDIF 1131 1120 1132 real_names(header_real_index) = name 1121 1133 real_values(header_real_index) = value … … 1146 1158 1147 1159 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 1151 1167 1152 1168 IF ( include_total_domain_boundaries ) THEN … … 1207 1223 1208 1224 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 1212 1232 1213 1233 IF ( ( nxr-nxl + 1 + 2 * nbgp ) == SIZE( data, 2 ) ) THEN … … 1278 1298 1279 1299 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 1283 1307 1284 1308 IF ( include_total_domain_boundaries ) THEN … … 1347 1371 1348 1372 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 1352 1380 1353 1381 #if defined( __parallel ) … … 1411 1439 1412 1440 1441 IF ( header_char_index == max_nr_char ) THEN 1442 STOP '+++ maximum number of CHARACTER entries in restart file header exceeded' 1443 ENDIF 1444 1413 1445 lo_line = name 1414 1446 lo_line(33:) = text … … 1687 1719 offset = 0 1688 1720 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 1692 1728 1693 1729 ! … … 1822 1858 #endif 1823 1859 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 1824 1864 offset = 0 1825 array_names(header_arr _index) = name1826 array_offset(header_arr _index) = array_position1827 header_arr _index = header_arr_index + 11865 array_names(header_array_index) = name 1866 array_offset(header_array_index) = array_position 1867 header_array_index = header_array_index + 1 1828 1868 1829 1869 ! … … 2052 2092 ENDIF 2053 2093 ! 2054 !-- In case of 2d-data, name is writ en only once2094 !-- In case of 2d-data, name is written only once 2055 2095 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 2060 2107 #if defined( __parallel ) 2061 2108 IF ( sm_io%is_sm_active() ) THEN … … 2155 2202 tgh%nr_char = header_char_index - 1 2156 2203 tgh%nr_real = header_real_index - 1 2157 tgh%nr_arrays = header_arr _index - 12204 tgh%nr_arrays = header_array_index - 1 2158 2205 tgh%total_nx = lb%nx + 1 2159 2206 tgh%total_ny = lb%ny + 1
Note: See TracChangeset
for help on using the changeset viewer.