Options
All
  • Public
  • Public/Protected
  • All
Menu

Crank-Nicolson scheme for finite difference methods

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.

Hierarchy

Index

Properties

Protected _I

Protected _L

Protected _bcs

Protected _dt

_dt: Time

Protected _explicitPart

_explicitPart: TridiagonalOperator

Protected _implicitPart

_implicitPart: TridiagonalOperator

Protected _theta

_theta: Real

Methods

eInit

init

setStep

  • setStep(dt: Time): void
  • Parameters

    Returns void

step

  • Parameters

    Returns void