Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "polynomial.H"
00027
00028
00029
00030 namespace Foam
00031 {
00032 defineTypeNameAndDebug(polynomial, 0);
00033 }
00034
00035
00036
00037 Foam::polynomial::polynomial(const word& entryName, Istream& is)
00038 :
00039 DataEntry<scalar>(entryName),
00040 coeffs_(is)
00041 {
00042 if (!coeffs_.size())
00043 {
00044 FatalErrorIn("Foam::polynomial::polynomial(const word&, Istream&)")
00045 << "polynomial coefficients for entry " << this->name_
00046 << " is invalid (empty)" << nl << exit(FatalError);
00047 }
00048 }
00049
00050
00051 Foam::polynomial::polynomial(const polynomial& poly)
00052 :
00053 DataEntry<scalar>(poly),
00054 coeffs_(poly.coeffs_)
00055 {}
00056
00057
00058
00059
00060 Foam::polynomial::~polynomial()
00061 {}
00062
00063
00064
00065
00066 Foam::scalar Foam::polynomial::value(const scalar x) const
00067 {
00068 scalar y = 0.0;
00069 forAll(coeffs_, i)
00070 {
00071 y += coeffs_[i].first()*pow(x, coeffs_[i].second());
00072 }
00073
00074 return y;
00075 }
00076
00077
00078 Foam::scalar Foam::polynomial::integrate(const scalar x1, const scalar x2) const
00079 {
00080 scalar intx = 0.0;
00081
00082 forAll(coeffs_, i)
00083 {
00084 intx +=
00085 coeffs_[i].first()/(coeffs_[i].second() + 1)
00086 *(
00087 pow(x2, coeffs_[i].second() + 1)
00088 - pow(x1, coeffs_[i].second() + 1)
00089 );
00090 }
00091
00092 return intx;
00093 }
00094
00095
00096