From e730fbec127c684eb5736b7e52d0eaceac843139 Mon Sep 17 00:00:00 2001 From: mattijs <mattijs> Date: Wed, 8 Feb 2012 13:46:31 +0000 Subject: [PATCH] ENH: polynomial: added constructor from components --- .../DataEntry/polynomial/polynomial.C | 51 ++++++++++++++++++- .../DataEntry/polynomial/polynomial.H | 3 ++ 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomial.C b/src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomial.C index 34c595f8acf..c9c8ba3f654 100644 --- a/src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomial.C +++ b/src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomial.C @@ -31,8 +31,11 @@ License namespace Foam { defineTypeNameAndDebug(polynomial, 0); + DataEntry<scalar>::adddictionaryConstructorToTable<polynomial> + addpolynomialConstructorToTable_; } + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::polynomial::polynomial(const word& entryName, const dictionary& dict) @@ -48,7 +51,7 @@ Foam::polynomial::polynomial(const word& entryName, const dictionary& dict) if (!coeffs_.size()) { - FatalErrorIn("Foam::polynomial::polynomial(const word&, Istream&)") + FatalErrorIn("Foam::polynomial::polynomial(const word&, dictionary&)") << "polynomial coefficients for entry " << this->name_ << " are invalid (empty)" << nl << exit(FatalError); } @@ -66,7 +69,7 @@ Foam::polynomial::polynomial(const word& entryName, const dictionary& dict) { if (!canIntegrate_) { - WarningIn("Foam::polynomial::polynomial(const word&, Istream&)") + WarningIn("Foam::polynomial::polynomial(const word&, dictionary&)") << "Polynomial " << this->name_ << " cannot be integrated" << endl; } @@ -74,6 +77,50 @@ Foam::polynomial::polynomial(const word& entryName, const dictionary& dict) } +Foam::polynomial::polynomial +( + const word& entryName, + const List<Tuple2<scalar, scalar> >& coeffs +) +: + DataEntry<scalar>(entryName), + coeffs_(coeffs), + canIntegrate_(true) +{ + if (!coeffs_.size()) + { + FatalErrorIn + ( + "Foam::polynomial::polynomial" + "(const word&, const List<Tuple2<scalar, scalar> >&&)" + ) << "polynomial coefficients for entry " << this->name_ + << " are invalid (empty)" << nl << exit(FatalError); + } + + forAll(coeffs_, i) + { + if (mag(coeffs_[i].second() + 1) < ROOTVSMALL) + { + canIntegrate_ = false; + break; + } + } + + if (debug) + { + if (!canIntegrate_) + { + WarningIn + ( + "Foam::polynomial::polynomial" + "(const word&, const List<Tuple2<scalar, scalar> >&&)" + ) << "Polynomial " << this->name_ << " cannot be integrated" + << endl; + } + } +} + + Foam::polynomial::polynomial(const polynomial& poly) : DataEntry<scalar>(poly), diff --git a/src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomial.H b/src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomial.H index 2ed38a9f322..2c2cbcb30fc 100644 --- a/src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomial.H +++ b/src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomial.H @@ -96,6 +96,9 @@ public: polynomial(const word& entryName, const dictionary& dict); + //- Construct from components + polynomial(const word& entryName, const List<Tuple2<scalar, scalar> >&); + //- Copy constructor polynomial(const polynomial& poly); -- GitLab