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.
- {ourocode-1.10.0/ourocode.egg-info → ourocode-2.0.0}/PKG-INFO +46 -14
- {ourocode-1.10.0 → ourocode-2.0.0}/README.md +35 -9
- ourocode-2.0.0/ourocode/__init__.py +99 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/__version__.py +1 -1
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/sismique/categorie_importance.csv +1 -1
- ourocode-2.0.0/ourocode/eurocode/__init__.py +71 -0
- ourocode-2.0.0/ourocode/eurocode/core/__init__.py +16 -0
- ourocode-2.0.0/ourocode/eurocode/core/batiment.py +53 -0
- ourocode-1.10.0/ourocode/eurocode/EC0_Combinaison.py → ourocode-2.0.0/ourocode/eurocode/core/combinaison.py +109 -22
- ourocode-1.10.0/ourocode/eurocode/A0_Projet.py → ourocode-2.0.0/ourocode/eurocode/core/model_generator.py +5 -986
- ourocode-2.0.0/ourocode/eurocode/core/model_result.py +842 -0
- ourocode-2.0.0/ourocode/eurocode/core/objet.py +166 -0
- ourocode-2.0.0/ourocode/eurocode/core/projet.py +83 -0
- ourocode-2.0.0/ourocode/eurocode/core/renderer.py +598 -0
- ourocode-2.0.0/ourocode/eurocode/ec1/__init__.py +5 -0
- ourocode-2.0.0/ourocode/eurocode/ec1/exploitation.py +103 -0
- ourocode-1.10.0/ourocode/eurocode/EC1_Neige.py → ourocode-2.0.0/ourocode/eurocode/ec1/neige.py +82 -30
- ourocode-1.10.0/ourocode/eurocode/EC1_Vent.py → ourocode-2.0.0/ourocode/eurocode/ec1/vent.py +211 -105
- ourocode-2.0.0/ourocode/eurocode/ec3/__init__.py +13 -0
- ourocode-2.0.0/ourocode/eurocode/ec3/assemblage/__init__.py +13 -0
- ourocode-2.0.0/ourocode/eurocode/ec3/assemblage/platine.py +675 -0
- ourocode-2.0.0/ourocode/eurocode/ec3/assemblage/soudure.py +655 -0
- ourocode-2.0.0/ourocode/eurocode/ec3/assemblage/tige.py +762 -0
- ourocode-2.0.0/ourocode/eurocode/ec3/element_droit/__init__.py +7 -0
- ourocode-2.0.0/ourocode/eurocode/ec3/element_droit/cisaillement.py +41 -0
- ourocode-2.0.0/ourocode/eurocode/ec3/element_droit/compression.py +139 -0
- ourocode-2.0.0/ourocode/eurocode/ec3/element_droit/flexion.py +89 -0
- ourocode-2.0.0/ourocode/eurocode/ec3/element_droit/plat.py +97 -0
- ourocode-2.0.0/ourocode/eurocode/ec3/element_droit/traction.py +94 -0
- ourocode-1.10.0/ourocode/eurocode/EC3_Feu.py → ourocode-2.0.0/ourocode/eurocode/ec3/feu.py +52 -23
- ourocode-2.0.0/ourocode/eurocode/ec5/__init__.py +28 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/assemblage/__init__.py +14 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/assemblage/agrafe.py +104 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/assemblage/assemblage.py +915 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/assemblage/boulon.py +336 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/assemblage/broche.py +64 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/assemblage/embrevement.py +179 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/assemblage/pointe.py +443 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/assemblage/tirefond.py +392 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/blc.py +40 -0
- ourocode-1.10.0/ourocode/eurocode/EC5_CVT.py → ourocode-2.0.0/ourocode/eurocode/ec5/cvt.py +215 -156
- ourocode-2.0.0/ourocode/eurocode/ec5/element_droit/__init__.py +11 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/element_droit/barre.py +450 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/element_droit/cisaillement.py +805 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/element_droit/compression.py +588 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/element_droit/flexion.py +386 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/element_droit/traction.py +139 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/feu/__init__.py +7 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/feu/cisaillement_feu.py +65 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/feu/compression_feu.py +147 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/feu/feu.py +486 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/feu/flexion_feu.py +219 -0
- ourocode-2.0.0/ourocode/eurocode/ec5/feu/traction_feu.py +55 -0
- ourocode-2.0.0/ourocode/eurocode/ec8/__init__.py +3 -0
- ourocode-1.10.0/ourocode/eurocode/EC8_Sismique.py → ourocode-2.0.0/ourocode/eurocode/ec8/sismique.py +327 -164
- ourocode-2.0.0/ourocode/eurocode/mixins/__init__.py +11 -0
- ourocode-2.0.0/ourocode/eurocode/mixins/data_loader.py +85 -0
- ourocode-2.0.0/ourocode/eurocode/mixins/math_utils.py +332 -0
- ourocode-2.0.0/ourocode/eurocode/mixins/serialization.py +242 -0
- ourocode-2.0.0/ourocode/eurocode/mixins/synthese.py +124 -0
- {ourocode-1.10.0 → ourocode-2.0.0/ourocode.egg-info}/PKG-INFO +46 -14
- ourocode-2.0.0/ourocode.egg-info/SOURCES.txt +122 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode.egg-info/requires.txt +9 -5
- {ourocode-1.10.0 → ourocode-2.0.0}/pyproject.toml +26 -6
- ourocode-2.0.0/tests/test_A0_Projet.py +329 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/tests/test_EC0_Combinaison.py +8 -11
- ourocode-2.0.0/tests/test_EC1_Exploitation.py +144 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/tests/test_EC1_Neige.py +1 -1
- {ourocode-1.10.0 → ourocode-2.0.0}/tests/test_EC3_Assemblage.py +2 -2
- ourocode-2.0.0/tests/test_EC3_Element_droit.py +229 -0
- ourocode-2.0.0/tests/test_EC3_Feu.py +230 -0
- ourocode-2.0.0/tests/test_EC3_Platine.py +143 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/tests/test_EC5_Assemblage.py +6 -6
- ourocode-2.0.0/tests/test_EC5_BLC.py +108 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/tests/test_EC5_CVT.py +36 -13
- {ourocode-1.10.0 → ourocode-2.0.0}/tests/test_EC5_Element_droit.py +1 -1
- ourocode-2.0.0/tests/test_EC5_Embrevement.py +181 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/tests/test_EC5_Feu.py +86 -2
- {ourocode-1.10.0 → ourocode-2.0.0}/tests/test_EC8_Sismique.py +5 -5
- ourocode-1.10.0/ourocode/__init__.py +0 -0
- ourocode-1.10.0/ourocode/eurocode/EC3_Assemblage.py +0 -1947
- ourocode-1.10.0/ourocode/eurocode/EC3_Element_droit.py +0 -359
- ourocode-1.10.0/ourocode/eurocode/EC5_Assemblage.py +0 -2224
- ourocode-1.10.0/ourocode/eurocode/EC5_Element_droit.py +0 -2304
- ourocode-1.10.0/ourocode/eurocode/EC5_Feu.py +0 -929
- ourocode-1.10.0/ourocode/eurocode/__init__.py +0 -0
- ourocode-1.10.0/ourocode/eurocode/objet.py +0 -876
- ourocode-1.10.0/ourocode.egg-info/SOURCES.txt +0 -76
- ourocode-1.10.0/tests/test_A0_Projet.py +0 -126
- ourocode-1.10.0/tests/test_EC3_Element_droit.py +0 -111
- {ourocode-1.10.0 → ourocode-2.0.0}/LICENSE +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/MANIFEST.in +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/caracteristique_meca_acier.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/caracteristique_meca_beton.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/caracteristique_meca_bois.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/caracteristique_meca_panel.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/carte_action_region.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/coeff_psy.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/exploitation.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/gammaM.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/kdef.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/kfi.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/kmod.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/limite_fleche.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/qualite_acier.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/screenshot/C90_def.png +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/screenshot/CNC2M_4.3.3_tab15.png +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/screenshot/CNC2M_4.3.3_tab16.png +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/screenshot/EN1993-1-8_fig6_11.png +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/screenshot/Kv_def.png +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/screenshot/sign_convention.png +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/section_boulon.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/sismique/categorie_importance_ns.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/sismique/classe_sol.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/sismique/spectre_eleastique_h_type1.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/sismique/spectre_eleastique_h_type2.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cp_toiture_isolee_1_versant.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cp_toiture_isolee_1_versant.png +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cp_toiture_isolee_2_versants.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cp_toiture_isolee_2_versants.png +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_mur_verticaux.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_mur_verticaux.png +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_1_versant.png +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_1_versant_0_degres.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_1_versant_180_degres.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_1_versant_90_degres.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_2_versants.png +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_2_versants_0_degres.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_2_versants_90_degres.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_terrasse.csv +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Cpe_toiture_terrasse.png +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode/data/vent/vent_Ffr.png +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode.egg-info/dependency_links.txt +0 -0
- {ourocode-1.10.0 → ourocode-2.0.0}/ourocode.egg-info/top_level.txt +0 -0
- {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:
|
|
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)
|
|
36
42
|
[](https://github.com/AnthonyPrst/ourocode/actions/workflows/ci.yml)
|
|
37
43
|
[](https://github.com/AnthonyPrst/ourocode/releases)
|
|
44
|
+
[](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
|
-
|
|
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
|
|
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 (
|
|
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 (
|
|
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
|
|
107
|
+
## 🛠 Exemple d'utilisation dans Jupyter
|
|
94
108
|
|
|
95
109
|
```python
|
|
96
110
|
from IPython.display import display, Latex
|
|
97
|
-
from ourocode.eurocode.
|
|
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
|
|
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)
|
|
5
5
|
[](https://github.com/AnthonyPrst/ourocode/actions/workflows/ci.yml)
|
|
6
6
|
[](https://github.com/AnthonyPrst/ourocode/releases)
|
|
7
|
+
[](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
|
-
|
|
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
|
|
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 (
|
|
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 (
|
|
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
|
|
70
|
+
## 🛠 Exemple d'utilisation dans Jupyter
|
|
63
71
|
|
|
64
72
|
```python
|
|
65
73
|
from IPython.display import display, Latex
|
|
66
|
-
from ourocode.eurocode.
|
|
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
|
|
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
|
+
]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
categorie;description;
|
|
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
|