Objets
Cette partie décrit, un par un, les objets du modèle pyrucast : pour chacun, son principe (à quoi il sert, comment il est structuré) et son interface (API Rust et Python). Les objets sont présentés dans leur ordre de dépendance — chacun ne s’appuie que sur les précédents.
Coords ── Node le magasin de nœuds, et l'un d'eux
│
└── Mesh agrège des SubMesh
├── NodeField champ aux nœuds, sur un support POI1
└── FiniteElementSpace agrège des SubFiniteElementSpace
├── ElementField champ aux points de Gauss
└── Model agrège des SubModel : physiques et contraintes
└── Matrix matrice creuse, sortie d'assemblage
Evolution agrège des SubEvolution : valeur tabulée selon une variable
Une distinction structure toute cette liste et se lit dans l’arborescence :
Coords est le magasin (src/coords.rs), Node, Cell et Element
sont des atomes insécables (src/atoms/), et tout le reste — les sept agrégats et
leurs vues Sub* — sont des conteneurs divisibles (src/containers/),
les seuls qui puissent être le sujet d’un opérateur. Voir
Conventions.
Deux abstractions transverses traversent la liste et méritent d’être lues tôt :
- l’Agrégat — la grammaire commune (
len,[i], union|) de tous les conteneurs « parent / zones » (Mesh,FiniteElementSpace,Model,Matrix,NodeField,ElementField,Evolution) ; - le Champ (
Field/SubField) — le contrat partagé entreNodeFieldetElementField: composantes nommées,min/max, arithmétique scalaire et par composante.
Pour le contexte informatique (durée de vie des objets, motif zone/agrégat),
voir Aspect informatique ; pour ce qu’il y a dessous
côté Rust (Handle<T>, compteurs de références), Modèle
mémoire. Pour les écrire dans un
fichier et les relire tels qu’ils étaient, Sauvegarde et
relecture.