File cvode.hxx

class CvodeSolver : public Solver

Public Functions

CvodeSolver(Options *opts = nullptr)
~CvodeSolver()
inline virtual BoutReal getCurrentTimestep() override

Return the current internal timestep.

virtual int init(int nout, BoutReal tstep) override

Initialise the solver NOTE: nout and tstep should be passed to run, not init. Needed because of how the PETSc TS code works

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.

BoutReal run(BoutReal tout)
virtual void resetInternalFields() override

Should wipe out internal field vector and reset from current field object data.

void rhs(BoutReal t, BoutReal *udata, BoutReal *dudata)
void pre(BoutReal t, BoutReal gamma, BoutReal delta, BoutReal *udata, BoutReal *rvec, BoutReal *zvec)
void jac(BoutReal t, BoutReal *ydata, BoutReal *vdata, BoutReal *Jvdata)

Private Functions

void set_vector_option_values(BoutReal *option_data, std::vector<BoutReal> &f2dtols, std::vector<BoutReal> &f3dtols)
void loop_vector_option_values_op(Ind2D i2d, BoutReal *option_data, int &p, std::vector<BoutReal> &f2dtols, std::vector<BoutReal> &f3dtols, bool bndry)
template<class FieldType>
std::vector<BoutReal> create_constraints(const std::vector<VarStr<FieldType>> &fields)

Private Members

int NOUT
BoutReal TIMESTEP
BoutReal hcur
bool diagnose = {false}
N_Vector uvec = {nullptr}
void *cvode_mem = {nullptr}
BoutReal pre_Wtime = {0.0}
int pre_ncalls = {0}
int nsteps = {0}
int nfevals = {0}
int nniters = {0}
int npevals = {0}
int nliters = {0}
BoutReal last_step = {0.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.

SUNNonlinearSolver nonlinear_solver = {nullptr}

Solver for functional iterations for Adams-Moulton.

sundials::Context suncontext

Context for SUNDIALS memory allocations.