Loading [MathJax]/extensions/tex2jax.js
Cantera  3.2.0a1
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
EigenSparseJacobian Class Reference

System Jacobians that use Eigen sparse matrices for storage. More...

#include <EigenSparseJacobian.h>

Inheritance diagram for EigenSparseJacobian:
[legend]

Detailed Description

System Jacobians that use Eigen sparse matrices for storage.

Definition at line 16 of file EigenSparseJacobian.h.

Public Member Functions

void initialize (size_t networkSize) override
 Called during setup for any processes that need to be completed prior to setup functions used in sundials.
 
void reset () override
 Reset parameters as needed.
 
void setValue (size_t row, size_t col, double value) override
 Set a value at the specified row and column of the jacobian triplet vector.
 
void updatePreconditioner () override
 Transform Jacobian vector and write into preconditioner, P = (I - gamma * J)
 
void updateTransient (double rdt, int *mask) override
 Update the diagonal terms in the Jacobian by using the transient mask \( \alpha \).
 
Eigen::SparseMatrix< double > jacobian ()
 Return underlying Jacobian matrix.
 
Eigen::SparseMatrix< double > matrix ()
 Return the internal preconditioner matrix.
 
void printPreconditioner () override
 Print preconditioner contents.
 
void printJacobian ()
 Print jacobian contents.
 
- Public Member Functions inherited from SystemJacobian
virtual const string type () const =0
 Derived type, corresponding to names registered with SystemJacobianFactory.
 
virtual void setValue (size_t row, size_t col, double value)
 Set a value at the specified row and column of the jacobian triplet vector.
 
virtual void stateAdjustment (vector< double > &state)
 Adjust the state vector based on the preconditioner, e.g., Adaptive preconditioning uses a strictly positive composition when preconditioning which is handled by this function.
 
string preconditionerSide () const
 Get preconditioner application side for CVODES.
 
virtual void setPreconditionerSide (const string &preconSide)
 For iterative solvers, set the side where the preconditioner is applied.
 
virtual void updatePreconditioner ()
 Transform Jacobian vector and write into preconditioner, P = (I - gamma * J)
 
virtual void updateTransient (double rdt, int *mask)
 Update the diagonal terms in the Jacobian by using the transient mask \( \alpha \).
 
virtual void solve (const size_t stateSize, double *rhs_vector, double *output)
 Solve a linear system using the system matrix M
 
virtual void setup ()
 Perform preconditioner specific post-reactor setup operations such as factorize.
 
virtual void reset ()
 Reset parameters as needed.
 
virtual void initialize (size_t networkSize)
 Called during setup for any processes that need to be completed prior to setup functions used in sundials.
 
virtual void setBandwidth (size_t bw)
 Used to provide system bandwidth for implementations that use banded matrix storage.
 
virtual void printPreconditioner ()
 Print preconditioner contents.
 
virtual void setGamma (double gamma)
 Set gamma used in preconditioning.
 
virtual double gamma ()
 Get gamma used in preconditioning.
 
virtual void setAbsoluteTolerance (double atol)
 Set the absolute tolerance in the solver outside of the network initialization.
 
virtual int info () const
 Get latest status of linear solver.
 
double elapsedTime () const
 Elapsed CPU time spent computing the Jacobian elements.
 
void updateElapsed (double evalTime)
 Increase the elapsed time by the specified time.
 
int nEvals () const
 Number of Jacobian evaluations.
 
void incrementEvals ()
 Increment the number of times the Jacobian has been evaluated.
 
int age () const
 Number of times 'incrementAge' has been called since the last evaluation.
 
void incrementAge ()
 Increment the Jacobian age.
 
void setAge (int age)
 Set the Jacobian age.
 
void clearStats ()
 Clear collected stats about number of Jacobian evaluations, CPU time spent on Jacobian updates, and the number of Newton steps that have been taken since updating the Jacobian.
 

Protected Attributes

