import numpy as np
import h5py
[docs]
def save_timestep_data(filepath, time_step_name, data_dict):
"""
Sauvegarde un dictionnaire de tableaux NumPy dans un groupe HDF5
correspondant au pas de temps.
"""
# Ouvre le fichier en mode 'a' (append/ajout)
with h5py.File(filepath, 'a') as f:
# Crée un groupe pour ce pas de temps (ex: /t_001, /t_002, ...)
# Si le groupe existe déjà, on le récupère
if time_step_name in f:
del f[time_step_name] # Supprime l'ancien s'il faut écraser
group = f.create_group(time_step_name)
# Sauvegarde chaque tableau comme un "dataset" dans ce groupe
for name, data in data_dict.items():
group.create_dataset(name, data=data)
print(f"Données sauvegardées pour : {time_step_name}")
[docs]
def load_timestep_data(filepath, time_step_name):
"""
Charge les tableaux NumPy d'un pas de temps spécifique depuis le fichier HDF5.
"""
data = {}
try:
# Ouvre le fichier en mode 'r' (read-only/lecture seule)
with h5py.File(filepath, 'r') as f:
# Vérifie si le groupe existe
if time_step_name not in f:
print(f"Erreur: Le pas de temps '{time_step_name}' n'existe pas.")
return None
# Accède au groupe
group = f[time_step_name]
# Charge chaque dataset de ce groupe en mémoire
for name in group.keys():
# L'astuce [()] charge les données du dataset dans un array NumPy
data[name] = group[name][()]
return data
except IOError:
print(f"Erreur: Impossible d'ouvrir le fichier {filepath}")
return None