Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ Toutes les modifications notables de ce projet seront documentées dans ce fichi
Le format est basé sur [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/),
et ce projet adhère au [Semantic Versioning](https://semver.org/lang/fr/).

## [2.1.5]

### Fixed
- **`ec5/cvt.py` (`MOB._k_panel`, `MOB._get_Kser_panel`)** : sécurisation du calcul de raideur des panneaux contre les divisions par zéro.
- Validation explicite des dimensions de panneau (`b`, `h`) et de la raideur linéique de rive (`k_ser_r`) avant application de la formule de `K_p`.
- Remplacement des tests implicites de présence (`if wall.get('Kser ...')`) par des tests explicites `is not None` pour éviter les comportements ambigus avec les objets `forallpeople.Physical`.

## [2.1.4]

### Added
Expand Down
9 changes: 5 additions & 4 deletions ourocode/eurocode/core/model_result.py
Original file line number Diff line number Diff line change
Expand Up @@ -834,9 +834,10 @@ def get_supports_reactions(self, combination: str) -> dict:
Un glisseur retournera une force nulle dans la direction libre.
"""
reaction = {}
supports = self._model_generator.get_all_supports()
for support_id, support in supports.items():
node_id = support["Noeud"]
reaction[support_id] = self._get_node_reaction(node_id, combination)
all_supports = self._model_generator.get_all_supports()
for support_type, supports in all_supports.items():
for support_id, support in supports.items():
node_id = support["Noeud"]
reaction[support_id] = self._get_node_reaction(node_id, combination)
return reaction

16 changes: 10 additions & 6 deletions ourocode/eurocode/ec5/cvt.py
Original file line number Diff line number Diff line change
Expand Up @@ -379,23 +379,23 @@ def add_wall_to_sys(self,
if couturage_ext_rive:
wall['Couturage ext. rive'] = couturage_ext_rive * si.mm
wall['Couturage ext. intermédiaire'] = couturage_ext_inter * si.mm
if Ff_Rk_ext is None:
if Ff_Rk_ext is None or Ff_Rk_ext == 0 * si.N:
wall['Ff,Rk ext'] = self._data_connecteurs['Extérieur']['Ff,Rk']
else:
wall['Ff,Rk ext'] = Ff_Rk_ext * si.N
if Kser_ext is None:
if Kser_ext is None or Kser_ext == 0 * si.N/si.mm:
wall['Kser ext'] = self._data_connecteurs['Extérieur']['Kser']
else:
wall['Kser ext'] = Kser_ext * si.N / si.mm

if couturage_int_rive:
wall['Couturage int. rive'] = couturage_int_rive * si.mm
wall['Couturage int. intermédiaire'] = couturage_int_inter * si.mm
if Ff_Rk_int is None:
if Ff_Rk_int is None or Ff_Rk_int == 0 * si.N:
wall['Ff,Rk int'] = self._data_connecteurs['Intérieur']['Ff,Rk']
else:
wall['Ff,Rk int'] = Ff_Rk_int * si.N
if Kser_int is None:
if Kser_int is None or Kser_int == 0 * si.N/si.mm:
wall['Kser int'] = self._data_connecteurs['Intérieur']['Kser']
else:
wall['Kser int'] = Kser_int * si.N / si.mm
Expand Down Expand Up @@ -529,6 +529,10 @@ def _get_Kser_panel(self, b: float, h: float, k_ser_r: float, k_ser_i: float):
k_ser_r (float): raideur du panneau.
k_ser_i (float): raideur du panneau.
"""
if b == 0 * si.mm or h == 0 * si.mm:
raise ValueError("Dimensions de panneau invalides: b et h doivent être non nulles.")
if k_ser_r == 0 * si.N / si.mm**2:
raise ValueError("Raideur linéique de rive nulle (k_ser_r): vérifier Kser et les couturages de rive.")
K_p = (2 / (k_ser_r * (b + h/3) + k_ser_i * h/6) + 2*h**2 / (k_ser_r * b**2 * (h + b/3)))**-1
return K_p

Expand Down Expand Up @@ -556,11 +560,11 @@ def _k_panel(self):
for sys_name, sys_wall in sys.items():
h_sys = sys_wall['Hauteur du système de mur']
for wall_name, wall in sys_wall['Murs'].items():
if wall.get('Kser ext', None):
if wall.get('Kser ext', None) is not None:
kser_ext = wall['Kser ext']
couturage_ext_rive = wall['Couturage ext. rive']
couturage_ext_inter = wall['Couturage ext. intermédiaire']
if wall.get('Kser int', None):
if wall.get('Kser int', None) is not None:
kser_int = wall['Kser int']
couturage_int_rive = wall['Couturage int. rive']
couturage_int_inter = wall['Couturage int. intermédiaire']
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ include = ["ourocode*"]

[project]
name = "ourocode"
version = "2.1.4"
version = "2.1.5"
description = "Ceci est un catalogue de fonction permettant une utilisation rapide pour la réalisation de note de calcul personnalisée."
readme = "README.md"
authors = [{name = "Anthony PARISOT", email = "contact@ourea-structure.fr"}]
Expand Down
Loading