24#ifndef quantlib_fdm_kluge_ou_solver_hpp
25#define quantlib_fdm_kluge_ou_solver_hpp
27#include <ql/experimental/finitedifferences/fdmklugeextouop.hpp>
28#include <ql/experimental/processes/klugeextouprocess.hpp>
29#include <ql/handle.hpp>
30#include <ql/methods/finitedifferences/solvers/fdmbackwardsolver.hpp>
31#include <ql/methods/finitedifferences/solvers/fdmndimsolver.hpp>
32#include <ql/methods/finitedifferences/solvers/fdmsolverdesc.hpp>
33#include <ql/patterns/lazyobject.hpp>
38 class ExtOUWithJumpsProcess;
39 class ExtendedOrnsteinUhlenbeckProcess;
45 ext::shared_ptr<YieldTermStructure> rTS,
55 return solver_->interpolateAt(x);
60 ext::shared_ptr<FdmLinearOpComposite>op(
65 solver_ = ext::shared_ptr<FdmNdimSolver<N> >(
71 const ext::shared_ptr<YieldTermStructure>
rTS_;
76 mutable ext::shared_ptr<FdmNdimSolver<N> >
solver_;
void performCalculations() const override
BOOST_STATIC_ASSERT(N >=3)
const Handle< KlugeExtOUProcess > klugeOUProcess_
const FdmSolverDesc solverDesc_
FdmKlugeExtOUSolver(Handle< KlugeExtOUProcess > klugeOUProcess, ext::shared_ptr< YieldTermStructure > rTS, FdmSolverDesc solverDesc, const FdmSchemeDesc &schemeDesc=FdmSchemeDesc::Hundsdorfer())
const ext::shared_ptr< YieldTermStructure > rTS_
ext::shared_ptr< FdmNdimSolver< N > > solver_
Real valueAt(const std::vector< Real > &x) const
const FdmSchemeDesc schemeDesc_
Shared handle to an observable.
Framework for calculation on demand and result caching.
virtual void calculate() const
std::pair< iterator, bool > registerWith(const ext::shared_ptr< Observable > &)
static FdmSchemeDesc Hundsdorfer()
const FdmBoundaryConditionSet bcSet
const ext::shared_ptr< FdmMesher > mesher