add-solver
Add a new solver to the project
Installation
Suivez les instructions du dépôt pour votre agent. Consultez les fichiers et dépendances avant l’installation.
Voir la source ↗GuidesInstructions
Add Solver
Add a new numerical solver to the project.
Steps
- Ask the user for the solver type/method (e.g., explicit FDM, MOL, FEM, etc.)
- Read
solvers/base.pyto review theSolverBaseinterface - Create an appropriate subdirectory (e.g.,
solvers/fem/) - Implement the new solver inheriting from
SolverBase:- Set the
nameclass attribute - Implement
solve(T0, r, dt, t_end, alpha) -> T_history - Handle r=0 singularity via L'Hopital's rule
- Apply Neumann BC (r=0) and Dirichlet BC (r=1)
- Use scipy.linalg.solve_banded for tridiagonal systems (performance)
- Set the
- Add tests in
tests/test_solvers.py:- Basic operation test (temperature decreases via diffusion)
- Boundary condition test
- Nonlinear (alpha>0) test
- Register the solver in
app/run_benchmark.pySOLVERS list - Add stability constraints in
policy/stability.py:- Determine if unconditionally stable or has CFL condition
- Set temporal_order, spatial_order
- Set alpha_max if there are nonlinearity limits
- Verify all tests pass with
python -m pytest tests/ -v - Run quick benchmark:
python -m app.run_benchmark --alpha 0.5 - Update HISTORY.md
Implementation Checklist
- Inherits from SolverBase
- name attribute set (lowercase, underscore-separated)
- solve() returns shape (nt+1, nr)
- r=0 singularity handled (L'Hopital)
- BC: T'(0)=0, T(1)=0
- Nonlinear chi computed correctly
- Registered in SOLVERS list
- Stability info in policy/stability.py
- Tests pass
Exemples
Consultez les exemples du dépôt source.
Voir la source ↗Historique source
- Date d’indexation
- 2026-03-11
- Mise à jour de l’index
- 2026-03-11
- Branch
- main
Les dates concernent ce répertoire. Consultez le dépôt pour l’historique du code.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!