### A free/open-source library for quantitative finance

Public Types | Public Member Functions
TRBDF2< Operator > Class Template Reference
Finite-differences framework

TR-BDF2 scheme for finite difference methods. More...

`#include <ql/methods/finitedifferences/trbdf2.hpp>`

List of all members.

## 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

| TRBDF2 (const operator_type &L, const bc_set &bcs)
void | step (array_type &a, Time t)
void | setStep (Time dt)

## Detailed Description

### template<class Operator>
class QuantLib::TRBDF2< Operator >

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.