ourocode 1.10.0__tar.gz → 2.0.0__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 (135) hide show
  1. {ourocode-1.10.0/ourocode.egg-info → ourocode-2.0.0}/PKG-INFO +46 -14
  2. {ourocode-1.10.0 → ourocode-2.0.0}/README.md +35 -9
  3. ourocode-2.0.0/ourocode/__init__.py +99 -0
  4. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/__version__.py +1 -1
  5. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/sismique/categorie_importance.csv +1 -1
  6. ourocode-2.0.0/ourocode/eurocode/__init__.py +71 -0
  7. ourocode-2.0.0/ourocode/eurocode/core/__init__.py +16 -0
  8. ourocode-2.0.0/ourocode/eurocode/core/batiment.py +53 -0
  9. ourocode-1.10.0/ourocode/eurocode/EC0_Combinaison.py → ourocode-2.0.0/ourocode/eurocode/core/combinaison.py +109 -22
  10. ourocode-1.10.0/ourocode/eurocode/A0_Projet.py → ourocode-2.0.0/ourocode/eurocode/core/model_generator.py +5 -986
  11. ourocode-2.0.0/ourocode/eurocode/core/model_result.py +842 -0
  12. ourocode-2.0.0/ourocode/eurocode/core/objet.py +166 -0
  13. ourocode-2.0.0/ourocode/eurocode/core/projet.py +83 -0
  14. ourocode-2.0.0/ourocode/eurocode/core/renderer.py +598 -0
  15. ourocode-2.0.0/ourocode/eurocode/ec1/__init__.py +5 -0
  16. ourocode-2.0.0/ourocode/eurocode/ec1/exploitation.py +103 -0
  17. ourocode-1.10.0/ourocode/eurocode/EC1_Neige.py → ourocode-2.0.0/ourocode/eurocode/ec1/neige.py +82 -30
  18. ourocode-1.10.0/ourocode/eurocode/EC1_Vent.py → ourocode-2.0.0/ourocode/eurocode/ec1/vent.py +211 -105
  19. ourocode-2.0.0/ourocode/eurocode/ec3/__init__.py +13 -0
  20. ourocode-2.0.0/ourocode/eurocode/ec3/assemblage/__init__.py +13 -0
  21. ourocode-2.0.0/ourocode/eurocode/ec3/assemblage/platine.py +675 -0
  22. ourocode-2.0.0/ourocode/eurocode/ec3/assemblage/soudure.py +655 -0
  23. ourocode-2.0.0/ourocode/eurocode/ec3/assemblage/tige.py +762 -0
  24. ourocode-2.0.0/ourocode/eurocode/ec3/element_droit/__init__.py +7 -0
  25. ourocode-2.0.0/ourocode/eurocode/ec3/element_droit/cisaillement.py +41 -0
  26. ourocode-2.0.0/ourocode/eurocode/ec3/element_droit/compression.py +139 -0
  27. ourocode-2.0.0/ourocode/eurocode/ec3/element_droit/flexion.py +89 -0
  28. ourocode-2.0.0/ourocode/eurocode/ec3/element_droit/plat.py +97 -0
  29. ourocode-2.0.0/ourocode/eurocode/ec3/element_droit/traction.py +94 -0
  30. ourocode-1.10.0/ourocode/eurocode/EC3_Feu.py → ourocode-2.0.0/ourocode/eurocode/ec3/feu.py +52 -23
  31. ourocode-2.0.0/ourocode/eurocode/ec5/__init__.py +28 -0
  32. ourocode-2.0.0/ourocode/eurocode/ec5/assemblage/__init__.py +14 -0
  33. ourocode-2.0.0/ourocode/eurocode/ec5/assemblage/agrafe.py +104 -0
  34. ourocode-2.0.0/ourocode/eurocode/ec5/assemblage/assemblage.py +915 -0
  35. ourocode-2.0.0/ourocode/eurocode/ec5/assemblage/boulon.py +336 -0
  36. ourocode-2.0.0/ourocode/eurocode/ec5/assemblage/broche.py +64 -0
  37. ourocode-2.0.0/ourocode/eurocode/ec5/assemblage/embrevement.py +179 -0
  38. ourocode-2.0.0/ourocode/eurocode/ec5/assemblage/pointe.py +443 -0
  39. ourocode-2.0.0/ourocode/eurocode/ec5/assemblage/tirefond.py +392 -0
  40. ourocode-2.0.0/ourocode/eurocode/ec5/blc.py +40 -0
  41. ourocode-1.10.0/ourocode/eurocode/EC5_CVT.py → ourocode-2.0.0/ourocode/eurocode/ec5/cvt.py +215 -156
  42. ourocode-2.0.0/ourocode/eurocode/ec5/element_droit/__init__.py +11 -0
  43. ourocode-2.0.0/ourocode/eurocode/ec5/element_droit/barre.py +450 -0
  44. ourocode-2.0.0/ourocode/eurocode/ec5/element_droit/cisaillement.py +805 -0
  45. ourocode-2.0.0/ourocode/eurocode/ec5/element_droit/compression.py +588 -0
  46. ourocode-2.0.0/ourocode/eurocode/ec5/element_droit/flexion.py +386 -0
  47. ourocode-2.0.0/ourocode/eurocode/ec5/element_droit/traction.py +139 -0
  48. ourocode-2.0.0/ourocode/eurocode/ec5/feu/__init__.py +7 -0
  49. ourocode-2.0.0/ourocode/eurocode/ec5/feu/cisaillement_feu.py +65 -0
  50. ourocode-2.0.0/ourocode/eurocode/ec5/feu/compression_feu.py +147 -0
  51. ourocode-2.0.0/ourocode/eurocode/ec5/feu/feu.py +486 -0
  52. ourocode-2.0.0/ourocode/eurocode/ec5/feu/flexion_feu.py +219 -0
  53. ourocode-2.0.0/ourocode/eurocode/ec5/feu/traction_feu.py +55 -0
  54. ourocode-2.0.0/ourocode/eurocode/ec8/__init__.py +3 -0
  55. ourocode-1.10.0/ourocode/eurocode/EC8_Sismique.py → ourocode-2.0.0/ourocode/eurocode/ec8/sismique.py +327 -164
  56. ourocode-2.0.0/ourocode/eurocode/mixins/__init__.py +11 -0
  57. ourocode-2.0.0/ourocode/eurocode/mixins/data_loader.py +85 -0
  58. ourocode-2.0.0/ourocode/eurocode/mixins/math_utils.py +332 -0
  59. ourocode-2.0.0/ourocode/eurocode/mixins/serialization.py +242 -0
  60. ourocode-2.0.0/ourocode/eurocode/mixins/synthese.py +124 -0
  61. {ourocode-1.10.0 → ourocode-2.0.0/ourocode.egg-info}/PKG-INFO +46 -14
  62. ourocode-2.0.0/ourocode.egg-info/SOURCES.txt +122 -0
  63. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode.egg-info/requires.txt +9 -5
  64. {ourocode-1.10.0 → ourocode-2.0.0}/pyproject.toml +26 -6
  65. ourocode-2.0.0/tests/test_A0_Projet.py +329 -0
  66. {ourocode-1.10.0 → ourocode-2.0.0}/tests/test_EC0_Combinaison.py +8 -11
  67. ourocode-2.0.0/tests/test_EC1_Exploitation.py +144 -0
  68. {ourocode-1.10.0 → ourocode-2.0.0}/tests/test_EC1_Neige.py +1 -1
  69. {ourocode-1.10.0 → ourocode-2.0.0}/tests/test_EC3_Assemblage.py +2 -2
  70. ourocode-2.0.0/tests/test_EC3_Element_droit.py +229 -0
  71. ourocode-2.0.0/tests/test_EC3_Feu.py +230 -0
  72. ourocode-2.0.0/tests/test_EC3_Platine.py +143 -0
  73. {ourocode-1.10.0 → ourocode-2.0.0}/tests/test_EC5_Assemblage.py +6 -6
  74. ourocode-2.0.0/tests/test_EC5_BLC.py +108 -0
  75. {ourocode-1.10.0 → ourocode-2.0.0}/tests/test_EC5_CVT.py +36 -13
  76. {ourocode-1.10.0 → ourocode-2.0.0}/tests/test_EC5_Element_droit.py +1 -1
  77. ourocode-2.0.0/tests/test_EC5_Embrevement.py +181 -0
  78. {ourocode-1.10.0 → ourocode-2.0.0}/tests/test_EC5_Feu.py +86 -2
  79. {ourocode-1.10.0 → ourocode-2.0.0}/tests/test_EC8_Sismique.py +5 -5
  80. ourocode-1.10.0/ourocode/__init__.py +0 -0
  81. ourocode-1.10.0/ourocode/eurocode/EC3_Assemblage.py +0 -1947
  82. ourocode-1.10.0/ourocode/eurocode/EC3_Element_droit.py +0 -359
  83. ourocode-1.10.0/ourocode/eurocode/EC5_Assemblage.py +0 -2224
  84. ourocode-1.10.0/ourocode/eurocode/EC5_Element_droit.py +0 -2304
  85. ourocode-1.10.0/ourocode/eurocode/EC5_Feu.py +0 -929
  86. ourocode-1.10.0/ourocode/eurocode/__init__.py +0 -0
  87. ourocode-1.10.0/ourocode/eurocode/objet.py +0 -876
  88. ourocode-1.10.0/ourocode.egg-info/SOURCES.txt +0 -76
  89. ourocode-1.10.0/tests/test_A0_Projet.py +0 -126
  90. ourocode-1.10.0/tests/test_EC3_Element_droit.py +0 -111
  91. {ourocode-1.10.0 → ourocode-2.0.0}/LICENSE +0 -0
  92. {ourocode-1.10.0 → ourocode-2.0.0}/MANIFEST.in +0 -0
  93. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/caracteristique_meca_acier.csv +0 -0
  94. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/caracteristique_meca_beton.csv +0 -0
  95. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/caracteristique_meca_bois.csv +0 -0
  96. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/caracteristique_meca_panel.csv +0 -0
  97. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/carte_action_region.csv +0 -0
  98. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/coeff_psy.csv +0 -0
  99. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/exploitation.csv +0 -0
  100. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/gammaM.csv +0 -0
  101. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/kdef.csv +0 -0
  102. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/kfi.csv +0 -0
  103. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/kmod.csv +0 -0
  104. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/limite_fleche.csv +0 -0
  105. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/qualite_acier.csv +0 -0
  106. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/screenshot/C90_def.png +0 -0
  107. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/screenshot/CNC2M_4.3.3_tab15.png +0 -0
  108. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/screenshot/CNC2M_4.3.3_tab16.png +0 -0
  109. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/screenshot/EN1993-1-8_fig6_11.png +0 -0
  110. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/screenshot/Kv_def.png +0 -0
  111. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/screenshot/sign_convention.png +0 -0
  112. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/section_boulon.csv +0 -0
  113. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/sismique/categorie_importance_ns.csv +0 -0
  114. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/sismique/classe_sol.csv +0 -0
  115. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/sismique/spectre_eleastique_h_type1.csv +0 -0
  116. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/sismique/spectre_eleastique_h_type2.csv +0 -0
  117. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cp_toiture_isolee_1_versant.csv +0 -0
  118. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cp_toiture_isolee_1_versant.png +0 -0
  119. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cp_toiture_isolee_2_versants.csv +0 -0
  120. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cp_toiture_isolee_2_versants.png +0 -0
  121. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_mur_verticaux.csv +0 -0
  122. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_mur_verticaux.png +0 -0
  123. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_1_versant.png +0 -0
  124. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_1_versant_0_degres.csv +0 -0
  125. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_1_versant_180_degres.csv +0 -0
  126. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_1_versant_90_degres.csv +0 -0
  127. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_2_versants.png +0 -0
  128. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_2_versants_0_degres.csv +0 -0
  129. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_2_versants_90_degres.csv +0 -0
  130. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_terrasse.csv +0 -0
  131. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_terrasse.png +0 -0
  132. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Ffr.png +0 -0
  133. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode.egg-info/dependency_links.txt +0 -0
  134. {ourocode-1.10.0 → ourocode-2.0.0}/ourocode.egg-info/top_level.txt +0 -0
  135. {ourocode-1.10.0 → ourocode-2.0.0}/setup.cfg +0 -0
