ourocode 1.9.0__tar.gz → 1.11.3__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 (136) hide show
  1. {ourocode-1.9.0/ourocode.egg-info → ourocode-1.11.3}/PKG-INFO +56 -15
  2. {ourocode-1.9.0 → ourocode-1.11.3}/README.md +43 -11
  3. ourocode-1.11.3/ourocode/__init__.py +99 -0
  4. ourocode-1.11.3/ourocode/__version__.py +18 -0
  5. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/sismique/categorie_importance.csv +1 -1
  6. ourocode-1.11.3/ourocode/eurocode/__init__.py +71 -0
  7. ourocode-1.11.3/ourocode/eurocode/core/__init__.py +16 -0
  8. ourocode-1.11.3/ourocode/eurocode/core/batiment.py +53 -0
  9. ourocode-1.9.0/ourocode/eurocode/EC0_Combinaison.py → ourocode-1.11.3/ourocode/eurocode/core/combinaison.py +159 -36
  10. ourocode-1.11.3/ourocode/eurocode/core/model_generator.py +1495 -0
  11. ourocode-1.11.3/ourocode/eurocode/core/model_result.py +842 -0
  12. ourocode-1.11.3/ourocode/eurocode/core/objet.py +166 -0
  13. ourocode-1.11.3/ourocode/eurocode/core/projet.py +83 -0
  14. ourocode-1.11.3/ourocode/eurocode/ec1/__init__.py +5 -0
  15. ourocode-1.11.3/ourocode/eurocode/ec1/exploitation.py +103 -0
  16. ourocode-1.9.0/ourocode/eurocode/EC1_Neige.py → ourocode-1.11.3/ourocode/eurocode/ec1/neige.py +80 -28
  17. ourocode-1.9.0/ourocode/eurocode/EC1_Vent.py → ourocode-1.11.3/ourocode/eurocode/ec1/vent.py +211 -109
  18. ourocode-1.11.3/ourocode/eurocode/ec3/__init__.py +13 -0
  19. ourocode-1.11.3/ourocode/eurocode/ec3/assemblage/__init__.py +13 -0
  20. ourocode-1.11.3/ourocode/eurocode/ec3/assemblage/platine.py +675 -0
  21. ourocode-1.11.3/ourocode/eurocode/ec3/assemblage/soudure.py +655 -0
  22. ourocode-1.11.3/ourocode/eurocode/ec3/assemblage/tige.py +762 -0
  23. ourocode-1.11.3/ourocode/eurocode/ec3/element_droit/__init__.py +7 -0
  24. ourocode-1.11.3/ourocode/eurocode/ec3/element_droit/cisaillement.py +41 -0
  25. ourocode-1.11.3/ourocode/eurocode/ec3/element_droit/compression.py +139 -0
  26. ourocode-1.11.3/ourocode/eurocode/ec3/element_droit/flexion.py +89 -0
  27. ourocode-1.11.3/ourocode/eurocode/ec3/element_droit/plat.py +97 -0
  28. ourocode-1.11.3/ourocode/eurocode/ec3/element_droit/traction.py +94 -0
  29. ourocode-1.9.0/ourocode/eurocode/EC3_Feu.py → ourocode-1.11.3/ourocode/eurocode/ec3/feu.py +52 -22
  30. ourocode-1.11.3/ourocode/eurocode/ec5/__init__.py +28 -0
  31. ourocode-1.11.3/ourocode/eurocode/ec5/assemblage/__init__.py +14 -0
  32. ourocode-1.11.3/ourocode/eurocode/ec5/assemblage/agrafe.py +104 -0
  33. ourocode-1.11.3/ourocode/eurocode/ec5/assemblage/assemblage.py +915 -0
  34. ourocode-1.11.3/ourocode/eurocode/ec5/assemblage/boulon.py +336 -0
  35. ourocode-1.11.3/ourocode/eurocode/ec5/assemblage/broche.py +64 -0
  36. ourocode-1.11.3/ourocode/eurocode/ec5/assemblage/embrevement.py +179 -0
  37. ourocode-1.11.3/ourocode/eurocode/ec5/assemblage/pointe.py +443 -0
  38. ourocode-1.11.3/ourocode/eurocode/ec5/assemblage/tirefond.py +392 -0
  39. ourocode-1.11.3/ourocode/eurocode/ec5/blc.py +40 -0
  40. ourocode-1.9.0/ourocode/eurocode/EC5_CVT.py → ourocode-1.11.3/ourocode/eurocode/ec5/cvt.py +213 -154
  41. ourocode-1.11.3/ourocode/eurocode/ec5/element_droit/__init__.py +11 -0
  42. ourocode-1.11.3/ourocode/eurocode/ec5/element_droit/barre.py +450 -0
  43. ourocode-1.11.3/ourocode/eurocode/ec5/element_droit/cisaillement.py +805 -0
  44. ourocode-1.11.3/ourocode/eurocode/ec5/element_droit/compression.py +588 -0
  45. ourocode-1.11.3/ourocode/eurocode/ec5/element_droit/flexion.py +386 -0
  46. ourocode-1.11.3/ourocode/eurocode/ec5/element_droit/traction.py +139 -0
  47. ourocode-1.11.3/ourocode/eurocode/ec5/feu/__init__.py +7 -0
  48. ourocode-1.11.3/ourocode/eurocode/ec5/feu/cisaillement_feu.py +61 -0
  49. ourocode-1.11.3/ourocode/eurocode/ec5/feu/compression_feu.py +142 -0
  50. ourocode-1.11.3/ourocode/eurocode/ec5/feu/feu.py +486 -0
  51. ourocode-1.11.3/ourocode/eurocode/ec5/feu/flexion_feu.py +214 -0
  52. ourocode-1.11.3/ourocode/eurocode/ec5/feu/traction_feu.py +52 -0
  53. ourocode-1.11.3/ourocode/eurocode/ec8/__init__.py +3 -0
  54. ourocode-1.9.0/ourocode/eurocode/EC8_Sismique.py → ourocode-1.11.3/ourocode/eurocode/ec8/sismique.py +326 -163
  55. ourocode-1.11.3/ourocode/eurocode/mixins/__init__.py +11 -0
  56. ourocode-1.11.3/ourocode/eurocode/mixins/data_loader.py +85 -0
  57. ourocode-1.11.3/ourocode/eurocode/mixins/math_utils.py +332 -0
  58. ourocode-1.11.3/ourocode/eurocode/mixins/serialization.py +242 -0
  59. ourocode-1.11.3/ourocode/eurocode/mixins/synthese.py +124 -0
  60. {ourocode-1.9.0 → ourocode-1.11.3/ourocode.egg-info}/PKG-INFO +56 -15
  61. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode.egg-info/SOURCES.txt +58 -13
  62. ourocode-1.11.3/ourocode.egg-info/requires.txt +28 -0
  63. {ourocode-1.9.0 → ourocode-1.11.3}/pyproject.toml +31 -4
  64. ourocode-1.11.3/tests/test_A0_Projet.py +329 -0
  65. {ourocode-1.9.0 → ourocode-1.11.3}/tests/test_EC0_Combinaison.py +8 -11
  66. ourocode-1.11.3/tests/test_EC1_Exploitation.py +144 -0
  67. {ourocode-1.9.0 → ourocode-1.11.3}/tests/test_EC1_Neige.py +1 -1
  68. {ourocode-1.9.0 → ourocode-1.11.3}/tests/test_EC3_Assemblage.py +2 -2
  69. ourocode-1.11.3/tests/test_EC3_Element_droit.py +229 -0
  70. ourocode-1.11.3/tests/test_EC3_Feu.py +230 -0
  71. ourocode-1.11.3/tests/test_EC3_Platine.py +143 -0
  72. {ourocode-1.9.0 → ourocode-1.11.3}/tests/test_EC5_Assemblage.py +6 -6
  73. ourocode-1.11.3/tests/test_EC5_BLC.py +108 -0
  74. {ourocode-1.9.0 → ourocode-1.11.3}/tests/test_EC5_CVT.py +36 -13
  75. {ourocode-1.9.0 → ourocode-1.11.3}/tests/test_EC5_Element_droit.py +1 -1
  76. ourocode-1.11.3/tests/test_EC5_Embrevement.py +181 -0
  77. {ourocode-1.9.0 → ourocode-1.11.3}/tests/test_EC5_Feu.py +86 -2
  78. {ourocode-1.9.0 → ourocode-1.11.3}/tests/test_EC8_Sismique.py +4 -4
  79. ourocode-1.9.0/ourocode/__init__.py +0 -0
  80. ourocode-1.9.0/ourocode/__version__.py +0 -1
  81. ourocode-1.9.0/ourocode/eurocode/A0_Projet.py +0 -1812
  82. ourocode-1.9.0/ourocode/eurocode/EC3_Assemblage.py +0 -1950
  83. ourocode-1.9.0/ourocode/eurocode/EC3_Element_droit.py +0 -352
  84. ourocode-1.9.0/ourocode/eurocode/EC5_Assemblage.py +0 -2224
  85. ourocode-1.9.0/ourocode/eurocode/EC5_Element_droit.py +0 -1844
  86. ourocode-1.9.0/ourocode/eurocode/EC5_Feu.py +0 -928
  87. ourocode-1.9.0/ourocode/eurocode/__init__.py +0 -0
  88. ourocode-1.9.0/ourocode/eurocode/objet.py +0 -575
  89. ourocode-1.9.0/ourocode.egg-info/requires.txt +0 -15
  90. ourocode-1.9.0/tests/test_A0_Projet.py +0 -126
  91. ourocode-1.9.0/tests/test_EC3_Element_droit.py +0 -111
  92. {ourocode-1.9.0 → ourocode-1.11.3}/LICENSE +0 -0
  93. {ourocode-1.9.0 → ourocode-1.11.3}/MANIFEST.in +0 -0
  94. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/caracteristique_meca_acier.csv +0 -0
  95. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/caracteristique_meca_beton.csv +0 -0
  96. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/caracteristique_meca_bois.csv +0 -0
  97. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/caracteristique_meca_panel.csv +0 -0
  98. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/carte_action_region.csv +0 -0
  99. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/coeff_psy.csv +0 -0
  100. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/exploitation.csv +0 -0
  101. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/gammaM.csv +0 -0
  102. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/kdef.csv +0 -0
  103. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/kfi.csv +0 -0
  104. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/kmod.csv +0 -0
  105. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/limite_fleche.csv +0 -0
  106. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/qualite_acier.csv +0 -0
  107. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/screenshot/C90_def.png +0 -0
  108. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/screenshot/CNC2M_4.3.3_tab15.png +0 -0
  109. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/screenshot/CNC2M_4.3.3_tab16.png +0 -0
  110. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/screenshot/EN1993-1-8_fig6_11.png +0 -0
  111. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/screenshot/Kv_def.png +0 -0
  112. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/screenshot/sign_convention.png +0 -0
  113. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/section_boulon.csv +0 -0
  114. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/sismique/categorie_importance_ns.csv +0 -0
  115. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/sismique/classe_sol.csv +0 -0
  116. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/sismique/spectre_eleastique_h_type1.csv +0 -0
  117. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/sismique/spectre_eleastique_h_type2.csv +0 -0
  118. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cp_toiture_isolee_1_versant.csv +0 -0
  119. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cp_toiture_isolee_1_versant.png +0 -0
  120. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cp_toiture_isolee_2_versants.csv +0 -0
  121. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cp_toiture_isolee_2_versants.png +0 -0
  122. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_mur_verticaux.csv +0 -0
  123. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_mur_verticaux.png +0 -0
  124. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_1_versant.png +0 -0
  125. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_1_versant_0_degres.csv +0 -0
  126. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_1_versant_180_degres.csv +0 -0
  127. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_1_versant_90_degres.csv +0 -0
  128. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_2_versants.png +0 -0
  129. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_2_versants_0_degres.csv +0 -0
  130. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_2_versants_90_degres.csv +0 -0
  131. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_terrasse.csv +0 -0
  132. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_terrasse.png +0 -0
  133. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Ffr.png +0 -0
  134. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode.egg-info/dependency_links.txt +0 -0
  135. {ourocode-1.9.0 → ourocode-1.11.3}/ourocode.egg-info/top_level.txt +0 -0
  136. {ourocode-1.9.0 → ourocode-1.11.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ourocode
3
- Version: 1.9.0
3
+ Version: 1.11.3
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
@@ -12,26 +12,35 @@ Description-Content-Type: text/markdown
12
12
  License-File: LICENSE
13
13
  Requires-Dist: handcalcs
14
14
  Requires-Dist: forallpeople
15
- Requires-Dist: PyNiteFEA
16
- Requires-Dist: pyvista[all,trame]
17
- Requires-Dist: PySide6
18
15
  Requires-Dist: pandas
19
16
  Requires-Dist: Pillow
17
+ Provides-Extra: gui
18
+ Requires-Dist: PySide6; extra == "gui"
19
+ Provides-Extra: mef
20
+ Requires-Dist: PyNiteFEA; extra == "mef"
21
+ Requires-Dist: pyvista[all,trame]; extra == "mef"
22
+ Provides-Extra: full
23
+ Requires-Dist: ourocode[gui,mef]; extra == "full"
20
24
  Provides-Extra: dev
21
25
  Requires-Dist: black; extra == "dev"
22
26
  Provides-Extra: test
23
27
  Requires-Dist: pytest; extra == "test"
24
28
  Requires-Dist: pytest-cov; extra == "test"
25
29
  Requires-Dist: coverage; extra == "test"
30
+ Provides-Extra: docs
31
+ Requires-Dist: mkdocs-material>=9.5; extra == "docs"
32
+ Requires-Dist: mkdocstrings[python]>=0.25; extra == "docs"
33
+ Requires-Dist: mkdocs-include-markdown-plugin>=6.0; extra == "docs"
34
+ Requires-Dist: mike>=2.0; extra == "docs"
26
35
  Dynamic: license-file
27
36
 
28
37
 
29
38
  # 📐 Ourocode - Bibliothèque Python pour le calcul de structure selon les Eurocodes
30
39
 
31
- [![License: Apache License 2.0](https://img.shields.io/badge/License-A-blue.svg)](LICENSE)
32
- <!-- [![PyPI](https://img.shields.io/pypi/v/eurocode-calc.svg)](https://pypi.org/project/ourocode/) -->
33
- [![Tests](https://img.shields.io/github/v/release/AnthonyPrst/ourocode)](https://github.com/AnthonyPrst/ourocode/pyptoject.toml)
34
- [![Coverage](https://img.shields.io/codecov/c/github/ton-org/eurocode)](https://codecov.io/gh/ton-org/ourocode)
40
+ [![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
41
+ [![CI](https://github.com/AnthonyPrst/ourocode/actions/workflows/ci.yml/badge.svg)](https://github.com/AnthonyPrst/ourocode/actions/workflows/ci.yml)
42
+ [![Release](https://img.shields.io/github/v/release/AnthonyPrst/ourocode)](https://github.com/AnthonyPrst/ourocode/releases)
43
+ [![Documentation](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://anthonyprst.github.io/ourocode/)
35
44
 
36
45
  ---
37
46
 
@@ -43,6 +52,7 @@ Dynamic: license-file
43
52
  - **EN 1991** : Actions sur les structures
44
53
  - **EN 1993** : Calcul des structures en acier
45
54
  - **EN 1995** : Calcul des structures en bois
55
+ - **EN 1998** : Calcul des actions sismiques
46
56
 
47
57
  Elle permet de construire un **catalogue de fonctions réutilisables** pour générer rapidement des **notes de calcul personnalisées**, intégrables dans des applications de vérification ou de génération de rapports.
48
58
 
@@ -57,7 +67,9 @@ Elle permet de construire un **catalogue de fonctions réutilisables** pour gén
57
67
  ---
58
68
 
59
69
  ## 📦 Installation
60
- - Attention le programme ne supporte pas les versions supérieures à Python 3.12, les bibliothèques tierces n'étant pas disponible pour ces versions.
70
+
71
+ > **Note :** Python 3.12 requis. Les dépendances tierces ne sont pas encore compatibles avec Python 3.13+.
72
+
61
73
  ```bash
62
74
  pip install ourocode
63
75
  ```
@@ -67,24 +79,35 @@ pip install ourocode
67
79
  pip install git+https://github.com/AnthonyPrst/ourocode.git
68
80
  ```
69
81
 
82
+ > Avec les dépendances optionnelles :
83
+ ```bash
84
+ pip install "ourocode[full]" # GUI (PySide6) + MEF (PyNiteFEA + pyvista)
85
+ pip install "ourocode[gui]" # PySide6 uniquement
86
+ pip install "ourocode[mef]" # PyNiteFEA + pyvista uniquement
87
+ pip install "ourocode[docs]" # Génération de la documentation
88
+ pip install "ourocode[test]" # Outils de test (pytest)
89
+ ```
90
+
70
91
  ---
71
92
 
72
93
  ## ✨ Fonctionnalités
73
94
 
74
95
  - Calculs normalisés : flexion, traction, cisaillement, flambement, assemblage EC5 et EC3, flèche…
75
- - Support des classes de résistance bois (C24, GL24h, etc.) et acier (S235, S355…)
76
- - Prise en compte des effets de feu (EN 1995-1-2)
96
+ - Support des classes de résistance bois massif (C14→C40), lamellé-collé (GL20h→GL32h) et acier (S235, S355…)
97
+ - Prise en compte des effets de feu (EN 1993-1-2, EN 1995-1-2)
98
+ - Calcul des actions sismiques et spectre de réponse (EN 1998-1)
99
+ - Vérification des murs à ossature bois — MOB/CVT (EN 1995-1-1 §9)
77
100
  - Intégration avec `handcalcs` pour génération LaTeX des formules
78
101
  - Compatible avec le logiciel [OUREA-NoCode](https://ourea-structure.fr/telechargement)
79
- - Organisé en modules clairs par norme et fonction (EN1990, EN1991, etc.)
102
+ - Organisé en modules clairs par norme et fonction (EN 1990, EN 1991, EN 1993, EN 1995, EN 1998)
80
103
 
81
104
  ---
82
105
 
83
- ## 🛠 Exemple d'utilisation dans jupyter
106
+ ## 🛠 Exemple d'utilisation dans Jupyter
84
107
 
85
108
  ```python
86
109
  from IPython.display import display, Latex
87
- from ourocode.eurocode.EC5_Element_droit import Barre, Flexion
110
+ from ourocode.eurocode.ec5.element_droit import Barre, Flexion
88
111
 
89
112
  panne = Barre(b=100, h=200, section="Rectangulaire", classe="C24", cs=2, Hi=12, Hf=12)
90
113
  panne_flexion = Flexion._from_parent_class(panne, lo_rel_y=5000, lo_rel_z=5000, coeflef=0.9, pos="Charge sur fibre comprimée")
@@ -97,13 +120,31 @@ display(Latex(latex_taux))
97
120
  ## ✅ Tests & couverture
98
121
 
99
122
  ```bash
100
- pytest --cov=. --cov-report html
123
+ pytest tests/ -v --tb=short
124
+ pytest --cov=ourocode --cov-report html
101
125
  ```
102
126
 
103
127
  Les tests couvrent les modules principaux.
104
128
 
105
129
  ---
106
130
 
131
+ ## 📚 Documentation
132
+
133
+ La documentation complète est disponible sur **[GitHub Pages](https://anthonyprst.github.io/ourocode/)** :
134
+
135
+ - [Guide de démarrage](https://anthonyprst.github.io/ourocode/guide/) — Premiers pas et exemples
136
+ - [Référence API](https://anthonyprst.github.io/ourocode/api/objet/) — Classes et méthodes de chaque module
137
+ - [Référence des normes](https://anthonyprst.github.io/ourocode/normes/) — EN 1990, EN 1991, EN 1993, EN 1995, EN 1998
138
+
139
+ Générer la documentation localement :
140
+
141
+ ```bash
142
+ pip install "ourocode[docs]"
143
+ mkdocs serve
144
+ ```
145
+
146
+ ---
147
+
107
148
  ## 🤝 Contribuer
108
149
 
109
150
  Les contributions sont les bienvenues ! Pour proposer une amélioration ou corriger un bug n'hésité pas à fork le dépôt !
@@ -1,10 +1,10 @@
1
1
 
2
2
  # 📐 Ourocode - Bibliothèque Python pour le calcul de structure selon les Eurocodes
3
3
 
4
- [![License: Apache License 2.0](https://img.shields.io/badge/License-A-blue.svg)](LICENSE)
5
- <!-- [![PyPI](https://img.shields.io/pypi/v/eurocode-calc.svg)](https://pypi.org/project/ourocode/) -->
6
- [![Tests](https://img.shields.io/github/v/release/AnthonyPrst/ourocode)](https://github.com/AnthonyPrst/ourocode/pyptoject.toml)
7
- [![Coverage](https://img.shields.io/codecov/c/github/ton-org/eurocode)](https://codecov.io/gh/ton-org/ourocode)
4
+ [![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
5
+ [![CI](https://github.com/AnthonyPrst/ourocode/actions/workflows/ci.yml/badge.svg)](https://github.com/AnthonyPrst/ourocode/actions/workflows/ci.yml)
6
+ [![Release](https://img.shields.io/github/v/release/AnthonyPrst/ourocode)](https://github.com/AnthonyPrst/ourocode/releases)
7
+ [![Documentation](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://anthonyprst.github.io/ourocode/)
8
8
 
9
9
  ---
10
10
 
@@ -16,6 +16,7 @@
16
16
  - **EN 1991** : Actions sur les structures
17
17
  - **EN 1993** : Calcul des structures en acier
18
18
  - **EN 1995** : Calcul des structures en bois
19
+ - **EN 1998** : Calcul des actions sismiques
19
20
 
20
21
  Elle permet de construire un **catalogue de fonctions réutilisables** pour générer rapidement des **notes de calcul personnalisées**, intégrables dans des applications de vérification ou de génération de rapports.
21
22
 
@@ -30,7 +31,9 @@ Elle permet de construire un **catalogue de fonctions réutilisables** pour gén
30
31
  ---
31
32
 
32
33
  ## 📦 Installation
33
- - Attention le programme ne supporte pas les versions supérieures à Python 3.12, les bibliothèques tierces n'étant pas disponible pour ces versions.
34
+
35
+ > **Note :** Python 3.12 requis. Les dépendances tierces ne sont pas encore compatibles avec Python 3.13+.
36
+
34
37
  ```bash
35
38
  pip install ourocode
36
39
  ```
@@ -40,24 +43,35 @@ pip install ourocode
40
43
  pip install git+https://github.com/AnthonyPrst/ourocode.git
41
44
  ```
42
45
 
46
+ > Avec les dépendances optionnelles :
47
+ ```bash
48
+ pip install "ourocode[full]" # GUI (PySide6) + MEF (PyNiteFEA + pyvista)
49
+ pip install "ourocode[gui]" # PySide6 uniquement
50
+ pip install "ourocode[mef]" # PyNiteFEA + pyvista uniquement
51
+ pip install "ourocode[docs]" # Génération de la documentation
52
+ pip install "ourocode[test]" # Outils de test (pytest)
53
+ ```
54
+
43
55
  ---
44
56
 
45
57
  ## ✨ Fonctionnalités
46
58
 
47
59
  - Calculs normalisés : flexion, traction, cisaillement, flambement, assemblage EC5 et EC3, flèche…
48
- - Support des classes de résistance bois (C24, GL24h, etc.) et acier (S235, S355…)
49
- - Prise en compte des effets de feu (EN 1995-1-2)
60
+ - Support des classes de résistance bois massif (C14→C40), lamellé-collé (GL20h→GL32h) et acier (S235, S355…)
61
+ - Prise en compte des effets de feu (EN 1993-1-2, EN 1995-1-2)
62
+ - Calcul des actions sismiques et spectre de réponse (EN 1998-1)
63
+ - Vérification des murs à ossature bois — MOB/CVT (EN 1995-1-1 §9)
50
64
  - Intégration avec `handcalcs` pour génération LaTeX des formules
51
65
  - Compatible avec le logiciel [OUREA-NoCode](https://ourea-structure.fr/telechargement)
52
- - Organisé en modules clairs par norme et fonction (EN1990, EN1991, etc.)
66
+ - Organisé en modules clairs par norme et fonction (EN 1990, EN 1991, EN 1993, EN 1995, EN 1998)
53
67
 
54
68
  ---
55
69
 
56
- ## 🛠 Exemple d'utilisation dans jupyter
70
+ ## 🛠 Exemple d'utilisation dans Jupyter
57
71
 
58
72
  ```python
59
73
  from IPython.display import display, Latex
60
- from ourocode.eurocode.EC5_Element_droit import Barre, Flexion
74
+ from ourocode.eurocode.ec5.element_droit import Barre, Flexion
61
75
 
62
76
  panne = Barre(b=100, h=200, section="Rectangulaire", classe="C24", cs=2, Hi=12, Hf=12)
63
77
  panne_flexion = Flexion._from_parent_class(panne, lo_rel_y=5000, lo_rel_z=5000, coeflef=0.9, pos="Charge sur fibre comprimée")
@@ -70,13 +84,31 @@ display(Latex(latex_taux))
70
84
  ## ✅ Tests & couverture
71
85
 
72
86
  ```bash
73
- pytest --cov=. --cov-report html
87
+ pytest tests/ -v --tb=short
88
+ pytest --cov=ourocode --cov-report html
74
89
  ```
75
90
 
76
91
  Les tests couvrent les modules principaux.
77
92
 
78
93
  ---
79
94
 
95
+ ## 📚 Documentation
96
+
97
+ La documentation complète est disponible sur **[GitHub Pages](https://anthonyprst.github.io/ourocode/)** :
98
+
99
+ - [Guide de démarrage](https://anthonyprst.github.io/ourocode/guide/) — Premiers pas et exemples
100
+ - [Référence API](https://anthonyprst.github.io/ourocode/api/objet/) — Classes et méthodes de chaque module
101
+ - [Référence des normes](https://anthonyprst.github.io/ourocode/normes/) — EN 1990, EN 1991, EN 1993, EN 1995, EN 1998
102
+
103
+ Générer la documentation localement :
104
+
105
+ ```bash
106
+ pip install "ourocode[docs]"
107
+ mkdocs serve
108
+ ```
109
+
110
+ ---
111
+
80
112
  ## 🤝 Contribuer
81
113
 
82
114
  Les contributions sont les bienvenues ! Pour proposer une amélioration ou corriger un bug n'hésité pas à fork le dépôt !
@@ -0,0 +1,99 @@
1
+ """
2
+ Ourocode - Calcul de structure selon les Eurocodes (AN Françaises)
3
+
4
+ API courte : from ourocode import Barre, Projet, Flexion, ...
5
+ """
6
+
7
+ # Initialisation de l'environnement de calcul structuré (forallpeople)
8
+ import forallpeople as si
9
+
10
+ si.environment("structural")
11
+
12
+ # Core classes
13
+ from ourocode.eurocode.core import (
14
+ Objet,
15
+ Projet,
16
+ Batiment,
17
+ Model_generator,
18
+ Wood_beam_model,
19
+ Model_result,
20
+ Combinaison,
21
+ )
22
+
23
+ # EC1 - Actions
24
+ from ourocode.eurocode.ec1 import Neige, Vent, Exploitation
25
+
26
+ # EC3 - Acier
27
+ from ourocode.eurocode.ec3 import (
28
+ Plat, Traction as Traction_EC3, Compression as Compression_EC3,
29
+ Cisaillement as Cisaillement_EC3, Flexion as Flexion_EC3,
30
+ Tige, Tige_scellement_plaque_ancrage, Tige_scellement_crochet,
31
+ Soudure,
32
+ Platine_assise_compression_beton, Platine_assise_compression_bois, Platine_assise_traction,
33
+ )
34
+
35
+ # EC5 - Bois
36
+ from ourocode.eurocode.ec5 import (
37
+ Barre, Flexion, Traction, Compression, Compression_perpendiculaire,
38
+ Compression_inclinees, Cisaillement,
39
+ Assemblage, Embrevement, Pointe, Agrafe, Boulon, Broche,
40
+ Tirefond_inf_7, Tirefond_sup_6,
41
+ Feu, Flexion_feu, Traction_feu, Compression_feu, Cisaillement_feu,
42
+ Poutre_simple_decroissance, MOB,
43
+ )
44
+
45
+ # EC8 - Sismique
46
+ from ourocode.eurocode.ec8 import Sismique
47
+
48
+ __all__ = [
49
+ # Core
50
+ "Objet",
51
+ "Projet",
52
+ "Batiment",
53
+ "Model_generator",
54
+ "Wood_beam_model",
55
+ "Model_result",
56
+ "Combinaison",
57
+ # EC1
58
+ "Neige",
59
+ "Vent",
60
+ "Exploitation",
61
+ # EC3
62
+ "Plat",
63
+ "Traction_EC3",
64
+ "Compression_EC3",
65
+ "Cisaillement_EC3",
66
+ "Flexion_EC3",
67
+ "Tige",
68
+ "Tige_scellement_plaque_ancrage",
69
+ "Tige_scellement_crochet",
70
+ "Soudure",
71
+ "Platine_assise_compression_beton",
72
+ "Platine_assise_compression_bois",
73
+ "Platine_assise_traction",
74
+ # EC5 (classes principales sans suffixe)
75
+ "Barre",
76
+ "Flexion",
77
+ "Traction",
78
+ "Compression",
79
+ "Compression_perpendiculaire",
80
+ "Compression_inclinees",
81
+ "Cisaillement",
82
+ "Assemblage",
83
+ "Embrevement",
84
+ "Pointe",
85
+ "Agrafe",
86
+ "Boulon",
87
+ "Broche",
88
+ "Tirefond_inf_7",
89
+ "Tirefond_sup_6",
90
+ "Feu",
91
+ "Flexion_feu",
92
+ "Traction_feu",
93
+ "Compression_feu",
94
+ "Cisaillement_feu",
95
+ "Poutre_simple_decroissance",
96
+ "MOB",
97
+ # EC8
98
+ "Sismique",
99
+ ]
@@ -0,0 +1,18 @@
1
+ from pathlib import Path
2
+
3
+ try:
4
+ import tomllib
5
+ except ImportError:
6
+ try:
7
+ import tomli as tomllib
8
+ except ImportError:
9
+ tomllib = None
10
+
11
+ if tomllib is not None:
12
+ _pyproject_path = Path(__file__).parent.parent / "pyproject.toml"
13
+ with open(_pyproject_path, "rb") as f:
14
+ _data = tomllib.load(f)
15
+ __version__ = _data["project"]["version"]
16
+ else:
17
+ # Fallback si tomllib/tomli non disponible (Python < 3.11 sans tomli)
18
+ __version__ = "1.9.0"
@@ -1,4 +1,4 @@
1
- categorie;description;gamma_1
1
+ categorie;description;gamma_I
2
2
  I;Bâtiments d'importance mineure pour la sécurité des personnes Exemple : bâtiments agricoles;0.8
3
3
  II;Bâtiments courants n'appartenant pas aux autres catégories;1
4
4
  III;Bâtiments dont la résistance aux séismes est importante compte tenu des conséquences d'un effondrement. Exemple : écoles, salles de réunion, institutions culturelles, etc.;1.2
@@ -0,0 +1,71 @@
1
+ """
2
+ Ourocode Eurocode modules - Niveau intermédiaire
3
+ Permet : from ourocode.eurocode import Barre, Projet, ...
4
+ """
5
+
6
+ # Sub-packages
7
+ from ourocode.eurocode import core
8
+ from ourocode.eurocode import ec1
9
+ from ourocode.eurocode import ec3
10
+ from ourocode.eurocode import ec5
11
+ from ourocode.eurocode import ec8
12
+
13
+ # Core classes
14
+ from ourocode.eurocode.core import (
15
+ Objet,
16
+ Projet,
17
+ Batiment,
18
+ Model_generator,
19
+ Wood_beam_model,
20
+ Model_result,
21
+ Combinaison,
22
+ )
23
+
24
+ # EC1 - Actions
25
+ from ourocode.eurocode.ec1 import Neige, Vent, Exploitation
26
+
27
+ # EC3 - Acier
28
+ from ourocode.eurocode.ec3 import (
29
+ Plat, Traction as Traction_EC3, Compression as Compression_EC3,
30
+ Cisaillement as Cisaillement_EC3, Flexion as Flexion_EC3,
31
+ Tige, Tige_scellement_plaque_ancrage, Tige_scellement_crochet,
32
+ Soudure,
33
+ Platine_assise_compression_beton, Platine_assise_compression_bois, Platine_assise_traction,
34
+ )
35
+
36
+ # EC5 - Bois (classes principales)
37
+ from ourocode.eurocode.ec5 import (
38
+ Barre, Flexion, Traction, Compression, Compression_perpendiculaire,
39
+ Compression_inclinees, Cisaillement,
40
+ Assemblage, Embrevement, Pointe, Agrafe, Boulon, Broche,
41
+ Tirefond_inf_7, Tirefond_sup_6,
42
+ Feu, Flexion_feu, Traction_feu, Compression_feu, Cisaillement_feu,
43
+ Poutre_simple_decroissance, MOB,
44
+ )
45
+
46
+ # EC8 - Sismique
47
+ from ourocode.eurocode.ec8 import Sismique
48
+
49
+ __all__ = [
50
+ # Sub-packages
51
+ "core", "ec1", "ec3", "ec5", "ec8",
52
+ # Core
53
+ "Objet", "Projet", "Batiment", "Model_generator", "Wood_beam_model",
54
+ "Model_result", "Combinaison",
55
+ # EC1
56
+ "Neige", "Vent", "Exploitation",
57
+ # EC3
58
+ "Plat", "Traction_EC3", "Compression_EC3", "Cisaillement_EC3", "Flexion_EC3",
59
+ "Tige", "Tige_scellement_plaque_ancrage", "Tige_scellement_crochet",
60
+ "Soudure",
61
+ "Platine_assise_compression_beton", "Platine_assise_compression_bois", "Platine_assise_traction",
62
+ # EC5
63
+ "Barre", "Flexion", "Traction", "Compression", "Compression_perpendiculaire",
64
+ "Compression_inclinees", "Cisaillement",
65
+ "Assemblage", "Embrevement", "Pointe", "Agrafe", "Boulon", "Broche",
66
+ "Tirefond_inf_7", "Tirefond_sup_6",
67
+ "Feu", "Flexion_feu", "Traction_feu", "Compression_feu", "Cisaillement_feu",
68
+ "Poutre_simple_decroissance", "MOB",
69
+ # EC8
70
+ "Sismique",
71
+ ]
@@ -0,0 +1,16 @@
1
+ from ourocode.eurocode.core.objet import Objet
2
+ from ourocode.eurocode.core.projet import Projet
3
+ from ourocode.eurocode.core.batiment import Batiment
4
+ from ourocode.eurocode.core.model_generator import Model_generator, Wood_beam_model
5
+ from ourocode.eurocode.core.model_result import Model_result
6
+ from ourocode.eurocode.core.combinaison import Combinaison
7
+
8
+ __all__ = [
9
+ "Objet",
10
+ "Projet",
11
+ "Batiment",
12
+ "Model_generator",
13
+ "Wood_beam_model",
14
+ "Model_result",
15
+ "Combinaison",
16
+ ]
@@ -0,0 +1,53 @@
1
+ # coding in UTF-8
2
+ # by Anthony PARISOT
3
+ import forallpeople as si
4
+
5
+ from ourocode.eurocode.core.projet import Projet
6
+
7
+
8
+ class Batiment(Projet):
9
+ """Classe définissant la géométrie d'un bâtiment pour les calculs de structure.
10
+
11
+ Cette classe décrit les dimensions principales du bâtiment et les
12
+ caractéristiques de sa toiture, nécessaires pour le calcul des
13
+ charges climatiques (neige, vent) et sismiques.
14
+
15
+ Attributs de classe:
16
+ ETAGE (tuple): Liste des niveaux courants (RDC à Toiture).
17
+ """
18
+
19
+ ETAGE = ("RDC", "R+1", "R+2", "R+3", "R+4", "Toiture")
20
+
21
+ def __init__(
22
+ self,
23
+ h_bat: si.m,
24
+ d_bat: si.m,
25
+ b_bat: si.m,
26
+ alpha_toit: float,
27
+ alpha_toit2: float = 0,
28
+ *args,
29
+ **kwargs,
30
+ ):
31
+ """Initialise les dimensions du bâtiment.
32
+
33
+ Args:
34
+ h_bat (si.m): Hauteur totale du bâtiment en mètres, mesurée depuis
35
+ le soubassement rigide ou les fondations (référence sismique).
36
+ d_bat (si.m): Largeur du bâtiment en mètres (dimension perpendiculaire
37
+ au vent dominant pour le calcul du vent).
38
+ b_bat (si.m): Longueur du bâtiment en mètres.
39
+ alpha_toit (float): Pente du premier versant de toiture en degrés.
40
+ 0° pour un toit plat, valeur positive pour un versant.
41
+ alpha_toit2 (float, optional): Pente du second versant pour les
42
+ toits à deux pans (0° si toit à un seul versant ou plat).
43
+ Defaults to 0.
44
+ *args: Arguments positionnels transmis à la classe parent Projet.
45
+ **kwargs: Arguments nommés transmis à la classe parent Projet
46
+ (ingenieur, code_INSEE, alt, etc.).
47
+ """
48
+ super().__init__(*args, **kwargs)
49
+ self.h_bat = h_bat * si.m
50
+ self.d_bat = d_bat * si.m
51
+ self.b_bat = b_bat * si.m # coté perpendiculaire au vent longpant
52
+ self.alpha_toit = alpha_toit
53
+ self.alpha_toit2 = alpha_toit2