From 94070f5ee7a46e2ee7614e8a2ded61a5baccbf4c Mon Sep 17 00:00:00 2001 From: Andrew Heather <> Date: Tue, 29 Jan 2019 13:52:37 +0000 Subject: [PATCH] STYLE: Renamed residuals FO -> solverInfo to reflect capabilities --- src/functionObjects/utilities/Make/files | 2 +- .../residuals.C => solverInfo/solverInfo.C} | 65 ++++++++++--------- .../residuals.H => solverInfo/solverInfo.H} | 65 ++++++++++--------- .../solverInfoTemplates.C} | 23 ++++--- 4 files changed, 83 insertions(+), 72 deletions(-) rename src/functionObjects/utilities/{residuals/residuals.C => solverInfo/solverInfo.C} (76%) rename src/functionObjects/utilities/{residuals/residuals.H => solverInfo/solverInfo.H} (73%) rename src/functionObjects/utilities/{residuals/residualsTemplates.C => solverInfo/solverInfoTemplates.C} (90%) diff --git a/src/functionObjects/utilities/Make/files b/src/functionObjects/utilities/Make/files index 8a2d7f9e4b..a274f616e1 100644 --- a/src/functionObjects/utilities/Make/files +++ b/src/functionObjects/utilities/Make/files @@ -10,7 +10,7 @@ vtkWrite/vtkWriteUpdate.C removeRegisteredObject/removeRegisteredObject.C -residuals/residuals.C +solverInfo/solverInfo.C runTimeControl/runTimeControl.C runTimeControl/runTimeCondition/runTimeCondition/runTimeCondition.C diff --git a/src/functionObjects/utilities/residuals/residuals.C b/src/functionObjects/utilities/solverInfo/solverInfo.C similarity index 76% rename from src/functionObjects/utilities/residuals/residuals.C rename to src/functionObjects/utilities/solverInfo/solverInfo.C index c06a00837e..6b0c736b85 100644 --- a/src/functionObjects/utilities/residuals/residuals.C +++ b/src/functionObjects/utilities/solverInfo/solverInfo.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2015-2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -23,7 +23,7 @@ License \*---------------------------------------------------------------------------*/ -#include "residuals.H" +#include "solverInfo.H" #include "addToRunTimeSelectionTable.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -32,12 +32,12 @@ namespace Foam { namespace functionObjects { - defineTypeNameAndDebug(residuals, 0); + defineTypeNameAndDebug(solverInfo, 0); addToRunTimeSelectionTable ( functionObject, - residuals, + solverInfo, dictionary ); } @@ -46,7 +46,7 @@ namespace functionObjects // * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // -void Foam::functionObjects::residuals::writeFileHeader(Ostream& os) +void Foam::functionObjects::solverInfo::writeFileHeader(Ostream& os) { if (!fieldSet_.updateSelection()) { @@ -59,7 +59,7 @@ void Foam::functionObjects::residuals::writeFileHeader(Ostream& os) } else { - writeHeader(os, "Residuals"); + writeHeader(os, "Solver information"); } writeCommented(os, "Time"); @@ -79,9 +79,12 @@ void Foam::functionObjects::residuals::writeFileHeader(Ostream& os) } -void Foam::functionObjects::residuals::createField(const word& fieldName) +void Foam::functionObjects::solverInfo::createResidualField +( + const word& fieldName +) { - if (!writeFields_) + if (!writeResidualFields_) { return; } @@ -109,7 +112,10 @@ void Foam::functionObjects::residuals::createField(const word& fieldName) } -void Foam::functionObjects::residuals::writeField(const word& fieldName) const +void Foam::functionObjects::solverInfo::writeResidualField +( + const word& fieldName +) const { const word residualName("initialResidual:" + fieldName); @@ -143,7 +149,7 @@ void Foam::functionObjects::residuals::writeField(const word& fieldName) const // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::functionObjects::residuals::residuals +Foam::functionObjects::solverInfo::solverInfo ( const word& name, const Time& runTime, @@ -153,28 +159,23 @@ Foam::functionObjects::residuals::residuals fvMeshFunctionObject(name, runTime, dict), writeFile(obr_, name, typeName, dict), fieldSet_(mesh_), - writeFields_(false), + writeResidualFields_(false), initialised_(false) { read(dict); } -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::functionObjects::residuals::~residuals() -{} - - // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -bool Foam::functionObjects::residuals::read(const dictionary& dict) +bool Foam::functionObjects::solverInfo::read(const dictionary& dict) { if (fvMeshFunctionObject::read(dict)) { fieldSet_.read(dict); - writeFields_ = dict.lookupOrDefault("writeFields", false); + writeResidualFields_ = + dict.lookupOrDefault("writeResidualFields", false); return true; } @@ -183,7 +184,7 @@ bool Foam::functionObjects::residuals::read(const dictionary& dict) } -bool Foam::functionObjects::residuals::execute() +bool Foam::functionObjects::solverInfo::execute() { // Note: delaying initialisation until after first iteration so that // we can find wildcard fields @@ -191,15 +192,15 @@ bool Foam::functionObjects::residuals::execute() { writeFileHeader(file()); - if (writeFields_) + if (writeResidualFields_) { for (const word& fieldName : fieldSet_.selectionNames()) { - initialiseField(fieldName); - initialiseField(fieldName); - initialiseField(fieldName); - initialiseField(fieldName); - initialiseField(fieldName); + initialiseResidualField(fieldName); + initialiseResidualField(fieldName); + initialiseResidualField(fieldName); + initialiseResidualField(fieldName); + initialiseResidualField(fieldName); } } @@ -210,17 +211,17 @@ bool Foam::functionObjects::residuals::execute() } -bool Foam::functionObjects::residuals::write() +bool Foam::functionObjects::solverInfo::write() { writeTime(file()); for (const word& fieldName : fieldSet_.selectionNames()) { - writeResidual(fieldName); - writeResidual(fieldName); - writeResidual(fieldName); - writeResidual(fieldName); - writeResidual(fieldName); + writeSolverInfo(fieldName); + writeSolverInfo(fieldName); + writeSolverInfo(fieldName); + writeSolverInfo(fieldName); + writeSolverInfo(fieldName); } file() << endl; diff --git a/src/functionObjects/utilities/residuals/residuals.H b/src/functionObjects/utilities/solverInfo/solverInfo.H similarity index 73% rename from src/functionObjects/utilities/residuals/residuals.H rename to src/functionObjects/utilities/solverInfo/solverInfo.H index f0e6858a61..ecaf36acf2 100644 --- a/src/functionObjects/utilities/residuals/residuals.H +++ b/src/functionObjects/utilities/solverInfo/solverInfo.H @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2015-2018 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2015-2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -22,37 +22,44 @@ License along with OpenFOAM. If not, see . Class - Foam::functionObjects::residuals + Foam::functionObjects::solverInfo Group grpUtilitiesFunctionObjects Description - Writes out the initial residual for specified fields. + Writes solver information for a list of user-specified fields + + Information written to file includes: + - residual fields + - solver type + - initial residual + - final residual + - number of solver iterations + - convergecnce flag Usage Example of function object specification: \verbatim - residuals + solverInfo { - type residuals; + type solverInfo; libs ("libutilityFunctionObjects.so"); ... fields (U p); + writeResidualFields yes; } \endverbatim Where the entries comprise: \table Property | Description | Required | Default value - type | Type name: residua ls | yes | + type | Type name: solverInfo | yes | fields | List of fields to process | yes | - writeFields | Write the residual fields | no | no + writeResidualFields | Write the residual fields | no | no \endtable - Output data is written to the dir postProcessing/residuals/\/ - For vector/tensor fields, e.g. U, where an equation is solved for each - component, the largest residual of each component is written. + Output data is written to the dir postProcessing/solverInfo/\/ See also Foam::functionObject @@ -61,12 +68,12 @@ See also Foam::functionObjects::timeControl SourceFiles - residuals.C + solverInfo.C \*---------------------------------------------------------------------------*/ -#ifndef functionObjects_residuals_H -#define functionObjects_residuals_H +#ifndef functionObjects_solverInfo_H +#define functionObjects_solverInfo_H #include "fvMeshFunctionObject.H" #include "writeFile.H" @@ -80,10 +87,10 @@ namespace functionObjects { /*---------------------------------------------------------------------------*\ - Class residuals Declaration + Class solverInfo Declaration \*---------------------------------------------------------------------------*/ -class residuals +class solverInfo : public fvMeshFunctionObject, public writeFile @@ -92,11 +99,11 @@ protected: // Protected data - //- Fields to write residuals + //- Fields to process solverFieldSelection fieldSet_; //- Flag to write the residual as a vol field - bool writeFields_; + bool writeResidualFields_; //- Initialisation flag bool initialised_; @@ -108,10 +115,10 @@ protected: void writeFileHeader(Ostream& os); //- Create and store a residual field on the mesh database - void createField(const word& fieldName); + void createResidualField(const word& fieldName); //- Write a residual field - void writeField(const word& fieldName) const; + void writeResidualField(const word& fieldName) const; //- Output file header information per primitive type value template @@ -119,11 +126,11 @@ protected: //- Initialise a residual field template - void initialiseField(const word& fieldName); + void initialiseResidualField(const word& fieldName); - //- Calculate the residual + //- Calculate the solver information template - void writeResidual(const word& fieldName); + void writeSolverInfo(const word& fieldName); private: @@ -131,22 +138,22 @@ private: // Private member functions //- No copy construct - residuals(const residuals&) = delete; + solverInfo(const solverInfo&) = delete; //- No copy assignment - void operator=(const residuals&) = delete; + void operator=(const solverInfo&) = delete; public: //- Runtime type information - TypeName("residuals"); + TypeName("solverInfo"); // Constructors //- Construct from Time and dictionary - residuals + solverInfo ( const word& name, const Time& runTime, @@ -155,7 +162,7 @@ public: //- Destructor - virtual ~residuals(); + virtual ~solverInfo() = default; // Member Functions @@ -166,7 +173,7 @@ public: //- Execute, currently does nothing virtual bool execute(); - //- Write the residuals + //- Write the solverInfo virtual bool write(); }; @@ -179,7 +186,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #ifdef NoRepository - #include "residualsTemplates.C" + #include "solverInfoTemplates.C" #endif // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/functionObjects/utilities/residuals/residualsTemplates.C b/src/functionObjects/utilities/solverInfo/solverInfoTemplates.C similarity index 90% rename from src/functionObjects/utilities/residuals/residualsTemplates.C rename to src/functionObjects/utilities/solverInfo/solverInfoTemplates.C index bfba247840..1b171eb7d8 100644 --- a/src/functionObjects/utilities/residuals/residualsTemplates.C +++ b/src/functionObjects/utilities/solverInfo/solverInfoTemplates.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2015-2018 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2015-2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -23,7 +23,7 @@ License \*---------------------------------------------------------------------------*/ -#include "residuals.H" +#include "solverInfo.H" #include "volFields.H" #include "ListOps.H" #include "zeroGradientFvPatchField.H" @@ -31,7 +31,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // template -void Foam::functionObjects::residuals::writeFileHeader +void Foam::functionObjects::solverInfo::writeFileHeader ( Ostream& os, const word& fieldName @@ -52,7 +52,7 @@ void Foam::functionObjects::residuals::writeFileHeader { if (component(validComponents, cmpt) != -1) { - const word cmptName(pTraits::componentNames[cmpt]); + const word cmptName(pTraits::componentNames[cmpt]); const word fieldBase(fieldName + cmptName); writeTabbed(os, fieldBase + "_initial"); @@ -67,7 +67,10 @@ void Foam::functionObjects::residuals::writeFileHeader template -void Foam::functionObjects::residuals::initialiseField(const word& fieldName) +void Foam::functionObjects::solverInfo::initialiseResidualField +( + const word& fieldName +) { typedef GeometricField volFieldType; @@ -91,7 +94,7 @@ void Foam::functionObjects::residuals::initialiseField(const word& fieldName) fieldName + word(pTraits::componentNames[cmpt]) ); - createField(resultName); + createResidualField(resultName); } } } @@ -100,7 +103,7 @@ void Foam::functionObjects::residuals::initialiseField(const word& fieldName) template -void Foam::functionObjects::residuals::writeResidual(const word& fieldName) +void Foam::functionObjects::solverInfo::writeSolverInfo(const word& fieldName) { typedef GeometricField volFieldType; typedef typename pTraits::labelType labelType; @@ -121,7 +124,7 @@ void Foam::functionObjects::residuals::writeResidual(const word& fieldName) const Type& initialResidual = sp0.initialResidual(); const Type& finalResidual = sp0.finalResidual(); const labelType nIterations = sp0.nIterations(); - const bool converged = sp0.converged(); + const Switch converged(sp0.converged()); const labelType validComponents(mesh_.validComponents()); @@ -140,13 +143,13 @@ void Foam::functionObjects::residuals::writeResidual(const word& fieldName) << token::TAB << rf << token::TAB << n; - const word cmptName(pTraits::componentNames[cmpt]); + const word cmptName(pTraits::componentNames[cmpt]); const word resultName(fieldName + cmptName); setResult(resultName + "_initial", ri); setResult(resultName + "_final", rf); setResult(resultName + "_iters", n); - writeField(resultName); + writeResidualField(resultName); } }