24#ifndef quantlib_pde_hpp
25#define quantlib_pde_hpp
38 class [[deprecated(
"Part of the old FD framework; copy this function in your codebase if needed")]]
PdeSecondOrderParabolic {
47 for (
Size i = 1; i < tg.
size() - 1; i++) {
65 template <
class PdeClass>
70 PdeClass pde(process);
71 diffusion_ = pde.diffusion(
t, x);
73 discount_ = pde.discount(
t, x);
91 template <
class PdeClass>
96 grid_(grid), pde_(
std::move(process)) {}
98 pde_.generateOperator(
t, grid_, L);
110 template <
class PdeClass>
116 Time residualTime = 0.0) :
120 ext::shared_ptr<GenericTimeSetter<PdeClass> >(
123 setTime(residualTime);
1-D array used in linear algebra.
1-D array used in linear algebra.
PdeClass::grid_type grid_
GenericTimeSetter(const Array &grid, T process)
void setTime(Time t, TridiagonalOperator &L) const override
Real drift(Time, Real) const override
Real diffusion(Time, Real) const override
PdeConstantCoeff(const typename PdeClass::argument_type &process, Time t, Real x)
Real discount(Time, Real) const override
PdeOperator(const Array &grid, T process, Time residualTime=0.0)
virtual QL_DEPRECATED_DISABLE_WARNING void generateOperator(Time t, const TransformedGrid &tg, TridiagonalOperator &L) const
virtual Real discount(Time t, Real x) const =0
virtual Real drift(Time t, Real x) const =0
virtual ~PdeSecondOrderParabolic()=default
virtual Real diffusion(Time t, Real x) const =0
encapsulation of time-setting logic
Base implementation for tridiagonal operator.
void setMidRow(Size, Real, Real, Real)
Real Time
continuous quantity with 1-year units
std::size_t Size
size of a container
ext::shared_ptr< YieldTermStructure > r
#define QL_DEPRECATED_DISABLE_WARNING
#define QL_DEPRECATED_ENABLE_WARNING