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"
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;
std::string get_class_name() const override { return "CVodeSolver"; };
void reinit(
realtype t0, AmiVector const& yy0, AmiVector const& yp0
) const override;
void sens_reinit(
AmiVectorArray const& yyS0, AmiVectorArray const& ypS0
) const override;
void calc_consistent_state(
realtype t, AmiVector& x, AmiVector& dx, realtype tout1
) const override;
void sens_toggle_off() const override;
void reinit_b(
int which, realtype tB0, AmiVector const& yyB0, AmiVector const& ypB0
) const override;
void reinit_quad_b(int which, AmiVector const& yQB0) const override;
int solve(realtype tout, int itask) const override;
int solve_f(realtype tout, int itask, int* ncheckPtr) const override;
void solve_b(realtype tBout, int itaskB) const override;
void get_dky(realtype t, int k) const override;
void get_sens_dky(realtype t, int k) const override;
void get_quad_dky_b(realtype t, int k, int which) const override;
void get_dky_b(realtype t, int k, int which) const override;
void get_root_info(int* rootsfound) const override;
void set_stop_time(realtype tstop) const override;
void turn_off_root_finding() const override;
Model const* get_model() const override;
#if !defined(EXHALE_DOXYGEN_SHOULD_SKIP_THIS)
using Solver::set_linear_solver;
using Solver::set_linear_solver_b;
#endif
void set_linear_solver() const override;
void set_linear_solver_b(int which) const override;
void set_non_linear_solver() const override;
void set_non_linear_solver_sens() const override;
void set_non_linear_solver_b(int which) const override;
protected:
void calc_ic(realtype tout1) const override;
void calc_ic_b(int which, realtype tout1) const override;
void get_b(int which) const override;
void get_sens() const override;
void get_quad_b(int which) const override;
void get_quad(realtype& t) const override;
void get_quad_dky(realtype t, int k) const override;
bool reinit_post_process_f(realtype tnext) const override;
void reinit_post_process_b(realtype tnext) const override;
int reInit_post_process(
void* cv_mem, realtype* t, AmiVector* yout, realtype tout
) const;
void allocate_solver() const override;
void set_ss_tolerances(double rtol, double atol) const override;
void set_sens_ss_tolerances(double rtol, double const* atol) const override;
void set_sens_err_con(bool error_corr) const override;
void set_quad_err_con_b(int which, bool flag) const override;
void set_quad_err_con(bool flag) const override;
void set_user_data() const override;
void set_user_data_b(int which) const override;
void set_max_num_steps(long int mxsteps) const override;
void set_stab_lim_det(int stldet) const override;
void set_stab_lim_det_b(int which, int stldet) const override;
void set_id(Model const* model) const override;
void set_id_b(int which, Model const* model) const override;
void set_suppress_alg(bool flag) const override;
void reset_state(void* cv_mem, const_N_Vector y0) const;
void set_sens_params(
realtype const* p, realtype const* pbar, int const* plist
) const override;
void adj_init() const override;
void quad_init(AmiVector const& xQ0) const override;
void allocate_solver_b(int* which) const override;
void set_ss_tolerances_b(
int which, realtype relTolB, realtype absTolB
) const override;
void quad_ss_tolerances_b(
int which, realtype reltolQB, realtype abstolQB
) const override;
void quad_ss_tolerances(realtype reltolQ, realtype abstolQ) const override;
void set_max_num_steps_b(int which, long int mxstepsB) const override;
void diag() const override;
void diag_b(int which) const override;
void get_num_steps(void const* ami_mem, long int* numsteps) const override;
void get_num_rhs_evals(
void const* ami_mem, long int* numrhsevals
) const override;
void get_num_err_test_fails(
void const* ami_mem, long int* numerrtestfails
) const override;
void get_num_non_lin_solv_conv_fails(
void const* ami_mem, long int* numnonlinsolvconvfails
) const override;
void get_last_order(void const* ami_mem, int* order) const override;
void* get_adj_b_mem(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 init_steady_state(
realtype t0, AmiVector const& x0, AmiVector const& dx0
) const override;
void sens_init_1(
AmiVectorArray const& sx0, AmiVectorArray const& sdx0
) const override;
void b_init(
int which, realtype tf, AmiVector const& xB0, AmiVector const& dxB0
) const override;
void qb_init(int which, AmiVector const& xQB0) const override;
void root_init(int ne) const override;
void set_dense_jac_fn() const override;
void set_sparse_jac_fn() const override;
void set_band_jac_fn() const override;
void set_jac_times_vec_fn() const override;
void set_dense_jac_fn_b(int which) const override;
void set_sparse_jac_fn_b(int which) const override;
void set_band_jac_fn_b(int which) const override;
void set_jac_times_vec_fn_b(int which) const override;
void set_sparse_jac_fn_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 */