| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- @startuml C4_Flower_Architecture
- !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
- ' LAYOUT TOP_DOWN
- LAYOUT_WITH_LEGEND()
- title Diagramme C4 Container - Architecture Actuelle de Flower.jl
- Person(user, "Utilisateur / Physicien", "Configure et lance la simulation")
- System_Boundary(flower_system, "Flower.jl (Simulation CFD & Electrolyse)") {
- Container(driver, "Driver / Entry Point", "Julia Script (convergence.jl)", "Point d'entrée. Parse les arguments, initialise la mémoire globale et lance la simulation.")
-
- Container(config, "Configuration Parser", "YAML / PropertyDict", "Charge les paramètres physiques et numériques (ex: convergence...Newton.yml).")
- Container(orchestrator, "Time Orchestrator", "run.jl", "Gère la boucle temporelle (while t < t_end), le pas de temps adaptatif (CFL) et l'enchaînement des solveurs.")
- Container(data_struct, "Data & Mesh Manager", "geometry.jl / common.jl", "Structure de données centrale.\nGère les Grilles Décalées (Staggered), les Champs (Vitesse, Pression, Potentiel) et les LevelSets.")
- Container_Boundary(physics_kernels, "Noyaux Physiques (Computing Kernels)") {
- Container(mod_ns, "Navier-Stokes Solver", "navier_stokes.jl", "Résout l'équation de mouvement (Momentum) et la conservation de la masse.")
- Container(mod_elec, "Electrolysis Module", "electrolysis.jl", "Résout le Potentiel Électrique, la Loi d'Ohm et la cinétique Butler-Volmer.")
- Container(mod_trans, "Transport & Phase", "transport.jl / levelset", "Gère le transport des espèces et l'interface (LevelSet/VOF).")
- }
- Container(lin_solver, "Linear Algebra Wrapper", "poisson.jl / operators.jl", "Assemble les matrices A et les vecteurs b. Appelle les solveurs creux (SparseArrays / IterativeSolvers).")
- Container(io_interface, "I/O Interface", "PDI / HDF5 / Viz", "Exporte les données pour la visualisation (Paraview) et le checkpointing via la librairie PDI.")
- }
- System_Ext(libpdi, "Librairie PDI", "C/C++ Library", "Gestionnaire d'événements et d'E/S haute performance.")
- ' Relations
- Rel(user, driver, "Lance la simulation", "CLI")
- Rel(driver, config, "Lit", "YAML")
- Rel(driver, data_struct, "Alloue & Initialise", "Struct Numerical & Mesh")
- Rel(driver, orchestrator, "Démarre", "run_forward!")
- Rel(orchestrator, mod_ns, "Appelle (Time step)", "run_navier_stokes!")
- Rel(orchestrator, mod_elec, "Appelle (Time step)", "solve_poisson_loop!")
- Rel(orchestrator, mod_trans, "Appelle (Advection)", "transport!")
- Rel(orchestrator, io_interface, "Notifie", "Events PDI")
- Rel_D(mod_ns, data_struct, "Lit/Écrit", "u, v, p")
- Rel_D(mod_elec, data_struct, "Lit/Écrit", "phi, sigma")
- Rel_D(mod_trans, data_struct, "Lit/Écrit", "LevelSet")
- Rel(mod_elec, lin_solver, "Résout Ax=b", "Laplacien Potentiel")
- Rel(mod_ns, lin_solver, "Résout Ax=b", "Projection Pression")
- Rel(io_interface, libpdi, "Calls", "C API")
- Rel_U(io_interface, data_struct, "Lit (Pointeurs)", "Champs bruts")
- @enduml
|