ourocode 2.1.3__tar.gz → 2.1.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. {ourocode-2.1.3/ourocode.egg-info → ourocode-2.1.5}/PKG-INFO +1 -1
  2. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/core/model_result.py +5 -4
  3. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec3/element_droit/__init__.py +2 -2
  4. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/cvt.py +10 -6
  5. {ourocode-2.1.3 → ourocode-2.1.5/ourocode.egg-info}/PKG-INFO +1 -1
  6. {ourocode-2.1.3 → ourocode-2.1.5}/pyproject.toml +1 -1
  7. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_EC3_Element_droit.py +11 -11
  8. {ourocode-2.1.3 → ourocode-2.1.5}/LICENSE +0 -0
  9. {ourocode-2.1.3 → ourocode-2.1.5}/MANIFEST.in +0 -0
  10. {ourocode-2.1.3 → ourocode-2.1.5}/README.md +0 -0
  11. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/__init__.py +0 -0
  12. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/__version__.py +0 -0
  13. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/caracteristique_meca_acier.csv +0 -0
  14. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/caracteristique_meca_beton.csv +0 -0
  15. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/caracteristique_meca_bois.csv +0 -0
  16. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/caracteristique_meca_panel.csv +0 -0
  17. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/carte_action_region.csv +0 -0
  18. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/coeff_psy.csv +0 -0
  19. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/exploitation.csv +0 -0
  20. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/gammaM.csv +0 -0
  21. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/kdef.csv +0 -0
  22. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/kfi.csv +0 -0
  23. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/kmod.csv +0 -0
  24. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/limite_fleche.csv +0 -0
  25. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/profil_acier.csv +0 -0
  26. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/qualite_acier.csv +0 -0
  27. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/screenshot/C90_def.png +0 -0
  28. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/screenshot/CNC2M_4.3.3_tab15.png +0 -0
  29. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/screenshot/CNC2M_4.3.3_tab16.png +0 -0
  30. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/screenshot/EN1993-1-8_fig6_11.png +0 -0
  31. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/screenshot/Kv_def.png +0 -0
  32. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/screenshot/sign_convention.png +0 -0
  33. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/section_boulon.csv +0 -0
  34. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/sismique/categorie_importance.csv +0 -0
  35. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/sismique/categorie_importance_ns.csv +0 -0
  36. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/sismique/classe_sol.csv +0 -0
  37. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/sismique/spectre_eleastique_h_type1.csv +0 -0
  38. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/sismique/spectre_eleastique_h_type2.csv +0 -0
  39. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/vent/vent_Cp_toiture_isolee_1_versant.csv +0 -0
  40. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/vent/vent_Cp_toiture_isolee_1_versant.png +0 -0
  41. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/vent/vent_Cp_toiture_isolee_2_versants.csv +0 -0
  42. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/vent/vent_Cp_toiture_isolee_2_versants.png +0 -0
  43. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/vent/vent_Cpe_mur_verticaux.csv +0 -0
  44. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/vent/vent_Cpe_mur_verticaux.png +0 -0
  45. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/vent/vent_Cpe_toiture_1_versant.png +0 -0
  46. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/vent/vent_Cpe_toiture_1_versant_0_degres.csv +0 -0
  47. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/vent/vent_Cpe_toiture_1_versant_180_degres.csv +0 -0
  48. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/vent/vent_Cpe_toiture_1_versant_90_degres.csv +0 -0
  49. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/vent/vent_Cpe_toiture_2_versants.png +0 -0
  50. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/vent/vent_Cpe_toiture_2_versants_0_degres.csv +0 -0
  51. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/vent/vent_Cpe_toiture_2_versants_90_degres.csv +0 -0
  52. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/vent/vent_Cpe_toiture_terrasse.csv +0 -0
  53. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/vent/vent_Cpe_toiture_terrasse.png +0 -0
  54. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/data/vent/vent_Ffr.png +0 -0
  55. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/__init__.py +0 -0
  56. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/core/__init__.py +0 -0
  57. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/core/_renderer.py +0 -0
  58. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/core/batiment.py +0 -0
  59. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/core/combinaison.py +0 -0
  60. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/core/model_generator.py +0 -0
  61. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/core/objet.py +0 -0
  62. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/core/projet.py +0 -0
  63. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec1/__init__.py +0 -0
  64. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec1/exploitation.py +0 -0
  65. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec1/neige.py +0 -0
  66. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec1/vent.py +0 -0
  67. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec3/__init__.py +0 -0
  68. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec3/assemblage/__init__.py +0 -0
  69. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec3/assemblage/platine.py +0 -0
  70. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec3/assemblage/soudure.py +0 -0
  71. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec3/assemblage/tige.py +0 -0
  72. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec3/element_droit/cisaillement.py +0 -0
  73. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec3/element_droit/compression.py +0 -0
  74. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec3/element_droit/flexion.py +0 -0
  75. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec3/element_droit/plat.py +0 -0
  76. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec3/element_droit/profil.py +0 -0
  77. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec3/element_droit/traction.py +0 -0
  78. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec3/feu.py +0 -0
  79. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/__init__.py +0 -0
  80. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/assemblage/__init__.py +0 -0
  81. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/assemblage/agrafe.py +0 -0
  82. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/assemblage/assemblage.py +0 -0
  83. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/assemblage/boulon.py +0 -0
  84. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/assemblage/broche.py +0 -0
  85. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/assemblage/embrevement.py +0 -0
  86. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/assemblage/pointe.py +0 -0
  87. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/assemblage/tirefond.py +0 -0
  88. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/blc.py +0 -0
  89. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/element_droit/__init__.py +0 -0
  90. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/element_droit/barre.py +0 -0
  91. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/element_droit/cisaillement.py +0 -0
  92. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/element_droit/compression.py +0 -0
  93. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/element_droit/flexion.py +0 -0
  94. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/element_droit/traction.py +0 -0
  95. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/element_droit/verification_EC5.py +0 -0
  96. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/feu/__init__.py +0 -0
  97. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/feu/cisaillement_feu.py +0 -0
  98. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/feu/compression_feu.py +0 -0
  99. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/feu/feu.py +0 -0
  100. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/feu/flexion_feu.py +0 -0
  101. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec5/feu/traction_feu.py +0 -0
  102. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec8/__init__.py +0 -0
  103. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/ec8/sismique.py +0 -0
  104. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/mixins/__init__.py +0 -0
  105. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/mixins/data_loader.py +0 -0
  106. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/mixins/math_utils.py +0 -0
  107. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/mixins/serialization.py +0 -0
  108. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode/eurocode/mixins/synthese.py +0 -0
  109. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode.egg-info/SOURCES.txt +0 -0
  110. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode.egg-info/dependency_links.txt +0 -0
  111. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode.egg-info/requires.txt +0 -0
  112. {ourocode-2.1.3 → ourocode-2.1.5}/ourocode.egg-info/top_level.txt +0 -0
  113. {ourocode-2.1.3 → ourocode-2.1.5}/setup.cfg +0 -0
  114. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_A0_Projet.py +0 -0
  115. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_EC0_Combinaison.py +0 -0
  116. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_EC1_Exploitation.py +0 -0
  117. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_EC1_Neige.py +0 -0
  118. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_EC3_Assemblage.py +0 -0
  119. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_EC3_Feu.py +0 -0
  120. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_EC3_Platine.py +0 -0
  121. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_EC5_Assemblage.py +0 -0
  122. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_EC5_BLC.py +0 -0
  123. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_EC5_CVT.py +0 -0
  124. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_EC5_Element_droit.py +0 -0
  125. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_EC5_Embrevement.py +0 -0
  126. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_EC5_Feu.py +0 -0
  127. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_EC5_Verification.py +0 -0
  128. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_EC8_Sismique.py +0 -0
  129. {ourocode-2.1.3 → ourocode-2.1.5}/tests/test_model_generator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ourocode
