Introduce a prototype for solving the reservoir and well degrees of freedom
as a single coupled linear system. This complements the existing approach of
handling wells separately through Schur complement elimination.
Key design choices:
- The linear solve operates on the full coupled system (reservoir + well DOFs)
to simplify the solver architecture and reduce special-case well handling
- The underlying solver uses standard sparse matrices with no well-aware
operators, improving modularity and reducing code complexity
- The included preconditioner is configurable to reproduce standard CPR behavior,
providing a baseline for validation before further performance tuning
- An approximate well-block solve is supported for potential performance gains
Important changes:
- Add linear solver implementation with coupled system support
- Configure preconditioner to match existing CPR behavior for correctness
- Remove need for separate well-block elimination in the linear solve path
- Update solver selection to allow --linear-solver=system_cpr option
This implementation serves as a prototype to validate the coupled system
approach before further optimization and benchmarking.