Added the roadmap
This commit is contained in:
1 parent
8d4aed4e84
commit
e3788bf607
39 files changed
+3888
No files matched your search
@@ -0,0 +1,237 @@
|
||||
# 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.
|
||||
Reference in new issue
Block a user