Architecture#
pyna est organise autour de deux idees :
les systèmes dynamiques définissent des règles d’evolution sur des espaces des phases de dimension finie ;
les modules de topologie decrivent des objets geometriques vivant dans ces espaces des phases.
Cette separation permet a la même hierarchie d’objets de representer des structures de lignes de champ magnétique toroidales, des zones de résonance hamiltoniennes, des cartes classiques, des orbites à N corps et des chemins échantillonnés stochastiques.
Couche 0 : dynamique#
pyna.topo.dynamics fournit la couche mathématique abstraite :
PhaseSpaceContinuousFlowHamiltonianFlowDiscreteMapPoincareMapetGeneralPoincareMap
pyna.dynamics ajoute des systèmes de dimension finie prêts à l’emploi :
CallableFlowetCallableMapHamiltonianSystemetSeparableHamiltonianSystemNBodySystemItoSDE,BrownianMotionetGeometricBrownianMotion
Ces classes utilisent le coeur topologique pour les sorties échantillonnées. Une
trajectoire de flot deterministe est une pyna.topo.core.Trajectory ; un
nuage d’itérations discret est une pyna.topo.core.Orbit.
Couche 1 : géométrie#
pyna.topo.core est la hierarchie géométrique independante du domaine :
Classe |
Signification |
Type de temps |
|---|---|---|
|
courbe echantillonnee finie dans l’espace des phases |
continu |
|
orbite periodique d’un flot continu |
continu |
|
zone de résonance autour d’un cycle elliptique |
continu |
|
famille de tubes partageant une résonance |
continu |
|
iterations echantillonnees finies d’une carte |
discret |
|
orbite periodique finie d’une carte |
discret |
|
un îlot de résonance sur une section |
discret |
|
chaîne périodique d’îlots sur une section |
discret |
Le bridge cle est section_cut :
Cycle --section_cut--> PeriodicOrbit
Tube --section_cut--> IslandChain
TubeChain --section_cut--> IslandChain
Cela reflete le workflow toroidal ou les tubes continus d’îlots magnétiques sont observes comme des chaines d’îlots discretes sur une section de Poincaré.
Couche 2 : spécialisation toroidale#
pyna.topo.toroidal sous-classe le coeur generique :
core.SectionPoint -> toroidal.FixedPoint
core.PeriodicOrbit -> toroidal.PeriodicOrbit
core.Cycle -> toroidal.Cycle
core.Island -> toroidal.Island
core.IslandChain -> toroidal.IslandChain
core.Tube -> toroidal.Tube
core.TubeChain -> toroidal.TubeChain
La couche toroidale ajoute :
les coordonnées
R,Zetphiles nombres d’enroulement
(m, n)DPmet la classification de monodromieles coupes de section et le traçage accélérés par cyna
la correspondance de vues de section et les auxiliaires de reconstruction
Couche 3 : workflow et auxiliaires d’extension#
pyna.topo.protocols, adapters, builders, bridges et
factories fournissent la couche d’extension d’ingenierie logicielle. Le
principal point d’entree cote notebooks est TopologyWorkflow. Ces auxiliaires
gardent la politique de construction et la selection de backend en dehors des
dataclasses mathématiques : les systèmes externes peuvent se conformer par
protocole, normaliser les données avec des adaptateurs, promouvoir les objets
via des builders, couper la géométrie continue via des bridges et choisir les
implementations d’exécution via des factories.
Couche 4 : accélération#
cyna implemente les goulets d’etranglement derriere les API pyna de haut
niveau. Il ne doit pas posseder la semantique scientifique des objets de haut
niveau ; il fournit des noyaux rapides pour le traçage, l’interpolation, les
balayages de points fixes, les impacts sur paroi et la reponse aux
perturbations.
Regles de conception#
Preferer les classes generiques
pyna.topo.corepour toute nouvelle géométrie de dimension finie.Ajouter les champs spécifiques au toroidal uniquement dans les sous-classes
pyna.topo.toroidal.Une trajectoire finie echantillonnee est une géométrie, pas automatiquement un ensemble invariant.
Promouvoir des objets en
Cycle/PeriodicOrbituniquement lorsqu’une structure périodique fait partie du modèle ou a été validée numeriquement.Garder cyna aux frontières de bridge ; les API applicatives doivent renvoyer des objets pyna, pas des tableaux C++ bruts.