42 splineInterpolationWeights,
52 const bool checkEqualDistance
58 if (checkEqualDistance && samples_.size() > 2)
60 const scalar interval = samples_[1]-samples[0];
61 for (
label i = 2; i < samples_.size(); i++)
63 scalar d = samples_[i]-samples[i-1];
65 if (
mag(d-interval) > SMALL)
69 "splineInterpolationWeights::splineInterpolationWeights" 70 "(const scalarField&)" 71 ) <<
"Spline interpolation only valid for constant intervals." 73 <<
"Interval 0-1 : " << interval <<
nl 74 <<
"Interval " << i-1 <<
'-' << i <<
" : " 91 bool indexChanged =
false;
94 if (samples_.size() <= 2)
108 && index_ < samples_.size()
110 samples_[index_] <= t
111 && (index_ == samples_.size()-1 || t <= samples_[index_+1])
135 else if (index_ == samples_.size()-1)
140 indices[0] = samples_.
size()-1;
151 scalar
mu = (t - samples_[lo])/(samples_[hi] - samples_[lo]);
153 scalar w0 = 0.5*(mu*(-1+mu*(2-
mu)));
154 scalar w1 = 0.5*(2+mu*(mu*(-5 + mu*(3))));
155 scalar w2 = 0.5*(mu*(1 + mu*(4 + mu*(-3))));
156 scalar w3 = 0.5*(mu*mu*(-1 +
mu));
160 if (hi < samples_.size()-1)
187 weights[1] = w1 - w3;
188 weights[2] = w2 + 2*w3;
194 if (hi < samples_.size()-1)
203 weights[0] = w1 + 2*w0;
204 weights[1] = w2 - w0;
215 weights[0] = w1 + 2*w0 - w3;
216 weights[1] = w2 - w0 + 2*w3;
const dimensionedScalar mu
Atomic mass unit.
virtual bool valueWeights(const scalar t, labelList &indices, scalarField &weights) const
Calculate weights and indices to calculate t from samples.
dimensioned< scalar > mag(const dimensioned< Type > &)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
void size(const label)
Override size to be inconsistent with allocated storage.
Various functions to operate on Lists.
virtual bool valueWeights(const scalar t, labelList &indices, scalarField &weights) const
Calculate weights and indices to calculate t from samples.
void setSize(const label)
Reset size of List.
Ostream & endl(Ostream &os)
Add newline and flush stream.
#define WarningIn(functionName)
Report a warning using Foam::Warning.
Macros for easy insertion into run-time selection tables.
label findLower(const ListType &, typename ListType::const_reference, const label stary, const BinaryOp &bop)
Find last element < given value in sorted list and return index,.
Abstract base class for interpolating in 1D.
splineInterpolationWeights(const scalarField &samples, const bool checkEqualDistance=true)
Construct from components. By default make sure samples are.
addToRunTimeSelectionTable(ensightPart, ensightPartCells, istream)
defineTypeNameAndDebug(combustionModel, 0)