EC0_Combinaison — EN 1990¶
Combinaisons d'actions aux états limites (ELU et ELS) selon EN 1990 et l'Annexe Nationale Française.
combinaison ¶
_dict_loads
module-attribute
¶
_dict_loads = [[1, 'G', 'Permanente G', -10, '0/4000', 'Z'], [2, '', 'Neige accidentelle Sx', -200, '0/6000', 'Z'], [2, '', 'Neige normale Sn', -200, '0/6000', 'Z'], [3, '', 'Exploitation Q', -100, 3610, 'Z']]
c1
module-attribute
¶
c1 = _from_parent_class(chargement, ELU_STR=True, ELU_STR_ACC=False, ELS_C=True, ELS_QP=True, cat='Cat H : toits', kdef=0.6, type_psy_2='Moyen terme')
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.
Combinaison ¶
Combinaison(model_generator: object, ELU_STR: bool = ('True', 'False'), ELU_STR_ACC: bool = ('True', 'False'), ELS_C: bool = ('True', 'False'), ELS_QP: bool = ('True', 'False'), cat: str = Projet.CAT_TYPE, kdef: float = None, type_psy_2: str = ['Court terme', 'Moyen terme', 'Long terme'], **kwargs)
Bases: Projet
Générateur de combinaisons d'actions selon l'EC0 (Eurocode 0).
Cette classe génère automatiquement toutes les combinaisons d'actions nécessaires selon l'Annexe Nationale française de l'EC0, à partir des chargements définis dans un modèle MEF.
Elle supporte : - Les combinaisons ELU STR (EQU, STR, GEO) selon l'EC0 §6.4.3.2 - Les combinaisons ELU accidentelles selon l'EC0 §6.4.3.3 - Les combinaisons ELS caractéristiques selon l'EC0 §6.5.3 - Les combinaisons ELS quasi-permanentes selon l'EC0 §6.5.3
Pour les structures bois, elle peut également calculer les psi_2 pour le fluage et les flèches finales.
Initialise le générateur de combinaisons d'actions.
Un modèle MEF doit être créé préalablement avec Model_generator et transmis via l'argument model_generator. Ce modèle doit contenir au moins une charge pour générer des combinaisons.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_generator
|
Model_generator
|
Modèle de calcul MEF contenant les nœuds, barres, matériaux, sections et chargements. |
required |
ELU_STR
|
bool
|
Générer les combinaisons ELU structure selon l'EC0 §6.4.3.2 (1.35G + 1.5Q, etc.). Defaults to True. |
('True', 'False')
|
ELU_STR_ACC
|
bool
|
Générer les combinaisons ELU accidentelles selon l'EC0 §6.4.3.3 (Gk + Ad + psi_1 Qk). Defaults to False. |
('True', 'False')
|
ELS_C
|
bool
|
Générer les combinaisons ELS caractéristiques selon l'EC0 §6.5.3 (Gk + Qk + psi_0 Qi). Defaults to False. |
('True', 'False')
|
ELS_QP
|
bool
|
Générer les combinaisons ELS quasi-permanentes selon l'EC0 §6.5.3 (Gk + psi_2 Qi). Defaults to False. |
('True', 'False')
|
cat
|
str
|
Catégorie d'exploitation selon l'EC1-1-1 pour la détermination des coefficients psi. Ex: "Cat A : habitation", "Cat B : bureaux". Defaults to "Aucune". |
CAT_TYPE
|
kdef
|
float
|
Coefficient de déformation différée pour le calcul des flèches finales en bois (EC5). Laisser None pour les matériaux autres que le bois. |
None
|
type_psy_2
|
str
|
Méthode de calcul du psi_2 effectif pour les flèches en bois. - "Court terme": psi_2 = 0 (pas de fluage) - "Moyen terme": psi_2 calculé selon l'action dominante - "Long terme": psi_2 = 1 (fluage complet) |
['Court terme', 'Moyen terme', 'Long terme']
|
**kwargs
|
Arguments transmis à la classe parent Projet. |
{}
|
Note
La génération des combinaisons est effectuée automatiquement lors de l'instanciation. Le modèle MEF est résolu pour chaque combinaison.
coef_psy
property
¶
Retourne les coefficients de combinaison psi pour chaque type d'action selon l'EC0 Annexe Nationale.
Lit les valeurs depuis le fichier CSV coeff_psy.csv et les organise par
type d'action (catégorie d'exploitation, neige, vent, température).
Returns:
| Name | Type | Description |
|---|---|---|
dict |
Dictionnaire imbriqué de la forme |
list_combination
property
¶
Retourne un DataFrame trié listant toutes les combinaisons générées.
Returns:
| Type | Description |
|---|---|
|
pandas.DataFrame: DataFrame avec une colonne "Combinaison" contenant les noms de toutes les combinaisons créées, triées alphabétiquement. |
get_ELU_STR_ACC_loads ¶
Retourne le DataFrame des charges pour les combinaisons ELU accidentelles (ELU_STR_ACC).
Nécessite ELU_STR_ACC=True à l'instanciation.
Returns:
| Type | Description |
|---|---|
|
pandas.DataFrame: Tableau des charges combinées ELU accidentelles avec les colonnes Combinaison, Index, N° de barre, Nom, Action, Type, Facteur de charge, Charge combinée, Position, Axe. |
get_ELS_C_loads ¶
Retourne le DataFrame des charges pour les combinaisons ELS caractéristiques.
Nécessite ELS_C=True à l'instanciation.
Returns:
| Type | Description |
|---|---|
|
pandas.DataFrame: Tableau des charges combinées ELS caractéristiques avec les colonnes Combinaison, Index, N° de barre, Nom, Action, Type, Facteur de charge, Charge combinée, Position, Axe. |
get_ELS_QP_loads ¶
Retourne le DataFrame des charges pour les combinaisons ELS quasi-permanentes.
Nécessite ELS_QP=True à l'instanciation.
Returns:
| Type | Description |
|---|---|
|
pandas.DataFrame: Tableau des charges combinées ELS quasi-permanentes avec les colonnes Combinaison, Index, N° de barre, Nom, Action, Type, Facteur de charge, Charge combinée, Position, Axe. |
get_psy_2_by_combination ¶
Retourne le coefficient psi_2 effectif pour une combinaison donnée, utilisé pour le fluage bois.
Selon self.type_psy_2 : - "Court terme" : retourne 0 (pas de fluage). - "Long terme" : retourne 1 (fluage complet). - "Moyen terme" : retourne le psi_2 maximal des actions variables présentes dans la combinaison.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Nom de la combinaison ELS_QP (ex. "ELS_QP G + 0.3Q"). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
float |
Valeur de psi_2 effective (entre 0 et 1). |
get_W_inst_Q_loads ¶
Retourne le DataFrame des charges variables instantanées W_inst(Q) pour le calcul des flèches en bois.
Correspond aux charges de l'ELS caractéristique sans la partie permanente G. Nécessite ELS_C=True et kdef fourni à l'instanciation.
Returns:
| Type | Description |
|---|---|
|
pandas.DataFrame | None: DataFrame W_inst(Q) si disponible, None sinon. |
get_W_net_fin_loads ¶
Retourne le DataFrame des charges de flèche nette finale W_net,fin pour le bois.
Combine ELS caractéristique + kdef × psi_2 × ELS quasi-permanente pour intégrer la déformation différée (fluage) selon EN 1995-1-1 §2.2.3. Nécessite ELS_C=True, ELS_QP=True et kdef fourni à l'instanciation.
Returns:
| Type | Description |
|---|---|
|
pandas.DataFrame | None: DataFrame W_net,fin si disponible, None sinon. |
get_list_combination ¶
get_list_combination(type: str = ('Toutes', 'ELU_ALL', 'ELU_STR', 'ELU_STR_ACC', 'ELS_ALL', 'ELS_C', 'ELS_QP', 'W_inst_Q', 'W_net_fin'))
Retourne la liste filtrée des noms de combinaisons selon le type demandé.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
type
|
str
|
Filtre de type de combinaison : - "Toutes" : toutes les combinaisons générées. - "ELU_ALL" : toutes les combinaisons ELU (STR + ACC). - "ELU_STR" : combinaisons ELU STR uniquement. - "ELU_STR_ACC" : combinaisons ELU accidentelles uniquement. - "ELS_ALL" : toutes les combinaisons ELS (caract., QP, W_inst, W_net). - "ELS_C" : combinaisons ELS caractéristiques uniquement. - "ELS_QP" : combinaisons ELS quasi-permanentes uniquement. - "W_inst_Q" : combinaisons de flèche instantanée variable. - "W_net_fin" : combinaisons de flèche nette finale. Defaults to "Toutes". |
('Toutes', 'ELU_ALL', 'ELU_STR', 'ELU_STR_ACC', 'ELS_ALL', 'ELS_C', 'ELS_QP', 'W_inst_Q', 'W_net_fin')
|
Returns:
| Type | Description |
|---|---|
|
list[str]: Liste des noms de combinaisons correspondant au filtre. |
get_combi_list_load ¶
Retourne la liste des lignes de charge pour une combinaison donnée.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
nom
|
str
|
Nom exact de la combinaison à récupérer (ex. "ELU_STR 1.35G + 1.5Q"). |
required |
Returns:
| Type | Description |
|---|---|
|
list[list]: Liste de listes, chaque sous-liste représente une ligne de charge avec les champs : Index, N° de barre, Nom, Action, Type, Facteur de charge, Charge combinée, Position, Axe. |
type_combi ¶
Retourne le type de combinaison EC0 ("Fondamentales" ou "Accidentelles").
Déduit le type à partir du préfixe du nom de la combinaison tel que
généré par :class:Combinaison :
"ELU_STR_ACC ..."->"Accidentelles"(EC0 §6.4.3.3)"ELU_STR ..."ou tout autre ELU ->"Fondamentales"(EC0 §6.4.3.2)
Cette information sert notamment à déterminer le coefficient partiel
γM pour les vérifications Eurocode (EC5 §2.4.1, EC3 §6.1…) selon
que la situation est durable/transitoire ou accidentelle.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name_combi
|
str
|
Nom de la combinaison à analyser
(ex. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
str |
str
|
|
Raises:
| Type | Description |
|---|---|
ValueError
|
Si |
min_type_load ¶
Retourne la classe de durée de chargement la plus courte présente dans une combinaison.
Utilisé pour déterminer k_mod selon EN 1995-1-1 §2.3.1.2. La hiérarchie est : Permanente < Long terme < Moyen terme < Court terme < Instantanée. Retourne la classe correspondant à l'action variable la plus courte trouvée dans le nom de la combinaison.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name_combi
|
str
|
Nom de la combinaison à analyser (ex. "ELU_STR 1.35G + 1.5Sn"). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
str |
str
|
Classe de durée de chargement ("Permanente", "Long terme", "Moyen terme", "Court terme" ou "Instantanee"). |