Installation et démarrage rapide
Cette page suffit pour utiliser pyrucast en Python : l’installer, vérifier qu’il fonctionne, écrire un premier script. Deux voies : la version précompilée, sans rien compiler, ou la compilation depuis les sources. Pour développer sur la librairie (tests Rust, doctests, génération de la documentation, features Cargo), voir Compilation et tests.
Rust pur ? pyrucast s’utilise aussi comme bibliothèque Rust sans Python :
pyo3y est une dépendance optionnelle, donc un build par défaut ne tire nipyo3nilibpython. Voir Usage en Rust pur.
Version précompilée
pip install pyrucast
et pour passer à la dernière version :
pip install --upgrade pyrucast
PyPI distribue pyrucast en wheels — des paquets précompilés, prêts à installer — pour trois plateformes :
| Système | Processeur |
|---|---|
| Linux, glibc ≥ 2.17 (manylinux2014) | x86_64 |
| Windows 64 bits | x86_64 |
| macOS ≥ 10.12 (Intel), ≥ 11 (Apple Silicon) | x86_64 et arm64 (universal2) |
Seul prérequis : Python ≥ 3.11. Ni Rust ni compilateur. La wheel comprend
la visualisation (plot), fenêtre interactive incluse.
Sur une autre plateforme (Linux ARM, musl, BSD…), pip ne trouve pas de wheel
et compile lui-même les sources : il faut alors Rust (voir ci-dessous). Cette
compilation automatique se fait sans la visualisation — voir
Ce que porte chaque distribution.
Pour l’avoir, compilez à la main, comme le décrit la partie
Compilation ci-dessous.
Compilation
Pour suivre la version en développement, ou pour compiler avec la visualisation sur une plateforme sans wheel.
Prérequis
- Git, pour cloner le dépôt.
- Rust stable, installé via
rustup. - Python ≥ 3.11.
- Linux uniquement : la visualisation lie fontconfig et freetype, il faut
leurs en-têtes —
pkg-config libfontconfig1-dev libfreetype6-dev(Debian/Ubuntu) oupkg-config fontconfig-devel freetype-devel(Fedora/RHEL). Windows et macOS passent par les polices du système.
Compiler et installer
On clone le dépôt, puis on compile à sa racine, dans un environnement
virtuel : maturin develop refuse de s’en passer (« Couldn’t find a
virtualenv or conda environment »).
Linux / macOS (bash)
git clone https://github.com/Pyrucast/pyrucast
cd pyrucast
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip maturin
maturin develop --release --features extension-module,viz-interactive
Windows (PowerShell)
git clone https://github.com/Pyrucast/pyrucast
cd pyrucast
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install --upgrade pip maturin
maturin develop --release --features extension-module,viz-interactive
maturin develop compile le module Rust et l’installe dans le venv (mode
editable). --release compile en optimisé, ce qu’il faut pour tout usage
réel : un build de débogage est bien plus lent à l’exécution. Les features
font le reste : extension-module fait du binaire un module Python, et
viz-interactive ajoute la visualisation, fenêtre interactive comprise (elle
inclut viz, l’export PNG/SVG).
Après toute modification du Rust, relancer la même commande : sans
--features …viz-interactive, le module recompilé perdrait la visualisation.
Vérifier l’installation
python -c "import pyrucast; c = pyrucast.Coords(2); n = c.add_node([0.0, 0.0]); print(c); print(n)"
Sortie attendue :
Coords: dim=2, configs=1 (active="default"), nodes=1 (0 collected), permutation: identity
<Node #0>
pyrucast.__features__ dit ce que porte le module installé : viz y figure
quand la visualisation est compilée.
Premier script
Une ligne de 10 éléments entre deux nœuds, par la fonction libre line du
module pyrucast.mesh :
import pyrucast
c = pyrucast.Coords(dim=2)
a = c.add_node([0.0, 0.0])
b = c.add_node([1.0, 0.0])
ligne = pyrucast.mesh.line(a, b, 10)
print(ligne) # Mesh: 1 submesh(es) [#…], 10 cell(s) total
Trois niveaux de listing
Tout objet pyrucast se liste à trois niveaux : print(x) donne le résumé
d’une ligne, repr(x) la structure, x.dump() le contenu complet — les
listings résumé et complet de Cast3M. Le détail, avec un exemple, est dans
Aspect informatique.
Fonctions libres et méthodes
Les opérateurs de pyrucast sont des fonctions libres, rangées par ce qu’elles
produisent : tout ce qui rend un maillage est dans pyrucast.mesh. Quand une
fonction prend en premier l’objet qu’elle transforme et rend un nouvel objet,
elle existe en règle générale aussi en méthode de cet objet — les deux
écritures sont équivalentes :
plaque = pyrucast.mesh.extrude(ligne, [0.0, 1.0], 5) # fonction libre
plaque = ligne.extrude([0.0, 1.0], 5) # la même, en méthode
La méthode sert à composer. Pour la bordure d’une plaque tirée de la ligne, les fonctions libres s’imbriquent et se lisent de l’intérieur ; les méthodes s’enchaînent et se lisent dans l’ordre des opérations :
bord = pyrucast.mesh.border(pyrucast.mesh.extrude(ligne, [0.0, 1.0], 5)) # imbriqué
bord = ligne.extrude([0.0, 1.0], 5).border() # enchaîné
print(bord) # Mesh: 1 submesh(es) [#…], 30 cell(s) total
La règle complète — quelles fonctions ont leur méthode, et pourquoi — est dans Conventions.
Voir le maillage
Une fenêtre interactive s’ouvre, s’il y a un écran :
import os
# Without a screen (continuous integration, a remote session), `plot()` would fail:
# we fall back to a file. That is the condition winit tests itself.
ecran = os.environ.get("DISPLAY") or os.environ.get("WAYLAND_DISPLAY")
plaque.plot(save=None if ecran else "apercu.svg")
Aller plus loin
À partir d’ici, le chapitre Introduction présente le modèle d’objets, et la section Objets détaille chaque brique (coordonnées, maillage, champs, modèle physique…). Les chapitres Conduction thermique et Mécanique déroulent des problèmes complets de bout en bout.
- Tutoriel : un parcours guidé, du maillage au calcul thermique et mécanique — Premiers pas.
- Référence API Rust : publiée sur
https://pyrucast.github.io/pyrucast/rust/, ou en local avec
cargo doc --no-deps --lib --open. - Exemples Python complets et exécutables : dossier
examples/du dépôt (thermique, treillis, élasticité, poutres…). - Développer sur pyrucast (tests, doc, features) : Compilation et tests.
- Tout construire d’un coup (prérequis + compilation + tests + les trois
documentations + module avec visu interactive) :
bash script/build.sh(Linux/macOS) ou.\script\build.ps1(Windows) — voir Scripts « tout-en-un ».