Coverage for pyxfem/postpro/saveloaddata.py: 0%
24 statements
« prev ^ index » next coverage.py v7.17.0, created at 2026-10-24 07:17 +0000
« prev ^ index » next coverage.py v7.17.0, created at 2026-10-24 07:17 +0000
1import numpy as np
2import h5py
4def save_timestep_data(filepath, time_step_name, data_dict):
5 """
6 Sauvegarde un dictionnaire de tableaux NumPy dans un groupe HDF5
7 correspondant au pas de temps.
8 """
9 # Ouvre le fichier en mode 'a' (append/ajout)
10 with h5py.File(filepath, 'a') as f:
11 # Crée un groupe pour ce pas de temps (ex: /t_001, /t_002, ...)
12 # Si le groupe existe déjà, on le récupère
13 if time_step_name in f:
14 del f[time_step_name] # Supprime l'ancien s'il faut écraser
16 group = f.create_group(time_step_name)
18 # Sauvegarde chaque tableau comme un "dataset" dans ce groupe
19 for name, data in data_dict.items():
20 group.create_dataset(name, data=data)
22 print(f"Données sauvegardées pour : {time_step_name}")
24def load_timestep_data(filepath, time_step_name):
25 """
26 Charge les tableaux NumPy d'un pas de temps spécifique depuis le fichier HDF5.
27 """
28 data = {}
29 try:
30 # Ouvre le fichier en mode 'r' (read-only/lecture seule)
31 with h5py.File(filepath, 'r') as f:
32 # Vérifie si le groupe existe
33 if time_step_name not in f:
34 print(f"Erreur: Le pas de temps '{time_step_name}' n'existe pas.")
35 return None
37 # Accède au groupe
38 group = f[time_step_name]
40 # Charge chaque dataset de ce groupe en mémoire
41 for name in group.keys():
42 # L'astuce [()] charge les données du dataset dans un array NumPy
43 data[name] = group[name][()]
45 return data
47 except IOError:
48 print(f"Erreur: Impossible d'ouvrir le fichier {filepath}")
49 return None