A0_Projet — Projet de calcul¶
Module de définition du projet de calcul (données générales).
projet ¶
Objet ¶
Bases: SerializationMixin, DataLoaderMixin, MathUtilsMixin, SyntheseMixin
Classe de base du package ourocode.
Cette classe fournit les fonctionnalités essentielles pour : - La sérialisation/désérialisation des objets avec gestion des unités physiques (via SerializationMixin) - L'accès aux données normatives CSV/JSON (via DataLoaderMixin) - Les opérations mathématiques et de conversion d'unités (via MathUtilsMixin) - La synthèse des taux de travail (via SyntheseMixin)
Toutes les classes du package ourocode héritent de cette classe.
set_value ¶
Retourne une valeur typee avec une unite physique optionnelle.
Equivalent inverse de get_value : permet a l'utilisateur de
saisir une valeur numerique brute et de l'encapsuler dans un objet
Physical (forallpeople) avec l'unite choisie parmi la liste
definie dans _PHYSICAL_UNITS (m, mm, cm, km, m2, N, kN, daN,
N.m, kN/m, Pa, MPa, etc.).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
value
|
float | int | str
|
la valeur numerique a encapsuler. Les chaines numeriques ("5", "5,3") sont converties. |
None
|
unit
|
str
|
unite cible. La valeur
speciale |
_SET_VALUE_UNITS
|
Returns:
| Type | Description |
|---|---|
|
|
|
Exemple
obj.set_value(5, unit="m") 5.000 m obj.set_value("5,3", unit="kN") 5.300 kN obj.set_value(42, unit="Aucune") 42
get_value ¶
get_value(value: dict | list | str, index: int = None, key: str = None, get_keys: bool = ('False', 'True'))
Extrait et retourne une valeur depuis une structure de données complexe.
Cette méthode utilitaire permet de naviguer dans les dictionnaires, listes, ou chaînes JSON pour extraire des valeurs spécifiques.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
value
|
dict | list | str
|
La structure de données source. |
required |
index
|
int
|
Index à extraire dans une liste Python. Note : sous Python, le premier élément est à l'index 0. |
None
|
key
|
str
|
Clé à extraire d'un dictionnaire Python, ou clé JSON à extraire d'une chaîne. |
None
|
get_keys
|
bool
|
Si True, retourne la liste des clés d'un dictionnaire au lieu d'une valeur. |
('False', 'True')
|
Returns:
| Type | Description |
|---|---|
|
La valeur extraite selon les critères spécifiés. |
Exemple
obj.get_value({"a": 1, "b": 2}, key="a") 1 obj.get_value([10, 20, 30], index=1) 20 obj.get_value({"x": 1, "y": 2}, get_keys=True) ["x", "y"]
Projet ¶
Projet(ingenieur: str = None, num_project: str = None, name: str = None, adresse: str = None, code_INSEE: int = None, pays: str = PAYS, alt: m = 0, **kwargs)
Bases: Objet
Classe définissant les informations générales d'un projet de structure.
Cette classe est la racine de la hiérarchie des objets ourocode. Elle contient les informations administratives et géographiques du projet, nécessaires pour l'application des annexes nationales françaises des Eurocodes.
Initialise un projet avec ses informations générales.
Cette classe définit le contexte du projet, indispensable pour l'application correcte des annexes nationales françaises des Eurocodes. Tous les objets de calcul (éléments de structure, charges, etc.) héritent indirectement de cette classe.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ingenieur
|
str
|
Nom de l'ingénieur responsable. Defaults to None. |
None
|
num_project
|
str
|
Numéro de référence du projet. Defaults to None. |
None
|
name
|
str
|
Nom ou désignation du projet. Defaults to None. |
None
|
adresse
|
str
|
Adresse géographique du chantier. Defaults to None. |
None
|
code_INSEE
|
int
|
Code INSEE à 5 chiffres du département ou de la commune pour les données climatiques. Defaults to None. |
None
|
pays
|
str
|
Pays où se situe le projet. Defaults to "France". Attention : ce package intègre uniquement les annexes nationales françaises des Eurocodes. |
PAYS
|
alt
|
m
|
Altitude du projet en mètres, utilisée pour le calcul de la neige et du vent. Defaults to 0. |
0
|
**kwargs
|
Arguments supplémentaires ajoutés dynamiquement. |
{}
|
batiment ¶
Projet ¶
Projet(ingenieur: str = None, num_project: str = None, name: str = None, adresse: str = None, code_INSEE: int = None, pays: str = PAYS, alt: m = 0, **kwargs)
Bases: Objet
Classe définissant les informations générales d'un projet de structure.
Cette classe est la racine de la hiérarchie des objets ourocode. Elle contient les informations administratives et géographiques du projet, nécessaires pour l'application des annexes nationales françaises des Eurocodes.
Initialise un projet avec ses informations générales.
Cette classe définit le contexte du projet, indispensable pour l'application correcte des annexes nationales françaises des Eurocodes. Tous les objets de calcul (éléments de structure, charges, etc.) héritent indirectement de cette classe.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ingenieur
|
str
|
Nom de l'ingénieur responsable. Defaults to None. |
None
|
num_project
|
str
|
Numéro de référence du projet. Defaults to None. |
None
|
name
|
str
|
Nom ou désignation du projet. Defaults to None. |
None
|
adresse
|
str
|
Adresse géographique du chantier. Defaults to None. |
None
|
code_INSEE
|
int
|
Code INSEE à 5 chiffres du département ou de la commune pour les données climatiques. Defaults to None. |
None
|
pays
|
str
|
Pays où se situe le projet. Defaults to "France". Attention : ce package intègre uniquement les annexes nationales françaises des Eurocodes. |
PAYS
|
alt
|
m
|
Altitude du projet en mètres, utilisée pour le calcul de la neige et du vent. Defaults to 0. |
0
|
**kwargs
|
Arguments supplémentaires ajoutés dynamiquement. |
{}
|
Batiment ¶
Bases: Projet
Classe définissant la géométrie d'un bâtiment pour les calculs de structure.
Cette classe décrit les dimensions principales du bâtiment et les caractéristiques de sa toiture, nécessaires pour le calcul des charges climatiques (neige, vent) et sismiques.
Attributs de classe
ETAGE (tuple): Liste des niveaux courants (RDC à Toiture).
Initialise les dimensions du bâtiment.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
h_bat
|
m
|
Hauteur totale du bâtiment en mètres, mesurée depuis le soubassement rigide ou les fondations (référence sismique). |
required |
d_bat
|
m
|
Largeur du bâtiment en mètres (dimension perpendiculaire au vent dominant pour le calcul du vent). |
required |
b_bat
|
m
|
Longueur du bâtiment en mètres. |
required |
alpha_toit
|
float
|
Pente du premier versant de toiture en degrés. 0° pour un toit plat, valeur positive pour un versant. |
required |
alpha_toit2
|
float
|
Pente du second versant pour les toits à deux pans (0° si toit à un seul versant ou plat). Defaults to 0. |
0
|
*args
|
Arguments positionnels transmis à la classe parent Projet. |
()
|
|
**kwargs
|
Arguments nommés transmis à la classe parent Projet (ingenieur, code_INSEE, alt, etc.). |
{}
|
model_generator ¶
Projet ¶
Projet(ingenieur: str = None, num_project: str = None, name: str = None, adresse: str = None, code_INSEE: int = None, pays: str = PAYS, alt: m = 0, **kwargs)
Bases: Objet
Classe définissant les informations générales d'un projet de structure.
Cette classe est la racine de la hiérarchie des objets ourocode. Elle contient les informations administratives et géographiques du projet, nécessaires pour l'application des annexes nationales françaises des Eurocodes.
Initialise un projet avec ses informations générales.
Cette classe définit le contexte du projet, indispensable pour l'application correcte des annexes nationales françaises des Eurocodes. Tous les objets de calcul (éléments de structure, charges, etc.) héritent indirectement de cette classe.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ingenieur
|
str
|
Nom de l'ingénieur responsable. Defaults to None. |
None
|
num_project
|
str
|
Numéro de référence du projet. Defaults to None. |
None
|
name
|
str
|
Nom ou désignation du projet. Defaults to None. |
None
|
adresse
|
str
|
Adresse géographique du chantier. Defaults to None. |
None
|
code_INSEE
|
int
|
Code INSEE à 5 chiffres du département ou de la commune pour les données climatiques. Defaults to None. |
None
|
pays
|
str
|
Pays où se situe le projet. Defaults to "France". Attention : ce package intègre uniquement les annexes nationales françaises des Eurocodes. |
PAYS
|
alt
|
m
|
Altitude du projet en mètres, utilisée pour le calcul de la neige et du vent. Defaults to 0. |
0
|
**kwargs
|
Arguments supplémentaires ajoutés dynamiquement. |
{}
|
Model_generator ¶
Bases: Projet
Générateur de modèles de calcul par éléments finis (MEF).
Cette classe permet de construire un modèle de structure complet pour le calcul par éléments finis avec Pynite. Elle gère la définition des nœuds, barres, sections, matériaux, appuis et chargements.
Le flux de travail typique est
- Définir les sections avec
add_section - Définir les matériaux avec
add_material_by_classouadd_material_by_mechanical_properties - Créer les nœuds avec
add_node - Créer les barres avec
add_member - Définir les appuis avec
add_supportouadd_support_spring - Appliquer les charges avec
create_dist_loadetcreate_point_load - Lancer les combinaisons via la classe
Combinaison - Analyser les résultats avec
Model_result
Initialise un générateur de modèle MEF vide.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*args
|
Arguments positionnels transmis à Projet. |
()
|
|
**kwargs
|
Arguments nommés transmis à Projet. |
{}
|
get_all_data ¶
Retourne l'ensemble des données du modèle MEF.
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Dictionnaire contenant toutes les données structurées : - "nodes": dictionnaire des nœuds - "sections": dictionnaire des sections - "materials": dictionnaire des matériaux - "members": dictionnaire des barres - "supports": dictionnaire des appuis (classiques et ressorts) - "loads": dictionnaire des chargements |
export_data ¶
Exporte les données du modèle au format JSON via boîte de dialogue.
Ouvre une boîte de dialogue Qt pour choisir l'emplacement du fichier JSON. Le fichier contient l'intégralité des données du modèle (nœuds, barres, matériaux, sections, appuis et charges).
Note
L'export est utile pour sauvegarder un modèle ou le transférer vers une autre application.
show_sign_convention ¶
Affiche l'image de la convention de signe pour les efforts sur barre.
Ouvre une fenêtre affichant le schéma de la convention de signes utilisée par Pynite pour les efforts internes (efforts normaux, tranchants, moments fléchissants) et les déplacements.
Note
La convention de signe suit le repère local de chaque barre.
add_node ¶
Ajoute un nœud au modèle MEF.
Crée un nœud dans le système de coordonnées globales (X, Y, Z). L'identifiant est généré automatiquement sous la forme "N1", "N2", etc.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
mm
|
Coordonnée X dans le repère global, en millimètres. |
required |
Y
|
mm
|
Coordonnée Y dans le repère global, en millimètres. |
required |
Z
|
mm
|
Coordonnée Z dans le repère global, en millimètres. |
required |
comment
|
str
|
Commentaire descriptif pour le nœud. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
str
|
Identifiant unique du nœud créé (ex: "N1"). |
Exemple
model = Model_generator() n1 = model.add_node(0, 0, 0, comment="Appui gauche") n2 = model.add_node(5000, 0, 0, comment="Appui droit")
get_node ¶
Retourne les coordonnées et informations d'un nœud.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
node_id
|
str
|
Identifiant du nœud à récupérer (ex: "N1"). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Dictionnaire contenant : - "X", "Y", "Z": coordonnées avec unités (si.mm) - "Commentaire": texte descriptif (ou None) |
Raises:
| Type | Description |
|---|---|
KeyError
|
Si le nœud n'existe pas. |
get_all_nodes ¶
Retourne l'ensemble des nœuds du modèle.
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Dictionnaire de tous les nœuds avec leurs coordonnées, indexé par les identifiants de nœuds. |
add_member ¶
add_member(node1: str, node2: str, material: str, section: str, poids_propre: bool = ('True', 'False'), rotation: float = 0, tension_only: bool = ('False', 'True'), compression_only: bool = ('False', 'True'), name: str = None, comment: str = None)
Ajoute une barre (poutre ou colonne) au modèle MEF.
Crée une barre entre deux nœuds existants, avec un matériau et une section prédéfinis. La longueur est calculée automatiquement d'après les coordonnées.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
node1
|
str
|
Identifiant du nœud de départ (ex: "N1"). |
required |
node2
|
str
|
Identifiant du nœud d'arrivée (ex: "N2"). |
required |
material
|
str
|
Identifiant du matériau (créé via add_material_by_class). |
required |
section
|
str
|
Identifiant de la section (créé via add_section). |
required |
poids_propre
|
bool
|
Si True, génère automatiquement une charge répartie correspondant au poids propre de la barre. Defaults to True. |
('True', 'False')
|
rotation
|
float
|
Angle de rotation de la section en degrés autour de l'axe longitudinal. Defaults to 0. |
0
|
tension_only
|
bool
|
Si True, la barre travaille uniquement en traction (ex: tirant). Defaults to False. |
('False', 'True')
|
compression_only
|
bool
|
Si True, la barre travaille uniquement en compression (ex: étai). Defaults to False. |
('False', 'True')
|
name
|
str
|
Nom personnalisé de la barre (doit être unique). Si None, un identifiant automatique "M1", "M2"... est généré. |
None
|
comment
|
str
|
Commentaire descriptif pour la barre. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
Identifiant unique de la barre créée. |
Raises:
| Type | Description |
|---|---|
KeyError
|
Si les nœuds, le matériau ou la section n'existent pas. |
Note
Les arguments tension_only et compression_only sont mutuellement exclusifs.
get_member ¶
Retourne les informations d'une barre par son identifiant.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
member_id
|
str
|
Identifiant de la barre à récupérer (ex: "M1"). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Dictionnaire contenant les propriétés de la barre : - "Noeuds": liste [node1_id, node2_id] - "Longueur": longueur calculée en mm - "Section": identifiant de la section - "Matériaux": identifiant du matériau - "Rotation": angle de rotation en degrés - "Relaxation": dictionnaire des relâchements |
Raises:
| Type | Description |
|---|---|
KeyError
|
Si la barre n'existe pas. |
get_member_length ¶
Retourne la longueur d'une barre par son identifiant.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
member_id
|
str
|
Identifiant de la barre (ex: "M1"). |
required |
Returns:
| Type | Description |
|---|---|
mm
|
si.mm: Longueur de la barre avec unité. |
get_all_members ¶
Retourne l'ensemble des barres du modèle.
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Dictionnaire de toutes les barres, indexé par leurs identifiants. |
add_material_by_class ¶
Ajoute un matériau bois au modèle par sa classe de résistance.
Charge les caractéristiques mécaniques depuis les données normatives (caracteristique_meca_bois.csv) et crée le matériau avec : - Module de Young E (E0mean) - Module de cisaillement G (Gmoy) - Coefficient de Poisson nu (calculé) - Masse volumique rho (rhomean)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
classe
|
str
|
Classe de résistance du bois selon l'EC5. Valeurs courantes : "C14", "C16", "C18", "C20", "C24", "C27", "C30", "D30", "D35", "D40", "D50", "D60", "D70", "GL20h", "GL24h", "GL28h", "GL32h", etc. |
CLASSE_WOOD
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
str
|
Identifiant du matériau créé (égal à la classe fournie). |
Raises:
| Type | Description |
|---|---|
KeyError
|
Si la classe n'existe pas dans la base de données. |
Note
Si le matériau existe déjà, la méthode retourne simplement son identifiant sans recréer les propriétés.
add_material_by_mechanical_properties ¶
Ajoute un matériau défini manuellement par ses propriétés mécaniques.
Permet de créer un matériau personnalisé en spécifiant directement les caractéristiques mécaniques, utile pour les matériaux non standard ou les matériaux autres que le bois.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Nom unique du matériau. |
required |
E
|
MPa
|
Module de Young (module d'élasticité longitudinal). Important : fournir E0mean, pas E0mean,fin (le facteur de fluage sera appliqué automatiquement si nécessaire par ailleurs). |
required |
G
|
MPa
|
Module de cisaillement (module d'élasticité transversal). |
required |
nu
|
float
|
Coefficient de Poisson (rapport des déformations transversale et longitudinale). |
required |
rho
|
float
|
Masse volumique en kg/m³. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
str |
Identifiant du matériau créé (égal au nom fourni). |
Note
Pour le bois, il est recommandé d'utiliser add_material_by_class
qui garantit la cohérence avec les valeurs normatives.
get_material ¶
Retourne les propriétés d'un matériau par son identifiant.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
material_id
|
str
|
Identifiant du matériau (ex: "C24"). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Dictionnaire contenant : - "classe": type de matériau (nom de classe ou "Manuel") - "E": Module de Young avec unité (si.MPa) - "G": Module de cisaillement avec unité (si.MPa) - "nu": Coefficient de Poisson - "rho": Masse volumique avec unité (si.kg/si.m**3) |
get_all_materials ¶
Retourne l'ensemble des matériaux du modèle.
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Dictionnaire de tous les matériaux, indexé par leurs identifiants. |
inertie ¶
Retourne le moment quadratique d'une section rectangulaire en mm4 avec pour argument : b ou d : Largeur ou diamètre de la poutre en mm h : Hauteur de la poutre en mm
add_section ¶
Ajoute une section transversale au modèle.
Crée une section rectangulaire ou circulaire avec calcul automatique de l'aire et des moments quadratiques d'inertie.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
b
|
mm
|
Largeur de la section (ou diamètre pour section circulaire) en millimètres. |
required |
h
|
mm
|
Hauteur de la section en millimètres. Ignoré pour les sections circulaires. |
required |
J
|
mm ** 4
|
Module de torsion (constante de torsion) en mm⁴. Pour une section rectangulaire pleine : J ≈ k * b * h³ où k ≈ 0.33 Pour une section circulaire pleine : J = π * d⁴ / 32 |
required |
section
|
str
|
Type de section. Valeurs acceptées : - "Rectangulaire" : section rectangulaire pleine - "Circulaire" : section circulaire pleine (b = diamètre) |
LIST_SECTION
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
Identifiant unique de la section créé : - "R{b}X{h}" pour une section rectangulaire (ex: "R100X200") - "C{b}" pour une section circulaire (ex: "C300") |
Raises:
| Type | Description |
|---|---|
ValueError
|
Si le type de section n'est pas reconnu. |
Note
L'identifiant est généré automatiquement à partir des dimensions.
add_section_by_property ¶
Ajoute une section personnalisée définie par ses propriétés mécaniques.
Permet de créer une section sans géométrie prédéfinie (IPE, HEA, etc.) en spécifiant directement l'aire et les moments d'inertie.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Nom unique de la section (ex: "IPE200", "HEA140"). |
required |
aire
|
mm ** 2
|
Aire de la section en mm². |
required |
Iy
|
mm ** 4
|
Moment quadratique d'inertie autour de l'axe Y (faible inertie pour une section rectangulaire dans le logiciel). Note : Pour les sections rectangulaires, Iy = h × b³ / 12. |
required |
Iz
|
mm ** 4
|
Moment quadratique d'inertie autour de l'axe Z (forte inertie pour une section rectangulaire dans le logiciel). Note : Pour les sections rectangulaires, Iz = b × h³ / 12. |
required |
J
|
mm ** 4
|
Module de torsion (constante de torsion) en mm⁴. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
Dictionnaire des propriétés de la section créée. |
get_section ¶
Retourne les propriétés d'une section par son identifiant.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
section_id
|
str
|
Identifiant de la section (ex: "R100X200", "C300", "IPE200"). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Dictionnaire contenant les propriétés de la section : - "Section": type de section ("Rectangulaire", "Circulaire", "Manuel") - "b", "h": dimensions pour les sections prédéfinies - "Aire": aire avec unité (si.mm2) - "Iy", "Iz": inerties avec unités (si.mm4) - "J": module de torsion avec unité (si.mm**4) |
get_all_sections ¶
Retourne l'ensemble des sections du modèle.
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Dictionnaire de toutes les sections, indexé par leurs identifiants. |
add_release ¶
add_release(member_id: str, position: str = ('start', 'end'), u: bool = ('False', 'True'), v: bool = ('False', 'True'), w: bool = ('False', 'True'), teta_x: bool = ('False', 'True'), teta_y: bool = ('False', 'True'), teta_z: bool = ('False', 'True'))
Ajoute un relâchement (libération de degrés de liberté) sur une barre.
Définit des conditions de dégagement aux extrémités d'une barre pour créer des rotules, des articulations ou des glissements partiels. La matrice de rigidité locale est modifiée en conséquence dans Pynite.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
member_id
|
str
|
Identifiant de la barre à relâcher (ex: "M1"). |
required |
position
|
str
|
Position du relâchement sur la barre. "start" = nœud de départ (i), "end" = nœud d'arrivée (j). Defaults to "start". |
('start', 'end')
|
u
|
bool
|
Relâchement de la translation selon l'axe x local (longitudinal). Defaults to False. |
('False', 'True')
|
v
|
bool
|
Relâchement de la translation selon l'axe y local. Defaults to False. |
('False', 'True')
|
w
|
bool
|
Relâchement de la translation selon l'axe z local. Defaults to False. |
('False', 'True')
|
teta_x
|
bool
|
Relâchement de la rotation selon l'axe x local (torsion). Par défaut toujours bloquée pour éviter les modes rigides. Defaults to False. |
('False', 'True')
|
teta_y
|
bool
|
Relâchement de la rotation selon l'axe y local (moment fléchissant My). Defaults to False. |
('False', 'True')
|
teta_z
|
bool
|
Relâchement de la rotation selon l'axe z local (moment fléchissant Mz). Defaults to False. |
('False', 'True')
|
Returns:
| Name | Type | Description |
|---|---|---|
dict |
Configuration du relâchement créé pour la position spécifiée. |
Note
Un relâchement complet de la rotation (teta_y=True, teta_z=True) crée une articulation parfaite. Toutes les translations relâchées créent un glisseur.
add_support ¶
add_support(node_id: str, DX: bool = ('True', 'False'), DY: bool = ('True', 'False'), DZ: bool = ('True', 'False'), RX: bool = ('True', 'False'), RY: bool = ('True', 'False'), RZ: bool = ('True', 'False'), l_appuis: int = 0)
Ajoute un appui classique (encastrement, rotule, glisseur) sur un nœud.
Définit les conditions de déplacement (translation et rotation) bloquées ou libres en chaque nœud selon le repère global (X, Y, Z).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
node_id
|
str
|
Identifiant du nœud d'appui (ex: "N1"). |
required |
DX
|
bool
|
Bloque la translation selon l'axe X global. True = bloqué, False = libre. Defaults to True. |
('True', 'False')
|
DY
|
bool
|
Bloque la translation selon l'axe Y global. Defaults to True. |
('True', 'False')
|
DZ
|
bool
|
Bloque la translation selon l'axe Z global. Defaults to True. |
('True', 'False')
|
RX
|
bool
|
Bloque la rotation selon l'axe X global (torsion). Defaults to True. |
('True', 'False')
|
RY
|
bool
|
Bloque la rotation selon l'axe Y global. Defaults to True. |
('True', 'False')
|
RZ
|
bool
|
Bloque la rotation selon l'axe Z global. Defaults to True. |
('True', 'False')
|
l_appuis
|
int
|
Longueur d'appui sur la poutre en mm, utilisée pour la vérification à la compression perpendiculaire. Defaults to 0. |
0
|
Returns:
| Name | Type | Description |
|---|---|---|
dict |
Configuration de l'appui créé avec son identifiant généré. |
add_support_spring ¶
add_support_spring(node_id: str, dof: str = ('DX', 'DY', 'DZ', 'RX', 'RY', 'RZ'), stiffness: kN / m = 0, limit_direction: str = ('Aucune limitation', 'Tension uniquement', 'Compression uniquement'))
Ajoute un appui élastique (ressort) sur un nœud dans une direction donnée.
Modélise un appui avec raideur finie (sol élastique, appui flexible, suspension) ou un tirant/compression unidirectionnel.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
node_id
|
str
|
Identifiant du nœud d'appui (ex: "N1"). |
required |
dof
|
str
|
Degré de liberté sur lequel appliquer la raideur. "DX", "DY", "DZ" pour les translations, "RX", "RY", "RZ" pour les rotations. Defaults to "DX". |
('DX', 'DY', 'DZ', 'RX', 'RY', 'RZ')
|
stiffness
|
kN / m
|
Raideur de l'appui. - Pour DX/DY/DZ : kN/m (translation) - Pour RX/RY/RZ : kN·m/rad (rotation) Defaults to 0. |
0
|
limit_direction
|
str
|
Limite le comportement du ressort à un seul sens de sollicitation. - "Aucune limitation" : ressort bidirectionnel - "Tension uniquement" : ne travaille qu'en traction (ex: tirant) - "Compression uniquement" : ne travaille qu'en compression (ex: étai) Defaults to "Aucune limitation". |
('Aucune limitation', 'Tension uniquement', 'Compression uniquement')
|
Returns:
| Name | Type | Description |
|---|---|---|
dict |
Configuration de l'appui ressort créé. |
create_supports_by_list ¶
Ajoute les support d'une liste pré-définit.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
list_supports
|
list
|
liste de support. |
required |
del_support ¶
Supprime un appui classique par son identifiant.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
support_id
|
str
|
Identifiant de l'appui à supprimer (ex: "S1"). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
str |
Message de confirmation avec les détails de l'appui supprimé. |
get_all_supports ¶
Retourne l'ensemble des appuis du modèle.
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Dictionnaire contenant les appuis classiques et ressorts : - "classic": dictionnaire des appuis classiques - "spring": dictionnaire des appuis ressorts |
create_dist_load ¶
create_dist_load(member_id: str, name: str, start_load: float, end_load: float, start_pos: str = None, end_pos: str = None, action: str = ACTION, direction: str = ('Fx', 'Fy', 'Fz', 'FX', 'FY', 'FZ'), comment: str = None)
Ajoute une charge répartie linéairement sur une barre.
Crée une charge distribuée (poids propre, neige, vent, etc.) appliquée sur une portion ou la totalité d'une barre. La charge peut être uniforme (start_load = end_load) ou trapézoïdale.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
member_id
|
str
|
Identifiant de la barre à charger (ex: "M1"). |
required |
name
|
str
|
Nom descriptif de la charge (ex: "Neige", "PP poutre"). |
required |
start_load
|
float
|
Intensité de charge au point de départ en kN/m. Valeur positive selon le sens de l'axe choisi. |
required |
end_load
|
float
|
Intensité de charge au point d'arrivée en kN/m. Pour une charge uniforme, end_load = start_load. |
required |
start_pos
|
str
|
Position de début de la charge. Formats acceptés : "start" (début), "middle" (milieu), "XX%" (pourcentage), ou valeur numérique en mm. Defaults to "start" (toute la barre). |
None
|
end_pos
|
str
|
Position de fin de charge. Mêmes formats. Defaults to "end" (toute la barre). |
None
|
action
|
str
|
Type d'action selon DICO_COMBI_ACTION. Ex: "Permanente G", "Neige normale Sn", "Vent pression W+". |
ACTION
|
direction
|
str
|
Direction et sens de l'effort dans le repère local. Forces : "Fx", "Fy", "Fz" (local) ou "FX", "FY", "FZ" (global). Defaults to "Fy" (vertical vers le bas en local). |
('Fx', 'Fy', 'Fz', 'FX', 'FY', 'FZ')
|
comment
|
str
|
Commentaire descriptif sur la charge. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
dict |
Configuration de la charge créée avec son identifiant généré. |
Note
La convention de signe suit Pynite : Fy négatif = charge vers le bas pour une barre horizontale.
create_point_load ¶
create_point_load(member_id: str, name: str, load: int, pos: str = None, action: str = ACTION, direction: str = ('Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz', 'FX', 'FY', 'FZ', 'MX', 'MY', 'MZ'), comment: str = None)
Ajoute une charge ponctuelle (force ou moment) sur une barre.
Crée une force concentrée ou un moment concentré appliqué à une position précise sur une barre (charge en trémie, point d'application d'une poutre, moment d'encastrement équivalent, etc.).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
member_id
|
str
|
Identifiant de la barre à charger (ex: "M1"). |
required |
name
|
str
|
Nom descriptif de la charge (ex: "Charge ponctuelle P1"). |
required |
load
|
float
|
Valeur de l'effort. - Force : en kN si direction commence par "F" - Moment : en kN·m si direction commence par "M" |
required |
pos
|
str
|
Position de la charge sur la barre. Formats acceptés : "start" (début), "end" (fin), "middle" (milieu), "XX%" (pourcentage), ou valeur numérique en mm. Defaults to "middle". |
None
|
action
|
str
|
Type d'action selon DICO_COMBI_ACTION. Ex: "Permanente G", "Exploitation Q". |
ACTION
|
direction
|
str
|
Direction et type d'effort. Forces : "Fx", "Fy", "Fz" (local) ou "FX", "FY", "FZ" (global). Moments : "Mx", "My", "Mz" (local) ou "MX", "MY", "MZ" (global). Defaults to "Fy". |
('Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz', 'FX', 'FY', 'FZ', 'MX', 'MY', 'MZ')
|
comment
|
str
|
Commentaire descriptif sur la charge. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
dict |
Configuration de la charge ponctuelle créée. |
create_load_by_list ¶
Ajoute plusieurs charges en batch depuis une liste.
Permet de créer rapidement plusieurs charges similaires à partir d'une liste de paramètres, utile pour les modèles répétitifs ou les imports.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
list_loads
|
list
|
Liste de tuples contenant les arguments de charge. Chaque tuple doit correspondre aux arguments de create_dist_load ou create_point_load selon le type_load. Ex: [("M1", "PP", -0.5, -0.5, "start", "end", "Permanente G", "FY"), ...] |
required |
type_load
|
str
|
Type de charges dans la liste. "Distribuée" : utilise create_dist_load pour chaque élément. "Autre" : utilise create_point_load pour chaque élément. Defaults to "Distribuée". |
('Distribuée', 'Autre')
|
Returns:
| Name | Type | Description |
|---|---|---|
None |
Les charges sont ajoutées directement au modèle. |
Exemple
charges = [ ... ("M1", "Neige", -1.5, -1.5, "start", "end", "Neige normale Sn", "FY"), ... ("M2", "Neige", -1.5, -1.5, "start", "end", "Neige normale Sn", "FY"), ... ] model.create_load_by_list(charges, "Distribuée")
del_load ¶
Supprime une charge par son identifiant.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
load_id
|
str
|
Identifiant de la charge à supprimer (ex: "L1"). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
Dictionnaire de la charge supprimée. |
get_all_loads ¶
Retourne l'ensemble des charges définies dans le modèle.
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Dictionnaire de toutes les charges, indexé par leurs identifiants ("L1", "L2", etc.). Chaque entrée contient les propriétés complètes de la charge (type, intensité, position, barre concernée). |
get_member_loads ¶
Retourne les charges appliquées sur une barre spécifique.
Filtre l'ensemble des charges du modèle pour ne retourner que celles appliquées sur la barre identifiée.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
member_id
|
str
|
Identifiant de la barre (ex: "M1"). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
list |
list
|
Liste des dictionnaires de charges appliquées à cette barre. |
Exemple
model.get_member_loads("M1") [{'N° barre': 'M1', 'Nom': 'PP', 'Action': 'Permanente G', ...}, ...]
detect_continuous_members ¶
Détecte automatiquement les chaînes de barres FEM formant une barre continue.
Deux barres FEM sont considérées comme continues au travers d'un noeud partagé si :
- Elles utilisent le même matériau et la même section.
- Aucune des deux n'a de relâchement en rotation (
teta_youteta_z) à l'extrémité partagée — une rotule rompt la continuité en flexion. - Elles sont colinéaires au noeud partagé à
angle_tol_degprès : les deux vecteurs sortants du noeud partagé sont quasi-opposés (cos(angle) ≈ -1).
Le degré du noeud n'est pas contraint : un noeud T ou Y (contrefiche fixée en milieu d'arbalétrier par ex.) ne rompt pas la continuité de l'arbalétrier tant que les barres de l'arbalétrier sont colinéaires et sans relâchement. La présence d'un appui intermédiaire ne rompt pas non plus la continuité.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
angle_tol_deg
|
float
|
Tolérance angulaire en degrés pour la colinéarité. Valeurs typiques : 0.5° (strict) à 5° (tolérant sur CAO imprécise). Defaults to 1.0. |
1.0
|
Returns:
| Type | Description |
|---|---|
list[list[str]]
|
list[list[str]]: Liste de chaînes ordonnées de |
Exemple
chains = model.detect_continuous_members()
[["M1"], ["M2", "M3", "M4"], ["M5"]]¶
M2→M3→M4 forment une solive continue sur 4 appuis par exemple.¶
Note
La méthode ne modifie pas le modèle. Pour créer effectivement les
barres structurales à partir du résultat, utilisez group_members
ou auto_group_continuous_members.
group_members ¶
group_members(name: str, member_ids: list[str], role: str = None, design_params: dict = None, comment: str = None) -> str
Crée une barre structurale (regroupement de barres FEM continues).
Regroupe une ou plusieurs barres FEM en un unique élément structurel,
destiné à être vérifié comme un tout selon un Eurocode (EC2, EC3, EC5, etc.).
La continuité n'est pas vérifiée ici : utilisez detect_continuous_members
en amont si vous voulez une vérification automatique.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Nom unique de la barre structurale (ex: "Solive_S1"). |
required |
member_ids
|
list[str]
|
Liste ordonnée des identifiants de barres FEM
constituant la barre structurale (ex: ["M12", "M13", "M14"]).
Pour une barre simple non continue : |
required |
role
|
str
|
Rôle structurel (ex: "Solive", "Panne", "Poteau", "Arbalétrier", "Moise", "Poutre", "Voile"). Utilisé par les modules de vérification. |
None
|
design_params
|
dict
|
Paramètres de design spécifiques à l'Eurocode utilisé. Le contenu dépend du matériau (EC2=béton, EC3=acier, EC5=bois). Exemple EC5: {"classe_bois": "C24", "cs": 1, "Hi": 12, "Hf": 12, "effet_systeme": False, "type_element_fleche": "Solives"}. Exemple EC3: {"classe_acier": "S355", "classe_section": 1}. |
None
|
lo_rel_y
|
float
|
Longueur de flambement/déversement autour de l'axe y, en mm. Si None, à déterminer automatiquement au moment de la vérification. |
required |
lo_rel_z
|
float
|
Longueur de flambement/déversement autour de l'axe z, en mm. |
required |
comment
|
str
|
Commentaire descriptif. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
str
|
Nom de la barre structurale créée (= |
Raises:
| Type | Description |
|---|---|
ValueError
|
Si une barre FEM listée n'existe pas, si |
Exemple
chains = model.detect_continuous_members()
supposons chains[0] == ["M1", "M2", "M3"]¶
model.group_members("Solive_S1", chains[0], ... role="Solive", ... design_params={"classe_bois": "C24",})
auto_group_continuous_members ¶
auto_group_continuous_members(angle_tol_deg: float = 1.0, role: str = None, name_prefix: str = 'SM', only_continuous: bool = ('False', 'True'), design_params: dict = None) -> list[str]
Détecte et regroupe automatiquement toutes les barres continues du modèle.
Combine detect_continuous_members et group_members : chaque chaîne
détectée devient une barre structurale nommée {name_prefix}{i}.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
angle_tol_deg
|
float
|
Tolérance angulaire pour la détection. Defaults to 1.0. |
1.0
|
role
|
str
|
Rôle appliqué à toutes les barres créées. |
None
|
name_prefix
|
str
|
Préfixe pour les noms auto-générés. Defaults to "SM". |
'SM'
|
only_continuous
|
bool
|
Si True, ignore les chaînes d'une seule barre FEM (barres isolées non continues). Defaults to False. |
('False', 'True')
|
design_params
|
dict
|
Paramètres de design spécifiques à l'Eurocode.
Transmis à |
None
|
Returns:
| Type | Description |
|---|---|
list[str]
|
list[str]: Noms des barres structurales créées, dans l'ordre de détection. |
Exemple
names = model.auto_group_continuous_members( ... role="Solive", design_params={"classe_bois": "C24", "cs": 1})
["SM1", "SM2", ...]¶
get_structural_member ¶
Retourne les données d'une barre structurale par son nom.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Nom de la barre structurale (ex: "Solive_S1"). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Dictionnaire contenant :
|
Raises:
| Type | Description |
|---|---|
KeyError
|
Si le nom n'existe pas. |
get_all_structural_members ¶
Retourne toutes les barres structurales du modèle.
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Dictionnaire |
del_structural_member ¶
Supprime une barre structurale par son nom.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Nom de la barre structurale à supprimer. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Données de la barre structurale supprimée. |
Raises:
| Type | Description |
|---|---|
KeyError
|
Si le nom n'existe pas. |
debug_node_compression ¶
Affiche les informations de debug pour le calcul du type d'appui en compression.
Affiche les conditions d'appui et de relâchement aux nœuds d'extrémité de la barre structurale, ainsi que le résultat final du type d'appui.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
structural_member_name
|
str
|
Nom de la barre structurale à analyser. |
required |
axis
|
str
|
Axe de flambement ("y" ou "z"). Defaults to "y". |
'y'
|
get_type_appuis_for_compression ¶
Détermine le type d'appui pour le calcul de flambement en compression.
Analyse les conditions d'appui aux extrémités d'une barre structurale (membre continu ou simple) pour déterminer le coefficient β de longueur efficace selon l'EC5.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
structural_member_name
|
str
|
Nom de la barre structurale à analyser (ex: "Poteau_P1", "SM1"). |
required |
axis
|
str
|
Axe de flambement à considérer ("y" ou "z"). Defaults to "y". |
'y'
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
str
|
Type d'appui selon Compression.COEF_LF : - "Encastré 1 côté" : β = 2.0 (console) - "Rotule - Rotule" : β = 1.0 (articulé-articulé) - "Encastré - Rotule" : β = 0.7 - "Encastré - Encastré" : β = 0.5 - "Encastré - Rouleau" : β = 1.0 (encastré-glissière) |
Raises:
| Type | Description |
|---|---|
KeyError
|
Si la barre structurale n'existe pas. |
Note
La méthode analyse : 1. Les appuis classiques (DX, DY, DZ, RX, RY, RZ) aux nœuds d'extrémité 2. Les relâchements (releases) en rotation aux extrémités des barres FEM 3. La continuité du membre (barre continue ou simple)
Pour un axe donné (y ou z), une rotation bloquée sur cet axe correspond à un encastrement, une rotation libre à une rotule.
generate_model ¶
Génère et assemble le modèle MEF complet dans Pynite.
Cette méthode interne (appelée automatiquement par Combinaison) : 1. Crée l'objet FEModel3D de Pynite 2. Ajoute tous les nœuds, matériaux, sections 3. Ajoute toutes les barres avec leurs relâchements 4. Ajoute tous les appuis (classiques et ressorts) 5. Ajoute tous les chargements
Note
Cette méthode est généralement appelée automatiquement par la classe Combinaison. Elle n'a pas besoin d'être invoquée manuellement dans un flux de travail standard.
Wood_beam_model ¶
Wood_beam_model(longueur: mm, b: mm, h: mm, section: str = Model_generator.LIST_SECTION, classe: str = Model_generator.CLASSE_WOOD, poids_propre: bool = ('True', 'False'), nbr_appuis: int = 2, l_appuis: float = 0, devers: float = 0, inclinaison: float = 0, *args, **kwargs)
Bases: Model_generator
Générateur de modèle MEF simplifié pour poutres bois continues.
Cette classe spécialisée crée automatiquement un modèle de poutre sur appuis multiples avec les hypothèses suivantes : - Barre isostatique - Distance entre appuis égale (pas de porte-à-faux) - Possibilité d'inclinaison et de dévers
Elle est particulièrement adaptée pour : - Poutres, pannes, chevrons - Poteaux verticaux (inclinaison = 90°) - Pannes à dévers (dévers ≠ 0)
Flux de travail
- Créer le modèle avec Wood_beam_model
- Ajouter les charges avec create_dist_load / create_point_load
- Passer à la classe Combinaison pour les combinaisons
- Analyser les résultats avec Model_result
Note
Cette classe surcharge certaines méthodes de Model_generator pour gérer automatiquement le poids propre des barres multiples.
Initialise un modèle de poutre bois simplifié.
Crée automatiquement les nœuds, barres et appuis répartis uniformément sur la longueur totale. Génère autant de barres que de travées (nbr_appuis - 1).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
longueur
|
mm
|
Longueur totale de la barre en millimètres. |
required |
b
|
mm
|
Épaisseur de la section en millimètres (largeur). |
required |
h
|
mm
|
Hauteur de la section en millimètres. |
required |
section
|
str
|
Type de section transversale. "Rectangulaire" ou "Circulaire". Defaults to "Rectangulaire". |
LIST_SECTION
|
classe
|
str
|
Classe de résistance du bois selon l'EC5. Ex: "C24", "GL28h". Defaults to "C24". |
CLASSE_WOOD
|
poids_propre
|
bool
|
Générer automatiquement le poids propre de chaque barre comme charge répartie. Defaults to True. |
('True', 'False')
|
nbr_appuis
|
int
|
Nombre d'appuis rotulés (≥ 2). 2 = poutre simple sur deux appuis, 3 = poutre continue sur 3 appuis. Defaults to 2. |
2
|
l_appuis
|
float
|
Longueur d'appui en mm pour la vérification à la compression perpendiculaire. Defaults to 0. |
0
|
devers
|
float
|
Angle de dévers en degrés (rotation autour de l'axe longitudinal X). Utilisé pour les pannes inclinées transversalement. Defaults to 0. |
0
|
inclinaison
|
float
|
Angle d'inclinaison en degrés (rotation autour de l'axe Z). 0° = poutre horizontale, 90° = poteau vertical. Utile pour les chevrons ou poteaux inclinés. Defaults to 0. |
0
|
create_dist_load ¶
create_dist_load(name: str, start_load: float, end_load: float, start_pos: str = None, end_pos: str = None, action: str = Model_generator.ACTION, direction: str = ('Fx', 'Fy', 'Fz', 'FX', 'FY', 'FZ'), comment: str = None)
Ajoute une charge distribuée sur la barre
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
nom de la charge. |
required |
start_load
|
int
|
effort de départ en kN/m. |
required |
end_load
|
int
|
effort de fin en kN/m. |
required |
start_pos
|
str
|
position de début de la charge sur la barre en mm. En complément il est possible de mettre "start", "middle" ou un pourcentage pour définir la position de la charge. |
None
|
end_pos
|
str
|
position de début de la charge sur la barre en mm. En complément il est possible de mettre "end", "middle" ou un pourcentage pour définir la position de la charge. |
None
|
action
|
str
|
type d'action de l'effort. |
ACTION
|
direction
|
str
|
sens de l'effort sur la barre. |
('Fx', 'Fy', 'Fz', 'FX', 'FY', 'FZ')
|
comment
|
str
|
commentaire sur la charge. |
None
|
create_point_load ¶
create_point_load(name: str, load: float, pos: str = None, action: str = Model_generator.ACTION, direction: str = ('Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz', 'FX', 'FY', 'FZ', 'MX', 'MY', 'MZ'), comment: str = None)
Ajoute une charge nodale sur la barre
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
nom de la charge. |
required |
load
|
int
|
effort de départ en kN ou kN.m. |
required |
pos
|
str
|
position de la charge sur la barre en mm. En complément il est possible de mettre "start", "middle", "end" ou un pourcentage pour définir la position de la charge. |
None
|
action
|
str
|
type d'action de l'effort. |
ACTION
|
direction
|
str
|
sens de l'effort sur la barre. |
('Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz', 'FX', 'FY', 'FZ', 'MX', 'MY', 'MZ')
|
comment
|
str
|
commentaire sur la charge. |
None
|
model_result ¶
Projet ¶
Projet(ingenieur: str = None, num_project: str = None, name: str = None, adresse: str = None, code_INSEE: int = None, pays: str = PAYS, alt: m = 0, **kwargs)
Bases: Objet
Classe définissant les informations générales d'un projet de structure.
Cette classe est la racine de la hiérarchie des objets ourocode. Elle contient les informations administratives et géographiques du projet, nécessaires pour l'application des annexes nationales françaises des Eurocodes.
Initialise un projet avec ses informations générales.
Cette classe définit le contexte du projet, indispensable pour l'application correcte des annexes nationales françaises des Eurocodes. Tous les objets de calcul (éléments de structure, charges, etc.) héritent indirectement de cette classe.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ingenieur
|
str
|
Nom de l'ingénieur responsable. Defaults to None. |
None
|
num_project
|
str
|
Numéro de référence du projet. Defaults to None. |
None
|
name
|
str
|
Nom ou désignation du projet. Defaults to None. |
None
|
adresse
|
str
|
Adresse géographique du chantier. Defaults to None. |
None
|
code_INSEE
|
int
|
Code INSEE à 5 chiffres du département ou de la commune pour les données climatiques. Defaults to None. |
None
|
pays
|
str
|
Pays où se situe le projet. Defaults to "France". Attention : ce package intègre uniquement les annexes nationales françaises des Eurocodes. |
PAYS
|
alt
|
m
|
Altitude du projet en mètres, utilisée pour le calcul de la neige et du vent. Defaults to 0. |
0
|
**kwargs
|
Arguments supplémentaires ajoutés dynamiquement. |
{}
|
Model_result ¶
Model_result(model_generator: object, analyze_type: str = ANALYZE_TYPE, check_stability: bool = ('False', 'True'), *args, **kwargs)
Bases: Projet
Classe d'analyse et d'extraction des résultats MEF.
Cette classe permet de lancer l'analyse aux éléments finis et de récupérer les résultats (efforts, déformées, réactions) du modèle généré par Model_generator et résolu par Combinaison.
Elle hérite de Projet pour maintenir le contexte du projet. L'analyse est lancée automatiquement lors de l'instanciation.
Flux de travail
- Créer un modèle avec Model_generator
- Définir les combinaisons avec Combinaison
- Instancier Model_result pour analyser et extraire les résultats
- Utiliser les méthodes get_ ou show_ pour visualiser
Types d'analyse disponibles: - "Général": Analyse complète (linéaire + P-Delta si nécessaire) - "Linéaire": Analyse linéaire élastique uniquement - "Second ordre": Analyse P-Delta (effets du second ordre)
Initialise l'analyseur de résultats MEF.
Lance automatiquement l'analyse du modèle après initialisation. Vérifie que tous les nœuds sont connectés avant de résoudre.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_generator
|
Model_generator
|
Instance du modèle généré contenant les nœuds, barres, matériaux et chargements. |
required |
analyze_type
|
str
|
Type d'analyse à réaliser. "Général", "Linéaire" ou "Second ordre". Defaults to "Général". |
ANALYZE_TYPE
|
check_stability
|
bool
|
Active la vérification de stabilité du modèle. Ralentit le calcul, utile pour le débogage. Defaults to False. |
('False', 'True')
|
*args
|
Arguments transmis à la classe parent Projet. |
()
|
|
**kwargs
|
Arguments nommés transmis à Projet. |
{}
|
Raises:
| Type | Description |
|---|---|
ValueError
|
Si des nœuds orphelins (non connectés) sont détectés. |
get_member_length ¶
Retourne la longueur d'une barre par son identifiant.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
member_id
|
str
|
Identifiant de la barre (ex: "M1"). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
float |
float
|
Longueur de la barre en millimètres avec unité (si.mm). |
get_internal_force ¶
get_internal_force(member_id: str, combination: str, type: str = ('Nx', 'Vy', 'Vz', 'Mx', 'My', 'Mz'), n_points: int = 20) -> np.array
Retourne les efforts internes le long d'une barre pour une combinaison donnée.
Extrait les valeurs d'efforts (effort normal, cisaillement, moment) répartis le long de la barre avec un nombre de points défini.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
member_id
|
str
|
Identifiant de la barre (ex: "M1"). |
required |
combination
|
str
|
Nom de la combinaison de charges à analyser (ex: "ELU_STR", "ELS_QP"). |
required |
type
|
str
|
Type d'effort interne à récupérer. "Nx" = effort normal, "Vy"/"Vz" = effort tranchant, "Mx" = moment de torsion, "My"/"Mz" = moment fléchissant. Defaults to "Nx". |
('Nx', 'Vy', 'Vz', 'Mx', 'My', 'Mz')
|
n_points
|
int
|
Nombre de points de discrétisation le long de la barre. Plus ce nombre est élevé, plus la courbe est lisse. Defaults to 20. |
20
|
Returns:
| Name | Type | Description |
|---|---|---|
tuple |
array
|
(positions, valeurs) où : - positions (array): Abscisses le long de la barre en mm - valeurs (array): Valeurs de l'effort correspondant |
Note
Les valeurs sont retournées dans les unités de base de Pynite (N ou N·mm).
get_min_max_internal_force ¶
Retourne les valeurs minimales et maximales des efforts internes.
Analyse tous les types d'efforts (Nx, Vy, Vz, Mx, My, Mz) et retourne les valeurs extrêmes avec la combinaison correspondante. Supporte les barres continues (liste de barres) et les tags de combinaisons.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
member_id
|
str | list
|
Identifiant de la barre ou liste de barres pour une barre continue (ex: "M1" ou ["M1", "M2", "M3"]). |
required |
combination
|
str | list
|
Nom de la combinaison ou liste de tags de combinaisons (ex: "ELU_STR" ou ["ELU_STR", "ELU_ACC"]). Si des tags sont fournis, le max/min est cherché parmi toutes les combinaisons correspondantes. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Dictionnaire structuré par type d'effort : { "Nx": {"Min": (valeur, combinaison), "Max": (valeur, combinaison)}, "Vy": {"Min": (...), "Max": (...)}, ... } Les valeurs incluent les unités (N pour efforts, N·mm pour moments). |
Raises:
| Type | Description |
|---|---|
ValueError
|
Si une barre de la liste n'existe pas dans le modèle. |
get_absolute_internal_force ¶
get_absolute_internal_force(member_id: str | list, combination: str | list, type: str = ('Nx', 'Vy', 'Vz', 'Mx', 'My', 'Mz'), get_combo_name: bool = ('False', 'True'))
Retourne la valeur absolue maximale d'un type d'effort spécifique.
Détermine automatiquement si le maximum absolu est la valeur minimale (la plus négative) ou maximale (la plus positive) et retourne sa valeur absolue. Utile pour les vérifications de dimensionnement.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
member_id
|
str | list
|
Identifiant de la barre ou liste de barres. |
required |
combination
|
str | list
|
Nom de la combinaison ou tags de combinaisons. |
required |
type
|
str
|
Type d'effort à analyser ("Nx", "Vy", "Vz", "Mx", "My", "Mz"). Defaults to "Nx". |
('Nx', 'Vy', 'Vz', 'Mx', 'My', 'Mz')
|
get_combo_name
|
bool
|
Si True, retourne également le nom de la combinaison associée. Defaults to False. |
('False', 'True')
|
Returns:
| Type | Description |
|---|---|
|
float | dict: Valeur absolue de l'effort maximal. Si get_combo_name=True, retourne un dict : |
show_internal_force_of_member ¶
show_internal_force_of_member(member_id: str | list, combination: str, type: str = ('Nx', 'Vy', 'Vz', 'Mx', 'My', 'Mz'), n_points: int = 20, screenshot: bool = ('False', 'True'), filepath: str = None)
Affiche le diagramme des efforts internes d'une barre.
Génère un graphique matplotlib montrant la distribution de l'effort interne choisi le long de la barre (ou des barres continues). Les valeurs sont automatiquement converties en kN ou kN·m.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
member_id
|
str | list
|
Identifiant de la barre ou liste de barres pour une barre continue. |
required |
combination
|
str
|
Nom de la combinaison à afficher (ex: "ELU_STR"). |
required |
type
|
str
|
Type d'effort à diagrammer. - "Nx": Effort normal (orange) - "Vy", "Vz": Effort tranchant (bleu) - "Mx", "My", "Mz": Moments (rouge) Defaults to "Nx". |
('Nx', 'Vy', 'Vz', 'Mx', 'My', 'Mz')
|
n_points
|
int
|
Nombre de points pour le tracé. Defaults to 20. |
20
|
screenshot
|
bool
|
Si True, sauvegarde l'image sans afficher la fenêtre interactive. Defaults to False. |
('False', 'True')
|
filepath
|
str
|
Chemin de sauvegarde si screenshot=True. Ouvre une boîte de dialogue si None. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
Chemin du fichier sauvegardé si screenshot=True. |
|
None |
Affiche le graphique interactif si screenshot=False. |
Note
Les barres sont concaténées pour former un diagramme continu dans le cas d'une barre continue (ex: ["M1", "M2", "M3"]).
get_deflection ¶
get_deflection(member_id: str, combination: str, direction: str = ('dx', 'dy', 'dz'), n_points: int = 20) -> np.array
Retourne les déplacements/déformées le long d'une barre.
Extrait les valeurs de déplacement aux nœuds intermédiaires de la barre pour une direction donnée et une combinaison spécifique.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
member_id
|
str
|
Identifiant de la barre (ex: "M1"). |
required |
combination
|
str
|
Nom de la combinaison à analyser (ex: "ELS_QP", "W_inst_Q"). |
required |
direction
|
str
|
Direction du déplacement. "dx" = selon l'axe longitudinal (allongement/raccourcissement) "dy" = flèche dans le plan vertical local "dz" = flèche dans le plan horizontal local Defaults to "dy" (flèche verticale usuelle). |
('dx', 'dy', 'dz')
|
n_points
|
int
|
Nombre de points de discrétisation. Defaults to 20. |
20
|
Returns:
| Name | Type | Description |
|---|---|---|
tuple |
array
|
(positions, déplacements) où : - positions (array): Abscisses le long de la barre en mm - déplacements (array): Valeurs de déplacement en mm |
Note
Les déplacements sont relatifs aux conditions d'appui (la ligne élastique est calculée par rapport à la position déformée des appuis).
get_min_max_deflection ¶
Retourne les déplacements minimaux et maximaux d'une barre.
Analyse les trois directions de déplacement (dx, dy, dz) et retourne les valeurs extrêmes avec la combinaison correspondante. Supporte les barres continues et les tags de combinaisons ELS.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
member_id
|
str | list
|
Identifiant de la barre ou liste de barres pour une barre continue. |
required |
combination
|
str | list
|
Nom de la combinaison ou tags ELS (ex: "ELS_QP", ["W_inst_Q", "W_net_fin"]). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Dictionnaire structuré par direction : { "dx": {"Min": (valeur, combinaison), "Max": (valeur, combinaison)}, "dy": {"Min": (...), "Max": (...)}, "dz": {"Min": (...), "Max": (...)} } Les valeurs incluent l'unité (si.mm). |
Note
Les valeurs "Min" peuvent être négatives (déplacement dans le sens opposé à l'axe). La flèche maximale est généralement la valeur absolue la plus grande en valeur absolue dans la direction verticale (dy).
get_absolute_max_deflection ¶
get_absolute_max_deflection(member_id: str | list, combination: str | list, direction: str = ('dx', 'dy', 'dz'), get_combo_name: bool = ('False', 'True'))
Retourne la valeur absolue maximale de déplacement pour une direction donnée.
Détermine automatiquement si le maximum absolu est la valeur minimale ou maximale et retourne sa valeur absolue. Méthode standard pour récupérer la flèche maximale à vérifier.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
member_id
|
str | list
|
Identifiant de la barre ou liste de barres. |
required |
combination
|
str | list
|
Nom de la combinaison ou tags de combinaisons. (ex: "ELS_QP", ["W_inst_Q", "W_net_fin"]). |
required |
direction
|
str
|
Direction à analyser ("dx", "dy", "dz"). Defaults to "dy" (flèche verticale). |
('dx', 'dy', 'dz')
|
get_combo_name
|
bool
|
Si True, retourne également le nom de la combinaison associée. Defaults to False. |
('False', 'True')
|
Returns:
| Type | Description |
|---|---|
|
float | dict: Valeur absolue du déplacement maximal en mm. Si get_combo_name=True, retourne un dict : |
show_deflection_of_member ¶
show_deflection_of_member(member_id: str | list, combination: str, direction: str = ('dx', 'dy', 'dz'), n_points: int = 20, screenshot: bool = ('False', 'True'), filepath: str = None)
Affiche le diagramme de déformée (flèche) d'une barre.
Génère un graphique matplotlib montrant la ligne élastique de la barre pour la direction et combinaison spécifiées. Utile pour visualiser la déformée et identifier les zones de flèche maximale.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
member_id
|
str | list
|
Identifiant de la barre ou liste de barres pour une barre continue. |
required |
combination
|
str
|
Nom de la combinaison à afficher (ex: "W_inst_Q"). |
required |
direction
|
str
|
Direction de la déformée à afficher. "dx" = allongement, "dy" = flèche verticale, "dz" = flèche horizontale. Defaults to "dy". |
('dx', 'dy', 'dz')
|
n_points
|
int
|
Nombre de points pour le tracé. Defaults to 20. |
20
|
screenshot
|
bool
|
Si True, sauvegarde l'image. Defaults to False. |
('False', 'True')
|
filepath
|
str
|
Chemin de sauvegarde si screenshot=True. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
Chemin du fichier sauvegardé si screenshot=True. |
|
None |
Affiche le graphique interactif si screenshot=False. |
Note
La déformée est tracée en vert avec remplissage pour visualiser l'amplitude des déplacements.
show_model ¶
show_model(combination: str, annotation_size: int = 70, show_loads: bool = ('True', 'False'), diagrams: str = ('Aucun', 'Fx', 'Fy', 'Fz', 'My', 'Mz', 'Tx', 'Flèche'), scale: int = 1000, screenshot: bool = ('False', 'True'), filepath: str = None)
Affiche une visualisation 3D interactive du modèle MEF.
Rendu 3D complet du modèle avec possibilité d'afficher les charges, les efforts internes colorés, ou la déformée. Utilise le renderer Pynite avec interaction utilisateur.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
combination
|
str
|
Nom de la combinaison à afficher. |
required |
annotation_size
|
int
|
Taille des annotations de nœuds. Defaults to 70. |
70
|
show_loads
|
bool
|
Affiche les charges appliquées. Defaults to True. |
('True', 'False')
|
diagrams
|
str
|
Type de diagramme à superposer. - "Aucun": Modèle fil de fer seul - "Fx", "Fy", "Fz", "My", "Mz", "Tx": Diagramme d'efforts coloré - "Flèche": Déformée amplifiée Defaults to "Aucun". |
('Aucun', 'Fx', 'Fy', 'Fz', 'My', 'Mz', 'Tx', 'Flèche')
|
scale
|
int
|
Facteur d'échelle pour les diagrammes et la déformée. Defaults to 1000. |
1000
|
screenshot
|
bool
|
Si True, capture l'image sans interaction. Defaults to False. |
('False', 'True')
|
filepath
|
str
|
Chemin de sauvegarde. Ouvre une boîte de dialogue si None et screenshot=True. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
Chemin du fichier sauvegardé si screenshot=True. |
|
None |
Affiche la fenêtre interactive si screenshot=False. |
Note
En mode interactif (screenshot=False), utilisez la souris pour tourner le modèle (clic gauche), zoomer (molette), paner (clic droit). Appuyez sur Q pour fermer.
get_global_displacement_of_node ¶
Retourne les déplacements/rotations globaux d'un nœud.
Extrait les valeurs de déplacement et rotation dans le repère global (X, Y, Z) pour un nœud spécifique et une combinaison donnée.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
node_id
|
str
|
Identifiant du nœud (ex: "N1"). |
required |
combination
|
str
|
Nom de la combinaison à analyser. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Déplacements et rotations du nœud : { "DX", "DY", "DZ": translations en mm (si.mm) "RX", "RY", "RZ": rotations en radians (sans unité) } |
Note
Les déplacements sont relatifs à la position initiale du nœud. Les rotations positives suivent la convention de la main droite.
get_supports_reactions ¶
Retourne les réactions d'appui pour tous les appuis du modèle.
Parcourt tous les appuis définis dans le modèle et récupère les forces et moments de réaction pour la combinaison spécifiée.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
combination
|
str
|
Nom de la combinaison à analyser (ex: "ELU_STR"). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Dictionnaire indexé par identifiant d'appui : { "S1": {"FX": ..., "FY": ..., "FZ": ..., "MX": ..., ...}, "S2": {...}, ... } Forces en N, moments en N·mm. |
Note
Un appui rotulé retournera des moments nuls (MX=MY=MZ=0). Un glisseur retournera une force nulle dans la direction libre.