49 if (coeffs.size() != PolySize)
52 <<
"Size mismatch: Needed " << PolySize
53 <<
" but given " << label(coeffs.size())
57 auto iter = coeffs.begin();
58 for (
int i=0; i<PolySize; ++i)
73 for (
int i=0; i<PolySize; ++i)
75 this->
v_[i] = coeffs[i];
87 if (coeffs.
size() != PolySize)
90 <<
"Size mismatch: Needed " << PolySize
91 <<
" but given " << coeffs.
size()
95 for (
int i = 0; i < PolySize; ++i)
97 this->
v_[i] = coeffs[i];
102template<
int PolySize>
111template<
int PolySize>
118 const word isName(is);
123 <<
"Expected polynomial name " <<
name <<
" but read " << isName
137template<
int PolySize>
144template<
int PolySize>
151template<
int PolySize>
154 scalar val = this->v_[0];
158 for (label i=1; i<PolySize; ++i)
160 val += this->v_[i]*powX;
166 val += logCoeff_*
log(
x);
173template<
int PolySize>
181 deriv += this->v_[1];
184 for (label i=2; i<PolySize; ++i)
186 deriv += i*this->v_[i]*powX;
193 deriv += logCoeff_/
x;
200template<
int PolySize>
211 scalar integ = this->v_[0]*(powX2 - powX1);
212 for (label i=1; i<PolySize; ++i)
216 integ += this->v_[i]/(i + 1)*(powX2 - powX1);
221 integ += logCoeff_*((x2*
log(x2) - x2) - (x1*
log(x1) - x1));
228template<
int PolySize>
234 newCoeffs[0] = intConstant;
237 newCoeffs[i+1] = this->v_[i]/(i + 1);
244template<
int PolySize>
250 if (this->v_[0] > VSMALL)
252 newCoeffs.logActive_ =
true;
253 newCoeffs.logCoeff_ = this->v_[0];
256 newCoeffs[0] = intConstant;
257 for (label i=1; i<PolySize; ++i)
259 newCoeffs[i] = this->v_[i]/i;
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Polynomial templated on size (order):
scalar logCoeff() const
Return the log coefficient.
Polynomial()
Default construct, with all coefficients = 0.
scalar derivative(const scalar x) const
Return derivative of the polynomial at the given x.
bool logActive() const
Return true if the log term is active.
polyType integralMinus1(const scalar intConstant=0.0) const
Return integral coefficients when lowest order is -1.
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
void size(const label n)
Older name for setAddressableSize.
scalar v_[Ncmpts]
The components of this vector space.
A class for handling words, derived from Foam::string.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
dimensionedScalar log(const dimensionedScalar &ds)
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
errorManipArg< error, int > exit(error &err, const int errNo=1)
constexpr char nl
The newline '\n' character (0x0a)
#define forAll(list, i)
Loop across all elements in list.