Files
differential-equations/roadmap/FEATURE_TEMPLATES.md
Connor Johnstone e3788bf607 Added the roadmap
2025-10-23 16:47:48 -04:00

238 lines
8.5 KiB
Markdown

# Feature File Templates
This document contains brief summaries for features 6-38. Detailed feature files should be created when you're ready to implement each one, using the detailed examples in features 01-05 and 12 as templates.
## How to Use This Document
When ready to implement a feature:
1. Copy the template structure from features/01-bs3-method.md or similar
2. Fill in the details from the summary below
3. Add implementation-specific details
4. Create comprehensive testing requirements
---
## Feature 06: CallbackSet
**Description**: Compose multiple callbacks with ordering
**Dependencies**: Discrete callbacks
**Effort**: Small
**Key Points**: Builder pattern, execution priority, enable/disable
## Feature 07: Saveat Functionality
**Description**: Save solution at specific timepoints
**Dependencies**: None
**Effort**: Medium
**Key Points**: Interpolation to exact times, dense vs sparse saving, memory efficiency
## Feature 08: Solution Derivatives
**Description**: Access derivatives at any time via interpolation
**Dependencies**: None
**Effort**: Small
**Key Points**: `solution.derivative(t)` interface, use dense output or finite differences
## Feature 09: DP8 Method
**Description**: Dormand-Prince 8th order method
**Dependencies**: None
**Effort**: Medium
**Key Points**: 13 stages, very high accuracy, tableau from literature
## Feature 10: FBDF Method
**Description**: Fixed-leading-coefficient BDF multistep method
**Dependencies**: Linear solver, Nordsieck representation
**Effort**: Large
**Key Points**: Variable order (1-5), excellent for very stiff problems, complex state management
## Feature 11: Rodas4/Rodas5P
**Description**: Higher-order Rosenbrock methods
**Dependencies**: Rosenbrock23
**Effort**: Medium
**Key Points**: 4th/5th order accuracy, more stages, better for higher accuracy stiff problems
## Feature 13: Default Algorithm Selection
**Description**: Smart defaults based on problem characteristics
**Dependencies**: Auto-switching, multiple algorithms
**Effort**: Medium
**Key Points**: Analyze tolerance, problem size, choose algorithms automatically
## Feature 14: Automatic Initial Stepsize
**Description**: Algorithm to compute good initial dt
**Dependencies**: None
**Effort**: Medium
**Key Points**: Based on Hairer & Wanner algorithm, uses local Lipschitz estimate
## Feature 15: PresetTimeCallback
**Description**: Callbacks at predetermined times
**Dependencies**: Discrete callbacks
**Effort**: Small
**Key Points**: Efficient time-based events, integration with tstops
## Feature 16: TerminateSteadyState
**Description**: Auto-detect when solution reaches steady state
**Dependencies**: Discrete callbacks
**Effort**: Small
**Key Points**: Monitor du/dt, terminate when small enough
## Feature 17: SavingCallback
**Description**: Custom saving logic beyond default
**Dependencies**: CallbackSet
**Effort**: Small
**Key Points**: User-defined save conditions, memory-efficient for large problems
## Feature 18: Linear Solver Infrastructure
**Description**: Generic linear solver interface and dense LU
**Dependencies**: None
**Effort**: Large
**Key Points**:
- Trait-based design for flexibility
- Dense LU factorization with partial pivoting
- Solve Ax = b efficiently
- Foundation for all implicit methods
- Consider using nalgebra's built-in LU or implement custom
## Feature 19: Jacobian Computation
**Description**: Finite difference and auto-diff Jacobians
**Dependencies**: None
**Effort**: Large
**Key Points**:
- Forward finite differences: (f(y+εe_j) - f(y))/ε
- Epsilon selection: √eps * max(|y_j|, 1)
- Sparse Jacobian support (future)
- Integration with AD crates (future)
## Feature 20: Low-Storage Runge-Kutta
**Description**: 2N/3N/4N storage variants for large systems
**Dependencies**: None
**Effort**: Medium
**Key Points**: Specialized RK methods that reuse storage, critical for PDEs via method-of-lines
## Feature 21: SSP Methods
**Description**: Strong Stability Preserving RK methods
**Dependencies**: None
**Effort**: Medium
**Key Points**: SSPRK22, SSPRK33, SSPRK43, SSPRK53, preserve TVD/monotonicity, for hyperbolic PDEs
## Feature 22: Symplectic Integrators
**Description**: Verlet, Leapfrog, KahanLi for Hamiltonian systems
**Dependencies**: None (second-order ODE support already exists)
**Effort**: Medium
**Key Points**: Preserve energy/symplectic structure, special for p,q formulation
## Feature 23: Verner Methods Suite
**Description**: Complete Verner family (Vern6, Vern8, Vern9)
**Dependencies**: Vern7
**Effort**: Medium
**Key Points**: Different orders for different accuracy needs, all highly efficient
## Feature 24: SDIRK Methods
**Description**: Singly Diagonally Implicit RK (KenCarp3/4/5)
**Dependencies**: Linear solver, nonlinear solver
**Effort**: Large
**Key Points**: IMEX methods, good for semi-stiff problems, L-stable
## Feature 25: Exponential Integrators
**Description**: Exp4, EPIRK4, EXPRB53 for semi-linear stiff
**Dependencies**: Matrix exponential computation
**Effort**: Large
**Key Points**: For du/dt = Lu + N(u), where L is linear stiff part
## Feature 26: Extrapolation Methods
**Description**: Richardson extrapolation with adaptive order
**Dependencies**: Linear solver
**Effort**: Large
**Key Points**: High accuracy from low-order methods, variable order selection
## Feature 27: Stabilized Methods
**Description**: ROCK2, ROCK4, RKC for mildly stiff
**Dependencies**: None
**Effort**: Medium
**Key Points**: Extended stability regions, good for PDEs with explicit time-stepping
## Feature 28: I Controller
**Description**: Basic integral controller
**Dependencies**: None
**Effort**: Small
**Key Points**: Simplest adaptive controller, mainly for comparison/testing
## Feature 29: Predictive Controller
**Description**: Advanced predictive step size control
**Dependencies**: None
**Effort**: Medium
**Key Points**: Predicts future error, more sophisticated than PID
## Feature 30: VectorContinuousCallback
**Description**: Multiple simultaneous event detection
**Dependencies**: CallbackSet
**Effort**: Medium
**Key Points**: More efficient than separate callbacks, shared root-finding
## Feature 31: PositiveDomain
**Description**: Enforce positivity constraints
**Dependencies**: CallbackSet
**Effort**: Small
**Key Points**: Ensures solution stays positive, important for physical systems
## Feature 32: ManifoldProjection
**Description**: Project solution onto constraint manifolds
**Dependencies**: CallbackSet
**Effort**: Medium
**Key Points**: For constrained mechanical systems, projection step after integration
## Feature 33: Nonlinear Solver Infrastructure
**Description**: Newton and quasi-Newton methods
**Dependencies**: Linear solver
**Effort**: Large
**Key Points**:
- Newton's method for implicit stages
- Line search
- Convergence criteria
- Foundation for SDIRK, FIRK methods
## Feature 34: Krylov Linear Solvers
**Description**: GMRES, BiCGStab for large sparse systems
**Dependencies**: Linear solver infrastructure
**Effort**: Large
**Key Points**: Iterative solvers for when LU factorization too expensive
## Feature 35: Preconditioners
**Description**: ILU, Jacobi, custom preconditioners
**Dependencies**: Krylov solvers
**Effort**: Large
**Key Points**: Accelerate Krylov methods, essential for large sparse systems
## Feature 36: FSAL Optimization
**Description**: First-Same-As-Last function evaluation reuse
**Dependencies**: None
**Effort**: Small
**Key Points**: Reduce function evaluations by ~14% for FSAL methods (DP5, Tsit5, etc.)
## Feature 37: Custom Norms
**Description**: User-definable error norms
**Dependencies**: None
**Effort**: Small
**Key Points**: L2, Linf, weighted norms, custom user functions
## Feature 38: Step/Stage Limiting
**Description**: Limit state values during integration
**Dependencies**: None
**Effort**: Small
**Key Points**: Enforce bounds on solution, prevent non-physical values
---
## Creating Detailed Feature Files
When you're ready to work on a feature, create a detailed file following this structure:
1. **Overview**: What is it, key characteristics
2. **Why This Feature Matters**: Motivation, use cases
3. **Dependencies**: What must be built first
4. **Implementation Approach**: Algorithm details, design decisions
5. **Implementation Tasks**: Detailed checklist with subtasks
6. **Testing Requirements**: Specific tests with expected results
7. **References**: Papers, Julia code, textbooks
8. **Complexity Estimate**: Effort and risk assessment
9. **Success Criteria**: How to know it's done right
10. **Future Enhancements**: What could be added later
See `features/01-bs3-method.md`, `features/02-vern7-method.md`, `features/03-rosenbrock23.md`, etc. for complete examples.