Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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 : pyo3 y est une dépendance optionnelle, donc un build par défaut ne tire ni pyo3 ni libpython. 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èmeProcesseur
Linux, glibc ≥ 2.17 (manylinux2014)x86_64
Windows 64 bitsx86_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) ou pkg-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 ».