搜索

PythonReactSEOPDF
GitHub Skill

add-solver

Add a new solver to the project

k-yoshimi☆ 0 仓库 Stars1 仓库 Forks

安装与使用

请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。

查看来源 ↗使用指南

技能说明

Add Solver

Add a new numerical solver to the project.

Steps

  1. Ask the user for the solver type/method (e.g., explicit FDM, MOL, FEM, etc.)
  2. Read solvers/base.py to review the SolverBase interface
  3. Create an appropriate subdirectory (e.g., solvers/fem/)
  4. Implement the new solver inheriting from SolverBase:
    • Set the name class 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)
  5. Add tests in tests/test_solvers.py:
    • Basic operation test (temperature decreases via diffusion)
    • Boundary condition test
    • Nonlinear (alpha>0) test
  6. Register the solver in app/run_benchmark.py SOLVERS list
  7. 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
  8. Verify all tests pass with python -m pytest tests/ -v
  9. Run quick benchmark: python -m app.run_benchmark --alpha 0.5
  10. 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)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!