Ce que fait pyrucast
En bref
pyrucast est une bibliothèque de calcul par éléments finis. Son cœur est écrit en Rust, un langage compilé, rapide, qui répartit le travail sur tous les cœurs du processeur ; on le pilote depuis Python. Un calcul est donc un script, du premier point posé au dernier résultat tracé.
pyrucast n’a pas d’interface graphique : les figures sont produites par le script lui-même, dans une fenêtre ou dans des fichiers d’image, et les résultats s’exportent vers les logiciels de visualisation (ParaView, par le format VTK). C’est un logiciel libre.
Les étapes d’un calcul
Tout calcul suit les mêmes étapes, et chacune a son objet ou sa famille de fonctions :
| étape | ce qu’on fait | dans pyrucast | vu dans |
|---|---|---|---|
| géométrie, maillage | poser des points, mailler lignes, surfaces et volumes | Coords, pyrucast.mesh | Premiers pas, Maillage |
| espace éléments finis | choisir l’interpolation sur le maillage | FiniteElementSpace | Premiers pas, Régime stationnaire |
| modèle | déclarer la physique, ses blocages, ses chargements | pyrucast.model | Régime stationnaire, Élasticité, Contact |
| matériaux | donner les coefficients que le modèle réclame | pyrucast.element_field.material_field | Régime stationnaire |
| second membre | intégrer les chargements | pyrucast.node_field.external_forces | Régime stationnaire |
| assemblage | construire la matrice du système | pyrucast.matrix.stiffness | Régime stationnaire |
| résolution | résoudre le système | pyrucast.solver.solve | Régime stationnaire, Élasticité |
| exploitation | tracer, extraire, exporter, sauvegarder | plot, pyrucast.evolution.along, pyrucast.export.export_vtk, pyrucast.save | Maillage, Régime stationnaire, Thermique non linéaire, Élasticité |
Quand le problème n’est pas linéaire ou évolue dans le temps, le
calcul pas à pas (pyrucast.stepping.step_by_step) répète
les étapes de l’assemblage à la résolution à chaque instant, jusqu’à
l’équilibre : voir Régime transitoire et
Mécanique non linéaire.
Les domaines couverts
Chaque ligne renvoie à la page qui la détaille.
Thermique. Conduction isotrope, orthotrope ou anisotrope, en régime stationnaire ou transitoire ; convection et flux imposé, sources volumiques ; rayonnement vers l’environnement. Dans ce tutoriel : régime stationnaire, régime transitoire, rayonnement.
Diffusion. La loi de Fick, pour une ou plusieurs espèces.
Mécanique des milieux continus, en contraintes planes, déformations planes, axisymétrie ou 3D :
- élasticité isotrope, orthotrope ou anisotrope ;
- plasticité de von Mises (parfaite ou avec écrouissage isotrope), Drucker-Prager et Ottosen, Gurson ;
- fluage et viscoplasticité (Norton, Lemaitre, Blackburn, Chaboche) ;
- endommagement de Mazars, Damage TC et SiC/SiC ;
- dilatation thermique, grandes transformations, dynamique.
Éléments de structure. Barre, poutres d’Euler-Bernoulli et de Timoshenko (portiques plans, cadres spatiaux), coques.
Conditions et liaisons. Blocages, relations entre nœuds, barres noyées dans un volume, contact sans frottement ; en égalité ou en inégalité (voir Contraintes).
Calcul pas à pas. À chaque instant, la thermique puis la mécanique à la température atteinte ; les lois non linéaires, le contact, la dynamique, le pilotage du chargement — voir Calcul pas à pas.
Éléments finis. Quinze types, linéaires et quadratiques, du segment à l’hexaèdre à 27 nœuds — voir Éléments finis supportés.
Maillage. Des mailleurs intégrés — lignes et arcs, balayages, triangulation de surfaces et de volumes, pavage en quadrangles, couche limite d’hexaèdres — et la lecture des maillages gmsh et MED : voir Maillage et Mailler une géométrie.
Résultats. Tracés dans une fenêtre ou en PNG/SVG,
export VTK, sauvegarde d’une session dans un fichier
.pyr.
Où trouver la documentation
- Dans Python :
help(pc.mesh.line)affiche l’aide d’une fonction (voir Python & conventions pyrucast). Les éditeurs de code la montrent aussi, et complètent les noms au fil de la frappe. - Ce livre : les parties Objets, Détails des physiques et Détail des opérateurs décrivent chaque brique, avec sa théorie.
- La référence de l’API Rust : https://pyrucast.github.io/pyrucast/rust/.
- Des exemples complets, un par sujet : dossier
examples/du dépôt.
Compiler pyrucast soi-même
La version précompilée suffit pour tout ce tutoriel. Compiler pyrucast depuis
ses sources ne sert qu’à l’installer avec la visualisation sur une plateforme
qui n’a pas de version précompilée, ou à travailler sur pyrucast lui-même. Il
faut alors Rust et l’outil maturin : la marche à suivre est dans
Installation et démarrage rapide.
Suite : Python & conventions pyrucast.