Skip to content

Commit 332c17f

Browse files
committed
Fields: extract _h5_file_info
There is also no longer a need to check multiple hdf5 files for the same field since dynamic pressure is treated differently than pressure.
1 parent edcecfb commit 332c17f

1 file changed

Lines changed: 15 additions & 13 deletions

File tree

src/stagpy/step.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,12 @@ def _legacy_file_info(self, name: str) -> tuple[str, list[str]]:
348348
return filestem, list_fvar
349349
raise error.UnknownFieldVarError(name)
350350

351+
def _h5_file_info(self, name: str) -> tuple[str, list[str]]:
352+
for stem, fvars in self.filesh5.items():
353+
if name in fvars:
354+
return stem, fvars
355+
raise error.UnknownFieldVarError(name)
356+
351357
def _get_raw_data(
352358
self, name: str
353359
) -> tuple[list[str], tuple[dict[str, Any], NDArray[np.float64]] | None]:
@@ -361,28 +367,24 @@ def _get_raw_data(
361367
if fieldfile.is_file():
362368
parsed_data = parsers.bin.field.field(fieldfile)
363369
return list_fvar, parsed_data
370+
364371
if not self.filesh5:
365372
return list_fvar, parsed_data
366-
# files in which the requested data can be found
367-
files = [(stem, fvars) for stem, fvars in self.filesh5.items() if name in fvars]
368373
sdat = self.step.sdat
369374
if filestem in phyvars.SFIELD_FILES_H5:
370375
xmff = sdat._botxmf if name.endswith("bot") else sdat._topxmf
371376
else:
372377
xmff = sdat._dataxmf
373378
if xmff is None:
374379
return list_fvar, parsed_data
375-
for filestem, list_fvar in files:
376-
if filestem in phyvars.SFIELD_FILES_H5:
377-
header = self.step.geom._maybe_header
378-
assert header is not None
379-
else:
380-
header = None
381-
parsed_data = parsers.h5.field.field(
382-
xmff, filestem, self.step.isnap, header
383-
)
384-
if parsed_data is not None:
385-
break
380+
381+
filestem, list_fvar = self._h5_file_info(name)
382+
if filestem in phyvars.SFIELD_FILES_H5:
383+
header = self.step.geom._maybe_header
384+
assert header is not None
385+
else:
386+
header = None
387+
parsed_data = parsers.h5.field.field(xmff, filestem, self.step.isnap, header)
386388
return list_fvar, parsed_data
387389

388390

0 commit comments

Comments
 (0)