This class implements a one dimensional piecewise linear interpolation algorithm.
Definition at line 25 of file PiecewiseLinearInterpolation.h.
#include <PiecewiseLinearInterpolation.h>
Public Member Functions | |
PiecewiseLinearInterpolation (std::vector< double > supporting_points, std::vector< double > values_at_supp_pnts, bool supp_pnts_sorted=false) | |
double | getValue (double pnt_to_interpolate) const |
Calculates the interpolation value. | |
double | getDerivative (double const pnt_to_interpolate) const |
Calculates derivative using quadratic interpolation and central difference quotient. | |
double | getSupportMax () const |
double | getSupportMin () const |
Protected Attributes | |
std::vector< double > | supp_pnts_ |
std::vector< double > | values_at_supp_pnts_ |
MathLib::PiecewiseLinearInterpolation::PiecewiseLinearInterpolation | ( | std::vector< double > | supporting_points, |
std::vector< double > | values_at_supp_pnts, | ||
bool | supp_pnts_sorted = false ) |
The constructor copies the entries of the vector of supporting points (x_0, x_1, \dots, x_n) and the entries of the vector of values at the supporting points (y_0, y_1, \dots, y_n) where n is the number of entries of the vector. The number of supporting points must be the same like the number of values at the supporting points. It is assumed that x_j corresponds to y_j for all j \in [0, n].
It is not assumed that the supporting points are sorted, i.e. x_0 < x_1 < \dots < x_n. It is assumed, that the supporting points are pairwise different. The user can set the flag supp_pnts_sorted to true, if the supporting points are sorted. This will save some setup time.
supporting_points | vector of supporting points |
values_at_supp_pnts | vector of values at the supporting points |
supp_pnts_sorted | false (default), if it is sure the supporting points are sorted one can set the switch to true |
Definition at line 25 of file PiecewiseLinearInterpolation.cpp.
References OGS_FATAL, BaseLib::quicksort(), supp_pnts_, and values_at_supp_pnts_.
double MathLib::PiecewiseLinearInterpolation::getDerivative | ( | double const | pnt_to_interpolate | ) | const |
Calculates derivative using quadratic interpolation and central difference quotient.
pnt_to_interpolate | The point should be located within the range [x_{\min}, x_{\max}], where x_{\min} = \min_{1 \le j \le n} x_j and x_{\max} = \max_{1 \le j \le n} x_j. when points are located outside of this interval, the derivative is set to 0. |
Definition at line 82 of file PiecewiseLinearInterpolation.cpp.
References supp_pnts_, and values_at_supp_pnts_.
Referenced by MaterialPropertyLib::Curve::dValue(), and MathLib::PiecewiseLinearMonotonicCurve::isStrongMonotonic().
double MathLib::PiecewiseLinearInterpolation::getSupportMax | ( | ) | const |
Definition at line 125 of file PiecewiseLinearInterpolation.cpp.
References supp_pnts_.
Referenced by ProcessLib::DeactivatedSubdomainDirichlet::getEssentialBCValues(), and ProcessLib::DeactivatedSubdomain::isInTimeSupportInterval().
double MathLib::PiecewiseLinearInterpolation::getSupportMin | ( | ) | const |
Definition at line 130 of file PiecewiseLinearInterpolation.cpp.
References supp_pnts_.
Referenced by ProcessLib::DeactivatedSubdomainDirichlet::getEssentialBCValues(), and ProcessLib::DeactivatedSubdomain::isInTimeSupportInterval().
double MathLib::PiecewiseLinearInterpolation::getValue | ( | double | pnt_to_interpolate | ) | const |
Calculates the interpolation value.
pnt_to_interpolate | The point should be located within the range [x_{\min}, x_{\max}], where x_{\min} = \min_{1 \le j \le n} x_j and x_{\max} = \max_{1 \le j \le n} x_j. Points outside of this interval are set to x_{\min} or x_{\max}. |
Definition at line 51 of file PiecewiseLinearInterpolation.cpp.
References supp_pnts_, and values_at_supp_pnts_.
Referenced by ProcessLib::DeactivatedSubdomain::isDeactivated(), ParameterLib::CurveScaledParameter< T >::operator()(), ParameterLib::FunctionParameter< T >::CurveWrapper::operator()(), ProcessLib::HeatTransportBHE::BHE::BuildingPowerCurveConstantFlow::operator()(), ProcessLib::HeatTransportBHE::BHE::FixedPowerFlowCurve::operator()(), ProcessLib::HeatTransportBHE::BHE::PowerCurveConstantFlow::operator()(), ProcessLib::HeatTransportBHE::BHE::PowerCurveFlowCurve::operator()(), ProcessLib::HeatTransportBHE::BHE::TemperatureCurveConstantFlow::operator()(), ProcessLib::HeatTransportBHE::BHE::TemperatureCurveFlowCurve::operator()(), and MaterialPropertyLib::Curve::value().
|
protected |
Definition at line 79 of file PiecewiseLinearInterpolation.h.
Referenced by PiecewiseLinearInterpolation(), getDerivative(), MathLib::PiecewiseLinearMonotonicCurve::getInverseVariable(), getSupportMax(), getSupportMin(), getValue(), and MathLib::PiecewiseLinearMonotonicCurve::isStrongMonotonic().
|
protected |
Definition at line 80 of file PiecewiseLinearInterpolation.h.
Referenced by PiecewiseLinearInterpolation(), getDerivative(), MathLib::PiecewiseLinearMonotonicCurve::getInverseVariable(), and getValue().