Class NewtonSolver¶

Class Documentation¶

class amici::NewtonSolver

The class sets up the linear solver for the Newton method.

Public Functions

NewtonSolver(realtype *t, AmiVector *x, Model *model)

Initializes all members with the provided objects.

Parameters
• t: pointer to time variable

• x: pointer to state variables

• model: pointer to the model object

void getStep(int ntry, int nnewt, AmiVector &delta)

Computes the solution of one Newton iteration.

Parameters
• ntry: integer newton_try integer start number of Newton solver (1 or 2)

• nnewt: integer number of current Newton step

• delta: containing the RHS of the linear system, will be overwritten by solution to the linear system

void computeNewtonSensis(AmiVectorArray &sx)

Parameters
• sx: pointer to state variable sensitivities

const std::vector<int> &getNumLinSteps() const

Accessor for numlinsteps.

Return

numlinsteps

void prepareLinearSystem(int ntry, int nnewt) = 0

Writes the Jacobian for the Newton iteration and passes it to the linear solver.

Parameters
• ntry: integer newton_try integer start number of Newton solver (1 or 2)

• nnewt: integer number of current Newton step

void prepareLinearSystemB(int ntry, int nnewt) = 0

Writes the Jacobian (JB) for the Newton iteration and passes it to the linear solver

Parameters
• ntry: integer newton_try integer start number of Newton solver (1 or 2)

• nnewt: integer number of current Newton step

void solveLinearSystem(AmiVector &rhs) = 0

Solves the linear system for the Newton step.

Parameters
• rhs: containing the RHS of the linear system, will be overwritten by solution to the linear system

~NewtonSolver() = default

Public Members

int max_lin_steps_ = {0}

maximum number of allowed linear steps per Newton step for steady state computation

int max_steps = {0}

maximum number of allowed Newton steps for steady state computation

realtype atol_ = {1e-16}

absolute tolerance

realtype rtol_ = {1e-8}

relative tolerance

NewtonDampingFactorMode damping_factor_mode_ = {NewtonDampingFactorMode::on}

damping factor flag

realtype damping_factor_lower_bound = {1e-8}

damping factor lower bound

Public Static Functions

std::unique_ptr<NewtonSolver> getSolver(realtype *t, AmiVector *x, Solver &simulationSolver, Model *model)

Factory method to create a based on linsolType.

Return

solver according to the specified linsolType

Parameters
• t: pointer to time variable

• x: pointer to state variables

• simulationSolver: solver with settings

• model: pointer to the model object

Protected Attributes

realtype *t_

time variable

Model *model_

pointer to the model object

AmiVector xdot_

right hand side

AmiVector *x_

current state

AmiVector dx_

current state time derivative (DAE)

std::vector<int> num_lin_steps_

history of number of linear steps

AmiVector xB_

AmiVector dxB_