# petsc_ksp.py#

LinearSolver that uses PetSC KSP to solve for a system’s derivatives.

classopenmdao.solvers.linear.petsc_ksp.Monitor(solver)[source]Bases:

`object`

Prints output from PETSc’s KSP solvers.

Callable object given to KSP as a callback for printing the residual.

- Parameters:

solverobjectThe openmdao solver.

- Attributes:

_solver_solverThe openmdao solver.

_normfloatThe current norm.

_norm0floatThe norm for the first iteration.

- __init__(
solver)[source]Store pointer to the openmdao solver and initialize norms.

classopenmdao.solvers.linear.petsc_ksp.PETScKrylov(**kwargs)[source]Bases:

`LinearSolver`

LinearSolver that uses PetSC KSP to solve for a system’s derivatives.

- Parameters:

**kwargsdictDictionary of options set by the instantiating class/script.

- Attributes:

preconSolverPreconditioner for linear solve. Default is None for no preconditioner.

_kspdistDictionary of KSP instances (keyed on vector name).

_lin_rhs_checkerLinearRHSChecker or NoneObject for checking the right-hand side of the linear solve.

- SOLVER
= 'LN: PETScKrylov'

- __init__(
**kwargs)[source]Declare the solver options.

- add_recorder(
recorder)Add a recorder to the solver’s RecordingManager.

- Parameters:

recorder<CaseRecorder>A recorder instance to be added to RecManager.

- apply(
mat,in_vec,result)[source]Apply preconditioner.

- Parameters:

matPETSc.MatPETSc matrix object.

in_vecPETSc.VectorIncoming vector.

resultPETSc.VectorEmpty vector in which the preconditioned in_vec is stored.

- cleanup()
Clean up resources prior to exit.

- does_recursive_applies()
Return False.

By default, assume linear solvers don’t do recursive apply_linear calls.

- Returns:

- bool
True if solver makes recursive apply_linear calls on its subsystems.

- get_reports_dir()
Get the path to the directory where the report files should go.

If it doesn’t exist, it will be created.

- Returns:

- str
The path to the directory where reports should be written.

propertymsginfoReturn info to prepend to messages.

- Returns:

- str
Info to prepend to messages.

- mult(
mat,in_vec,result)[source]Apply Jacobian matrix (KSP Callback).

The following attributes must be defined when solve is called to provide information used in this callback:

- _systemSystem
pointer to the owning system.

- _vec_namestr
the right-hand-side (RHS) vector name.

- _modestr
‘fwd’ or ‘rev’.

- Parameters:

matPETSc.MatPETSc matrix object.

in_vecPetSC VectorIncoming vector.

resultPetSC VectorEmpty array into which we place the matrix-vector product.

- record_iteration(
**kwargs)Record an iteration of the current Solver.

- Parameters:

**kwargsdictKeyword arguments (used for abs and rel error).

- report_failure(
msg)Report a failure that has occurred.

The msg may be printed or ignored depending on the iprint option, and may raise an AnalysisError depending on the err_on_non_converge option.

- Parameters:

msgstrMessage indicating the failure.

- solve(
mode,rel_systems=None)[source]Solve the linear system for the problem in self._system().

The full solution vector is returned.

- Parameters:

modestrDerivative mode, can be ‘fwd’ or ‘rev’.

rel_systemsset of strNames of systems relevant to the current solve. Deprecated.

- use_relevance()[source]
Return True if relevance should be active.

- Returns:

- bool
True if relevance should be active.