ourocode 1.10.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 (133) hide show
  1. {ourocode-1.10.0/ourocode.egg-info → ourocode-1.11.3}/PKG-INFO +41 -10
  2. {ourocode-1.10.0 → ourocode-1.11.3}/README.md +35 -9
  3. ourocode-1.11.3/ourocode/__init__.py +99 -0
  4. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/__version__.py +1 -1
  5. {ourocode-1.10.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.10.0/ourocode/eurocode/EC0_Combinaison.py → ourocode-1.11.3/ourocode/eurocode/core/combinaison.py +109 -22
  10. ourocode-1.10.0/ourocode/eurocode/A0_Projet.py → ourocode-1.11.3/ourocode/eurocode/core/model_generator.py +5 -986
  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.10.0/ourocode/eurocode/EC1_Neige.py → ourocode-1.11.3/ourocode/eurocode/ec1/neige.py +80 -28
  17. ourocode-1.10.0/ourocode/eurocode/EC1_Vent.py → ourocode-1.11.3/ourocode/eurocode/ec1/vent.py +209 -103
  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.10.0/ourocode/eurocode/EC3_Feu.py → ourocode-1.11.3/ourocode/eurocode/ec3/feu.py +50 -21
  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.10.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.10.0/ourocode/eurocode/EC8_Sismique.py → ourocode-1.11.3/ourocode/eurocode/ec8/sismique.py +325 -162
  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.10.0 → ourocode-1.11.3/ourocode.egg-info}/PKG-INFO +41 -10
  61. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode.egg-info/SOURCES.txt +58 -13
  62. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode.egg-info/requires.txt +6 -0
  63. {ourocode-1.10.0 → ourocode-1.11.3}/pyproject.toml +21 -1
  64. ourocode-1.11.3/tests/test_A0_Projet.py +329 -0
  65. {ourocode-1.10.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.10.0 → ourocode-1.11.3}/tests/test_EC1_Neige.py +1 -1
  68. {ourocode-1.10.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.10.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.10.0 → ourocode-1.11.3}/tests/test_EC5_CVT.py +36 -13
  75. {ourocode-1.10.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.10.0 → ourocode-1.11.3}/tests/test_EC5_Feu.py +86 -2
  78. {ourocode-1.10.0 → ourocode-1.11.3}/tests/test_EC8_Sismique.py +4 -4
  79. ourocode-1.10.0/ourocode/__init__.py +0 -0
  80. ourocode-1.10.0/ourocode/eurocode/EC3_Assemblage.py +0 -1947
  81. ourocode-1.10.0/ourocode/eurocode/EC3_Element_droit.py +0 -359
  82. ourocode-1.10.0/ourocode/eurocode/EC5_Assemblage.py +0 -2224
  83. ourocode-1.10.0/ourocode/eurocode/EC5_Element_droit.py +0 -2304
  84. ourocode-1.10.0/ourocode/eurocode/EC5_Feu.py +0 -929
  85. ourocode-1.10.0/ourocode/eurocode/__init__.py +0 -0
  86. ourocode-1.10.0/ourocode/eurocode/objet.py +0 -876
  87. ourocode-1.10.0/tests/test_A0_Projet.py +0 -126
  88. ourocode-1.10.0/tests/test_EC3_Element_droit.py +0 -111
  89. {ourocode-1.10.0 → ourocode-1.11.3}/LICENSE +0 -0
  90. {ourocode-1.10.0 → ourocode-1.11.3}/MANIFEST.in +0 -0
  91. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/caracteristique_meca_acier.csv +0 -0
  92. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/caracteristique_meca_beton.csv +0 -0
  93. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/caracteristique_meca_bois.csv +0 -0
  94. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/caracteristique_meca_panel.csv +0 -0
  95. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/carte_action_region.csv +0 -0
  96. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/coeff_psy.csv +0 -0
  97. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/exploitation.csv +0 -0
  98. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/gammaM.csv +0 -0
  99. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/kdef.csv +0 -0
  100. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/kfi.csv +0 -0
  101. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/kmod.csv +0 -0
  102. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/limite_fleche.csv +0 -0
  103. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/qualite_acier.csv +0 -0
  104. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/screenshot/C90_def.png +0 -0
  105. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/screenshot/CNC2M_4.3.3_tab15.png +0 -0
  106. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/screenshot/CNC2M_4.3.3_tab16.png +0 -0
  107. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/screenshot/EN1993-1-8_fig6_11.png +0 -0
  108. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/screenshot/Kv_def.png +0 -0
  109. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/screenshot/sign_convention.png +0 -0
  110. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/section_boulon.csv +0 -0
  111. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/sismique/categorie_importance_ns.csv +0 -0
  112. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/sismique/classe_sol.csv +0 -0
  113. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/sismique/spectre_eleastique_h_type1.csv +0 -0
  114. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/sismique/spectre_eleastique_h_type2.csv +0 -0
  115. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cp_toiture_isolee_1_versant.csv +0 -0
  116. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cp_toiture_isolee_1_versant.png +0 -0
  117. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cp_toiture_isolee_2_versants.csv +0 -0
  118. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cp_toiture_isolee_2_versants.png +0 -0
  119. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_mur_verticaux.csv +0 -0
  120. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_mur_verticaux.png +0 -0
  121. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_1_versant.png +0 -0
  122. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_1_versant_0_degres.csv +0 -0
  123. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_1_versant_180_degres.csv +0 -0
  124. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_1_versant_90_degres.csv +0 -0
  125. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_2_versants.png +0 -0
  126. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_2_versants_0_degres.csv +0 -0
  127. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_2_versants_90_degres.csv +0 -0
  128. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_terrasse.csv +0 -0
  129. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Cpe_toiture_terrasse.png +0 -0
  130. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode/data/vent/vent_Ffr.png +0 -0
  131. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode.egg-info/dependency_links.txt +0 -0
  132. {ourocode-1.10.0 → ourocode-1.11.3}/ourocode.egg-info/top_level.txt +0 -0
  133. {ourocode-1.10.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.10.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
@@ -27,6 +27,11 @@ Provides-Extra: test
27
27
  Requires-Dist: pytest; extra == "test"
28
28
  Requires-Dist: pytest-cov; extra == "test"
29
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"
30
35
  Dynamic: license-file
31
36
 
32
37
 
@@ -35,6 +40,7 @@ Dynamic: license-file
35
40
  [![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
36
41
  [![CI](https://github.com/AnthonyPrst/ourocode/actions/workflows/ci.yml/badge.svg)](https://github.com/AnthonyPrst/ourocode/actions/workflows/ci.yml)
37
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/)
38
44
 
39
45
  ---
40
46
 
@@ -46,6 +52,7 @@ Dynamic: license-file
46
52
  - **EN 1991** : Actions sur les structures
47
53
  - **EN 1993** : Calcul des structures en acier
48
54
  - **EN 1995** : Calcul des structures en bois
55
+ - **EN 1998** : Calcul des actions sismiques
49
56
 
50
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.
51
58
 
@@ -60,7 +67,9 @@ Elle permet de construire un **catalogue de fonctions réutilisables** pour gén
60
67
  ---
61
68
 
62
69
  ## 📦 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.
70
+
71
+ > **Note :** Python 3.12 requis. Les dépendances tierces ne sont pas encore compatibles avec Python 3.13+.
72
+
64
73
  ```bash
65
74
  pip install ourocode
66
75
  ```
@@ -70,11 +79,13 @@ pip install ourocode
70
79
  pip install git+https://github.com/AnthonyPrst/ourocode.git
71
80
  ```
72
81
 
73
- > Avec les dépendances optionnelles (GUI PySide6 et/ou MEF Pynite) :
82
+ > Avec les dépendances optionnelles :
74
83
  ```bash
75
- pip install "ourocode[full]" # GUI + MEF
84
+ pip install "ourocode[full]" # GUI (PySide6) + MEF (PyNiteFEA + pyvista)
76
85
  pip install "ourocode[gui]" # PySide6 uniquement
77
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)
78
89
  ```
79
90
 
80
91
  ---
@@ -82,19 +93,21 @@ pip install "ourocode[mef]" # PyNiteFEA + pyvista uniquement
82
93
  ## ✨ Fonctionnalités
83
94
 
84
95
  - 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)
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)
87
100
  - Intégration avec `handcalcs` pour génération LaTeX des formules
88
101
  - Compatible avec le logiciel [OUREA-NoCode](https://ourea-structure.fr/telechargement)
89
- - 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)
90
103
 
91
104
  ---
92
105
 
93
- ## 🛠 Exemple d'utilisation dans jupyter
106
+ ## 🛠 Exemple d'utilisation dans Jupyter
94
107
 
95
108
  ```python
96
109
  from IPython.display import display, Latex
97
- from ourocode.eurocode.EC5_Element_droit import Barre, Flexion
110
+ from ourocode.eurocode.ec5.element_droit import Barre, Flexion
98
111
 
99
112
  panne = Barre(b=100, h=200, section="Rectangulaire", classe="C24", cs=2, Hi=12, Hf=12)
100
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")
@@ -107,13 +120,31 @@ display(Latex(latex_taux))
107
120
  ## ✅ Tests & couverture
108
121
 
109
122
  ```bash
110
- pytest --cov=. --cov-report html
123
+ pytest tests/ -v --tb=short
124
+ pytest --cov=ourocode --cov-report html
111
125
  ```
112
126
 
113
127
  Les tests couvrent les modules principaux.
114
128
 
115
129
  ---
116
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
+
117
148
  ## 🤝 Contribuer
118
149
 
119
150
  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