vector< Eigen::Triplet< double > > m_jac_trips
 Vector of triples representing the jacobian used in preconditioning.
 
Eigen::SparseMatrix< double > m_identity
 Storage of appropriately sized identity matrix for making the preconditioner.
 
Eigen::SparseMatrix< double > m_matrix
 Container that is the sparse preconditioner.
 
- Protected Attributes inherited from SystemJacobian
size_t m_dim
 Dimension of the system.
 
double m_gamma = 1.0
 gamma value used in M = I - gamma*J
 
bool m_init = false
 bool saying whether or not the system is initialized
 
double m_atol = 0
 Absolute tolerance of the ODE solver.
 
double m_elapsed = 0.0
 Elapsed CPU time taken to compute the Jacobian.
 
int m_nevals = 0
 Number of Jacobian evaluations.
 
int m_age = 100000
 Age of the Jacobian (times incrementAge() has been called)
 
string m_precon_side = "none"
 For iterative solvers, side of the system to apply the preconditioner on.
 

Additional Inherited Members

- Protected Member Functions inherited from SystemJacobian
virtual void factorize ()
 Factorize the system matrix.
 

Member Function Documentation

◆ initialize()

void initialize ( size_t  networkSize)
overridevirtual

Called during setup for any processes that need to be completed prior to setup functions used in sundials.

Parameters
networkSizethe number of variables in the associated reactor network

Reimplemented from SystemJacobian.

Definition at line 12 of file EigenSparseJacobian.cpp.

◆ reset()

void reset ( )
overridevirtual

Reset parameters as needed.

Reimplemented from SystemJacobian.

Definition at line 30 of file EigenSparseJacobian.cpp.

◆ setValue()

void setValue ( size_t  row,
size_t  col,
double  value 
)
overridevirtual

Set a value at the specified row and column of the jacobian triplet vector.

Parameters
rowrow in the jacobian matrix
colcolumn in the jacobian matrix
valuevalue of the element at row and col

Reimplemented from SystemJacobian.

Definition at line 36 of file EigenSparseJacobian.cpp.

◆ updatePreconditioner()

void updatePreconditioner ( )
overridevirtual

Transform Jacobian vector and write into preconditioner, P = (I - gamma * J)

Reimplemented from SystemJacobian.

Definition at line 41 of file EigenSparseJacobian.cpp.

◆ updateTransient()

void updateTransient ( double  rdt,
int *  mask 
)
overridevirtual

Update the diagonal terms in the Jacobian by using the transient mask \( \alpha \).

Parameters
rdtReciprocal of the time step [1/s]
maskMask for transient terms: 1 if transient, 0 if algebraic.

Reimplemented from SystemJacobian.

Definition at line 51 of file EigenSparseJacobian.cpp.

◆ matrix()

Eigen::SparseMatrix< double > matrix ( )
inline

Return the internal preconditioner matrix.

Definition at line 31 of file EigenSparseJacobian.h.

◆ printPreconditioner()

void printPreconditioner ( )
overridevirtual

Print preconditioner contents.

Reimplemented from SystemJacobian.

Definition at line 68 of file EigenSparseJacobian.cpp.

◆ printJacobian()

void printJacobian ( )

Print jacobian contents.

Definition at line 75 of file EigenSparseJacobian.cpp.

Member Data Documentation

◆ m_jac_trips

vector<Eigen::Triplet<double> > m_jac_trips
protected

Vector of triples representing the jacobian used in preconditioning.

Definition at line 43 of file EigenSparseJacobian.h.

◆ m_identity

Eigen::SparseMatrix<double> m_identity
protected

Storage of appropriately sized identity matrix for making the preconditioner.

Definition at line 46 of file EigenSparseJacobian.h.

◆ m_matrix

Eigen::SparseMatrix<double> m_matrix
protected

Container that is the sparse preconditioner.

Definition at line 49 of file EigenSparseJacobian.h.


The documentation for this class was generated from the following files: