24#ifndef quantlib_fdm_cir_op_hpp
25#define quantlib_fdm_cir_op_hpp
27#include <ql/methods/finitedifferences/operators/fdmlinearopcomposite.hpp>
28#include <ql/methods/finitedifferences/operators/firstderivativeop.hpp>
29#include <ql/methods/finitedifferences/operators/ninepointlinearop.hpp>
30#include <ql/methods/finitedifferences/operators/triplebandlinearop.hpp>
31#include <ql/methods/finitedifferences/utilities/fdmquantohelper.hpp>
32#include <ql/models/shortrate/onefactormodels/coxingersollross.hpp>
33#include <ql/processes/blackscholesprocess.hpp>
34#include <ql/processes/coxingersollrossprocess.hpp>
35#include <ql/processes/hestonprocess.hpp>
36#include <ql/termstructures/volatility/equityfx/localvoltermstructure.hpp>
43 const ext::shared_ptr<FdmMesher>& mesher,
44 const ext::shared_ptr<GeneralizedBlackScholesProcess> & bsProcess,
56 const ext::shared_ptr<YieldTermStructure>
qTS_;
58 const ext::shared_ptr<BlackVolTermStructure>
sigma1_;
64 const ext::shared_ptr<FdmMesher>& mesher,
79 const ext::shared_ptr<CoxIngersollRossProcess>& cirProcess,
80 const ext::shared_ptr<GeneralizedBlackScholesProcess>& bsProcess,
91 const ext::shared_ptr<BlackVolTermStructure>
sigma1_;
98 FdmCIROp(
const ext::shared_ptr<FdmMesher>& mesher,
99 const ext::shared_ptr<CoxIngersollRossProcess>& cirProcess,
100 const ext::shared_ptr<GeneralizedBlackScholesProcess>& bsProcess,
1-D array used in linear algebra.
void setTime(Time t1, Time t2)
const TripleBandLinearOp & getMap() const
const TripleBandLinearOp dxxMap_
const ext::shared_ptr< YieldTermStructure > qTS_
const FirstDerivativeOp dxMap_
const ext::shared_ptr< FdmMesher > mesher_
const ext::shared_ptr< BlackVolTermStructure > sigma1_
void setTime(Time t1, Time t2)
const NinePointLinearOp & getMap() const
const ext::shared_ptr< FdmMesher > mesher_
const NinePointLinearOp dyMap_
const ext::shared_ptr< BlackVolTermStructure > sigma1_
Size size() const override
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
void setTime(Time t1, Time t2) override
Time is required.
Array apply_mixed(const Array &r) const override
Array solve_splitting(Size direction, const Array &r, Real s) const override
Array apply(const Array &r) const override
void setTime(Time t1, Time t2)
const TripleBandLinearOp & getMap() const
const TripleBandLinearOp dyMap_
const ext::shared_ptr< FdmMesher > mesher_
Real Time
continuous quantity with 1-year units
std::size_t Size
size of a container