solver_base.py

Base class for linear and nonlinear solvers.

class openmdao.solvers.solver_base.LinearSolver[source]

Bases: openmdao.solvers.solver_base.SolverBase

Base class for all linear solvers. Inherit from this class to create a new custom linear solver.

Options:

options[‘iprint’] : int(0)

Set to 0 to disable printing, set to 1 to print the residual to stdout each iteration, set to 2 to print subiteration residuals as well.

add_recorder(recorder)[source]

Appends the given recorder to this solver’s list of recorders.

Args:

recorder: `BaseRecorder`

A recorder object.

solve(rhs, system, mode)[source]

Solves the linear system for the problem in self.system. The full solution vector is returned. This function must be defined when inheriting.

Args:

rhs : ndarray

Array containing the right-hand side for the linear solve. Also possibly a 2D array with multiple right-hand sides.

system : System

Parent System object.

mode : string

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

Returns:

ndarray : Solution vector

class openmdao.solvers.solver_base.NonLinearSolver[source]

Bases: openmdao.solvers.solver_base.SolverBase

Base class for all nonlinear solvers. Inherit from this class to create a new custom nonlinear solver.

Options:

options[‘iprint’] : int(0)

Set to 0 to disable printing, set to 1 to print the residual to stdout each iteration, set to 2 to print subiteration residuals as well.

add_recorder(recorder)[source]

Appends the given recorder to this solver’s list of recorders.

Args:

recorder: `BaseRecorder`

A recorder object.

solve(params, unknowns, resids, system, metadata=None)[source]

Drive all residuals in self.system and all subsystems to zero. This includes all implicit components. This function must be defined when inheriting.

Args:

params : VecWrapper

VecWrapper containing parameters. (p)

unknowns : VecWrapper

VecWrapper containing outputs and states. (u)

resids : VecWrapper

VecWrapper containing residuals. (r)

system : System

Parent System object.

metadata : dict, optional

Dictionary containing execution metadata (e.g. iteration coordinate).

class openmdao.solvers.solver_base.SolverBase[source]

Bases: object

Common base class for Linear and Nonlinear solver. Should not be used by users. Always inherit from LinearSolver or NonlinearSolver.

generate_docstring()[source]

Generates a numpy-style docstring for a user-created System class.

Returns:

docstring : str

string that contains a basic numpy docstring.

print_norm(solver_string, pathname, iteration, res, res0, msg=None, indent=0, solver='NL')[source]

Prints out the norm of the residual in a neat readable format.

Args:

solver_string: string

Unique string to identify your solver type (e.g., ‘LN_GS’ or ‘NEWTON’).

pathname: dict

Parent system pathname.

iteration: int

Current iteration number

res: float

Absolute residual value.

res0: float

Baseline initial residual for relative comparison.

msg: string, optional

Message that indicates convergence.

ident: int, optional

Additional indentation levels for subiterations.

solver: string, optional

Solver type if not LN or NL (mostly for line search operations.)

setup(sub)[source]

Solvers override to define post-setup initiailzation.

Args:

sub: `System`

System that owns this solver.