From e72b2557d50085a3c089a042fe89b6e502e9de09 Mon Sep 17 00:00:00 2001 From: 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 d7c517d1b..9d0220f61 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 b7234bc68..f4abc331f 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 70ccf2a18..3f79add31 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 cmptMultiply } +template +inline VectorSpace cmptPow +( + const VectorSpace& vs1, + const VectorSpace& vs2 +) +{ + Form v; + VectorSpaceOps::op(v, vs1, vs2, cmptPowOp()); + return v; +} + + template inline VectorSpace cmptDivide ( diff --git a/src/OpenFOAM/primitives/functions/DataEntry/CSV/CSV.C b/src/OpenFOAM/primitives/functions/DataEntry/CSV/CSV.C index 53428cb12..ad7e75b70 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