3
- Version: 2.1.3
3
+ Version: 2.1.5
4
4
  Summary: Ceci est un catalogue de fonction permettant une utilisation rapide pour la réalisation de note de calcul personnalisée.
5
5
  Author-email: Anthony PARISOT <contact@ourea-structure.fr>
6
6
  License-Expression: Apache-2.0
@@ -834,9 +834,10 @@ class Model_result(Projet):
834
834
  Un glisseur retournera une force nulle dans la direction libre.
835
835
  """
836
836
  reaction = {}
837
- supports = self._model_generator.get_all_supports()
838
- for support_id, support in supports.items():
839
- node_id = support["Noeud"]
840
- reaction[support_id] = self._get_node_reaction(node_id, combination)
837
+ all_supports = self._model_generator.get_all_supports()
838
+ for support_type, supports in all_supports.items():
839
+ for support_id, support in supports.items():
840
+ node_id = support["Noeud"]
841
+ reaction[support_id] = self._get_node_reaction(node_id, combination)
841
842
  return reaction
842
843
 
@@ -1,8 +1,8 @@
1
1
  from ourocode.eurocode.ec3.element_droit.plat import Plat
2
- from ourocode.eurocode.ec3.element_droit.profil import Profil
2
+ from ourocode.eurocode.ec3.element_droit.profil import _Profil
3
3
  from ourocode.eurocode.ec3.element_droit.traction import Traction
4
4
  from ourocode.eurocode.ec3.element_droit.compression import Compression
5
5
  from ourocode.eurocode.ec3.element_droit.cisaillement import Cisaillement
6
6
  from ourocode.eurocode.ec3.element_droit.flexion import Flexion
7
7
 
8
- __all__ = ["Plat", "Profil", "Traction", "Compression", "Cisaillement", "Flexion"]
8
+ __all__ = ["Plat", "_Profil", "Traction", "Compression", "Cisaillement", "Flexion"]
@@ -379,11 +379,11 @@ class MOB(Batiment):
379
379
  if couturage_ext_rive:
380
380
  wall['Couturage ext. rive'] = couturage_ext_rive * si.mm
381
381
  wall['Couturage ext. intermédiaire'] = couturage_ext_inter * si.mm
382
- if Ff_Rk_ext is None:
382
+ if Ff_Rk_ext is None or Ff_Rk_ext == 0 * si.N:
383
383
  wall['Ff,Rk ext'] = self._data_connecteurs['Extérieur']['Ff,Rk']
384
384
  else:
385
385
  wall['Ff,Rk ext'] = Ff_Rk_ext * si.N
386
- if Kser_ext is None:
386
+ if Kser_ext is None or Kser_ext == 0 * si.N/si.mm:
387
387
  wall['Kser ext'] = self._data_connecteurs['Extérieur']['Kser']
388
388
  else:
389
389
  wall['Kser ext'] = Kser_ext * si.N / si.mm
@@ -391,11 +391,11 @@ class MOB(Batiment):
391
391
  if couturage_int_rive:
392
392
  wall['Couturage int. rive'] = couturage_int_rive * si.mm
393
393
  wall['Couturage int. intermédiaire'] = couturage_int_inter * si.mm
394
- if Ff_Rk_int is None:
394
+ if Ff_Rk_int is None or Ff_Rk_int == 0 * si.N:
395
395
  wall['Ff,Rk int'] = self._data_connecteurs['Intérieur']['Ff,Rk']
396
396
  else:
397
397
  wall['Ff,Rk int'] = Ff_Rk_int * si.N
398
- if Kser_int is None:
398
+ if Kser_int is None or Kser_int == 0 * si.N/si.mm:
399
399
  wall['Kser int'] = self._data_connecteurs['Intérieur']['Kser']
400
400
  else:
401
401
  wall['Kser int'] = Kser_int * si.N / si.mm
@@ -529,6 +529,10 @@ class MOB(Batiment):
529
529
  k_ser_r (float): raideur du panneau.
530
530
  k_ser_i (float): raideur du panneau.
531
531
  """
