@@ -110,7 +110,7 @@ module subroutine hdf_create(self, dname, dtype, dims, sid, did, chunk_size, ist
110110integer (HID_T), intent (in ) :: dtype
111111integer (HSIZE_T), intent (in ) :: dims(:)
112112integer (HID_T), intent (out ), optional :: sid, did
113- integer , intent (in ), optional :: chunk_size(:) , istart(:) , iend(:) , stride(:)
113+ integer , intent (in ), dimension ( size (dims)), optional :: chunk_size, istart, iend, stride
114114logical , intent (in ), optional :: compact
115115! ! keep istart, iend, stride for future slice shape check
116116end subroutine hdf_create
@@ -137,37 +137,31 @@ module logical function h5exist(filename, dname)
137137character (* ), intent (in ) :: filename, dname
138138end function h5exist
139139
140-
141140module subroutine lt0write (filename , dname , value )
142141character (* ), intent (in ) :: filename, dname
143142class(* ), intent (in ) :: value
144143end subroutine lt0write
145144
146-
147145module subroutine lt1write (filename , dname , value )
148146character (* ), intent (in ) :: filename, dname
149147class(* ), intent (in ) :: value(:)
150148end subroutine lt1write
151149
152-
153150module subroutine lt2write (filename , dname , value )
154151character (* ), intent (in ) :: filename, dname
155152class(* ), intent (in ) :: value(:,:)
156153end subroutine lt2write
157154
158-
159155module subroutine lt3write (filename , dname , value )
160156character (* ), intent (in ) :: filename, dname
161157class(* ), intent (in ) :: value(:,:,:)
162158end subroutine lt3write
163159
164-
165160module subroutine lt4write (filename , dname , value )
166161character (* ), intent (in ) :: filename, dname
167162class(* ), intent (in ) :: value(:,:,:,:)
168163end subroutine lt4write
169164
170-
171165module subroutine lt5write (filename , dname , value )
172166character (* ), intent (in ) :: filename, dname
173167class(* ), intent (in ) :: value(:,:,:,:,:)
@@ -185,6 +179,7 @@ end subroutine lt7write
185179
186180end interface
187181
182+
188183interface ! < reader_lt.f90
189184module subroutine lt0read (filename , dname , value )
190185character (* ), intent (in ) :: filename, dname
@@ -242,62 +237,55 @@ module subroutine h5write_1d(self, dname, value, chunk_size, istart, iend, strid
242237class(hdf5_file), intent (inout ) :: self
243238character (* ), intent (in ) :: dname
244239class(* ), intent (in ) :: value(:)
245- integer , intent (in ), optional :: chunk_size(1 )
246- integer , intent (in ), optional , dimension (:) :: istart, iend, stride
240+ integer , intent (in ), dimension (1 ), optional :: chunk_size, istart, iend, stride
247241logical , intent (in ), optional :: compact
248242end subroutine h5write_1d
249243
250244module subroutine h5write_2d (self , dname , value , chunk_size , istart , iend , stride , compact )
251245class(hdf5_file), intent (inout ) :: self
252246character (* ), intent (in ) :: dname
253247class(* ), intent (in ) :: value(:,:)
254- integer , intent (in ), optional :: chunk_size(2 )
255- integer , intent (in ), optional , dimension (:) :: istart, iend, stride
248+ integer , intent (in ), dimension (2 ), optional :: chunk_size, istart, iend, stride
256249logical , intent (in ), optional :: compact
257250end subroutine h5write_2d
258251
259252module subroutine h5write_3d (self , dname , value , chunk_size , istart , iend , stride , compact )
260253class(hdf5_file), intent (inout ) :: self
261254character (* ), intent (in ) :: dname
262255class(* ), intent (in ) :: value(:,:,:)
263- integer , intent (in ), optional :: chunk_size(3 )
264- integer , intent (in ), optional , dimension (:) :: istart, iend, stride
256+ integer , intent (in ), dimension (3 ), optional :: chunk_size, istart, iend, stride
265257logical , intent (in ), optional :: compact
266258end subroutine h5write_3d
267259
268260module subroutine h5write_4d (self , dname , value , chunk_size , istart , iend , stride , compact )
269261class(hdf5_file), intent (inout ) :: self
270262character (* ), intent (in ) :: dname
271263class(* ), intent (in ) :: value(:,:,:,:)
272- integer , intent (in ), optional :: chunk_size(4 )
273- integer , intent (in ), optional , dimension (:) :: istart, iend, stride
264+ integer , intent (in ), dimension (4 ), optional :: chunk_size, istart, iend, stride
274265logical , intent (in ), optional :: compact
275266end subroutine h5write_4d
276267
277268module subroutine h5write_5d (self , dname , value , chunk_size , istart , iend , stride , compact )
278269class(hdf5_file), intent (inout ) :: self
279270character (* ), intent (in ) :: dname
280271class(* ), intent (in ) :: value(:,:,:,:,:)
281- integer , intent (in ), optional :: chunk_size(5 )
282- integer , intent (in ), optional , dimension (:) :: istart, iend, stride
272+ integer , intent (in ), dimension (5 ), optional :: chunk_size, istart, iend, stride
283273logical , intent (in ), optional :: compact
284274end subroutine h5write_5d
285275
286276module subroutine h5write_6d (self , dname , value , chunk_size , istart , iend , stride , compact )
287277class(hdf5_file), intent (inout ) :: self
288278character (* ), intent (in ) :: dname
289279class(* ), intent (in ) :: value(:,:,:,:,:,:)
290- integer , intent (in ), optional :: chunk_size(6 )
291- integer , intent (in ), optional , dimension (:) :: istart, iend, stride
280+ integer , intent (in ), dimension (6 ), optional :: chunk_size, istart, iend, stride
292281logical , intent (in ), optional :: compact
293282end subroutine h5write_6d
294283
295284module subroutine h5write_7d (self ,dname ,value , chunk_size , istart , iend , stride , compact )
296285class(hdf5_file), intent (inout ) :: self
297286character (* ), intent (in ) :: dname
298287class(* ), intent (in ) :: value(:,:,:,:,:,:,:)
299- integer , intent (in ), optional :: chunk_size(7 )
300- integer , intent (in ), optional , dimension (:) :: istart, iend, stride
288+ integer , intent (in ), dimension (7 ), optional :: chunk_size, istart, iend, stride
301289logical , intent (in ), optional :: compact
302290end subroutine h5write_7d
303291
@@ -357,49 +345,49 @@ module subroutine h5read_1d(self, dname, value, istart, iend, stride)
357345class(hdf5_file), intent (in ) :: self
358346character (* ), intent (in ) :: dname
359347class(* ), intent (inout ) :: value(:)
360- integer , intent (in ), optional , dimension (:) :: istart, iend, stride
348+ integer , intent (in ), dimension (1 ), optional :: istart, iend, stride
361349end subroutine h5read_1d
362350
363351module subroutine h5read_2d (self , dname , value , istart , iend , stride )
364352class(hdf5_file), intent (in ) :: self
365353character (* ), intent (in ) :: dname
366354class(* ), intent (inout ) :: value(:,:)
367- integer , intent (in ), optional , dimension (:) :: istart, iend, stride
355+ integer , intent (in ), dimension (2 ), optional :: istart, iend, stride
368356end subroutine h5read_2d
369357
370358module subroutine h5read_3d (self , dname , value , istart , iend , stride )
371359class(hdf5_file), intent (in ) :: self
372360character (* ), intent (in ) :: dname
373361class(* ), intent (inout ) :: value(:,:,:)
374- integer , intent (in ), optional , dimension (:) :: istart, iend, stride
362+ integer , intent (in ), dimension (3 ), optional :: istart, iend, stride
375363end subroutine h5read_3d
376364
377365module subroutine h5read_4d (self , dname , value , istart , iend , stride )
378366class(hdf5_file), intent (in ) :: self
379367character (* ), intent (in ) :: dname
380368class(* ), intent (inout ) :: value(:,:,:,:)
381- integer , intent (in ), optional , dimension (:) :: istart, iend, stride
369+ integer , intent (in ), dimension (4 ), optional :: istart, iend, stride
382370end subroutine h5read_4d
383371
384372module subroutine h5read_5d (self , dname , value , istart , iend , stride )
385373class(hdf5_file), intent (in ) :: self
386374character (* ), intent (in ) :: dname
387375class(* ), intent (inout ) :: value(:,:,:,:,:)
388- integer , intent (in ), optional , dimension (:) :: istart, iend, stride
376+ integer , intent (in ), dimension (5 ), optional :: istart, iend, stride
389377end subroutine h5read_5d
390378
391379module subroutine h5read_6d (self , dname , value , istart , iend , stride )
392380class(hdf5_file), intent (in ) :: self
393381character (* ), intent (in ) :: dname
394382class(* ), intent (inout ) :: value(:,:,:,:,:,:)
395- integer , intent (in ), optional , dimension (:) :: istart, iend, stride
383+ integer , intent (in ), dimension (6 ), optional :: istart, iend, stride
396384end subroutine h5read_6d
397385
398386module subroutine h5read_7d (self , dname , value , istart , iend , stride )
399387class(hdf5_file), intent (in ) :: self
400388character (* ), intent (in ) :: dname
401389class(* ), intent (inout ) :: value(:,:,:,:,:,:,:)
402- integer , intent (in ), optional , dimension (:) :: istart, iend, stride
390+ integer , intent (in ), dimension (7 ), optional :: istart, iend, stride
403391end subroutine h5read_7d
404392end interface
405393
@@ -736,17 +724,13 @@ subroutine hdf_get_slice(self, dname, did, sid, mem_sid, i0, i1, i2)
736724character (* ), intent (in ) :: dname
737725integer (HID_T), intent (inout ) :: did ! < inout for sentinel value
738726integer (hid_t), intent (out ) :: sid, mem_sid
739- class(* ), intent (in ), dimension (:) :: i0, i1
740- class(* ), intent (in ), optional , dimension (:) :: i2
727+ class(* ), intent (in ), dimension (:) :: i0
728+ class(* ), intent (in ), dimension (size (i0)) :: i1
729+ class(* ), intent (in ), dimension (size (i0)), optional :: i2
741730
742731integer (hsize_t), dimension (size (i0)) :: istart, iend, stride, mem_dims
743732integer :: ierr
744733
745- if (size (i0) /= size (i1)) error stop " istart and iend must have equal length"
746- if (present (i2)) then
747- if (size (i0) /= size (i2)) error stop " istride must be same length as istart and iend"
748- endif
749-
750734if (.not. self% is_open) error stop ' h5fortran:slice: file handle is not open'
751735
752736! ! istart
0 commit comments