24#ifndef quantlib_fdm_vpp_step_condition_hpp
25#define quantlib_fdm_vpp_step_condition_hpp
27#include <ql/methods/finitedifferences/stepcondition.hpp>
28#include <ql/shared_ptr.hpp>
29#include <ql/functional.hpp>
34 class FdmLinearOpIterator;
35 class FdmInnerValueCalculator;
47 const ext::shared_ptr<FdmMesher>
mesher;
55 ext::shared_ptr<FdmInnerValueCalculator> gasPrice,
56 ext::shared_ptr<FdmInnerValueCalculator> sparkSpreadPrice);
80 const ext::shared_ptr<FdmInnerValueCalculator>
gasPrice_;
1-D array used in linear algebra.
Real evolveAtPMax(Real sparkSpread) const
virtual Array changeState(Real gasPrice, const Array &state, Time t) const =0
virtual Real maxValue(const Array &states) const =0
Real evolve(const FdmLinearOpIterator &iter, Time t) const
const Size stateDirection_
const ext::shared_ptr< FdmMesher > mesher_
const Real fuelCostAddon_
const ext::shared_ptr< FdmInnerValueCalculator > gasPrice_
void applyTo(Array &a, Time t) const override
Real evolveAtPMin(Real sparkSpread) const
const Real startUpFixCost_
const ext::shared_ptr< FdmInnerValueCalculator > sparkSpreadPrice_
std::vector< ext::function< Real(Real)> > stateEvolveFcts_
condition to be applied at every time step
Real Time
continuous quantity with 1-year units
std::size_t Size
size of a container
const Size stateDirection
const ext::shared_ptr< FdmMesher > mesher
const Real startUpFixCost