# 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.