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

1import numpy as np 

2import h5py 

3 

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 

15 

16 group = f.create_group(time_step_name) 

17 

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) 

21 

22 print(f"Données sauvegardées pour : {time_step_name}") 

23 

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 

36 

37 # Accède au groupe 

38 group = f[time_step_name] 

39 

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][()] 

44 

45 return data 

46 

47 except IOError: 

48 print(f"Erreur: Impossible d'ouvrir le fichier {filepath}") 

49 return None