File cvode.hxx#
-
class CvodeSolver : public Solver#
Public Functions
-
~CvodeSolver() override#
-
virtual int init() override#
Initialise the solver.
-
virtual int run() override#
Run the solver, calling monitors nout times, at intervals of tstep. This function is called by solve(), and is specific to each solver type
This should probably be protected, since it shouldn’t be called by users.
-
virtual void resetInternalFields() override#
Should wipe out internal field vector and reset from current field object data.
Private Functions
-
void set_vector_option_values(BoutReal *option_data, std::vector<BoutReal> &f2dtols, std::vector<BoutReal> &f3dtols)#
Private Members
-
bool diagnose = {false}#
-
N_Vector uvec = {nullptr}#
-
void *cvode_mem = {nullptr}#
-
int pre_ncalls = {0}#
-
bool adams_moulton#
Use Adams Moulton implicit multistep. Otherwise BDF method.
-
bool func_iter#
Use functional iteration instead of Newton.
-
int max_order#
Maximum order of method to use. < 0 means no limit.
-
bool stablimdet#
-
bool use_vector_abstol#
Use separate absolute tolerance for each field.
-
int mxsteps#
Maximum number of internal steps between outputs.
-
int mxorder#
Maximum order.
-
int max_nonlinear_iterations#
Maximum number of nonlinear iterations allowed by CVODE before reducing timestep. CVODE default (used if this option is negative) is 3
-
bool apply_positivity_constraints#
Use CVODE function CVodeSetConstraints to constrain variables - the constraint to be applied is set by the positivity_constraint option in the subsection for each variable
-
int maxl#
Maximum number of linear iterations.
-
bool use_precon#
Use preconditioner?
-
bool rightprec#
Use right preconditioner? Otherwise use left.
-
bool use_jacobian#
-
int nsteps = {0}#
-
int nfevals = {0}#
-
int nniters = {0}#
-
int npevals = {0}#
-
int nliters = {0}#
-
int last_order = {0}#
-
int num_fails = {0}#
-
int nonlin_fails = {0}#
-
int stab_lims = {0}#
-
bool cvode_initialised = {false}#
-
SUNLinearSolver sun_solver = {nullptr}#
SPGMR solver structure.
-
~CvodeSolver() override#