24#include <ql/methods/finitedifferences/meshers/fdmmesher.hpp>
25#include <ql/methods/finitedifferences/operators/fdmlinearoplayout.hpp>
26#include <ql/methods/finitedifferences/operators/fdmsabrop.hpp>
27#include <ql/methods/finitedifferences/operators/firstderivativeop.hpp>
28#include <ql/methods/finitedifferences/operators/secondderivativeop.hpp>
29#include <ql/methods/finitedifferences/operators/secondordermixedderivativeop.hpp>
30#include <ql/termstructures/yieldtermstructure.hpp>
35 ext::shared_ptr<YieldTermStructure> rTS,
41 : rTS_(
std::move(rTS)),
43 Pow(mesher->locations(0), 2.0 * beta))),
48 .mult(rho * nu *
Exp(mesher->locations(1)) *
Pow(mesher->locations(0), beta))),
49 mapF_(0, mesher), mapA_(1, mesher) {}
74 else if (direction == 1)
77 QL_FAIL(
"direction too large");
86 else if (direction == 1) {
90 QL_FAIL(
"direction too large");
1-D array used in linear algebra.
Size size() const override
FdmSabrOp(const ext::shared_ptr< FdmMesher > &mesher, ext::shared_ptr< YieldTermStructure > rTS, Real f0, Real alpha, Real beta, Real nu, Real rho)
const TripleBandLinearOp dxMap_
Array apply_direction(Size direction, const Array &r) const override
Array preconditioner(const Array &r, Real s) const override
std::vector< SparseMatrix > toMatrixDecomp() const override
const TripleBandLinearOp dxxMap_
void setTime(Time t1, Time t2) override
Time is required.
Array apply_mixed(const Array &r) const override
const TripleBandLinearOp dffMap_
Array solve_splitting(Size direction, const Array &r, Real s) const override
const ext::shared_ptr< YieldTermStructure > rTS_
Array apply(const Array &r) const override
const NinePointLinearOp correlationMap_
SparseMatrix toMatrix() const override
Array apply(const Array &r) const override
SparseMatrix toMatrix() const override
Array solve_splitting(const Array &r, Real a, Real b=1.0) const
void axpyb(const Array &a, const TripleBandLinearOp &x, const TripleBandLinearOp &y, const Array &b)
Array apply(const Array &r) const override
Real Time
continuous quantity with 1-year units
std::size_t Size
size of a container
Array Pow(const Array &v, Real alpha)
Array Exp(const Array &v)