23#include <ql/methods/finitedifferences/utilities/fdmdiscountdirichletboundary.hpp>
24#include <ql/termstructures/yieldtermstructure.hpp>
30 class DiscountedCashflowAtBoundary {
32 DiscountedCashflowAtBoundary(
Time maturityTime,
34 ext::shared_ptr<YieldTermStructure> rTS)
35 : maturityTime_(maturityTime), cashFlow_(valueOnBoundary), rTS_(
std::move(rTS)) {}
39 * rTS_->discount(maturityTime_)/rTS_->discount(t);
43 const Time maturityTime_;
45 const ext::shared_ptr<YieldTermStructure> rTS_;
50 const ext::shared_ptr<FdmMesher>& mesher,
51 const ext::shared_ptr<YieldTermStructure>& rTS,
58 DiscountedCashflowAtBoundary(
59 maturityTime, valueOnBoundary, rTS)),
68 bc_->applyBeforeApplying(op);
72 bc_->applyBeforeSolving(op, r);
75 bc_->applyAfterApplying(r);
78 bc_->applyAfterSolving(r);
1-D array used in linear algebra.
FdmDiscountDirichletBoundary(const ext::shared_ptr< FdmMesher > &mesher, const ext::shared_ptr< YieldTermStructure > &rTS, Time maturityTime, Real valueOnBoundary, Size direction, Side side)
void applyAfterSolving(array_type &) const override
BoundaryCondition< FdmLinearOp >::Side Side
void applyAfterApplying(array_type &) const override
void applyBeforeApplying(operator_type &) const override
void setTime(Time) override
void applyBeforeSolving(operator_type &, array_type &) const override
const ext::shared_ptr< FdmTimeDepDirichletBoundary > bc_
Real Time
continuous quantity with 1-year units
std::size_t Size
size of a container