solvers package#
Submodules#
PyHydroGeophysX.solvers.linear_solvers module#
Linear solvers for geophysical inversion.
- class PyHydroGeophysX.solvers.linear_solvers.CGLSSolver(max_iterations=200, tolerance=1e-08, use_gpu=False, parallel=False, n_jobs=-1, damping=0.0, verbose=False)[source]#
Bases:
LinearSolverCGLS (Conjugate Gradient Least Squares) solver.
- class PyHydroGeophysX.solvers.linear_solvers.IterativeRefinement(max_iterations=5, tolerance=1e-10, use_double_precision=True)[source]#
Bases:
objectIterative refinement to improve accuracy of a solution to a linear system.
- class PyHydroGeophysX.solvers.linear_solvers.LSQRSolver(max_iterations=200, tolerance=1e-08, use_gpu=False, parallel=False, n_jobs=-1, damping=0.0, verbose=False)[source]#
Bases:
LinearSolverLSQR solver for least squares problems.
- class PyHydroGeophysX.solvers.linear_solvers.LinearSolver(method='cgls', max_iterations=200, tolerance=1e-08, use_gpu=False, parallel=False, n_jobs=-1, damping=0.0, verbose=False)[source]#
Bases:
objectBase class for linear system solvers.
- class PyHydroGeophysX.solvers.linear_solvers.RRLSQRSolver(max_iterations=200, tolerance=1e-08, use_gpu=False, parallel=False, n_jobs=-1, damping=0.1, verbose=False)[source]#
Bases:
LinearSolverRegularized LSQR solver.
- class PyHydroGeophysX.solvers.linear_solvers.RRLSSolver(max_iterations=200, tolerance=1e-08, use_gpu=False, parallel=False, n_jobs=-1, damping=0.0, verbose=False)[source]#
Bases:
LinearSolverRange-Restricted Least Squares solver.
- class PyHydroGeophysX.solvers.linear_solvers.TikhonvRegularization(regularization_matrix=None, alpha=1.0, regularization_type='identity')[source]#
Bases:
objectTikhonov regularization for ill-posed problems.
- PyHydroGeophysX.solvers.linear_solvers.direct_solver(A: Any, b: Any, method: Any = 'lu', **kwargs: Any) Any[source]#
Solve a linear system using direct methods.
- Parameters:
A – System matrix
b – Right-hand side vector
method – Direct solver method (‘lu’, ‘qr’, ‘svd’, ‘cholesky’)
**kwargs – Additional parameters for specific methods
- Returns:
Solution vector
- PyHydroGeophysX.solvers.linear_solvers.generalized_solver(A: Any, b: Any, method: Any = 'cgls', x: Any = None, maxiter: Any = 200, tol: Any = 1e-08, verbose: Any = False, damp: Any = 0.0, use_gpu: Any = False, parallel: Any = False, n_jobs: Any = -1) Any[source]#
Generalized solver for Ax = b with optional GPU acceleration and parallelism.
Parameters:#
- Aarray_like or sparse matrix
The system matrix (Jacobian or forward operator).
- barray_like
Right-hand side vector.
- methodstr, optional
Solver method. Default is ‘cgls’. Iterative: ‘lsqr’, ‘rrlsqr’, ‘cgls’, ‘rrls’ SciPy: ‘scipy_lsqr’, ‘scipy_lsmr’, ‘precond_lsmr’
- xarray_like, optional
Initial guess for the solution. If None, zeros are used.
- maxiterint, optional
Maximum number of iterations.
- tolfloat, optional
Convergence tolerance.
- verbosebool, optional
Print progress information every 10 iterations.
- dampfloat, optional
Damping factor (Tikhonov regularization).
- use_gpubool, optional
Use GPU acceleration with CuPy (if available).
- parallelbool, optional
Use parallel CPU computations.
- n_jobsint, optional
Number of parallel jobs (if parallel is True).
Returns:#
- xarray_like
The computed solution vector.
- PyHydroGeophysX.solvers.linear_solvers.get_optimal_solver(A: Any, b: Any, estimate_condition: Any = True, time_limit: Any = None, memory_limit: Any = None) Any[source]#
Automatically select the optimal solver for a given linear system.
- Parameters:
A – System matrix
b – Right-hand side vector
estimate_condition – Whether to estimate condition number
time_limit – Maximum allowed solution time (seconds)
memory_limit – Maximum allowed memory usage (bytes)
- Returns:
Tuple of (solver_object, solver_info)
PyHydroGeophysX.solvers.solver module#
Legacy generalized solver implementations for time-lapse inversion workflows.
- PyHydroGeophysX.solvers.solver.generalized_solver(A: Any, b: Any, method: Any = 'cgls', x: Any = None, maxiter: Any = 2000, tol: Any = 1e-08, verbose: Any = False, damp: Any = 0.0, use_gpu: Any = False, parallel: Any = False, n_jobs: Any = -1) Any[source]#
Generalized solver for Ax = b with optional GPU acceleration and parallelism.
- Parameters:
A (array_like or sparse matrix) – The system matrix (Jacobian or forward operator).
b (array_like) – Right-hand side vector.
method (str, optional) – Solver method: ‘lsqr’, ‘rrlsqr’, ‘cgls’, or ‘rrls’. Default is ‘cgls’.
x (array_like, optional) – Initial guess for the solution. If None, zeros are used.
maxiter (int, optional) – Maximum number of iterations.
tol (float, optional) – Convergence tolerance.
verbose (bool, optional) – Print progress information every 10 iterations.
damp (float, optional) – Damping factor (Tikhonov regularization).
use_gpu (bool, optional) – Use GPU acceleration with CuPy (if available).
parallel (bool, optional) – Use parallel CPU computations.
n_jobs (int, optional) – Number of parallel jobs (if parallel is True).
- Returns:
x – The computed solution vector.
- Return type:
array_like
Module contents#
Solver exports for inversion and regularized linear-system utilities.
- class PyHydroGeophysX.solvers.CGLSSolver(max_iterations=200, tolerance=1e-08, use_gpu=False, parallel=False, n_jobs=-1, damping=0.0, verbose=False)[source]#
Bases:
LinearSolverCGLS (Conjugate Gradient Least Squares) solver.
- class PyHydroGeophysX.solvers.IterativeRefinement(max_iterations=5, tolerance=1e-10, use_double_precision=True)[source]#
Bases:
objectIterative refinement to improve accuracy of a solution to a linear system.
- class PyHydroGeophysX.solvers.LSQRSolver(max_iterations=200, tolerance=1e-08, use_gpu=False, parallel=False, n_jobs=-1, damping=0.0, verbose=False)[source]#
Bases:
LinearSolverLSQR solver for least squares problems.
- class PyHydroGeophysX.solvers.LinearSolver(method='cgls', max_iterations=200, tolerance=1e-08, use_gpu=False, parallel=False, n_jobs=-1, damping=0.0, verbose=False)[source]#
Bases:
objectBase class for linear system solvers.
- class PyHydroGeophysX.solvers.RRLSQRSolver(max_iterations=200, tolerance=1e-08, use_gpu=False, parallel=False, n_jobs=-1, damping=0.1, verbose=False)[source]#
Bases:
LinearSolverRegularized LSQR solver.
- class PyHydroGeophysX.solvers.RRLSSolver(max_iterations=200, tolerance=1e-08, use_gpu=False, parallel=False, n_jobs=-1, damping=0.0, verbose=False)[source]#
Bases:
LinearSolverRange-Restricted Least Squares solver.
- class PyHydroGeophysX.solvers.TikhonvRegularization(regularization_matrix=None, alpha=1.0, regularization_type='identity')[source]#
Bases:
objectTikhonov regularization for ill-posed problems.
- PyHydroGeophysX.solvers.direct_solver(A: Any, b: Any, method: Any = 'lu', **kwargs: Any) Any[source]#
Solve a linear system using direct methods.
- Parameters:
A – System matrix
b – Right-hand side vector
method – Direct solver method (‘lu’, ‘qr’, ‘svd’, ‘cholesky’)
**kwargs – Additional parameters for specific methods
- Returns:
Solution vector
- PyHydroGeophysX.solvers.generalized_solver(A: Any, b: Any, method: Any = 'cgls', x: Any = None, maxiter: Any = 2000, tol: Any = 1e-08, verbose: Any = False, damp: Any = 0.0, use_gpu: Any = False, parallel: Any = False, n_jobs: Any = -1) Any[source]#
Generalized solver for Ax = b with optional GPU acceleration and parallelism.
- Parameters:
A (array_like or sparse matrix) – The system matrix (Jacobian or forward operator).
b (array_like) – Right-hand side vector.
method (str, optional) – Solver method: ‘lsqr’, ‘rrlsqr’, ‘cgls’, or ‘rrls’. Default is ‘cgls’.
x (array_like, optional) – Initial guess for the solution. If None, zeros are used.
maxiter (int, optional) – Maximum number of iterations.
tol (float, optional) – Convergence tolerance.
verbose (bool, optional) – Print progress information every 10 iterations.
damp (float, optional) – Damping factor (Tikhonov regularization).
use_gpu (bool, optional) – Use GPU acceleration with CuPy (if available).
parallel (bool, optional) – Use parallel CPU computations.
n_jobs (int, optional) – Number of parallel jobs (if parallel is True).
- Returns:
x – The computed solution vector.
- Return type:
array_like
- PyHydroGeophysX.solvers.get_optimal_solver(A: Any, b: Any, estimate_condition: Any = True, time_limit: Any = None, memory_limit: Any = None) Any[source]#
Automatically select the optimal solver for a given linear system.
- Parameters:
A – System matrix
b – Right-hand side vector
estimate_condition – Whether to estimate condition number
time_limit – Maximum allowed solution time (seconds)
memory_limit – Maximum allowed memory usage (bytes)
- Returns:
Tuple of (solver_object, solver_info)