mirror of
https://github.com/OPM/opm-simulators.git
synced 2026-10-31 17:47:45 -05:00
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.
41 lines
1.1 KiB
JSON
41 lines
1.1 KiB
JSON
{
|
|
"maxiter": "20",
|
|
"tol": "0.005",
|
|
"verbosity": "0",
|
|
"solver": "bicgstab",
|
|
"preconditioner": {
|
|
"type": "system_cpr",
|
|
"reservoir_smoother": {
|
|
"maxiter": "1",
|
|
"tol": "0.005",
|
|
"verbosity": "0",
|
|
"solver": "preconditioner2inverseoperator",
|
|
"preconditioner": {
|
|
"type": "paroverilu0",
|
|
"relaxation": "1"
|
|
}
|
|
},
|
|
"reservoir_solver": {
|
|
"maxiter": "1",
|
|
"tol": "0.005",
|
|
"verbosity": "0",
|
|
"solver": "preconditioner2inverseoperator",
|
|
"preconditioner": {
|
|
"type": "cpr",
|
|
"relaxation": "1",
|
|
"use_well_weights": "false",
|
|
"add_wells": "false",
|
|
"weight_type": "trueimpes",
|
|
"pre_smooth": "0",
|
|
"post_smooth": "0"
|
|
}
|
|
},
|
|
"well_solver": {
|
|
"maxiter": "1",
|
|
"tol": "0.005",
|
|
"verbosity": "0",
|
|
"solver": "umfpack"
|
|
}
|
|
}
|
|
}
|