@@ -1,24 +1,25 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ourocode
3
- Version: 1.10.0
3
+ Version: 2.0.0
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
7
7
  Project-URL: Homepage, https://github.com/AnthonyPrst/ourocode
8
8
  Classifier: Programming Language :: Python :: 3.12
9
+ Classifier: Programming Language :: Python :: 3.13
10
+ Classifier: Programming Language :: Python :: 3.14
9
11
  Classifier: Operating System :: OS Independent
10
12
  Requires-Python: >=3.12
11
13
  Description-Content-Type: text/markdown
12
14
  License-File: LICENSE
13
- Requires-Dist: handcalcs
14
15
  Requires-Dist: forallpeople
15
16
  Requires-Dist: pandas
16
17
  Requires-Dist: Pillow
18
+ Requires-Dist: matplotlib
19
+ Requires-Dist: pyvista[all,trame]
20
+ Requires-Dist: PyNiteFEA
17
21
  Provides-Extra: gui
18
22
  Requires-Dist: PySide6; extra == "gui"
19
- Provides-Extra: mef
20
- Requires-Dist: PyNiteFEA; extra == "mef"
21
- Requires-Dist: pyvista[all,trame]; extra == "mef"
22
23
  Provides-Extra: full
23
24
  Requires-Dist: ourocode[gui,mef]; extra == "full"
