From c88507b3eb58a4e8765dbc339bb4621e8df53fc9 Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Tue, 8 Aug 2017 10:16:08 +0100 Subject: [PATCH] Function1: Optimized field evaluations --- .../utilities/postProcessing/noise/noise.C | 6 +- src/OpenFOAM/Make/files | 2 +- .../primitives/functions/Function1/CSV/CSV.H | 6 -- .../functions/Function1/Constant/Constant.C | 15 +++-- .../functions/Function1/Constant/Constant.H | 24 ++++++- .../functions/Function1/Constant/ConstantI.H | 48 ++++++++++++++ .../functions/Function1/Function1/Function1.C | 39 +++++++++--- .../functions/Function1/Function1/Function1.H | 62 ++++++++++++++++--- .../functions/Function1/One/OneConstant.C | 13 ++-- .../functions/Function1/One/OneConstant.H | 16 ++++- .../functions/Function1/One/OneConstantI.H | 48 ++++++++++++++ .../PolynomialEntry/PolynomialEntry.H | 12 +--- .../functions/Function1/Scale/Scale.C | 7 --- .../functions/Function1/Scale/Scale.H | 10 +-- .../functions/Function1/Scale/ScaleI.H | 37 +++++++++++ .../functions/Function1/Sine/Sine.C | 12 ---- .../functions/Function1/Sine/Sine.H | 10 +-- .../functions/Function1/Sine/SineI.H | 42 +++++++++++++ .../functions/Function1/Square/Square.C | 23 ------- .../functions/Function1/Square/Square.H | 10 +-- .../functions/Function1/Square/SquareI.H | 53 ++++++++++++++++ .../functions/Function1/Table/Table.H | 6 -- .../functions/Function1/TableFile/TableFile.H | 6 -- .../functions/Function1/Uniform/Uniform.H | 6 -- .../functions/Function1/Zero/ZeroConstant.C | 18 ------ .../functions/Function1/Zero/ZeroConstant.H | 12 ++-- .../functions/Function1/Zero/ZeroConstantI.H | 51 +++++++++++++++ .../Function1/halfCosineRamp/halfCosineRamp.C | 9 --- .../Function1/halfCosineRamp/halfCosineRamp.H | 12 ++-- .../halfCosineRamp/halfCosineRampI.H | 40 ++++++++++++ .../Function1/linearRamp/linearRamp.C | 8 --- .../Function1/linearRamp/linearRamp.H | 12 ++-- .../Function1/linearRamp/linearRampI.H | 39 ++++++++++++ .../{makeDataEntries.C => makeFunction1s.C} | 15 ++++- .../Function1/quadraticRamp/quadraticRamp.C | 8 --- .../Function1/quadraticRamp/quadraticRamp.H | 12 ++-- .../Function1/quadraticRamp/quadraticRampI.H | 39 ++++++++++++ .../quarterCosineRamp/quarterCosineRamp.C | 12 ---- .../quarterCosineRamp/quarterCosineRamp.H | 12 ++-- .../quarterCosineRamp/quarterCosineRampI.H | 40 ++++++++++++ .../quarterSineRamp/quarterSineRamp.C | 9 --- .../quarterSineRamp/quarterSineRamp.H | 12 ++-- .../quarterSineRamp/quarterSineRampI.H | 40 ++++++++++++ .../functions/Function1/ramp/ramp.H | 2 +- .../functions/Function1/ramp/rampI.H | 30 +++++++++ .../derived/fan/fanFvPatchFields.C | 36 +---------- 46 files changed, 709 insertions(+), 272 deletions(-) create mode 100644 src/OpenFOAM/primitives/functions/Function1/Constant/ConstantI.H create mode 100644 src/OpenFOAM/primitives/functions/Function1/One/OneConstantI.H create mode 100644 src/OpenFOAM/primitives/functions/Function1/Scale/ScaleI.H create mode 100644 src/OpenFOAM/primitives/functions/Function1/Sine/SineI.H create mode 100644 src/OpenFOAM/primitives/functions/Function1/Square/SquareI.H create mode 100644 src/OpenFOAM/primitives/functions/Function1/Zero/ZeroConstantI.H create mode 100644 src/OpenFOAM/primitives/functions/Function1/halfCosineRamp/halfCosineRampI.H create mode 100644 src/OpenFOAM/primitives/functions/Function1/linearRamp/linearRampI.H rename src/OpenFOAM/primitives/functions/Function1/{makeDataEntries.C => makeFunction1s.C} (91%) create mode 100644 src/OpenFOAM/primitives/functions/Function1/quadraticRamp/quadraticRampI.H create mode 100644 src/OpenFOAM/primitives/functions/Function1/quarterCosineRamp/quarterCosineRampI.H create mode 100644 src/OpenFOAM/primitives/functions/Function1/quarterSineRamp/quarterSineRampI.H create mode 100644 src/OpenFOAM/primitives/functions/Function1/ramp/rampI.H diff --git a/applications/utilities/postProcessing/noise/noise.C b/applications/utilities/postProcessing/noise/noise.C index 78924a984..4f45c42fa 100644 --- a/applications/utilities/postProcessing/noise/noise.C +++ b/applications/utilities/postProcessing/noise/noise.C @@ -134,7 +134,11 @@ int main(int argc, char *argv[]) #include "createFields.H" Info<< "Reading data file" << endl; - Function1Types::CSV pData("pressure", dict.subDict("pressureData")); + FieldFunction1> pData + ( + "pressure", + dict.subDict("pressureData") + ); // time history data const scalarField t(pData.x()); diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files index b6e70668b..df86f1dc7 100644 --- a/src/OpenFOAM/Make/files +++ b/src/OpenFOAM/Make/files @@ -85,7 +85,7 @@ primitives/septernion/septernion.C primitives/triad/triad.C /* Run-time selectable functions */ -primitives/functions/Function1/makeDataEntries.C +primitives/functions/Function1/makeFunction1s.C primitives/functions/Function1/ramp/ramp.C primitives/functions/Function1/linearRamp/linearRamp.C primitives/functions/Function1/quadraticRamp/quadraticRamp.C diff --git a/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.H b/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.H index 4790b0be1..3550b390b 100644 --- a/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.H +++ b/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.H @@ -126,12 +126,6 @@ public: //- Copy constructor CSV(const CSV& tbl); - //- Construct and return a clone - virtual tmp> clone() const - { - return tmp>(new CSV(*this)); - } - //- Destructor virtual ~CSV(); diff --git a/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.C b/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.C index 3f53313f6..0d056a052 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.C +++ b/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -85,17 +85,20 @@ Foam::Function1Types::Constant::~Constant() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template -Type Foam::Function1Types::Constant::value(const scalar x) const +Foam::tmp> Foam::Function1Types::Constant::value +( + const scalarField& x +) const { - return value_; + return tmp>(new Field(x.size(), value_)); } template -Type Foam::Function1Types::Constant::integrate +Foam::tmp> Foam::Function1Types::Constant::integrate ( - const scalar x1, - const scalar x2 + const scalarField& x1, + const scalarField& x2 ) const { return (x2 - x1)*value_; diff --git a/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.H b/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.H index 3ccbc5224..3a42d4687 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.H +++ b/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.H @@ -106,16 +106,34 @@ public: // Member Functions //- Return constant value - Type value(const scalar) const; + virtual inline Type value(const scalar) const; //- Integrate between two values - Type integrate(const scalar x1, const scalar x2) const; + virtual inline Type integrate(const scalar x1, const scalar x2) const; + + //- Return value as a function of (scalar) independent variable + virtual tmp> value(const scalarField& x) const; + + //- Integrate between two (scalar) values + virtual tmp> integrate + ( + const scalarField& x1, + const scalarField& x2 + ) const; //- Write in dictionary format virtual void writeData(Ostream& os) const; }; +template<> +tmp> Function1Types::Constant