Solver Module

ODE integrators, iterative linear solvers (GMRES, PCG), direct preconditioners, and scalar utilities.

Namespace Overview

namespace ODE
template<class TDATA, class TDTAU>
class ExplicitSSPRK3TimeStepAsImplicitDualTimeStep : public DNDS::ODE::ImplicitDualTimeStep<TDATA, TDTAU>

Public Functions

inline virtual void Step(TDATA &x, TDATA &xinc, const Frhs &frhs, const Fdt &fdt, const Fsolve &fsolve, int maxIter, const Fstop &fstop, const Fincrement &fincrement, real dt) override
template<class TDATA, class TDTAU>
class ImplicitBDFDualTimeStep : public DNDS::ODE::ImplicitDualTimeStep<TDATA, TDTAU>

Public Functions

template<class Finit, class FinitDtau>
inline ImplicitBDFDualTimeStep(index NDOF, Finit &&finit = [](TDATA &) {}, FinitDtau &&finitDtau = [](TDTAU &) {}, index k = 2)
inline virtual void Step(TDATA &x, TDATA &xinc, const Frhs &frhs, const Fdt &fdt, const Fsolve &fsolve, int maxIter, const Fstop &fstop, const Fincrement &fincrement, real dt) override
template<class TDATA, class TDTAU>
class ImplicitDualTimeStep

Subclassed by DNDS::ODE::ExplicitSSPRK3TimeStepAsImplicitDualTimeStep< TDATA, TDTAU >, DNDS::ODE::ImplicitBDFDualTimeStep< TDATA, TDTAU >, DNDS::ODE::ImplicitEulerDualTimeStep< TDATA, TDTAU >, DNDS::ODE::ImplicitHermite3SimpleJacobianDualStep< TDATA, TDTAU >, DNDS::ODE::ImplicitSDIRK4DualTimeStep< TDATA, TDTAU >, DNDS::ODE::ImplicitVBDFDualTimeStep< TDATA, TDTAU >

template<class TDATA, class TDTAU>
class ImplicitEulerDualTimeStep : public DNDS::ODE::ImplicitDualTimeStep<TDATA, TDTAU>

Public Functions

template<class Finit, class FinitDtau>
inline ImplicitEulerDualTimeStep(index NDOF, Finit &&finit = [](TDATA &) {}, FinitDtau &&finitDtau = [](TDTAU &) {})
inline virtual void Step(TDATA &x, TDATA &xinc, const Frhs &frhs, const Fdt &fdt, const Fsolve &fsolve, int maxIter, const Fstop &fstop, const Fincrement &fincrement, real dt) override
template<class TDATA, class TDTAU>
class ImplicitHermite3SimpleJacobianDualStep : public DNDS::ODE::ImplicitDualTimeStep<TDATA, TDTAU>

Public Functions

template<class Finit, class FinitDtau>
inline ImplicitHermite3SimpleJacobianDualStep(index NDOF, Finit &&finit = [](TDATA &) {}, FinitDtau &&finitDtau = [](TDTAU &) {}, real alpha = 0.55, int nCurSolveMethod = 0, int nnStartIter = 0, real thetaM1n = 0.9146, real thetaM2n = 0.0, int mask = 0, int nMGn = 4)
inline virtual void Step(TDATA &x, TDATA &xinc, const Frhs &frhs, const Fdt &fdt, const Fsolve &fsolve, int maxIter, const Fstop &fstop, const Fincrement &fincrement, real dt) override
template<class TDATA, class TDTAU>
class ImplicitSDIRK4DualTimeStep : public DNDS::ODE::ImplicitDualTimeStep<TDATA, TDTAU>

Public Functions

template<class Finit, class FinitDtau>
inline ImplicitSDIRK4DualTimeStep(index NDOF, Finit &&finit = [](TDATA &) {}, FinitDtau &&finitDtau = [](TDTAU &) {}, int schemeCode = 0)
inline virtual void Step(TDATA &x, TDATA &xinc, const Frhs &frhs, const Fdt &fdt, const Fsolve &fsolve, int maxIter, const Fstop &fstop, const Fincrement &fincrement, real dt) override
template<class TDATA, class TDTAU>
class ImplicitVBDFDualTimeStep : public DNDS::ODE::ImplicitDualTimeStep<TDATA, TDTAU>

Public Functions

template<class Finit, class FinitDtau>
inline ImplicitVBDFDualTimeStep(index NDOF, Finit &&finit = [](TDATA &) {}, FinitDtau &&finitDtau = [](TDTAU &) {}, index k = 2)
inline virtual void Step(TDATA &x, TDATA &xinc, const Frhs &frhs, const Fdt &fdt, const Fsolve &fsolve, int maxIter, const Fstop &fstop, const Fincrement &fincrement, real dt) override
namespace Linear
template<class TDATA>
class GMRES_LeftPreconditioned

Public Functions

template<class TFA, class TFML, class TFDot, class TFstop>
inline bool solve(TFA &&FA, TFML &&FML, TFDot &&fDot, TDATA &b, TDATA &x, uint32_t nRestart, TFstop &&FStop)
template<class TDATA, class TScalar>
class PCG_PreconditionedRes
namespace Direct
struct DirectPrecControl
template<class Derived, class tComponent, class tVec>
struct LocalLDLTBase

Subclassed by TestBlockLDLT

template<class Derived, class tComponent, class tVec>
struct LocalLUBase

Subclassed by TestBlockLU

struct SerialSymLUStructure

Public Functions

template<class TAdj>
inline void ObtainSymmetricSymbolicFactorization(const TAdj &cell2cellFaceV, const std::vector<index> localPartStarts_in, int iluCode)
namespace Scalar

Functions

template<class TF>
real BisectSolveLower(TF &&F, real v0, real v1, real fTarget, int maxIter)