Repository navigation
Releases
pyrucast v0.13.1
crates.io pyrucast 0.13.1 · PyPI pyrucast 0.13.1
Wheels cp311-abi3 (Python ≥ 3.11) pour Linux x86_64, Windows x86_64 et macOS universal2.
La sdist se compile sans la visualisation : pyrucast.__features__ dit ce que porte votre installation.
0.13.1 — 12/11/2026
Corrections
pyrucast v0.12.0
crates.io pyrucast 0.12.0 · PyPI pyrucast 0.12.0
Wheels cp311-abi3 (Python ≥ 3.11) pour Linux x86_64, Windows x86_64 et macOS universal2.
La sdist se compile sans la visualisation : pyrucast.__features__ dit ce que porte votre installation.
0.12.0 — 09/11/2026
Ruptures d'API
- mesh —
all_quaddevientprefer_quads, une préférence (330ae1a) - python — scalar accessors are properties; SubFiniteElementSpace.submesh(); mesh() one zone per subspace (0e547e9)
- field support() one entry per zone; border and skin refuse a zone listed twice (1fe096b)
- a field keeps its two coherence rules through every operation (ab66dfa)
- NodeField::node_ids lists each node once in linear time (11d2b20)
- fick — the direction index goes last in the oriented diffusivities (5f09178)
- behavior — the rest state is explicit, prev is required (36ba940)
Nouveautés
- doc — un garde-fou vérifie que chaque équation arrive intacte (08855d1)
- mesh — structured meshers keep the quadratic degree; sweep closes rings (2c11e95)
- viz — eight curve colours, told apart under colour-vision deficiencies (a2a45bf)
Corrections
- book — 99 équations arrivaient abîmées à MathJax (2731f59)
- py —
Arraya son troisième niveau d'affichage,dump()(2eaccab) - mesh — les paveurs en QUA9 gardent leurs triangles en TRI6 (e4cda09)
- a node from another Coords is refused wherever it becomes an id (024b955)
- one Coords per aggregate; fields gain support() and a scalar on the left (54cc329)
- python — scalar ** field and -field on every field; SubNodeField.set_uniform (86313fb)
- a node field refuses a POI1 support listing a node twice (423f43c)
- matrix — a block refuses a support that repeats a node (9f57085)
- matrix — an assembled matrix seals its blocks (d93a87d)
- matrix — a lumped matrix carries diagonal blocks (c8079da)
- solver — a cached factorization serves the method it was made with (380ade4)
- model — has_behavior means a law, fespace a domain's subspace (c78dc5f)
- truss — refuse any element but SEG2; the reduced rule is exact for affine functions (dcd6f68)
- tutoriel — step 2 of the thermal script holds the bore at 250 °C again (0286b44)
- viz — smooth field rendering subdivides a cell by its own degree (112a1b7)
- viz — a field evolution's plot shows its title (b563cef)
Performances
- field reductions count a shared node in one pass, read in place (fe707a2)
- coords::displace writes in bulk, as displace_from does (01b97c1)
- check compares every component of a node in one pass (01ff1bb)
Remaniements
- coloring — keep only the node colouring that the drivers call (00e92fd)
- matrix — drop dense and mul_dense, read a computed block nowhere (1bef024)
- matrix — assemble is the one way to give a matrix its values (df24609)
- matrix — a block operand of a Python sum cannot fail (2565df5)
- mesh — no test nor allocation per node in the structured kernels (79f8321)
Documentation
- book — l'introduction relue, ses premiers pas tracent une ligne (5e5ef34)
- book — les premiers pas en Rust retrouvent leur
?(89879c8) - book — la correspondance Rust ↔ Python passe sous « Développer », relue (f73a86e)
- book — l'installation distingue la version précompilée de la compilation (0ff627c)
- book — les trois niveaux de listing passent dans le premier script (4bb27ba)
- book — la formation devient le tutoriel (2df6cb6)
- mesher — les tests ne citent plus
maillage_test.py, disparu (0b53a97) - mesher — les mesures du maillage volumique, refaites sur
maillage.py(c0a12d8) - book — installation — la compilation par pip est sans visu, le clone dans les commandes (9f0ce31)
- book — l'aspect informatique, vu de Python (7e0a3bc)
- book — « Mailler une géométrie » remesurée, après les opérateurs (fccfa5a)
- book — le tableau des mailleurs 2D donne leurs types et options (26dd72d)
- book — les objets au même niveau que leur vue d'ensemble (6d2015f)
- book — un chapitre numéroté par partie, la vue d'ensemble en x.1 (f6a53df)
- book — Coordonnées, décrite telle qu'elle est et vue de Python (a2495a7)
- book — Nœud, vu de Python et décrit tel qu'il est (54c2713)
- book — Agrégat, vu de Python et décrit tel qu'il est (7425a5e)
- book — Maillage, vu de Python, caches et scellement compris (3097ca5)
- element_type — the 3-D names are not Cast3M's (9fa98fb)
- book — Champ aux points de Gauss, vu de Python et décrit tel qu'il est (33b4b00)
- book — one title form for the object pages (e0a67e9)
- book — Espace éléments finis, vu de Python et décrit tel qu'il est (34f7736)
- REDUCED by its real uses, no history in docstrings, kernel without the store (b8729fa)
- book — Champ, vu de Python et décrit tel qu'il est ([f8f3cc0](https:...
pyrucast v0.11.0
crates.io pyrucast 0.11.0 · PyPI pyrucast 0.11.0
Wheels cp311-abi3 (Python ≥ 3.11) pour Linux x86_64, Windows x86_64 et macOS universal2.
La sdist se compile sans la visualisation : pyrucast.__features__ dit ce que porte votre installation.
0.11.0 — 28/10/2026
Ruptures d'API
- element_field — mesures de déformation finies (1b77e48)
- briques du pas-à-pas — natures des contraintes, opérateur élastique, tables, grandeurs par maille (52909bf)
- stepping — pyrucast.stepping, le PASAPAS de Cast3M procédure par procédure (49d6b1b)
Nouveautés
- element_field —
strain, le B du modèle — l'entrée de chaque loi (2dbc451) - plasticity — prédicteur sécant — toute loi calcule σ(B) = C(B) : ε_e(B) (d7e0b8c)
- large-transformations — la loi lit sa mesure, les forces internes lisent P = F S (049677a)
- large-transformations — Hencky — la duale T ramenée à S dans la base propre de C (2d54c0f)
- flux — le mode normal — une pression qui suit la paroi (310cef4)
- stepping — les grands déplacements, lus sur la mesure des lois (5fbcf5a)
- stepping — la conduction écrite sur la référence, ses axes tournant avec la pièce (3f0a9a2)
- coords — in_config — calculer le temps d'un bloc dans une configuration (3bd14ca)
- stepping — la thermique sur la pièce déformée, axes tournés par R (662aafb)
- node_field — project — un champ nodal porté aux nœuds d'un autre maillage (3f4d6d9)
- truss — les câbles — la barre en Green–Lagrange, en lagrangien total (c657c01)
- solver — l'élimination garde les inégalités et les résout par l'ensemble actif (c2d1c13)
- contact — update_contact réapparie un contact sur X + u (1651254)
- stepping — le contact en grands déplacements (c0ab9de)
- stepping — une maille retournée arrête le pas (c063988)
Corrections
- examples — thermomecanique_pas_a_pas.py, le nom que tout le reste cite (5334734)
- tests — les tests effacent ce qu'ils écrivent sous /tmp (bb853a3)
- doc_lint — un nom atteint par un autre module ne cite pas pyrucast (60c43a0)
- matrix — la tangente d'une physique linéaire est sa raideur, pas zéro (fb166f6)
- formation — la plaque trouée plastifie enfin (8953ba9)
- continuum — la rigidité et la masse lisent le matériau en chaque point de Gauss (fb1648f)
- transport — conduction et Fick lisent leur matériau en chaque point de Gauss (4e25e1e)
- py — stress_measure redevient une fonction libre seulement (0783b79)
- stepping — la configuration courante est retrouvée, plus ajoutée à chaque calcul (d3fe746)
- matrix — une somme additionne les valeurs assemblées ; freeze retirée (48d7048)
- models — retirer les serde(default) qui promettaient une compatibilité (a3937a7)
- archive — retirer les derniers serde(default), sans effet sous bincode (72651b4)
- solver — la variante Unilateral de Reduced en boîte (clippy large_enum_variant) (81bf644)
Remaniements
- model — conduction, Fick et élasticité générées par physics_operator! (9f7213b)
- model — les contraintes prennent leur sens et leur tolérance par défaut (91ab80c)
- model — un seul constructeur pour la conduction, Fick et l'élasticité (ca3c5eb)
- model — un seul constructeur par physique, et les lois sous leur vrai nom (9eeb281)
- model — les contraintes créent leurs multiplicateurs, sous des noms communs (1f6d19a)
- model — des signatures uniformes pour les constructeurs de modèle (5a90d6b)
- solver — la matrice se suffit, un seul solve (14081e0)
- contact — le contact porte son jeu, contact_gaps disparaît (21fd935)
- solver — Factored et Reduced sans boîte, dérogation motivée (cabccb6)
Documentation
- book — TempDir cité sans chemin
::, que le garde-fou des symboles prenait pour un module (a9cad86)
Tests
- python — les 17 entrées qu'aucun test n'exerçait (d966c37)
Compilation et outillage
- check-list A1–A14 — résultats sans
cauchy, délégations en anglais (6e61bc6) - clippy — trois avertissements antérieurs (f26d0bb)
- model — les restes du bilan des physiques (846e49d)
Style
- py — ruff check passe, et entre dans check_format (fec2b5b)
Divers
- Merge branch 'feat/pas-a-pas'
Le pas à pas de Cast3M porté en Python (pyrucast.stepping) sur les briques
Rust qui manquaient : grands déplacements en lagrangien total, câbles,
project, contact en grands déplacements, un seul solve lisant tout dans la
matrice, contrôle des mailles retournées. (df16549)
pyrucast v0.10.0
crates.io pyrucast 0.10.0 · PyPI pyrucast 0.10.0
Wheels cp311-abi3 (Python ≥ 3.11) pour Linux x86_64, Windows x86_64 et macOS universal2.
La sdist se compile sans la visualisation : pyrucast.__features__ dit ce que porte votre installation.
0.10.0 — 24/09/2026
Nouveautés
- exchange — échange générique par tableaux, gmsh et medcoupling dans les deux sens (4adc1ea)
pyrucast v0.9.1
crates.io pyrucast 0.9.1 · PyPI pyrucast 0.9.1
Wheels cp311-abi3 (Python ≥ 3.11) pour Linux x86_64, Windows x86_64 et macOS universal2.
La sdist se compile sans la visualisation : pyrucast.__features__ dit ce que porte votre installation.
0.9.1 — 22/09/2026
Nouveautés
- solve_peak — cube thermique par les voies publiques, pics anonyme et fichier (aa86206)
- spill — swap utilisateur — les grosses allocations dans des fichiers mappés (a88f1ff)
- spill — compteurs et journal des blocs débordés (98f47a5)
- spill,matrix — les compteurs côté Python, et ce que pèse une matrice (2a994aa)
Corrections
- matrix — le doctest de memory_bytes n'importait pas Aggregate (f776a70)
- python — spill_stats réexporté par le paquet (981392d)
Documentation
pyrucast v0.9.0
crates.io pyrucast 0.9.0 · PyPI pyrucast 0.9.0
Wheels cp311-abi3 (Python ≥ 3.11) pour Linux x86_64, Windows x86_64 et macOS universal2.
La sdist se compile sans la visualisation : pyrucast.__features__ dit ce que porte votre installation.
0.9.0 — 22/09/2026
Ruptures d'API
- py — les macros de champ nomment l'item qu'elles produisent (864aeb7)
- matrix — les opérateurs scalaires et dof_vars cessent de rendre un Result (506fb10)
- matrix — SubMatrix::new et computed cessent de rendre un Result (3ff67a5)
- matrix,model — filter ne rend plus un Result (ce150ee)
- matrix — un bloc déclare quelle part de la symétrie il porte (087c561)
- solver — Cholesky au choix, et la matrice symétrique part sans retournement (c8277bf)
- matrix — une seule marche construit les deux ordres de DDL (e24c714)
Nouveautés
- matrix — additionner des matrices, et l'échelle garde l'assemblage (39e44c9)
- matrix,python — le bloc porte la même algèbre scalaire que l'agrégat (868f993)
Corrections
- docs — sept lignes vides laissées dans des blocs de doc (a09d0c7)
- solver,matrix — deux constructions que clippy refuse (5d7c060)
- tests — test_gmsh_live attend le message traduit (3dee1cb)
Performances
- solver — la matrice part chez faer empruntée, sans être recopiée (6a5879c)
Remaniements
- py — huit verbes de champ redeviennent des méthodes écrites (2520800)
- py — pow et richcmp s'écrivent, leur sémantique se factorise (c06618b)
- py — six macros de champ, nommées d'après ce qu'elles engendrent (fcfccde)
- matrix — le bloc lit sa connectivité au lieu de la recopier (2c72d58)
- contraintes — le chemin littéral lit les connectivités au lieu de les recopier (386b40b)
- kernel,model — les noyaux et la charge multiplicateur lisent en place (ee491c2)
- ops — les opérateurs de maillage lisent la connectivité en place (4bb92c5)
- matrix,scatter — quatre Result qui ne pouvaient pas échouer (04e339d)
Documentation
- py — les macros de champ disent ce qu'elles engendrent (459628e)
- py — la règle du seuil, et les commentaires que le déplacement a laissés faux (d6823ff)
- py — la doc intégrée revient à l'anglais (6d3ca8d)
- py — src/py passe entièrement à l'anglais (c84b2a8)
- models,containers — kernel.rs et matrix.rs passent à l'anglais (c86676a)
- bascule à l'anglais — src/, tests/, examples/, les .md hors book (bcf664d)
- troisième lot de la bascule — tests/python, examples, src (52bdbdb)
- quatrième lot de la bascule à l'anglais (402a2e6)
- cinquième lot de la bascule à l'anglais (eb931b2)
- sixième lot de la bascule à l'anglais (bab3fbf)
- fin de la bascule à l'anglais hors book (2898899)
- py — merge_nodes recopie la doc de sa fonction libre (a49b8aa)
- solver,matrix — le solveur emprunte la CSR, il ne la convertit plus (10bc5af)
- matrix — DofOrder atteste le partage qu'il annonce (6657ae3)
Divers
- parallel — l'assemblage passe à 880×880 pour sortir du bruit (c9aab08)
pyrucast v0.8.0
crates.io pyrucast 0.8.0 · PyPI pyrucast 0.8.0
Wheels cp311-abi3 (Python ≥ 3.11) pour Linux x86_64, Windows x86_64 et macOS universal2.
La sdist se compile sans la visualisation : pyrucast.__features__ dit ce que porte votre installation.
0.8.0 — 17/09/2026
Nouveautés
- py —
#[py_op]dérive la méthode raccourci de sa fonction libre (197690a) - py — tout
meshpasse à#[py_op], ses 40 méthodes sont dérivées (789dfd7) - py — les quatre derniers modules d'opérateurs passent à
#[py_op](be81f7d) - affichage — les zones d'un agrégat portent l'identifiant de leur handle (7207e3d)
- affichage — le résumé d'un agrégat nomme ses zones, sa structure reprend son total (6ab0f7c)
Corrections
- py — les douze pointeurs qui visaient le vide, et le garde-fou qui manquait (3ba3168)
- affichage — le contenu d'un sous-objet n'en dit plus moins que sa structure (599ac3a)
- affichage — le résumé et la structure d'une vue ne prennent plus de verrou (c6468bd)
- macros — la rustdoc de py_op ne produit plus d'avertissement (cade8d9)
- release — publish_macros.sh se nomme auprès de crates.io (52b1713)
- release — publish_macros.sh ne commite pas un Cargo.lock ignoré (89db305)
Remaniements
- py — les trois niveaux d'affichage naissent de la macro qui posait dump (f09f8d5)
- handle — le
Debugd'un handle dit ce que dit sonDisplay(86f12bc) - py — les verbes de lecture des champs naissent de deux macros (05b7375)
- py — les deux accesseurs propres aux sous-conteneurs rejoignent la macro (6028278)
- py — les quatre mutateurs de composante naissent de deux macros (896cb98)
- py — les cinq opérateurs arithmétiques naissent de macros exportées (ccf3309)
- py — une forme unique pour les six macros, sans Result inutile (d8903db)
- py — les maths élémentaires et les composantes rejoignent la charpente (8876cd4)
- py — richcmp rejoint la charpente, en bras non décoré (c3b757d)
- py — mask et select dérivent leurs méthodes d'une fonction par saveur (b79bcd4)
- py — cell.rs rend ses 2 valeurs infaillibles sans PyResult (813d6a4)
- py — coords.rs rend ses 12 valeurs infaillibles sans PyResult (7123f29)
- py — element.rs rend ses 3 valeurs infaillibles sans PyResult (3fd402d)
- py — element_field.rs rend ses 2 valeurs infaillibles sans PyResult (66bf37d)
- py — evolution.rs rend ses 6 valeurs infaillibles sans PyResult (0367ad1)
- py — finite_element_space.rs rend ses 8 valeurs infaillibles sans PyResult (862fa4d)
- py — matrix.rs rend ses 20 valeurs infaillibles sans PyResult (760edec)
- py — mesh.rs rend ses 9 valeurs infaillibles sans PyResult (83251b8)
- py — model.rs rend ses 10 valeurs infaillibles sans PyResult (6d106a9)
- py — node_field.rs rend ses 1 valeurs infaillibles sans PyResult (2ec3109)
- py — six macros de champ réduites à trois (72ccf38)
- py — la doc des macros de champ s'écrit en /// (b8dd1fa)
Documentation
- py — les maths élémentaires portent la doc de leur fonction libre (e162971)
- trois liens intra-doc visaient des items privés (a5d9f5c)
- handle — tag porte enfin son exemple (6cb9934)
- conventions — le sens d'une macro, nommer ses types ou les recevoir (81aa5b3)
Compilation et outillage
pyrucast v0.7.1
crates.io pyrucast 0.7.1 · PyPI pyrucast 0.7.1
Wheels cp311-abi3 (Python ≥ 3.11) pour Linux x86_64, Windows x86_64 et macOS universal2.
La sdist se compile sans la visualisation : pyrucast.__features__ dit ce que porte votre installation.
0.7.1 — 15/09/2026
Ruptures d'API
- transfert — les échanges reçoivent le modèle qu'ils couplent (15c2cd1)
Documentation
- echanges — le book montre la nature que chaque échange tient de sa cible (cc0da50)
pyrucast v0.7.0
crates.io pyrucast 0.7.0 · PyPI pyrucast 0.7.0
Wheels cp311-abi3 (Python ≥ 3.11) pour Linux x86_64, Windows x86_64 et macOS universal2.
La sdist se compile sans la visualisation : pyrucast.__features__ dit ce que porte votre installation.
0.7.0 — 14/09/2026
Ruptures d'API
- la modélisation continue cesse d'appartenir à l'élasticité (9ecd6e3)
- la tangente se demande, et ne se stocke plus (3cc91ee)
- residu — le résidu se demande au modèle, des deux côtés du signe égal (11cb66e)
- residu — le contrat déclare une recette, l'opérateur produit le champ (9a769f6)
- models — la loi quitte le domaine, qui ne dit plus que « j'intègre » (454f4e9)
- transfert — l'ambiant rentre chez lui, et le résidu externe cesse d'être vide (187fa9d)
- flux — la dernière porte libre du second membre se ferme (a52ce77)
- contraintes — un appui reçoit le modèle qu'il contraint (8b929c4)
- contraintes — le MPC, le baignage et le contact reçoivent leur cible (2c4690e)
- interface — l'interface perd sa loi, un terme dit ce qu'il lit (c0c564a)
- flux — la charge reçoit le modèle qu'elle charge (8908b11)
- divergence — les forces internes sans modèle sont une divergence (8265b83)
Nouveautés
- beam — le B de poutre cesse d'être implicite (7c32669)
- poutres — Bernoulli et Timoshenko rendent leurs forces internes (504312e)
- coque — la coque rend ses forces internes, et ses déformations (d4820e6)
- flux — la charge répartie devient une physique (7a134b8)
- residu — le transfert perd sa loi postiche, la contrainte rend sa réaction (3739a7a)
Corrections
- finite_element_space — une maille saine cesse d'être singulière par ses unités (798f93c)
- finite_element_space — la négation qui attrape le NaN se nomme (8992793)
- interface — le saut se lit par nom, pas par position (83609ed)
- flux — la charge répartie retrouve la base du champ et son garde-fou (bee6ff3)
- clippy — les passes clippy redeviennent muettes avant la 0.7.0 (96c7b43)
Remaniements
- residu — le contrat externe cesse de payer un Result qu'il ne porte pas (4ca912d)
- contraintes — les Option de constructeur cessent d'être des bouche-trous (2d1f3e1)
Documentation
pyrucast v0.6.0
crates.io pyrucast 0.6.0 · PyPI pyrucast 0.6.0
Wheels cp311-abi3 (Python ≥ 3.11) pour Linux x86_64, Windows x86_64 et macOS universal2.
La sdist se compile sans la visualisation : pyrucast.__features__ dit ce que porte votre installation.
0.6.0 — 31/08/2026
Ruptures d'API
- le Result et l'Option ne se paient que s'ils portent un choix (63315cd)
Performances
- node_field — deux noyaux de flux plutôt qu'un noyau et un test (240ff3e)
- scaling — un mode cube HEX8 3-D qui mesure aussi les octets (9deca6e)
- matrix — numéroter les DDL en clés compactes, sans String (25256a0)
- coloring — incidence en CSR par tri par comptage (db52e77)
- matrix — l'état assemblé partage sa sparsité au lieu de la recopier (4a6edbc)
- element_field — fusionner les champs par indices, pas par noms (10dff21)
- scatter — un motif qui ne matérialise plus rien par maille (7d85971)
- node_field — l'union cesse de recopier ce qu'elle rend inchangé (7074445)
Remaniements
- node_field — flux prend les deux conteneurs divisibles (b474108)