532
+ if b == 0 * si.mm or h == 0 * si.mm:
533
+ raise ValueError("Dimensions de panneau invalides: b et h doivent être non nulles.")
534
+ if k_ser_r == 0 * si.N / si.mm**2:
535
+ raise ValueError("Raideur linéique de rive nulle (k_ser_r): vérifier Kser et les couturages de rive.")
532
536
  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
533
537
  return K_p
534
538
 
@@ -556,11 +560,11 @@ class MOB(Batiment):
556
560
  for sys_name, sys_wall in sys.items():
557
561
  h_sys = sys_wall['Hauteur du système de mur']
558
562
  for wall_name, wall in sys_wall['Murs'].items():
559
- if wall.get('Kser ext', None):
563
+ if wall.get('Kser ext', None) is not None:
560
564
  kser_ext = wall['Kser ext']
561
565
  couturage_ext_rive = wall['Couturage ext. rive']
562
566
  couturage_ext_inter = wall['Couturage ext. intermédiaire']
563
- if wall.get('Kser int', None):
567
+ if wall.get('Kser int', None) is not None:
564
568
  kser_int = wall['Kser int']
565
569
  couturage_int_rive = wall['Couturage int. rive']
566
570
  couturage_int_inter = wall['Couturage int. intermédiaire']
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ourocode
3
- Version: 2.1.3
3
+ Version: 2.1.5
4
4
  Summary: Ceci est un catalogue de fonction permettant une utilisation rapide pour la réalisation de note de calcul personnalisée.
5
5
  Author-email: Anthony PARISOT <contact@ourea-structure.fr>
6
6
  License-Expression: Apache-2.0
@@ -8,7 +8,7 @@ include = ["ourocode*"]
8
8
 
9
9
  [project]
10
10
  name = "ourocode"
11
- version = "2.1.3"
11
+ version = "2.1.5"
12
12
  description = "Ceci est un catalogue de fonction permettant une utilisation rapide pour la réalisation de note de calcul personnalisée."
13
13
  readme = "README.md"
14
14
  authors = [{name = "Anthony PARISOT", email = "contact@ourea-structure.fr"}]
@@ -8,7 +8,7 @@ import os
8
8
  sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
9
9
  import forallpeople as si
10
10
  si.environment("structural")
