Aller au contenu

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']]

projet module-attribute

projet = Projet('AP', '6018.0', '', '', 73215, 'France', 1200)

chargement module-attribute

chargement = _from_parent_class(projet)

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')

rcombi module-attribute

rcombi = 'ELS_QP G + 0.3Q'

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

Model_generator(*args, **kwargs)

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
  1. Définir les sections avec add_section
  2. Définir les matériaux avec add_material_by_class ou add_material_by_mechanical_properties
  3. Créer les nœuds avec add_node
  4. Créer les barres avec add_member
  5. Définir les appuis avec add_support ou add_support_spring
  6. Appliquer les charges avec create_dist_load et create_point_load
  7. Lancer les combinaisons via la classe Combinaison
  8. 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

get_all_data() -> dict

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

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

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

add_node(X: mm, Y: mm, Z: mm, comment: str = None) -> str

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

get_node(node_id: str) -> dict

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

get_all_nodes() -> dict

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

get_member(member_id: str) -> dict

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

get_member_length(member_id: str) -> si.mm

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

get_all_members() -> dict

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

add_material_by_class(classe: str = CLASSE_WOOD) -> str

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

add_material_by_mechanical_properties(name: str, E: MPa, G: MPa, nu: float, rho: float)

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

get_material(material_id: str) -> dict

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

get_all_materials() -> dict

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

inertie(b: mm, h: mm, section: str = LIST_SECTION)

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

add_section(b: mm, h: mm, J: mm ** 4, section: str = LIST_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

add_section_by_property(name: str, aire: mm ** 2, Iy: mm ** 4, Iz: mm ** 4, J: mm ** 4)

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

get_section(section_id: str) -> dict

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

get_all_sections() -> dict

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

create_supports_by_list(list_supports: list)

Ajoute les support d'une liste pré-définit.

Parameters:

Name Type Description Default
list_supports list

liste de support.

required

del_support

del_support(support_id: str)

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

get_all_supports() -> dict

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

create_load_by_list(list_loads: list, type_load: str = ('Distribuée', 'Autre'))

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

del_load(load_id: str)

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

get_all_loads() -> dict

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

get_member_loads(member_id: str) -> list

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

detect_continuous_members(angle_tol_deg: float = 1.0) -> list[list[str]]

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 :

  1. Elles utilisent le même matériau et la même section.
  2. Aucune des deux n'a de relâchement en rotation (teta_y ou teta_z) à l'extrémité partagée — une rotule rompt la continuité en flexion.
  3. Elles sont colinéaires au noeud partagé à angle_tol_deg prè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 member_id. Chaque chaîne est orientée d'une extrémité libre vers l'autre. Une barre isolée (non continue) est retournée comme une chaîne d'un seul élément.

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 : [member_id].

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 (= name).

Raises:

Type Description
ValueError

Si une barre FEM listée n'existe pas, si member_ids est vide, ou si name existe déjà.

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 à group_members pour chaque barre créée.

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

get_structural_member(name: str) -> dict

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 :

  • "Barres FEM" : liste ordonnée des member_id FEM
  • "Rôle" : rôle structurel
  • "Longueur totale" : longueur cumulée avec unité (si.mm)
  • "Design" : paramètres de design spécifiques à l'Eurocode
  • "Commentaire" : texte libre

Raises:

Type Description
KeyError

Si le nom n'existe pas.

get_all_structural_members

get_all_structural_members() -> dict

Retourne toutes les barres structurales du modèle.

Returns:

Name Type Description
dict dict

Dictionnaire {name: données} de toutes les barres structurales.

del_structural_member

del_structural_member(name: str) -> dict

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

debug_node_compression(structural_member_name: str, axis: str = 'y') -> None

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

get_type_appuis_for_compression(structural_member_name: str, axis: str = 'y') -> str

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

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

coef_psy

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 {type_action: {"psy0": v, "psy1": v, "psy2": v}} avec les catégories "Neige > 1000m" ou "Neige <= 1000m" selon self.alt.

list_combination property

list_combination

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_loads

get_ELU_STR_loads()

Retourne les charges des combinaisons ELU STR

get_ELU_STR_ACC_loads

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

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

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

get_psy_2_by_combination(name: str)

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

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

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

get_combi_list_load(nom: str)

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

type_combi(name_combi: str) -> str

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. "ELU_STR 1.35G + 1.5Q" ou "ELU_STR_ACC G + Ae").

required

Returns:

Name Type Description
str str

"Accidentelles" si le nom débute par ELU_STR_ACC, sinon "Fondamentales".

Raises:

Type Description
ValueError

Si name_combi ne correspond pas à une combinaison ELU reconnue (ni ELU_STR ni ELU_STR_ACC).

min_type_load

min_type_load(name_combi: str) -> str

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").