2 · Composition de fonctions
Pré-requis
Section intitulée « Pré-requis »- Tu as terminé le chapitre 1
(ou tu as importé le
.workflow.yamlcorrespondant). - Le package
eurocode-1-1-4(version ≥ 0.3.2) est déployé.
Ce que tu vas apprendre
Section intitulée « Ce que tu vas apprendre »À la fin de ce chapitre, tu sauras :
- Ajouter un deuxième nœud fonction à un workflow existant.
- Partager un Input ou un Constant entre plusieurs fonctions (DRY).
- Utiliser un operator natif (
multiply) pour combiner deux ports typés. - Profiter de l’inférence dimensionnelle : MecaPy déduit automatiquement le type de sortie à partir des dimensions SI des opérandes ().
- Déclarer plusieurs sorties sur un même workflow.
Le calcul qu’on va modéliser
Section intitulée « Le calcul qu’on va modéliser »Notre panneau de signalisation est exposé au vent réglementaire calculé au ch01. La norme §7.4.3 donne la force horizontale résultante :
où :
- est l’aire du panneau,
- est imposé par la norme pour un panneau isolé du sol (),
- est la hauteur de référence (centre du panneau),
- par défaut (structures < 15 m, §6.2(1)(a)).
La fonction Fw_signboard du package eurocode-1-1-4 fait tout ça
d’un coup et renvoie aussi le moment de torsion
avec (excentricité worst-case §7.4.3).
Pour le moment de flexion au pied du poteau, on multiplie la force horizontale par son bras de levier :
C’est là qu’intervient l’operator natif multiply — pas besoin
de re-coder un handler Python pour une multiplication scalaire.
Pour notre panneau :
- (largeur)
- (hauteur)
- (bord inférieur au-dessus du sol)
→ (cohérent avec le ch01), .
Résultats attendus :
| Grandeur | Valeur | Unité |
|---|---|---|
| ≈ 722 | Pa | |
| ≈ 7,80 | kN | |
| ≈ 5,85 | kN·m | |
| ≈ 26,5 | kN·m |
-
Repartir du workflow ch01
Ouvre le workflow du chapitre 1 (ou importe le
.workflow.yamlde référence si tu pars de zéro). Tu devrais voir : le nœudqp, les 3 inputsqp.vb_0/qp.z/qp.terrain, la constanterho, et le nœudoutput.
-
Ajouter le nœud fonction
Fw_signboardClic droit sur une zone libre du canvas → Add function node. Dans le picker :
- Package :
eurocode-1-1-4 - Version :
0.3.2 - Function :
Fw_signboard
Le nœud apparaît avec ses 11 ports d’entrée (7 que tu connais déjà depuis
qp+ 4 nouveaux :b,h,z_g,c_scd) et ses 9 ports de sortie (, , , , , , , , , — la chaîne §4 est ré-évaluée en interne).
- Package :
-
Partager les inputs déjà existants
Le nœud
Fw_signboardréclamevb_0,terrain,rho— qu’on a déjà côtéqp. Plutôt que de créer 3 nouveaux Input/Constant, on branche les nœuds existants sur les ports correspondants du nouveau nœud.Tire un fil :
- de
qp.vb_0(outputvalue) versFw_signboard.vb_0 - de
qp.terrain(outputvalue) versFw_signboard.terrain - de
rho(outputvalue) versFw_signboard.rho
Un même Input/Constant peut alimenter plusieurs ports — c’est la garantie qu’on calcule et avec les mêmes valeurs physiques.

- de
-
Créer les 3 nouveaux inputs depuis les ports
Pour
b,h,z_g(qui n’ont pas d’équivalent côtéqp), on utilise le geste port-drop du ch01 : clic sur le port d’entrée, drag jusqu’à une zone vide du canvas, relâche → popup → Add input.Port Type Label auto-rempli bLengthFw_signboard.bhLengthFw_signboard.hz_gLengthFw_signboard.z_gLe port
c_scdreste non-connecté — il a une valeur par défaut de1.0dans le manifest (cf. ch01 pour le mécanisme).
-
Ajouter l’operator
multiplyPour le moment au pied, on multiplie par . Clic droit sur le canvas → Add operator → choisir multiply.
L’operator a 2 ports d’entrée génériques (
a,b) et un port de sortie (result). Connecte :Fw_signboard.Fw→multiply.aFw_signboard.z_e→multiply.b


-
Déclarer les 3 outputs
On veut publier 3 grandeurs au lieu d’une seule. Clic droit canvas → Add output, trois fois :
Output Source FwFw_signboard.Fw(Force)M_torsionFw_signboard.M(Moment)M_basemultiply.result(Moment)Tu peux conserver le nœud
outputd’origine pour ou le supprimer — selon que tu veux exposer aussi la pression dynamique ou seulement les efforts mécaniques.
-
Sauvegarder + exécuter
Save, puis Run en renseignant tous les inputs :
Input Valeur qp.vb_026.0qp.z3.40qp.terrain"II"Fw_signboard.b3.00Fw_signboard.h2.00Fw_signboard.z_g2.40Sur la page du run, les 3 sorties :

Ce que tu viens de faire
Section intitulée « Ce que tu viens de faire »- Composition : deux fonctions normatives chaînées dans un même graphe, partageant leurs inputs communs (cohérence garantie).
- Operator natif : une multiplication scalaire ne nécessite pas
de package Python —
multiplyest évalué dans l’orchestrateur, zéro container. - Typage dimensionnel : inféré automatiquement, sans déclaration manuelle.
- Multi-output : un workflow MecaPy peut publier autant de grandeurs que tu veux ; chaque output devient une clé dans la réponse du run.
Récupérer le workflow tout fait
Section intitulée « Récupérer le workflow tout fait »📥 Télécharger ch02-force-vent.workflow.yaml
Import via Workflows → Import ; MecaPy résout Fw_signboard par
le digest source du package eurocode-1-1-4@0.3.2.
Prochain chapitre
Section intitulée « Prochain chapitre »3 · Combinaisons d’actions (à venir) : on introduit les
combinaisons ELU/ELS de l’EC0 via l’operator scale (multiplication
par les coefficients de pondération , , ,
…) et on prépare le terrain pour les vérifications EC3.