11
- from ourocode.eurocode.ec3.element_droit import Plat, Profil, Traction, Compression, Cisaillement, Flexion
11
+ from ourocode.eurocode.ec3.element_droit import Plat, _Profil, Traction, Compression, Cisaillement, Flexion
12
12
 
13
13
  class TestPlat:
14
14
  """Tests pour la classe de base Plat."""
@@ -230,7 +230,7 @@ class TestProfil:
230
230
 
231
231
  def test_initialisation_IPE(self):
232
232
  """Test l'initialisation d'un profil IPE."""
233
- profil = Profil(designation="IPE 300", classe_acier="S235", classe_transv=1)
233
+ profil = _Profil(designation="IPE 300", classe_acier="S235", classe_transv=1)
234
234
  assert profil.designation == "IPE 300"
235
235
  assert profil.classe_acier == "S235"
236
236
  assert profil.classe_transv == 1
@@ -241,7 +241,7 @@ class TestProfil:
241
241
 
242
242
  def test_initialisation_HEA(self):
243
243
  """Test l'initialisation d'un profil HEA."""
244
- profil = Profil(designation="HEA 200", classe_acier="S355", classe_transv=2)
244
+ profil = _Profil(designation="HEA 200", classe_acier="S355", classe_transv=2)
245
245
  assert profil.designation == "HEA 200"
246
246
  assert profil.classe_acier == "S355"
247
247
  assert profil.type_profil == "HEA"
@@ -250,7 +250,7 @@ class TestProfil:
250
250
 
251
251
  def test_initialisation_HEB(self):
252
252
  """Test l'initialisation d'un profil HEB."""
253
- profil = Profil(designation="HEB 300", classe_acier="S275", classe_transv=1)
253
+ profil = _Profil(designation="HEB 300", classe_acier="S275", classe_transv=1)
254
254
  assert profil.designation == "HEB 300"
255
255
  assert profil.classe_acier == "S275"
256
256
  assert profil.type_profil == "HEB"
@@ -259,7 +259,7 @@ class TestProfil:
259
259
 
260
260
  def test_caracteristiques_geometriques(self):
261
261
  """Test le chargement des caractéristiques géométriques."""
262
- profil = Profil(designation="IPE 300", classe_acier="S235")
262
+ profil = _Profil(designation="IPE 300", classe_acier="S235")
263
263
  assert profil.A == 53.81 * si.mm**2
264
264
  assert profil.Av == 16.7 * si.mm**2
265
265
  assert profil.Iy == 8356 * si.mm**4
@@ -274,34 +274,34 @@ class TestProfil:
274
274
 
275
275
  def test_fy_fu_S235(self):
276
276
  """Test les valeurs de fy et fu pour un profil S235."""
277
- profil = Profil(designation="IPE 300", classe_acier="S235")
277
+ profil = _Profil(designation="IPE 300", classe_acier="S235")
278
278
  assert profil.fy == 235000000.0 # 235 MPa en Pa
279
279
  assert profil.fu == 360000000.0 # 360 MPa en Pa
280
280
 
281
281
  def test_fy_fu_S355(self):
282
282
  """Test les valeurs de fy et fu pour un profil S355."""
283
- profil = Profil(designation="HEA 200", classe_acier="S355")
283
+ profil = _Profil(designation="HEA 200", classe_acier="S355")
284
284
  assert profil.fy == 355000000.0 # 355 MPa en Pa
285
285
  assert profil.fu == 490000000.0 # 490 MPa en Pa
286
286
 
287
287
  def test_designation_invalide(self):
288
288
  """Test ValueError sur désignation invalide."""
289
289
  with pytest.raises(ValueError, match="IPE 999"):
290
- Profil(designation="IPE 999", classe_acier="S235")
290
+ _Profil(designation="IPE 999", classe_acier="S235")
291
291
 
292
292
  def test_classe_acier_invalide(self):
293
293
  """Test ValueError sur classe d'acier invalide."""
294
294
  with pytest.raises(ValueError, match="S999"):
295
- Profil(designation="IPE 300", classe_acier="S999")
295
+ _Profil(designation="IPE 300", classe_acier="S999")
296
296
 
297
297
  def test_classe_transv_invalide(self):
298
298
  """Test ValueError sur classe transversale invalide."""
299
299
  with pytest.raises(ValueError, match="4"):
300
- Profil(designation="IPE 300", classe_acier="S235", classe_transv=4)
300
+ _Profil(designation="IPE 300", classe_acier="S235", classe_transv=4)
301
301
 
302
302
  def test_compatibility_with_compression(self):
303
303
  """Test que Profil est compatible avec Compression via _from_parent_class."""
304
- profil = Profil(designation="IPE 300", classe_acier="S235")
304
+ profil = _Profil(designation="IPE 300", classe_acier="S235")
305
305
  compression = Compression._from_parent_class(
306
306
  profil,
307
307
  A=profil.A.value,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes