FMT 1.2.0
Forest management tools for forest planning
Loading...
Searching...
No Matches
FMTAgeYieldHandler.h
Go to the documentation of this file.
1/*
2Copyright (c) 2019 Gouvernement du Québec
3
4SPDX-License-Identifier: LiLiQ-R-1.1
5License-Filename: LICENSES/EN/LiLiQ-R11unicode.txt
6*/
7
8#ifndef FMTAGEYIELDHANDLER_Hm_included
9#define FMTAGEYIELDHANDLER_Hm_included
10
11#include "FMTYieldHandler.h"
12#include <string>
13#include <boost/serialization/serialization.hpp>
14#include <boost/serialization/nvp.hpp>
15#include "FMTData.h"
16
17namespace Core
18{
19 // DocString: FMTAgeYieldHandler
24 {
25 public:
26 // DocString: FMTAgeYieldHandler::get
33 virtual double get(const std::string& yld, const FMTYieldRequest& request) const;
34 // DocString: FMTAgeYieldHandler::operator std::string
39 virtual operator std::string() const;
40 // DocString: ~FMTAgeYieldHandler()
45 // DocString: FMTAgeYieldHandler()
49 FMTAgeYieldHandler() = default;
50 // DocString: FMTAgeYieldHandler(const FMTAgeYieldHandler&)
56 // DocString: FMTAgeYieldHandler::operator=
62 FMTAgeYieldHandler& operator = (const FMTAgeYieldHandler& rhs) = default;
63 // DocString: FMTAgeYieldHandler(const FMTYieldHandler&)
69 // DocString: FMTAgeYieldHandler(const FMTMask&)
75 // DocString: FMTAgeYieldHandler::setYieldValues
82 virtual void setYieldValues(const std::string& yldname,const std::vector<int>& baseages,const std::vector<double>& values);
83 // DocString: FMTAgeYieldHandler::getLastValue
89 virtual double getLastValue(const std::string yld) const;
90 // DocString: FMTAgeYieldHandler::pushData(const std::string&, const double&)
97 virtual bool pushData(const std::string& yld, const double& value);
98 // DocString: FMTAgeYieldHandler::pushData(const std::string&, const FMTData&)
105 virtual bool pushData(const std::string& yld, const FMTData& data);
106 // DocString: FMTAgeYieldHandler::clone
111 virtual std::unique_ptr<FMTYieldHandler>clone() const;
112 // DocString: FMTAgeYieldHandler::operator==
118 virtual bool operator == (const FMTAgeYieldHandler& rhs) const;
119 // DocString: FMTAgeYieldHandler::empty
124 virtual bool empty() const;
125 // DocString: FMTAgeYieldHandler::size
130 virtual size_t size() const;
131 // DocString: FMTAgeYieldHandler::getType
136 virtual FMTyldtype getType() const;
137 // DocString: FMTAgeYieldHandler::operator[]
143 virtual FMTData& operator[](const std::string& yldname);
144 // DocString: FMTAgeYieldHandler::at
150 virtual const FMTData& at(const std::string& yldname) const;
151 // DocString: FMTAgeYieldHandler::containsYield
157 virtual bool containsYield(const std::string& yldname) const;
158 // DocString: FMTAgeYieldHandler::getYieldNames
163 virtual std::vector<std::string>getYieldNames() const;
164 // DocString: FMTAgeYieldHandler::clearCache
168 virtual void clearCache();
169 // DocString: FMTAgeYieldHandler::getAllYieldsData
175 virtual std::map<std::string, std::vector<double>>getAllYieldsData(const int& maxbase)const;
176 // DocString: FMTAgeYieldHandler::getFromFactor
183 virtual std::unique_ptr<FMTYieldHandler> getFromFactor(const double& factor,
184 std::vector<std::string>yieldnames = std::vector<std::string>()) const;
185 // DocString: FMTAgeYieldHandler::getEndPoint
194 virtual int getEndPoint(const std::string& yld, const int& lowerstep, const double& bound, const double& value) const;
195 // DocString: FMTAgeYieldHandler::getPeak
203 virtual double getPeak(const FMTYieldRequest& request,const std::string& yld, const int& targetage) const;
204 // DocString: FMTAgeYieldHandler::getPeakfrom
211 virtual double getPeakfrom(const std::string& yld, double maxvalue = std::numeric_limits<double>::lowest()) const;
212 // DocString: FMTAgeYieldHandler::getAge(const FMTYieldRequest&, const FMTSpec&)
219 virtual int getAge(const FMTYieldRequest& request, const FMTSpec& spec) const;
220 // DocString: FMTAgeYieldHandler::getYieldLinearValue
228 virtual double getYieldLinearValue(const std::string&yldname, const FMTYieldRequest& request, bool allowoutofrange=true) const;
229 private:
230 friend class boost::serialization::access;
231 // DocString: FMTAgeYieldHandler::serialize
238 template<class Archive>
239 void serialize(Archive& ar, const unsigned int version)
240 {
241 ar& boost::serialization::make_nvp("FMTyieldhandler", boost::serialization::base_object<FMTYieldHandler>(*this));
242 ar& BOOST_SERIALIZATION_NVP(m_elements);
243 }
244 std::map<std::string, FMTData, cmpYieldString>m_elements;
245 // DocString: FMTAgeYieldHandler::_getAge(const std::string, const double&, const int&)
253 int _getAge(const std::string yld, const double& value, const int& starting_age) const;
254 };
255
256}
257
258#endif
259
#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