Scine::Kinetx  3.0.0
Kinetic models for reaction networks.
 All Classes Files Functions Variables Enumerations Pages
Scine::Kinetx::Cvode::Impl Struct Reference
Inheritance diagram for Scine::Kinetx::Cvode::Impl:
Inheritance graph
Collaboration diagram for Scine::Kinetx::Cvode::Impl:
Collaboration graph

Public Member Functions

 Impl (Network &net)
 
void propagate (Eigen::VectorXd &concentrations, Eigen::VectorXd &yFlux, Eigen::VectorXd &rFlux, Eigen::VectorXd &rForwardFlux, Eigen::VectorXd &rBackwardFlux, double &t, double &dt) const
 Propagate the numerical integration by one time step. More...
 
void propagateY (Eigen::VectorXd &concentrations, double &tStart, double &dt) const
 
- Public Member Functions inherited from Scine::Kinetx::IntegratorBase
 IntegratorBase (Network &net)
 Constructor. More...
 
virtual Eigen::MatrixXd runIntegration (Eigen::VectorXd y, double tStart, double dt, Eigen::VectorXd &rFlux, Eigen::VectorXd &rForwardFlux, Eigen::VectorXd &rBackwardFlux, const unsigned int batchInterval=1000, const unsigned int nBatches=100000, const double convergenceConcentrationChange=1e-10)
 Run the numerical integration until a maximum number of steps or convergence is reached. More...
 
virtual Eigen::MatrixXd runIntegrationByTime (Eigen::VectorXd y, double tStart, double dt, Eigen::VectorXd &rFlux, Eigen::VectorXd &rForwardFlux, Eigen::VectorXd &rBackwardFlux, const double tMax, const unsigned int batchInterval=1000, const double convergenceConcentrationChange=1e-10)
 Run the numerical integration until a maximum time or convergence is reached. More...
 

Static Public Member Functions

static int rhs_func (realtype, N_Vector c, N_Vector g, void *user_data)
 

Public Attributes

bool first_run = true
 
SUNLinearSolver LS
 
realtype abstol = 1e-21
 
realtype reltol = 1e-9
 
sundials::Context context
 
N_Vector y
 
void * cvode_mem = NULL
 

Additional Inherited Members

- Protected Member Functions inherited from Scine::Kinetx::IntegratorBase
void trackVertexAndEdgeFluxes (const Eigen::VectorXd &y, const Eigen::VectorXd &yInitial, Eigen::VectorXd &yFlux, Eigen::VectorXd &rFlux, Eigen::VectorXd &rForwardFlux, Eigen::VectorXd &rBackwardFlux, const double &dt) const
 Keep track on the vertex and edge fluxes. More...
 
Eigen::VectorXd g (const Eigen::VectorXd &concentrations) const
 Calculate the concentration gradient. More...
 
Eigen::VectorXd gFlux (const Eigen::VectorXd &concentrationsT0, const Eigen::VectorXd &concentrationsT1, Eigen::VectorXd &flux, Eigen::VectorXd &forwardFlux, Eigen::VectorXd &backwardFlux) const
 Calculate the concentration flux gradient. More...
 
Eigen::MatrixXd fFlux (const Eigen::VectorXd &concentrationsT0, const Eigen::VectorXd &concentrationsT1) const
 Calculate the total edge flux gradient. More...
 
std::tuple< Eigen::MatrixXd,
Eigen::MatrixXd,
Eigen::MatrixXd > 
fFluxDirected (const Eigen::VectorXd &concentrationsT0, const Eigen::VectorXd &concentrationsT1) const
 Calculate the edge flux while keeping track on the direction. More...
 
Eigen::MatrixXd f (const Eigen::VectorXd &concentrations) const
 
std::pair< Eigen::MatrixXd,
Eigen::MatrixXd > 
fDirected (const Eigen::VectorXd &concentrations) const
 The same as f(..) but keeping track on the directions. More...
 
Eigen::SparseMatrix< double > jacobi (const Eigen::VectorXd &concentrations) const
 
void printHeader (const Eigen::VectorXd &y, const double dt, const double t)
 
bool printTimeAndCheckConvergenceStep (const Eigen::VectorXd &y, const Eigen::VectorXd &yOld, Eigen::VectorXd &yMax, const unsigned int batchInterval, const unsigned int iBatch, const double dt, const double t, const double convergenceConcentrationChange)
 
- Static Protected Member Functions inherited from Scine::Kinetx::IntegratorBase
static double fast_pow (const double &x, const int &n)
 
- Protected Attributes inherited from Scine::Kinetx::IntegratorBase
Network_net
 

Member Function Documentation

void Scine::Kinetx::Cvode::Impl::propagate ( Eigen::VectorXd &  concentrations,
Eigen::VectorXd &  yFlux,
Eigen::VectorXd &  rFlux,
Eigen::VectorXd &  rForwardFlux,
Eigen::VectorXd &  rBackwardFlux,
double &  t,
double &  dt 
) const
inlinevirtual

Propagate the numerical integration by one time step.

Parameters
concentrationsThe current concentrations. Updated inplace.
yFluxThe current vertex (aggregate) flux. Updated inplace.
rFluxThe current total edge (reaction) flux. Updated inplace.
rForwardFluxThe current forward edge flux. Updated inplace.
rBackwardFluxThe current backward edge flux. Updated inplace.
tThe current time. Updated inplace.
dtThe time increment. This may be updated inplace depending on the integration algorithm.

Implements Scine::Kinetx::IntegratorBase.


The documentation for this struct was generated from the following file: