From fb78378959820d153c43deb783c9e35462ca11cb Mon Sep 17 00:00:00 2001 From: Andrew Heather Date: Thu, 24 Nov 2016 12:36:52 +0000 Subject: [PATCH 01/19] ENH: Function objects - ensure objects are up-to-date when writing --- .../timeControl/timeControlFunctionObject.C | 11 ++++++++++- .../timeControl/timeControlFunctionObject.H | 3 +++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/OpenFOAM/db/functionObjects/timeControl/timeControlFunctionObject.C b/src/OpenFOAM/db/functionObjects/timeControl/timeControlFunctionObject.C index 1f179698d1..8251159d02 100644 --- a/src/OpenFOAM/db/functionObjects/timeControl/timeControlFunctionObject.C +++ b/src/OpenFOAM/db/functionObjects/timeControl/timeControlFunctionObject.C @@ -77,7 +77,8 @@ Foam::functionObjects::timeControl::timeControl ), executeControl_(t, dict, "execute"), writeControl_(t, dict, "write"), - foPtr_(functionObject::New(name, t, dict_)) + foPtr_(functionObject::New(name, t, dict_)), + executeTimeIndex_(-1) { readControls(); } @@ -89,6 +90,7 @@ bool Foam::functionObjects::timeControl::execute() { if (active() && (postProcess || executeControl_.execute())) { + executeTimeIndex_ = time_.timeIndex(); foPtr_->execute(); } @@ -100,6 +102,13 @@ bool Foam::functionObjects::timeControl::write() { if (active() && (postProcess || writeControl_.execute())) { + // Ensure written results reflect the current state + if (executeTimeIndex_ != time_.timeIndex()) + { + executeTimeIndex_ = time_.timeIndex(); + foPtr_->execute(); + } + foPtr_->write(); } diff --git a/src/OpenFOAM/db/functionObjects/timeControl/timeControlFunctionObject.H b/src/OpenFOAM/db/functionObjects/timeControl/timeControlFunctionObject.H index e256144f6b..d019a7e8b6 100644 --- a/src/OpenFOAM/db/functionObjects/timeControl/timeControlFunctionObject.H +++ b/src/OpenFOAM/db/functionObjects/timeControl/timeControlFunctionObject.H @@ -99,6 +99,9 @@ class timeControl //- The functionObject to execute autoPtr foPtr_; + //- Time index of the last execute call + label executeTimeIndex_; + // Private Member Functions From 00174405c65ffa09299eb0c302baf5bacba04337 Mon Sep 17 00:00:00 2001 From: Andrew Heather Date: Thu, 24 Nov 2016 21:31:08 +0000 Subject: [PATCH 02/19] ENH: noiseModels - enable models to accept lists of file names --- .../primitives/functions/Function1/CSV/CSV.C | 5 +- .../primitives/functions/Function1/CSV/CSV.H | 3 +- .../noise/noiseModels/noiseModel/noiseModel.C | 50 +- .../noise/noiseModels/noiseModel/noiseModel.H | 9 +- .../noise/noiseModels/pointNoise/pointNoise.C | 75 ++- .../noise/noiseModels/pointNoise/pointNoise.H | 23 +- .../noiseModels/surfaceNoise/surfaceNoise.C | 548 +++++++++--------- .../noiseModels/surfaceNoise/surfaceNoise.H | 25 +- 8 files changed, 427 insertions(+), 311 deletions(-) diff --git a/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.C b/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.C index 9d2d858174..b82b4d3010 100644 --- a/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.C +++ b/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.C @@ -204,7 +204,8 @@ Foam::Function1Types::CSV::CSV ( const word& entryName, const dictionary& dict, - const word& ext + const word& ext, + const fileName& fName ) : TableBase(entryName, dict.subDict(entryName + ext)), @@ -214,7 +215,7 @@ Foam::Function1Types::CSV::CSV componentColumns_(coeffs_.lookup("componentColumns")), separator_(coeffs_.lookupOrDefault("separator", string(","))[0]), mergeSeparators_(readBool(coeffs_.lookup("mergeSeparators"))), - fName_(coeffs_.lookup("fileName")) + fName_(fName != fileName::null ? fName : coeffs_.lookup("fileName")) { if (componentColumns_.size() != pTraits::nComponents) { diff --git a/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.H b/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.H index 97e0047a2b..ddba48afa5 100644 --- a/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.H +++ b/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.H @@ -122,7 +122,8 @@ public: ( const word& entryName, const dictionary& dict, - const word& ext = "Coeffs" + const word& ext = "Coeffs", + const fileName& fName = fileName::null ); //- Copy constructor diff --git a/src/randomProcesses/noise/noiseModels/noiseModel/noiseModel.C b/src/randomProcesses/noise/noiseModels/noiseModel/noiseModel.C index 21d52bb3dd..ae80887fe8 100644 --- a/src/randomProcesses/noise/noiseModels/noiseModel/noiseModel.C +++ b/src/randomProcesses/noise/noiseModels/noiseModel/noiseModel.C @@ -94,17 +94,41 @@ Foam::label Foam::noiseModel::findStartTimeIndex // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::noiseModel::noiseModel(const dictionary& dict) +Foam::noiseModel::noiseModel(const dictionary& dict, const bool readFields) : dict_(dict), - rhoRef_(dict.lookupOrDefault("rhoRef", 1)), - nSamples_(dict.lookupOrDefault