c4level2_electrolysis.txt 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. @startuml C4_Flower_Architecture
  2. !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
  3. ' LAYOUT TOP_DOWN
  4. LAYOUT_WITH_LEGEND()
  5. title Diagramme C4 Container - Architecture Actuelle de Flower.jl
  6. Person(user, "Utilisateur / Physicien", "Configure et lance la simulation")
  7. System_Boundary(flower_system, "Flower.jl (Simulation CFD & Electrolyse)") {
  8. 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.")
  9. Container(config, "Configuration Parser", "YAML / PropertyDict", "Charge les paramètres physiques et numériques (ex: convergence...Newton.yml).")
  10. 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.")
  11. 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.")
  12. Container_Boundary(physics_kernels, "Noyaux Physiques (Computing Kernels)") {
  13. Container(mod_ns, "Navier-Stokes Solver", "navier_stokes.jl", "Résout l'équation de mouvement (Momentum) et la conservation de la masse.")
  14. Container(mod_elec, "Electrolysis Module", "electrolysis.jl", "Résout le Potentiel Électrique, la Loi d'Ohm et la cinétique Butler-Volmer.")
  15. Container(mod_trans, "Transport & Phase", "transport.jl / levelset", "Gère le transport des espèces et l'interface (LevelSet/VOF).")
  16. }
  17. Container(lin_solver, "Linear Algebra Wrapper", "poisson.jl / operators.jl", "Assemble les matrices A et les vecteurs b. Appelle les solveurs creux (SparseArrays / IterativeSolvers).")
  18. Container(io_interface, "I/O Interface", "PDI / HDF5 / Viz", "Exporte les données pour la visualisation (Paraview) et le checkpointing via la librairie PDI.")
  19. }
  20. System_Ext(libpdi, "Librairie PDI", "C/C++ Library", "Gestionnaire d'événements et d'E/S haute performance.")
  21. ' Relations
  22. Rel(user, driver, "Lance la simulation", "CLI")
  23. Rel(driver, config, "Lit", "YAML")
  24. Rel(driver, data_struct, "Alloue & Initialise", "Struct Numerical & Mesh")
  25. Rel(driver, orchestrator, "Démarre", "run_forward!")
  26. Rel(orchestrator, mod_ns, "Appelle (Time step)", "run_navier_stokes!")
  27. Rel(orchestrator, mod_elec, "Appelle (Time step)", "solve_poisson_loop!")
  28. Rel(orchestrator, mod_trans, "Appelle (Advection)", "transport!")
  29. Rel(orchestrator, io_interface, "Notifie", "Events PDI")
  30. Rel_D(mod_ns, data_struct, "Lit/Écrit", "u, v, p")
  31. Rel_D(mod_elec, data_struct, "Lit/Écrit", "phi, sigma")
  32. Rel_D(mod_trans, data_struct, "Lit/Écrit", "LevelSet")
  33. Rel(mod_elec, lin_solver, "Résout Ax=b", "Laplacien Potentiel")
  34. Rel(mod_ns, lin_solver, "Résout Ax=b", "Projection Pression")
  35. Rel(io_interface, libpdi, "Calls", "C API")
  36. Rel_U(io_interface, data_struct, "Lit (Pointeurs)", "Champs bruts")
  37. @enduml