Options
All
  • Public
  • Public/Protected
  • All
Menu

TR-BDF2 scheme for finite difference methods

See http://ssrn.com/abstract=1648878 for details.

In this implementation, the passed operator must be derived from either TimeConstantOperator or TimeDependentOperator. Also, it must implement at least the following interface:

typedef ... array_type;

// copy constructor/assignment
// (these will be provided by the compiler if none is defined)
Operator(const Operator&);
Operator& operator=(const Operator&);

// inspectors
Size size();

// modifiers
void setTime(Time t);

// operator interface
array_type applyTo(const array_type&);
array_type solveFor(const array_type&);
static Operator identity(Size size);

// operator algebra
Operator operator*(Real, const Operator&);
Operator operator+(const Operator&, const Operator&);
Operator operator+(const Operator&, const Operator&);

warning The differential operator must be linear for this evolver to work.

NOTE: There is room for performance improvement especially in the array manipulation

Hierarchy

  • TRBDF2

Index

Properties

Private _I

Private _L

Private _aInit

_aInit: Real[]

Private _alpha

_alpha: Real

Private _bcs

Private _dt

_dt: Time

Private _explicitBDF2PartFull

_explicitBDF2PartFull: TridiagonalOperator

Private _explicitBDF2PartMid

_explicitBDF2PartMid: TridiagonalOperator

Private _explicitTrapezoidalPart

_explicitTrapezoidalPart: TridiagonalOperator

Private _implicitPart

_implicitPart: TridiagonalOperator

Methods

eInit

setStep

  • setStep(dt: Time): void
  • Parameters

    Returns void

step

  • Parameters

    Returns void