Import Gmsh MSH 4.1¶
Perimetre¶
QF_solver lit MSH 4.1 ASCII et binaire par l'API Python officielle Gmsh. Une
importation contient une seule famille structurelle parmi TET4, TET10 et
MITC4. Les entites et groupes physiques restent l'autorite pour affecter
materiaux, blocages et charges.
Installation optionnelle:
python -m pip install -e ".[mesh]"
L'absence de Gmsh produit InfrastructureError et le code de sortie 5.
Fichier compagnon¶
Le MSH ne porte pas toute la physique. Un JSON strict associe les groupes:
{
"schema_version": 1,
"mesh_scale_to_m": 0.001,
"units": {"system": "SI"},
"verification_profile": "engineering",
"analysis": {"type": "linear_static", "method": "direct"},
"materials": {
"steel": {"type": "isotropic_3d", "E": 210000000000.0, "nu": 0.3, "density": 7800.0}
},
"groups": [
{
"name": "volume",
"dimension": 3,
"actions": [{"type": "elements", "element_type": "TET4", "material": "steel"}]
},
{
"name": "encastrement",
"dimension": 2,
"actions": [{"type": "fixed_dofs", "dofs": ["UX", "UY", "UZ"]}]
},
{
"name": "pression",
"dimension": 2,
"actions": [{"type": "pressure", "value": 1000000.0}]
}
]
}
mesh_scale_to_m est obligatoire. Il convertit uniquement les coordonnees;
les grandeurs mecaniques du setup doivent deja etre coherentes avec le systeme
declare.
Actions physiques¶
| Action | Dimension habituelle | Donnees | Effet |
|---|---|---|---|
elements |
3 pour solides, 2 pour coque | type, materiau | affecte toutes les cellules structurelles |
fixed_dofs |
0, 1 ou 2 | liste de ddl | bloque les noeuds du groupe |
nodal_load |
0, 1 ou 2 | ddl, valeur | ajoute la valeur a chaque noeud du groupe |
pressure |
2 | scalaire | pression compressive suivant la normale |
surface_traction |
2 | vecteur | traction globale ou locale |
edge_traction |
1 | vecteur | charge d'arete MITC4 |
gravity |
groupe d'elements | acceleration | force $\rho\mathbf g$ |
body_force |
groupe d'elements | densite de force | charge volumique imposee |
Association topologique¶
Une surface solide doit correspondre exactement a une face d'un seul element parent. Pour TET10, les six identifiants de la face sont verifies. Une courbe MITC4 doit correspondre a une arete d'un seul quadrangle. Une frontiere sans parent, partagee par plusieurs parents ou d'ordre incompatible est rejetee.
Orientation¶
Par defaut, un tetraedre inverse est refuse. L'option
--repair-tetra-orientation autorise une permutation controlee TET4 ou TET10;
le rapport indique le nombre de reparations. Pour TET10, tous les noeuds
d'arete sont permutes avec les sommets. MITC4 n'est jamais reoriente
automatiquement.
CLI¶
qf-solver import-mesh `
--mesh modele.msh `
--setup modele.setup.json `
--output modele.json `
--report import_report.json
API¶
from qf_solver import import_gmsh_model, save_model
imported = import_gmsh_model("modele.msh", "modele.setup.json")
save_model(imported.model, "modele.json")
print(imported.report.to_dict())
Rapport et refus¶
Le rapport contient version MSH/Gmsh, empreintes des deux entrees, format binaire, groupes, comptages d'actions, famille, nombre de noeuds/elements, reparations, avertissements et verdict du validateur de maillage.
Sont notamment refuses: groupe absent, cellule non supportee, element sans materiau, conflit de materiaux, famille mixte, noeud manquant, frontiere non conforme, element degenere ou orientation interdite.
Code: solveur/mesh/gmsh_reader.py, solveur/mesh/gmsh_importer.py.
Tests: tests/unit/test_gmsh_importer.py,
tests/integration/test_gmsh_import_cli.py. Exigences: REQ-IO-001,
REQ-MESH-001, REQ-MESH-002. Reference:
REF-GMSH-41.