From bf7f5e627f082dc6f2ce75ab2c935a3d4f52a36b Mon Sep 17 00:00:00 2001 From: Henry <Henry> Date: Fri, 6 Feb 2015 09:57:20 +0000 Subject: [PATCH] PolynomialEntry: Templated polynomial DataEntry to support all basic field types from scalar to tensor This allows polynomial functions for e.g. velocity to be specified in the uniformFixedValue BC Consider a linear function for Ux(t) with Uy and Uz = 0: inlet { type uniformFixedValue; uniformValue polynomial ( ((10 0 0) (0 0 0)) ((100 0 0) (1 0 0)) ); } Resolves bug report http://www.openfoam.org/mantisbt/view.php?id=1508 --- src/OpenFOAM/Make/files | 2 - src/OpenFOAM/primitives/Scalar/Scalar.H | 8 +- .../primitives/VectorSpace/VectorSpaceI.H | 15 +- .../primitives/functions/DataEntry/CSV/CSV.C | 17 ++- .../functions/DataEntry/Constant/Constant.C | 3 +- .../functions/DataEntry/Constant/ConstantIO.C | 4 +- .../PolynomialEntry.C} | 133 +++++++++++------- .../PolynomialEntry.H} | 78 +++++----- .../PolynomialEntryIO.C} | 18 +-- .../functions/DataEntry/makeDataEntries.C | 11 +- src/OpenFOAM/primitives/ops/ops.H | 3 +- .../derived/fan/fanFvPatchFields.C | 6 +- .../uniformFixedGradientFvPatchField.C | 27 ++-- .../uniformFixedValueFvPatchField.C | 29 ++-- 14 files changed, 210 insertions(+), 144 deletions(-) rename src/OpenFOAM/primitives/functions/DataEntry/{polynomial/polynomial.C => PolynomialEntry/PolynomialEntry.C} (50%) rename src/OpenFOAM/primitives/functions/DataEntry/{polynomial/polynomial.H => PolynomialEntry/PolynomialEntry.H} (63%) rename src/OpenFOAM/primitives/functions/DataEntry/{polynomial/polynomialIO.C => PolynomialEntry/PolynomialEntryIO.C} (78%) diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files index d7c517d1b1c..9d0220f61f0 100644 --- a/src/OpenFOAM/Make/files +++ b/src/OpenFOAM/Make/files @@ -73,8 +73,6 @@ primitives/triad/triad.C /* functions, data entries */ primitives/functions/DataEntry/makeDataEntries.C -primitives/functions/DataEntry/polynomial/polynomial.C -primitives/functions/DataEntry/polynomial/polynomialIO.C primitives/functions/Polynomial/polynomialFunction.C diff --git a/src/OpenFOAM/primitives/Scalar/Scalar.H b/src/OpenFOAM/primitives/Scalar/Scalar.H index b7234bc6851..f4abc331feb 100644 --- a/src/OpenFOAM/primitives/Scalar/Scalar.H +++ b/src/OpenFOAM/primitives/Scalar/Scalar.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -226,6 +226,12 @@ inline Scalar cmptMultiply(const Scalar s1, const Scalar s2) } +inline Scalar cmptPow(const Scalar s1, const Scalar s2) +{ + return pow(s1, s2); +} + + inline Scalar cmptDivide(const Scalar s1, const Scalar s2) { return s1/s2; diff --git a/src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H b/src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H index 70ccf2a1856..3f79add31b3 100644 --- a/src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H +++ b/src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -346,6 +346,19 @@ inline VectorSpace<Form, Cmpt, nCmpt> cmptMultiply } +template<class Form, class Cmpt, int nCmpt> +inline VectorSpace<Form, Cmpt, nCmpt> cmptPow +( + const VectorSpace<Form, Cmpt, nCmpt>& vs1, + const VectorSpace<Form, Cmpt, nCmpt>& vs2 +) +{ + Form v; + VectorSpaceOps<nCmpt,0>::op(v, vs1, vs2, cmptPowOp<Cmpt>()); + return v; +} + + template<class Form, class Cmpt, int nCmpt> inline VectorSpace<Form, Cmpt, nCmpt> cmptDivide ( diff --git a/src/OpenFOAM/primitives/functions/DataEntry/CSV/CSV.C b/src/OpenFOAM/primitives/functions/DataEntry/CSV/CSV.C index 53428cb126d..ad7e75b70b7 100644 --- a/src/OpenFOAM/primitives/functions/DataEntry/CSV/CSV.C +++ b/src/OpenFOAM/primitives/functions/DataEntry/CSV/CSV.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,7 +31,20 @@ License namespace Foam { - // doesn't recognize specialization otherwise + template<> + label CSV<label>::readValue(const List<string>& splitted) + { + if (componentColumns_[0] >= splitted.size()) + { + FatalErrorIn("CSV<label>::readValue(const List<string>&)") + << "No column " << componentColumns_[0] << " in " + << splitted << endl + << exit(FatalError); + } + + return readLabel(IStringStream(splitted[componentColumns_[0]])()); + } + template<> scalar CSV<scalar>::readValue(const List<string>& splitted) { diff --git a/src/OpenFOAM/primitives/functions/DataEntry/Constant/Constant.C b/src/OpenFOAM/primitives/functions/DataEntry/Constant/Constant.C index a1b7f4777b1..e4f60195a84 100644 --- a/src/OpenFOAM/primitives/functions/DataEntry/Constant/Constant.C +++ b/src/OpenFOAM/primitives/functions/DataEntry/Constant/Constant.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -103,6 +103,7 @@ Foam::dimensioned<Type> Foam::Constant<Type>::dimIntegrate return dimensioned<Type>("dimensionedValue", dimensions_, (x2-x1)*value_); } + // * * * * * * * * * * * * * * IOStream operators * * * * * * * * * * * * * // #include "ConstantIO.C" diff --git a/src/OpenFOAM/primitives/functions/DataEntry/Constant/ConstantIO.C b/src/OpenFOAM/primitives/functions/DataEntry/Constant/ConstantIO.C index e61a92e0863..c25e9b9f4c0 100644 --- a/src/OpenFOAM/primitives/functions/DataEntry/Constant/ConstantIO.C +++ b/src/OpenFOAM/primitives/functions/DataEntry/Constant/ConstantIO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,7 +23,7 @@ License \*---------------------------------------------------------------------------*/ -#include "DataEntry.H" +#include "Constant.H" // * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomial.C b/src/OpenFOAM/primitives/functions/DataEntry/PolynomialEntry/PolynomialEntry.C similarity index 50% rename from src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomial.C rename to src/OpenFOAM/primitives/functions/DataEntry/PolynomialEntry/PolynomialEntry.C index cfbaec74247..e5cc7d1da04 100644 --- a/src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomial.C +++ b/src/OpenFOAM/primitives/functions/DataEntry/PolynomialEntry/PolynomialEntry.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,24 +23,18 @@ License \*---------------------------------------------------------------------------*/ -#include "polynomial.H" -#include "Time.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -namespace Foam -{ - defineTypeNameAndDebug(polynomial, 0); - addToRunTimeSelectionTable(scalarDataEntry, polynomial, dictionary); -} - +#include "PolynomialEntry.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::polynomial::polynomial(const word& entryName, const dictionary& dict) +template<class Type> +Foam::PolynomialEntry<Type>::PolynomialEntry +( + const word& entryName, + const dictionary& dict +) : - scalarDataEntry(entryName), + DataEntry<Type>(entryName), coeffs_(), canIntegrate_(true), dimensions_(dimless) @@ -61,14 +55,15 @@ Foam::polynomial::polynomial(const word& entryName, const dictionary& dict) { FatalErrorIn ( - "Foam::polynomial::polynomial(const word&, const dictionary&)" - ) << "polynomial coefficients for entry " << this->name_ + "PolynomialEntry<Type>::" + "PolynomialEntry(const word&, const dictionary&)" + ) << "PolynomialEntry coefficients for entry " << this->name_ << " are invalid (empty)" << nl << exit(FatalError); } forAll(coeffs_, i) { - if (mag(coeffs_[i].second() + 1) < ROOTVSMALL) + if (mag(coeffs_[i].second() + pTraits<Type>::one) < ROOTVSMALL) { canIntegrate_ = false; break; @@ -81,21 +76,23 @@ Foam::polynomial::polynomial(const word& entryName, const dictionary& dict) { WarningIn ( - "Foam::polynomial::polynomial(const word&, const dictionary&)" - ) << "Polynomial " << this->name_ << " cannot be integrated" + "PolynomialEntry<Type>::PolynomialEntry" + "(const word&, const dictionary&)" + ) << "PolynomialEntry " << this->name_ << " cannot be integrated" << endl; } } } -Foam::polynomial::polynomial +template<class Type> +Foam::PolynomialEntry<Type>::PolynomialEntry ( const word& entryName, - const List<Tuple2<scalar, scalar> >& coeffs + const List<Tuple2<Type, Type> >& coeffs ) : - scalarDataEntry(entryName), + DataEntry<Type>(entryName), coeffs_(coeffs), canIntegrate_(true), dimensions_(dimless) @@ -104,9 +101,9 @@ Foam::polynomial::polynomial { FatalErrorIn ( - "Foam::polynomial::polynomial" - "(const word&, const List<Tuple2<scalar, scalar> >&)" - ) << "polynomial coefficients for entry " << this->name_ + "Foam::PolynomialEntry<Type>::PolynomialEntry" + "(const word&, const List<Tuple2<Type, Type> >&)" + ) << "PolynomialEntry coefficients for entry " << this->name_ << " are invalid (empty)" << nl << exit(FatalError); } @@ -125,18 +122,19 @@ Foam::polynomial::polynomial { WarningIn ( - "Foam::polynomial::polynomial" - "(const word&, const List<Tuple2<scalar, scalar> >&)" - ) << "Polynomial " << this->name_ << " cannot be integrated" + "Foam::PolynomialEntry<Type>::PolynomialEntry" + "(const word&, const List<Tuple2<Type, Type> >&)" + ) << "PolynomialEntry " << this->name_ << " cannot be integrated" << endl; } } } -Foam::polynomial::polynomial(const polynomial& poly) +template<class Type> +Foam::PolynomialEntry<Type>::PolynomialEntry(const PolynomialEntry& poly) : - scalarDataEntry(poly), + DataEntry<Type>(poly), coeffs_(poly.coeffs_), canIntegrate_(poly.canIntegrate_), dimensions_(poly.dimensions_) @@ -145,48 +143,76 @@ Foam::polynomial::polynomial(const polynomial& poly) // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::polynomial::~polynomial() +template<class Type> +Foam::PolynomialEntry<Type>::~PolynomialEntry() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::polynomial::convertTimeBase(const Time& t) +template<class Type> +void Foam::PolynomialEntry<Type>::convertTimeBase(const Time& t) { forAll(coeffs_, i) { - scalar value = coeffs_[i].first(); - coeffs_[i].first() = t.userTimeToTime(value); + Type value = coeffs_[i].first(); + for (direction cmpt = 0; cmpt < pTraits<Type>::nComponents; cmpt++) + { + setComponent(coeffs_[i].first(), cmpt) = + t.userTimeToTime(component(value, cmpt)); + } } } -Foam::scalar Foam::polynomial::value(const scalar x) const +template<class Type> +Type Foam::PolynomialEntry<Type>::value(const scalar x) const { - scalar y = 0.0; + Type y(pTraits<Type>::zero); forAll(coeffs_, i) { - y += coeffs_[i].first()*pow(x, coeffs_[i].second()); + y += cmptMultiply + ( + coeffs_[i].first(), + cmptPow(pTraits<Type>::one*x, coeffs_[i].second()) + ); } return y; } -Foam::scalar Foam::polynomial::integrate(const scalar x1, const scalar x2) const +template<class Type> +Type Foam::PolynomialEntry<Type>::integrate +( + const scalar x1, + const scalar x2 +) const { - scalar intx = 0.0; + Type intx(pTraits<Type>::zero); if (canIntegrate_) { forAll(coeffs_, i) { - intx += - coeffs_[i].first()/(coeffs_[i].second() + 1) - *( - pow(x2, coeffs_[i].second() + 1) - - pow(x1, coeffs_[i].second() + 1) - ); + intx += cmptMultiply + ( + cmptDivide + ( + coeffs_[i].first(), + coeffs_[i].second() + pTraits<Type>::one + ), + cmptPow + ( + pTraits<Type>::one*x2, + coeffs_[i].second() + pTraits<Type>::one + ) + - cmptPow + ( + pTraits<Type>::one*x1, + coeffs_[i].second() + pTraits<Type>::one + ) + ); } } @@ -194,22 +220,24 @@ Foam::scalar Foam::polynomial::integrate(const scalar x1, const scalar x2) const } -Foam::dimensioned<Foam::scalar> Foam::polynomial::dimValue +template<class Type> +Foam::dimensioned<Type> Foam::PolynomialEntry<Type>::dimValue ( const scalar x ) const { - return dimensioned<scalar>("dimensionedValue", dimensions_, value(x)); + return dimensioned<Type>("dimensionedValue", dimensions_, value(x)); } -Foam::dimensioned<Foam::scalar> Foam::polynomial::dimIntegrate +template<class Type> +Foam::dimensioned<Type> Foam::PolynomialEntry<Type>::dimIntegrate ( const scalar x1, const scalar x2 ) const { - return dimensioned<scalar> + return dimensioned<Type> ( "dimensionedValue", dimensions_, @@ -218,4 +246,9 @@ Foam::dimensioned<Foam::scalar> Foam::polynomial::dimIntegrate } +// * * * * * * * * * * * * * * IOStream operators * * * * * * * * * * * * * // + +#include "PolynomialEntryIO.C" + + // ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomial.H b/src/OpenFOAM/primitives/functions/DataEntry/PolynomialEntry/PolynomialEntry.H similarity index 63% rename from src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomial.H rename to src/OpenFOAM/primitives/functions/DataEntry/PolynomialEntry/PolynomialEntry.H index 3e181c07875..f5a783139f7 100644 --- a/src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomial.H +++ b/src/OpenFOAM/primitives/functions/DataEntry/PolynomialEntry/PolynomialEntry.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,15 +22,15 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::polynomial + Foam::PolynomialEntry Description - Polynomial container data entry for scalars. Items are stored in a list of - Tuple2's. Data is input in the form, e.g. for an entry \<entryName\> that - describes y = x^2 + 2x^3 + PolynomialEntry container data entry for scalars. Items are stored in a + list of Tuple2's. Data is input in the form, + e.g. for an entry \<entryName\> that describes y = x^2 + 2x^3 \verbatim - <entryName> polynomial [0 0 1 0 0] // optional dimensions + <entryName> polynomial [0 0 1 0 0] // optional dimensions ( (1 2) (2 3) @@ -38,12 +38,12 @@ Description \endverbatim SourceFiles - polynomial.C + PolynomialEntry.C \*---------------------------------------------------------------------------*/ -#ifndef polynomial_H -#define polynomial_H +#ifndef PolynomialEntry_H +#define PolynomialEntry_H #include "DataEntry.H" #include "Tuple2.H" @@ -56,27 +56,27 @@ namespace Foam { // Forward declaration of classes -class polynomial; + +template<class Type> +class PolynomialEntry; // Forward declaration of friend functions -Ostream& operator<< -( - Ostream&, - const polynomial& -); +template<class Type> +Ostream& operator<<(Ostream&, const PolynomialEntry<Type>&); /*---------------------------------------------------------------------------*\ - Class polynomial Declaration + Class PolynomialEntry Declaration \*---------------------------------------------------------------------------*/ -class polynomial +template<class Type> +class PolynomialEntry : - public scalarDataEntry + public DataEntry<Type> { // Private data - //- Polynomial coefficients - list of prefactor, exponent - List<Tuple2<scalar, scalar> > coeffs_; + //- PolynomialEntry coefficients - list of prefactor, exponent + List<Tuple2<Type, Type> > coeffs_; //- Flag to indicate whether poly can be integrated bool canIntegrate_; @@ -88,7 +88,7 @@ class polynomial // Private Member Functions //- Disallow default bitwise assignment - void operator=(const polynomial&); + void operator=(const PolynomialEntry<Type>&); public: @@ -99,23 +99,27 @@ public: // Constructors - polynomial(const word& entryName, const dictionary& dict); + PolynomialEntry(const word& entryName, const dictionary& dict); //- Construct from components - polynomial(const word& entryName, const List<Tuple2<scalar, scalar> >&); + PolynomialEntry + ( + const word& entryName, + const List<Tuple2<Type, Type> >& + ); //- Copy constructor - polynomial(const polynomial& poly); + PolynomialEntry(const PolynomialEntry& poly); //- Construct and return a clone - virtual tmp<scalarDataEntry> clone() const + virtual tmp<DataEntry<Type> > clone() const { - return tmp<scalarDataEntry>(new polynomial(*this)); + return tmp<DataEntry<Type> >(new PolynomialEntry(*this)); } //- Destructor - virtual ~polynomial(); + virtual ~PolynomialEntry(); // Member Functions @@ -128,17 +132,17 @@ public: // Evaluation - //- Return polynomial value - scalar value(const scalar x) const; + //- Return PolynomialEntry value + Type value(const scalar x) const; //- Integrate between two (scalar) values - scalar integrate(const scalar x1, const scalar x2) const; + Type integrate(const scalar x1, const scalar x2) const; //- Return dimensioned constant value - dimensioned<scalar> dimValue(const scalar) const; + dimensioned<Type> dimValue(const scalar) const; //- Integrate between two values and return dimensioned type - dimensioned<scalar> dimIntegrate + dimensioned<Type> dimIntegrate ( const scalar x1, const scalar x2 @@ -148,10 +152,10 @@ public: // I/O //- Ostream Operator - friend Ostream& operator<< + friend Ostream& operator<< <Type> ( Ostream& os, - const polynomial& cnst + const PolynomialEntry<Type>& cnst ); //- Write in dictionary format @@ -165,6 +169,12 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +#ifdef NoRepository +# include "PolynomialEntry.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + #endif // ************************************************************************* // diff --git a/src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomialIO.C b/src/OpenFOAM/primitives/functions/DataEntry/PolynomialEntry/PolynomialEntryIO.C similarity index 78% rename from src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomialIO.C rename to src/OpenFOAM/primitives/functions/DataEntry/PolynomialEntry/PolynomialEntryIO.C index 45a3d279896..af6dacdb487 100644 --- a/src/OpenFOAM/primitives/functions/DataEntry/polynomial/polynomialIO.C +++ b/src/OpenFOAM/primitives/functions/DataEntry/PolynomialEntry/PolynomialEntryIO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,24 +23,25 @@ License \*---------------------------------------------------------------------------*/ -#include "polynomial.H" +#include "PolynomialEntry.H" // * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // +template<class Type> Foam::Ostream& Foam::operator<< ( Ostream& os, - const polynomial& poly + const PolynomialEntry<Type>& poly ) { if (os.format() == IOstream::ASCII) { - os << static_cast<const DataEntry<scalar>& >(poly) + os << static_cast<const DataEntry<Type>& >(poly) << token::SPACE << poly.coeffs_; } else { - os << static_cast<const DataEntry<scalar>& >(poly); + os << static_cast<const DataEntry<Type>& >(poly); os.write ( reinterpret_cast<const char*>(&poly.coeffs_), @@ -51,16 +52,17 @@ Foam::Ostream& Foam::operator<< // Check state of Ostream os.check ( - "Ostream& operator<<(Ostream&, const polynomial&)" + "Ostream& operator<<(Ostream&, const PolynomialEntry&)" ); return os; } -void Foam::polynomial::writeData(Ostream& os) const +template<class Type> +void Foam::PolynomialEntry<Type>::writeData(Ostream& os) const { - DataEntry<scalar>::writeData(os); + DataEntry<Type>::writeData(os); os << nl << indent << coeffs_ << token::END_STATEMENT << nl; } diff --git a/src/OpenFOAM/primitives/functions/DataEntry/makeDataEntries.C b/src/OpenFOAM/primitives/functions/DataEntry/makeDataEntries.C index 78935f0b803..0289025c0d4 100644 --- a/src/OpenFOAM/primitives/functions/DataEntry/makeDataEntries.C +++ b/src/OpenFOAM/primitives/functions/DataEntry/makeDataEntries.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,6 +25,7 @@ License #include "CompatibilityConstant.H" #include "Constant.H" +#include "PolynomialEntry.H" #include "CSV.H" #include "DataEntry.H" #include "Table.H" @@ -42,13 +43,15 @@ namespace Foam makeDataEntry(label); makeDataEntryType(CompatibilityConstant, label); makeDataEntryType(Constant, label); -// makeDataEntryType(CSV, label); + //makeDataEntryType(PolynomialEntry, label); + makeDataEntryType(CSV, label); makeDataEntryType(Table, label); makeDataEntryType(TableFile, label); makeDataEntry(scalar); makeDataEntryType(CompatibilityConstant, scalar); makeDataEntryType(Constant, scalar); + makeDataEntryType(PolynomialEntry, scalar); makeDataEntryType(CSV, scalar); makeDataEntryType(Table, scalar); makeDataEntryType(TableFile, scalar); @@ -56,6 +59,7 @@ namespace Foam makeDataEntry(vector); makeDataEntryType(CompatibilityConstant, vector); makeDataEntryType(Constant, vector); + makeDataEntryType(PolynomialEntry, vector); makeDataEntryType(CSV, vector); makeDataEntryType(Table, vector); makeDataEntryType(TableFile, vector); @@ -63,6 +67,7 @@ namespace Foam makeDataEntry(sphericalTensor); makeDataEntryType(CompatibilityConstant, sphericalTensor); makeDataEntryType(Constant, sphericalTensor); + makeDataEntryType(PolynomialEntry, sphericalTensor); makeDataEntryType(CSV, sphericalTensor); makeDataEntryType(Table, sphericalTensor); makeDataEntryType(TableFile, sphericalTensor); @@ -70,6 +75,7 @@ namespace Foam makeDataEntry(symmTensor); makeDataEntryType(CompatibilityConstant, symmTensor); makeDataEntryType(Constant, symmTensor); + makeDataEntryType(PolynomialEntry, symmTensor); makeDataEntryType(CSV, symmTensor); makeDataEntryType(Table, symmTensor); makeDataEntryType(TableFile, symmTensor); @@ -77,6 +83,7 @@ namespace Foam makeDataEntry(tensor); makeDataEntryType(CompatibilityConstant, tensor); makeDataEntryType(Constant, tensor); + makeDataEntryType(PolynomialEntry, tensor); makeDataEntryType(CSV, tensor); makeDataEntryType(Table, tensor); makeDataEntryType(TableFile, tensor); diff --git a/src/OpenFOAM/primitives/ops/ops.H b/src/OpenFOAM/primitives/ops/ops.H index cd95fca27f1..24c72d24ecf 100644 --- a/src/OpenFOAM/primitives/ops/ops.H +++ b/src/OpenFOAM/primitives/ops/ops.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -166,6 +166,7 @@ Op(minus, x - y) Op(multiply, x * y) Op(divide, x / y) Op(cmptMultiply, cmptMultiply(x, y)) +Op(cmptPow, cmptPow(x, y)) Op(cmptDivide, cmptDivide(x, y)) Op(stabilise, stabilise(x, y)) Op(max, max(x, y)) diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C b/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C index 4c76bb0b9c2..40b07773860 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,7 +28,7 @@ License #include "volFields.H" #include "surfaceFields.H" #include "Tuple2.H" -#include "polynomial.H" +#include "PolynomialEntry.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -107,7 +107,7 @@ Foam::fanFvPatchField<Foam::scalar>::fanFvPatchField this->jumpTable_.reset ( - new polynomial("jumpTable", coeffs) + new PolynomialEntry<scalar>("jumpTable", coeffs) ); } else diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.C index 877e413dbed..566093591a0 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,15 +25,10 @@ License #include "uniformFixedGradientFvPatchField.H" -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template<class Type> -uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField +Foam::uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField ( const fvPatch& p, const DimensionedField<Type, volMesh>& iF @@ -45,7 +40,7 @@ uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField template<class Type> -uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField +Foam::uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField ( const fvPatch& p, const DimensionedField<Type, volMesh>& iF, @@ -58,7 +53,7 @@ uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField template<class Type> -uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField +Foam::uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField ( const uniformFixedGradientFvPatchField<Type>& ptf, const fvPatch& p, @@ -76,7 +71,7 @@ uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField template<class Type> -uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField +Foam::uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField ( const fvPatch& p, const DimensionedField<Type, volMesh>& iF, @@ -99,7 +94,7 @@ uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField template<class Type> -uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField +Foam::uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField ( const uniformFixedGradientFvPatchField<Type>& ptf ) @@ -115,7 +110,7 @@ uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField template<class Type> -uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField +Foam::uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField ( const uniformFixedGradientFvPatchField<Type>& ptf, const DimensionedField<Type, volMesh>& iF @@ -142,7 +137,7 @@ uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class Type> -void uniformFixedGradientFvPatchField<Type>::updateCoeffs() +void Foam::uniformFixedGradientFvPatchField<Type>::updateCoeffs() { if (this->updated()) { @@ -157,7 +152,7 @@ void uniformFixedGradientFvPatchField<Type>::updateCoeffs() template<class Type> -void uniformFixedGradientFvPatchField<Type>::write(Ostream& os) const +void Foam::uniformFixedGradientFvPatchField<Type>::write(Ostream& os) const { fixedGradientFvPatchField<Type>::write(os); uniformGradient_->writeData(os); @@ -165,8 +160,4 @@ void uniformFixedGradientFvPatchField<Type>::write(Ostream& os) const } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.C index 20fb99a0b30..11c8a886858 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,15 +25,10 @@ License #include "uniformFixedValueFvPatchField.H" -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template<class Type> -uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField +Foam::uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField ( const fvPatch& p, const DimensionedField<Type, volMesh>& iF @@ -45,7 +40,7 @@ uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField template<class Type> -uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField +Foam::uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField ( const fvPatch& p, const DimensionedField<Type, volMesh>& iF, @@ -58,7 +53,7 @@ uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField template<class Type> -uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField +Foam::uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField ( const uniformFixedValueFvPatchField<Type>& ptf, const fvPatch& p, @@ -76,7 +71,7 @@ uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField template<class Type> -uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField +Foam::uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField ( const fvPatch& p, const DimensionedField<Type, volMesh>& iF, @@ -99,7 +94,7 @@ uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField template<class Type> -uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField +Foam::uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField ( const uniformFixedValueFvPatchField<Type>& ptf ) @@ -115,7 +110,7 @@ uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField template<class Type> -uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField +Foam::uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField ( const uniformFixedValueFvPatchField<Type>& ptf, const DimensionedField<Type, volMesh>& iF @@ -142,7 +137,7 @@ uniformFixedValueFvPatchField<Type>::uniformFixedValueFvPatchField // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class Type> -void uniformFixedValueFvPatchField<Type>::updateCoeffs() +void Foam::uniformFixedValueFvPatchField<Type>::updateCoeffs() { if (this->updated()) { @@ -157,16 +152,12 @@ void uniformFixedValueFvPatchField<Type>::updateCoeffs() template<class Type> -void uniformFixedValueFvPatchField<Type>::write(Ostream& os) const +void Foam::uniformFixedValueFvPatchField<Type>::write(Ostream& os) const { - // Note: do not write value fvPatchField<Type>::write(os); uniformValue_->writeData(os); + this->writeEntry("value", os); } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // -- GitLab