Program Listing for File solver_cvodes.h
↰ Return to documentation for file (include/amici/solver_cvodes.h
)
#ifndef AMICI_SOLVER_CVODES_h
#define AMICI_SOLVER_CVODES_h
#include "amici/defines.h"
#include "amici/solver.h"
#include "amici/vector.h"
#include <sundials/sundials_matrix.h>
namespace amici {
class ExpData;
class ReturnData;
class Model_ODE;
class CVodeSolver;
} // namespace amici
// for serialization friend in Solver
namespace boost {
namespace serialization {
template <class Archive>
void serialize(Archive& ar, amici::CVodeSolver& s, unsigned int version);
}
} // namespace boost
namespace amici {
class CVodeSolver : public Solver {
public:
using Solver::Solver;
~CVodeSolver() override = default;
Solver* clone() const override;
void reInit(realtype t0, AmiVector const& yy0, AmiVector const& yp0)
const override;
void sensReInit(AmiVectorArray const& yyS0, AmiVectorArray const& ypS0)
const override;
void sensToggleOff() const override;
void reInitB(
int which, realtype tB0, AmiVector const& yyB0, AmiVector const& ypB0
) const override;
void quadReInitB(int which, AmiVector const& yQB0) const override;
int solve(realtype tout, int itask) const override;
int solveF(realtype tout, int itask, int* ncheckPtr) const override;
void solveB(realtype tBout, int itaskB) const override;
void getDky(realtype t, int k) const override;
void getSensDky(realtype t, int k) const override;
void getQuadDkyB(realtype t, int k, int which) const override;
void getDkyB(realtype t, int k, int which) const override;
void getRootInfo(int* rootsfound) const override;
void setStopTime(realtype tstop) const override;
void turnOffRootFinding() const override;
Model const* getModel() const override;
#if !defined(EXHALE_DOXYGEN_SHOULD_SKIP_THIS)
using Solver::setLinearSolver;
using Solver::setLinearSolverB;
#endif
void setLinearSolver() const override;
void setLinearSolverB(int which) const override;
void setNonLinearSolver() const override;
void setNonLinearSolverSens() const override;
void setNonLinearSolverB(int which) const override;
protected:
void calcIC(realtype tout1) const override;
void calcICB(int which, realtype tout1) const override;
void getB(int which) const override;
void getSens() const override;
void getQuadB(int which) const override;
void getQuad(realtype& t) const override;
void getQuadDky(realtype t, int k) const override;
void reInitPostProcessF(realtype tnext) const override;
void reInitPostProcessB(realtype tnext) const override;
void reInitPostProcess(
void* cv_mem, realtype* t, AmiVector* yout, realtype tout
) const;
void allocateSolver() const override;
void setSStolerances(double rtol, double atol) const override;
void setSensSStolerances(double rtol, double const* atol) const override;
void setSensErrCon(bool error_corr) const override;
void setQuadErrConB(int which, bool flag) const override;
void setQuadErrCon(bool flag) const override;
void setErrHandlerFn() const override;
void setUserData() const override;
void setUserDataB(int which) const override;
void setMaxNumSteps(long int mxsteps) const override;
void setStabLimDet(int stldet) const override;
void setStabLimDetB(int which, int stldet) const override;
void setId(Model const* model) const override;
void setSuppressAlg(bool flag) const override;
void resetState(void* cv_mem, const_N_Vector y0) const;
void setSensParams(
realtype const* p, realtype const* pbar, int const* plist
) const override;
void adjInit() const override;
void quadInit(AmiVector const& xQ0) const override;
void allocateSolverB(int* which) const override;
void setSStolerancesB(int which, realtype relTolB, realtype absTolB)
const override;
void quadSStolerancesB(int which, realtype reltolQB, realtype abstolQB)
const override;
void quadSStolerances(realtype reltolQ, realtype abstolQ) const override;
void setMaxNumStepsB(int which, long int mxstepsB) const override;
void diag() const override;
void diagB(int which) const override;
void getNumSteps(void const* ami_mem, long int* numsteps) const override;
void
getNumRhsEvals(void const* ami_mem, long int* numrhsevals) const override;
void getNumErrTestFails(void const* ami_mem, long int* numerrtestfails)
const override;
void getNumNonlinSolvConvFails(
void const* ami_mem, long int* numnonlinsolvconvfails
) const override;
void getLastOrder(void const* ami_ami_mem, int* order) const override;
void* getAdjBmem(void* ami_mem, int which) const override;
template <class Archive>
friend void boost::serialization::
serialize(Archive& ar, CVodeSolver& s, unsigned int /*version*/);
friend bool operator==(CVodeSolver const& a, CVodeSolver const& b);
void
init(realtype t0, AmiVector const& x0, AmiVector const& dx0) const override;
void initSteadystate(
realtype const t0, AmiVector const& x0, AmiVector const& dx0
) const override;
void sensInit1(AmiVectorArray const& sx0, AmiVectorArray const& sdx0)
const override;
void binit(
int which, realtype tf, AmiVector const& xB0, AmiVector const& dxB0
) const override;
void qbinit(int which, AmiVector const& xQB0) const override;
void rootInit(int ne) const override;
void setDenseJacFn() const override;
void setSparseJacFn() const override;
void setBandJacFn() const override;
void setJacTimesVecFn() const override;
void setDenseJacFnB(int which) const override;
void setSparseJacFnB(int which) const override;
void setBandJacFnB(int which) const override;
void setJacTimesVecFnB(int which) const override;
void setSparseJacFn_ss() const override;
void apply_max_nonlin_iters() const override;
void apply_max_conv_fails() const override;
void apply_constraints() const override;
void apply_max_step_size() const override;
};
} // namespace amici
#endif /* AMICI_SOLVER_CVODES_h */