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(constOperator&);
Operator& operator=(constOperator&);
// inspectors
Size size();
// modifiers
void setTime(Time t);
// operator interface
array_type applyTo(const array_type&);
array_type solveFor(const array_type&);
staticOperator identity(Size size);
// operator algebraOperatoroperator*(Real, constOperator&);
Operatoroperator+(constOperator&, constOperator&);
Operatoroperator+(constOperator&, constOperator&);
warning The differential operator must be linear for
this evolver to work.
NOTE: There is room for performance improvement especially in
the array manipulation
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