NMPDE project delivery - #80
Open
theAndredroid wants to merge 32 commits into
Open
Conversation
…the membrane tension and the auxilialies variables
… the auxiliar variables. they have to be impplementend yet. Just an examble for the fast inward current was done
- Create polymorphic `SolverAdapter` and `PreconditionAdapter` hierarchies to support runtime selection of solver (CG, GMRES, Direct) and preconditioner types (Jacobi, ILU, SSOR). - Refactor option parsing in `Args` using std::function lambdas to support extensible CLI arguments, including `--solver` and solver-specific parameters. - Implement stream operators (`operator<<`) for solvers, preconditioners, and args configuration, including printing the number of MPI processes. - Restrict arguments printout to MPI rank 0 in `exercise-01.cpp`. - Clean up workspace by removing `TODO.txt`.
…alization suite - Add comprehensive PBS job submission scripts for simulation sweeps: - convergence_sweep.sh: spatial mesh size (h) and time step (dt) sweeps - model_sweep.sh: cellular action potential model parameter sweeps - cpu_sweep.sh: MPI strong scalability benchmarks (1 to 28 cores) - solver_sweep.sh: linear solver and preconditioner performance comparison - euler_comparison.sh: time discretization scheme comparison - Add Python/ParaView automated 3D and 2D visualization tools: - plot_convergence_3d.py: 3D activation time surface and scatter plots with inverted X-axis, Z-gradient color mapping, and node labels - plot_model_activation.py: ParaView clip plane rendering with corner camera orientation and unified global color scale across models - plot_scaling.py, plot_performance.py: scaling and solver benchmark plotting - Fix C++ activation time VTU/PVTU output path handling in Current.cpp using std::filesystem - Fix system return check and suppress unused parameter compiler warnings in args.cpp - Update model definitions in models/models.csv
…sage - Rename auxiliary variables from v, w, s to w1, w2, w3. - Rename voltage variables from u to v (v_o, v_u) and adjust threshold/time constants (theta_w1, theta_w2, tau_w1_1_m, tau_w1_2_m). - Set the physical/membrane variable as static constants (beta_mm, Cm, and intracellular/extracellular conductivities). - Update system solvers, boundary conditions, initial values, and output mapping in Current class to use new naming conventions. - Rename activation_time() to check_activation_time() and adjust corresponding variables. - Align help message in args.cpp and add solver/preconditioner parameters (-p, --max_iter, --tol, --reduce, --ilu_fill, --ssor_omega).
- Rename temporary variables v_owned_old, w_owned_old, s_owned_old to w1_old, w2_old, w3_old inside Current::integrate_auxiliar_variables(). - Localize time constant variables (tau_w2_m, tau_w3) for updating w2 and w3. - Use the correct renamed w1_old/w2_old/w3_old states in the ODE integration formulas.
- Add scripts/run.sh to request a dedicated PBS interactive node, build the dealii_paraview.sif container, compile the project, and trigger sweep scripts (with a --init flag to skip sweeps). - Update convergence, CPU, model, and solver sweep scripts to execute simulations and plot scripts inside the new dealii_paraview.sif container. - Collect PBS job IDs in sweep scripts to schedule plotting tasks automatically using dependent jobs (qsub -W depend=afterany).
- Add dealii_paraview.def to build an Apptainer image containing dealii, ParaView, pvpython, and Python plotting dependencies. - Update defaults.cmake to set the default solver to cg, the default preconditioner to ilu, and default ILU fill-in to 0.
…pelines - Correct configuration repetition loop syntax in cpu_sweep.sh and solver_sweep.sh. - Add mean and standard deviation computation to performance and scaling plotting scripts to support repeated configuration runs. - Migrate all sweep scripts to target the updated dealii_paraview.sif container. - Update run.sh to compile projects inside the container and skip container builds if dealii_paraview.sif is already present. - Modify plot_convergence_3d.py to use pure vtkmodules XML readers, bypassing host-side ParaView/OpenXR import failures. - Implement plot_euler_comparison.py to plot 1D activation profiles along the (0,0,0) -> (20,7,3) line for discretization methods, including a zoomed view with lines only. - Refactor plot_model_activation.py to natively render square screenshots, extract a standalone colorbar legend and generate 1D line profiles for all models. - Integrate automated post-run plotting job dependencies using PBS job chaining in euler_comparison.sh.
…ation visualization scripts - Update plot_euler_comparison.py to generate a combined plot with a zoomed inset at the bottom-right corner for the last segment (x >= 20.5 mm). - Update plot_model_activation.py to generate a standalone zoomed plot (x < 1.0 mm) and a combined plot with an inset at the bottom-right corner zooming on the initial propagation segment (x < 1.0 mm).
- Update plot_scaling.py to display only the numeric core counts (e.g. 1, 2, 4, 8, 16, 32, 58) on the x-axis ticks and change the x-axis label to "Number of cores in use". - Create README.md detailing the local CMake compilation commands, Apptainer execution pattern, dealii_paraview.sif container toolset, MOX department cluster environment, and LLM-assisted sweep scripts. - Document in the README that the main.tex LaTeX report contains the mathematical discussion as well as the experimental results and plots generated by the scripts. - Document that run.sh with --init builds both the container image and compiles the exercise-01 binary while skipping the sweeps.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is the git repository of our project that we present tomorrow