add-solver
Add a new solver to the project
安装与使用
请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。
查看来源 ↗使用指南技能说明
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
使用示例
查看来源仓库中的使用示例与配置说明。
查看来源 ↗来源历史
- 收录时间
- 2026-03-11
- 索引更新时间
- 2026-03-11
- Branch
- main
收录与同步日期属于本站记录。源码修改历史请查看来源仓库。
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!