MixedScheme Class Template Reference
[Finite-differences framework]

#include <ql/methods/finitedifferences/mixedscheme.hpp>

Inheritance diagram for MixedScheme:

Inheritance graph
[legend]
List of all members.

Detailed Description

template<class Operator>
class QuantLib::MixedScheme< Operator >

Mixed (explicit/implicit) 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.
Todo:
  • derive variable theta schemes
  • introduce multi time-level schemes.


Public Types

typedef OperatorTraits< Operator > traits
typedef traits::operator_type operator_type
typedef traits::array_type array_type
typedef traits::bc_set bc_set
typedef traits::condition_type condition_type

Public Member Functions

 MixedScheme (const operator_type &L, Real theta, const bc_set &bcs)
void step (array_type &a, Time t)
void setStep (Time dt)

Protected Attributes

operator_type L_
operator_type I_
operator_type explicitPart_
operator_type implicitPart_
Time dt_
Real theta_
bc_set bcs_