8#ifndef FMTAGEYIELDHANDLER_Hm_included
9#define FMTAGEYIELDHANDLER_Hm_included
13#include <boost/serialization/serialization.hpp>
14#include <boost/serialization/nvp.hpp>
39 virtual operator std::string()
const;
82 virtual void setYieldValues(
const std::string& yldname,
const std::vector<int>& baseages,
const std::vector<double>& values);
97 virtual bool pushData(
const std::string& yld,
const double& value);
111 virtual std::unique_ptr<FMTYieldHandler>
clone()
const;
150 virtual const FMTData&
at(
const std::string& yldname)
const;
175 virtual std::map<std::string, std::vector<double>>
getAllYieldsData(
const int& maxbase)
const;
183 virtual std::unique_ptr<FMTYieldHandler>
getFromFactor(
const double& factor,
184 std::vector<std::string>yieldnames = std::vector<std::string>())
const;
194 virtual int getEndPoint(
const std::string& yld,
const int& lowerstep,
const double& bound,
const double& value)
const;
211 virtual double getPeakfrom(
const std::string& yld,
double maxvalue = std::numeric_limits<double>::lowest())
const;
230 friend class boost::serialization::access;
238 template<
class Archive>
239 void serialize(Archive& ar,
const unsigned int version)
241 ar& boost::serialization::make_nvp(
"FMTyieldhandler", boost::serialization::base_object<FMTYieldHandler>(*
this));
242 ar& BOOST_SERIALIZATION_NVP(m_elements);
244 std::map<std::string, FMTData, cmpYieldString>m_elements;
253 int _getAge(
const std::string yld,
const double& value,
const int& starting_age)
const;
#define FMTEXPORT
Definition: FMTutility.h:125
Yield handler for age based yields, as seen in the yield section with _AGE.
Definition: FMTAgeYieldHandler.h:24
FMTAgeYieldHandler(const FMTMask &p_mask)
Construct an age yield handler from a mask.
virtual int getEndPoint(const std::string &yld, const int &lowerstep, const double &bound, const double &value) const
Return the age at which a yield reaches a bound value.
virtual bool pushData(const std::string &yld, const FMTData &data)
Push data for a yield.
~FMTAgeYieldHandler()=default
Default destructor for FMTAgeYieldHandler.
virtual double get(const std::string &yld, const FMTYieldRequest &request) const
Get the value of a yield for a request.
virtual bool empty() const
Return true if the handler is empty.
virtual void setYieldValues(const std::string &yldname, const std::vector< int > &baseages, const std::vector< double > &values)
Set the values for a given yield name.
virtual int getAge(const FMTYieldRequest &request, const FMTSpec &spec) const
Return the age of a development from a request and a specification.
virtual size_t size() const
Return the number of yields in the handler.
virtual FMTData & operator[](const std::string &yldname)
Access the data of a yield.
virtual FMTyldtype getType() const
Return the type of the yield handler.
virtual double getYieldLinearValue(const std::string &yldname, const FMTYieldRequest &request, bool allowoutofrange=true) const
Return the linearly interpolated value of a yield for a request.
FMTAgeYieldHandler(const FMTYieldHandler &rhs)
Construct an age yield handler from a yield handler.
FMTAgeYieldHandler(const FMTAgeYieldHandler &rhs)=default
Copy constructor for FMTAgeYieldHandler.
virtual std::unique_ptr< FMTYieldHandler > clone() const
Clone the age yield handler.
virtual const FMTData & at(const std::string &yldname) const
Access the data of a yield.
virtual void clearCache()
Clear the cache of the handler.
virtual bool containsYield(const std::string &yldname) const
Return true if the handler contains a given yield.
virtual double getPeakfrom(const std::string &yld, double maxvalue=std::numeric_limits< double >::lowest()) const
Return the peak value of a yield from a maximum value.
virtual std::unique_ptr< FMTYieldHandler > getFromFactor(const double &factor, std::vector< std::string >yieldnames=std::vector< std::string >()) const
Multiply the handler by a factor and return a new handler.
virtual bool pushData(const std::string &yld, const double &value)
Push a value for a yield.
FMTAgeYieldHandler()=default
Default constructor for FMTAgeYieldHandler.
virtual double getLastValue(const std::string yld) const
Return the last value of a yield.
virtual std::vector< std::string > getYieldNames() const
Return the yield names of the handler.
virtual std::map< std::string, std::vector< double > > getAllYieldsData(const int &maxbase) const
Return all the yield data up to a maximum base age.
virtual double getPeak(const FMTYieldRequest &request, const std::string &yld, const int &targetage) const
Return the peak value of a yield for a request.
Data of a yield holding the values, sources and operators used to compute complex yields.
Definition: FMTData.h:36
Core class holding, as a boost dynamic bitset, which theme attributes are part of a mask.
Definition: FMTMask.h:96
Base class for yield handlers, holding a mask and the base ages of the yields.
Definition: FMTYieldHandler.h:80
Request for yield values using a development and optionally a graph vertex.
Definition: FMTYieldRequest.h:37
The Core namespace provides classes for simulating stands/strata growth/harvest through time.
Definition: FMTAction.h:34
FMTyldtype
Enumerator describing the type of a yield (age, time, complex, model).
Definition: FMTutility.h:62