24
25
  Provides-Extra: dev
@@ -27,6 +28,11 @@ Provides-Extra: test
27
28
  Requires-Dist: pytest; extra == "test"
28
29
  Requires-Dist: pytest-cov; extra == "test"
29
30
  Requires-Dist: coverage; extra == "test"
31
+ Provides-Extra: docs
32
+ Requires-Dist: mkdocs-material>=9.5; extra == "docs"
33
+ Requires-Dist: mkdocstrings[python]>=0.25; extra == "docs"
34
+ Requires-Dist: mkdocs-include-markdown-plugin>=6.0; extra == "docs"
35
+ Requires-Dist: mike>=2.0; extra == "docs"
30
36
  Dynamic: license-file
31
37
 
32
38
 
@@ -35,6 +41,7 @@ Dynamic: license-file
35
41
  [![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
36
42
  [![CI](https://github.com/AnthonyPrst/ourocode/actions/workflows/ci.yml/badge.svg)](https://github.com/AnthonyPrst/ourocode/actions/workflows/ci.yml)
37
43
  [![Release](https://img.shields.io/github/v/release/AnthonyPrst/ourocode)](https://github.com/AnthonyPrst/ourocode/releases)
44
+ [![Documentation](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://anthonyprst.github.io/ourocode/)
38
45
 
39
46
  ---
40
47
 
@@ -46,6 +53,7 @@ Dynamic: license-file
46
53
  - **EN 1991** : Actions sur les structures
47
54
  - **EN 1993** : Calcul des structures en acier
48
55
  - **EN 1995** : Calcul des structures en bois
56
+ - **EN 1998** : Calcul des actions sismiques
49
57
 
50
58
  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.
51
59
 
@@ -60,7 +68,9 @@ Elle permet de construire un **catalogue de fonctions réutilisables** pour gén
60
68
  ---
61
69
 
62
70
  ## 📦 Installation
63
- - Attention le programme ne supporte pas les versions supérieures à Python 3.12, les bibliothèques tierces n'étant pas disponible pour ces versions.
71
+
72
+ > **Note :** Python 3.12 requis. Les dépendances tierces ne sont pas encore compatibles avec Python 3.13+.
73
+
64
74
  ```bash
65
75
  pip install ourocode
66
76
  ```
@@ -70,11 +80,13 @@ pip install ourocode
70
80
  pip install git+https://github.com/AnthonyPrst/ourocode.git
71
81
  ```
72
82
 
73
- > Avec les dépendances optionnelles (GUI PySide6 et/ou MEF Pynite) :
83
+ > Avec les dépendances optionnelles :
74
84
  ```bash
75
- pip install "ourocode[full]" # GUI + MEF
85
+ pip install "ourocode[full]" # GUI (PySide6) + MEF (PyNiteFEA + pyvista)
76
86
  pip install "ourocode[gui]" # PySide6 uniquement
77
87
  pip install "ourocode[mef]" # PyNiteFEA + pyvista uniquement
88
+ pip install "ourocode[docs]" # Génération de la documentation
89
+ pip install "ourocode[test]" # Outils de test (pytest)
78
90
  ```
79
91
 
80
92
  ---
@@ -82,19 +94,21 @@ pip install "ourocode[mef]" # PyNiteFEA + pyvista uniquement
82
94
  ## ✨ Fonctionnalités
83
95
 
84
96
  - Calculs normalisés : flexion, traction, cisaillement, flambement, assemblage EC5 et EC3, flèche…
85
- - Support des classes de résistance bois (C24, GL24h, etc.) et acier (S235, S355…)
86
- - Prise en compte des effets de feu (EN 1995-1-2)
97
+ - Support des classes de résistance bois massif (C14→C40), lamellé-collé (GL20h→GL32h) et acier (S235, S355…)
98
+ - Prise en compte des effets de feu (EN 1993-1-2, EN 1995-1-2)
99
+ - Calcul des actions sismiques et spectre de réponse (EN 1998-1)
100
+ - Vérification des murs à ossature bois — MOB/CVT (EN 1995-1-1 §9)
87
101
  - Intégration avec `handcalcs` pour génération LaTeX des formules
88
102
  - Compatible avec le logiciel [OUREA-NoCode](https://ourea-structure.fr/telechargement)
89
- - Organisé en modules clairs par norme et fonction (EN1990, EN1991, etc.)
103
+ - Organisé en modules clairs par norme et fonction (EN 1990, EN 1991, EN 1993, EN 1995, EN 1998)
90
104
 
91
105
  ---
92
106
 
93
- ## 🛠 Exemple d'utilisation dans jupyter
107
+ ## 🛠 Exemple d'utilisation dans Jupyter
94
108
 
95
109
  ```python
96
110
  from IPython.display import display, Latex
97
- from ourocode.eurocode.EC5_Element_droit import Barre, Flexion
111
+ from ourocode.eurocode.ec5.element_droit import Barre, Flexion
98
112
 
99
113
  panne = Barre(b=100, h=200, section="Rectangulaire", classe="C24", cs=2, Hi=12, Hf=12)
100
114
  panne_flexion = Flexion._from_parent_class(panne, lo_rel_y=5000, lo_rel_z=5000, coeflef=0.9, pos="Charge sur fibre comprimée")
@@ -107,13 +121,31 @@ display(Latex(latex_taux))
107
121
  ## ✅ Tests & couverture
108
122
 
109
123
  ```bash
110
- pytest --cov=. --cov-report html
124
+ pytest tests/ -v --tb=short
125
+ pytest --cov=ourocode --cov-report html
111
126
  ```
112
127
 
113
128
  Les tests couvrent les modules principaux.
114
129
 
115
130
  ---
116
131
 
132
+ ## 📚 Documentation
133
+
134
+ La documentation complète est disponible sur **[GitHub Pages](https://anthonyprst.github.io/ourocode/)** :
135
+
136
+ - [Guide de démarrage](https://anthonyprst.github.io/ourocode/guide/) — Premiers pas et exemples
137
+ - [Référence API](https://anthonyprst.github.io/ourocode/api/objet/) — Classes et méthodes de chaque module
138
+ - [Référence des normes](https://anthonyprst.github.io/ourocode/normes/) — EN 1990, EN 1991, EN 1993, EN 1995, EN 1998
139
+
140
+ Générer la documentation localement :
141
+
142
+ ```bash
143
+ pip install "ourocode[docs]"
144
+ mkdocs serve
145
+ ```
146
+
147
+ ---
148
+
117
149
  ## 🤝 Contribuer
118
150
 
119
151
  Les contributions sont les bienvenues ! Pour proposer une amélioration ou corriger un bug n'hésité pas à fork le dépôt !
@@ -4,6 +4,7 @@
4
4
  [![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
5
5
  [![CI](https://github.com/AnthonyPrst/ourocode/actions/workflows/ci.yml/badge.svg)](https://github.com/AnthonyPrst/ourocode/actions/workflows/ci.yml)
6
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/)
7
8
 
8
9
  ---
9
10
 
@@ -15,6 +16,7 @@
15
16
  - **EN 1991** : Actions sur les structures
16
17
  - **EN 1993** : Calcul des structures en acier
17
18
  - **EN 1995** : Calcul des structures en bois
19
+ - **EN 1998** : Calcul des actions sismiques
18
20
 
19
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.
20
22
 
@@ -29,7 +31,9 @@ Elle permet de construire un **catalogue de fonctions réutilisables** pour gén
29
31
  ---
30
32
 
31
33
  ## 📦 Installation
32
- - 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
+
33
37
  ```bash
34
38
  pip install ourocode
35
39
  ```
@@ -39,11 +43,13 @@ pip install ourocode
39
43
  pip install git+https://github.com/AnthonyPrst/ourocode.git
40
44
  ```
41
45
 
42
- > Avec les dépendances optionnelles (GUI PySide6 et/ou MEF Pynite) :
46
+ > Avec les dépendances optionnelles :
43
47
  ```bash
44
- pip install "ourocode[full]" # GUI + MEF
48
+ pip install "ourocode[full]" # GUI (PySide6) + MEF (PyNiteFEA + pyvista)
45
49
  pip install "ourocode[gui]" # PySide6 uniquement
46
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)
47
53
  ```
48
54
 
49
55
  ---
@@ -51,19 +57,21 @@ pip install "ourocode[mef]" # PyNiteFEA + pyvista uniquement
51
57
  ## ✨ Fonctionnalités
52
58
 
53
59
  - Calculs normalisés : flexion, traction, cisaillement, flambement, assemblage EC5 et EC3, flèche…
54
- - Support des classes de résistance bois (C24, GL24h, etc.) et acier (S235, S355…)
55
- - 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)
56
64
  - Intégration avec `handcalcs` pour génération LaTeX des formules
57
65
  - Compatible avec le logiciel [OUREA-NoCode](https://ourea-structure.fr/telechargement)
58
- - 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)
59
67
 
60
68
  ---
61
69
 
62
- ## 🛠 Exemple d'utilisation dans jupyter
70
+ ## 🛠 Exemple d'utilisation dans Jupyter
63
71
 
64
72
  ```python
65
73
  from IPython.display import display, Latex
66
- from ourocode.eurocode.EC5_Element_droit import Barre, Flexion
74
+ from ourocode.eurocode.ec5.element_droit import Barre, Flexion
67
75
 
68
76
  panne = Barre(b=100, h=200, section="Rectangulaire", classe="C24", cs=2, Hi=12, Hf=12)
69
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")
@@ -76,13 +84,31 @@ display(Latex(latex_taux))
76
84
  ## ✅ Tests & couverture
77
85
 
78
86
  ```bash
79
- pytest --cov=. --cov-report html
87
+ pytest tests/ -v --tb=short
88
+ pytest --cov=ourocode --cov-report html
80
89
  ```
81
90
 
82
91
  Les tests couvrent les modules principaux.
83
92
 
84
93
  ---
85
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
+
86
112
  ## 🤝 Contribuer
87
113
 
88
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
+ ]
@@ -15,4 +15,4 @@ if tomllib is not None:
15
15
  __version__ = _data["project"]["version"]
16
16
  else:
17
17
  # Fallback si tomllib/tomli non disponible (Python < 3.11 sans tomli)
18
- __version__ = "1.9.0"
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