diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFilmFoam/VoFSolidificationMeltingSource/VoFSolidificationMeltingSource.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFilmFoam/VoFSolidificationMeltingSource/VoFSolidificationMeltingSource.C
index 16eff5c6f9..864ebe11b9 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFilmFoam/VoFSolidificationMeltingSource/VoFSolidificationMeltingSource.C
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFilmFoam/VoFSolidificationMeltingSource/VoFSolidificationMeltingSource.C
@@ -144,10 +144,11 @@ Foam::fv::VoFSolidificationMeltingSource::VoFSolidificationMeltingSource
),
curTimeIndex_(-1)
{
- fieldNames_.setSize(2);
+ fieldNames_.resize(2);
fieldNames_[0] = "U";
fieldNames_[1] = "T";
- applied_.setSize(fieldNames_.size(), false);
+
+ fv::option::resetApplied();
}
diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFilmFoam/VoFSolidificationMeltingSource/VoFSolidificationMeltingSourceIO.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFilmFoam/VoFSolidificationMeltingSource/VoFSolidificationMeltingSourceIO.C
index d5c7979fff..069c34d6ba 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFilmFoam/VoFSolidificationMeltingSource/VoFSolidificationMeltingSourceIO.C
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFilmFoam/VoFSolidificationMeltingSource/VoFSolidificationMeltingSourceIO.C
@@ -41,10 +41,6 @@ bool Foam::fv::VoFSolidificationMeltingSource::read(const dictionary& dict)
return true;
}
- else
- {
- return false;
- }
return false;
}
diff --git a/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.C b/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.C
index 8ad0375798..d6c4f935d6 100644
--- a/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.C
+++ b/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.C
@@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2019 OpenCFD Ltd.
+ Copyright (C) 2019-2021 OpenCFD Ltd.
Copyright (C) YEAR AUTHOR, AFFILIATION
-------------------------------------------------------------------------------
License
@@ -95,11 +95,11 @@ ${typeName}FvOption${SourceType}
const fvMesh& mesh
)
:
- cellSetOption(name, modelType, dict, mesh)
+ fv::cellSetOption(name, modelType, dict, mesh)
{
if (${verbose:-false})
{
- printMessage("Construct ${typeName} from components");
+ printMessage("Construct ${typeName} fvOption from dictionary");
}
}
@@ -118,14 +118,15 @@ ${typeName}FvOption${SourceType}::
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
-void ${typeName}FvOption${SourceType}::correct
+void
+${typeName}FvOption${SourceType}::correct
(
GeometricField<${TemplateType}, fvPatchField, volMesh>& fld
)
{
if (${verbose:-false})
{
- Info<<"${typeName}FvOption${SourceType}::correct()\n";
+ Info<< "${typeName}FvOption${SourceType}::correct()\n";
}
//{{{ begin code
@@ -134,7 +135,8 @@ void ${typeName}FvOption${SourceType}::correct
}
-void ${typeName}FvOption${SourceType}::addSup
+void
+${typeName}FvOption${SourceType}::addSup
(
fvMatrix<${TemplateType}>& eqn,
const label fieldi
@@ -142,7 +144,7 @@ void ${typeName}FvOption${SourceType}::addSup
{
if (${verbose:-false})
{
- Info<<"${typeName}FvOption${SourceType}::addSup()\n";
+ Info<< "${typeName}FvOption${SourceType}::addSup()\n";
}
//{{{ begin code
@@ -151,7 +153,8 @@ void ${typeName}FvOption${SourceType}::addSup
}
-void ${typeName}FvOption${SourceType}::addSup
+void
+${typeName}FvOption${SourceType}::addSup
(
const volScalarField& rho,
fvMatrix<${TemplateType}>& eqn,
@@ -160,7 +163,7 @@ void ${typeName}FvOption${SourceType}::addSup
{
if (${verbose:-false})
{
- Info<<"${typeName}FvOption${SourceType}::addSup()\n";
+ Info<< "${typeName}FvOption${SourceType}::addSup()\n";
}
//{{{ begin code
@@ -169,7 +172,8 @@ void ${typeName}FvOption${SourceType}::addSup
}
-void ${typeName}FvOption${SourceType}::constrain
+void
+${typeName}FvOption${SourceType}::constrain
(
fvMatrix<${TemplateType}>& eqn,
const label fieldi
@@ -177,7 +181,7 @@ void ${typeName}FvOption${SourceType}::constrain
{
if (${verbose:-false})
{
- Info<<"${typeName}FvOption${SourceType}::constrain()\n";
+ Info<< "${typeName}FvOption${SourceType}::constrain()\n";
}
//{{{ begin code
diff --git a/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.H b/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.H
index cafab99cdb..e252336236 100644
--- a/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.H
+++ b/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.H
@@ -5,8 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2019 OpenCFD Ltd.
- Copyright (C) YEAR AUTHOR, AFFILIATION
+ Copyright (C) 2019-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -25,7 +24,7 @@ License
along with OpenFOAM. If not, see .
Description
- Template for use with dynamic code generation of a source.
+ Template for use with dynamic code generation of a finiteVolume source.
The hook functions take the following arguments:
\verbatim
@@ -103,6 +102,7 @@ SourceFiles
#define codedFvOptionTemplate_H
#include "cellSetOption.H"
+#include "dictionaryContent.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -117,7 +117,8 @@ namespace fv
class ${typeName}FvOption${SourceType}
:
- public cellSetOption
+ public fv::cellSetOption,
+ public dictionaryContent
{
// Private Member Functions
@@ -138,7 +139,7 @@ public:
// Constructors
- //- Construct from patch and internal field
+ //- Construct from mesh
${typeName}FvOption${SourceType}
(
const word& name,
@@ -147,12 +148,19 @@ public:
const fvMesh& mesh
);
+
//- Destructor
virtual ~${typeName}FvOption${SourceType}();
// Member Functions
+ //- Code context as a dictionary
+ const dictionary& codeContext() const
+ {
+ return dictionaryContent::dict();
+ }
+
//- Correct field
virtual void correct
(
diff --git a/etc/codeTemplates/dynamicCode/codedPatchFunction1Template.C b/etc/codeTemplates/dynamicCode/codedPatchFunction1Template.C
index 06e5eb00d7..ffce21acf3 100644
--- a/etc/codeTemplates/dynamicCode/codedPatchFunction1Template.C
+++ b/etc/codeTemplates/dynamicCode/codedPatchFunction1Template.C
@@ -5,6 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
+ Copyright (C) 2021 OpenCFD Ltd.
Copyright (C) YEAR AUTHOR,AFFILIATION
-------------------------------------------------------------------------------
License
@@ -37,6 +38,7 @@ License
${codeInclude}
//}}} end codeInclude
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
@@ -96,25 +98,15 @@ ${typeName}PatchFunction1${FieldType}
const bool faceValues
)
:
- PatchFunction1<${TemplateType}>(pp, entryName, dict, faceValues)
+ parent_bctype(pp, entryName, dict, faceValues)
{
if (${verbose:-false})
{
- printMessage("Construct ${typeName} from components");
+ printMessage("Construct ${typeName} PatchFunction1 from dictionary");
}
}
-${typeName}PatchFunction1${FieldType}::
-${typeName}PatchFunction1${FieldType}
-(
- const ${typeName}PatchFunction1${FieldType}& rhs
-)
-:
- PatchFunction1<${TemplateType}>(rhs)
-{}
-
-
${typeName}PatchFunction1${FieldType}::
${typeName}PatchFunction1${FieldType}
(
@@ -122,13 +114,13 @@ ${typeName}PatchFunction1${FieldType}
const polyPatch& pp
)
:
- PatchFunction1<${TemplateType}>(rhs, pp)
+ parent_bctype(rhs, pp)
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
-tmp>
+Foam::tmp>
${typeName}PatchFunction1${FieldType}::value
(
const scalar x
diff --git a/etc/codeTemplates/dynamicCode/codedPatchFunction1Template.H b/etc/codeTemplates/dynamicCode/codedPatchFunction1Template.H
index 0aeaf7059e..8e53867c03 100644
--- a/etc/codeTemplates/dynamicCode/codedPatchFunction1Template.H
+++ b/etc/codeTemplates/dynamicCode/codedPatchFunction1Template.H
@@ -5,8 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2020 OpenCFD Ltd.
- Copyright (C) YEAR AUTHOR, AFFILIATION
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -36,6 +35,7 @@ SourceFiles
#define codedPatchFunction1Template${FieldType}_H
#include "PatchFunction1.H"
+#include "dictionaryContent.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -50,8 +50,12 @@ namespace PatchFunction1Types
class ${typeName}PatchFunction1${FieldType}
:
- public PatchFunction1<${TemplateType}>
+ public PatchFunction1<${TemplateType}>,
+ public dictionaryContent
{
+ //- The parent PatchFunction1 type
+ typedef PatchFunction1<${TemplateType}> parent_bctype;
+
// Private Member Functions
//- Report a message with the SHA1sum
@@ -85,7 +89,7 @@ public:
${typeName}PatchFunction1${FieldType}
(
const ${typeName}PatchFunction1${FieldType}& rhs
- );
+ ) = default;
//- Copy construct, resetting patch
${typeName}PatchFunction1${FieldType}
diff --git a/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.C b/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.C
index 386b870923..d38ef18c97 100644
--- a/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.C
+++ b/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.C
@@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2018-2019 OpenCFD Ltd.
+ Copyright (C) 2018-2021 OpenCFD Ltd.
Copyright (C) YEAR AUTHOR, AFFILIATION
-------------------------------------------------------------------------------
License
@@ -27,6 +27,7 @@ License
\*---------------------------------------------------------------------------*/
#include "codedPoints0MotionSolverTemplate.H"
+#define namespaceFoam // Suppress
#include "fvCFD.H"
#include "unitConversion.H"
#include "addToRunTimeSelectionTable.H"
diff --git a/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.H b/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.H
index 8bcca47ad3..8a2a70fcf8 100644
--- a/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.H
+++ b/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.H
@@ -5,8 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2018-2019 OpenCFD Ltd.
- Copyright (C) YEAR AUTHOR, AFFILIATION
+ Copyright (C) 2018-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -37,6 +36,7 @@ SourceFiles
#define codedPoints0MotionSolverTemplate_H
#include "points0MotionSolver.H"
+#include "dictionaryContent.H"
//{{{ begin codeInclude
${codeInclude}
@@ -53,7 +53,8 @@ namespace Foam
class ${typeName}Points0MotionSolver
:
- public points0MotionSolver
+ public points0MotionSolver,
+ public dictionaryContent
{
// Private Member Functions
@@ -70,7 +71,10 @@ class ${typeName}Points0MotionSolver
) = delete;
//- No copy assignment
- void operator=(const ${typeName}Points0MotionSolver&) = delete;
+ void operator=
+ (
+ const ${typeName}Points0MotionSolver&
+ ) = delete;
public:
@@ -98,6 +102,12 @@ public:
// Member Functions
+ //- Code context as a dictionary
+ const dictionary& codeContext() const
+ {
+ return dictionaryContent::dict();
+ }
+
//- Provide current points for motion. Uses current motion field
virtual tmp curPoints() const;
diff --git a/etc/codeTemplates/dynamicCode/fixedValueFvPatchFieldTemplate.C b/etc/codeTemplates/dynamicCode/fixedValueFvPatchFieldTemplate.C
index 71494cf806..a9db42f5fd 100644
--- a/etc/codeTemplates/dynamicCode/fixedValueFvPatchFieldTemplate.C
+++ b/etc/codeTemplates/dynamicCode/fixedValueFvPatchFieldTemplate.C
@@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2019 OpenCFD Ltd.
+ Copyright (C) 2019-2021 OpenCFD Ltd.
Copyright (C) YEAR AUTHOR, AFFILIATION
-------------------------------------------------------------------------------
License
@@ -32,6 +32,7 @@ License
#include "volFields.H"
#include "surfaceFields.H"
#include "unitConversion.H"
+#include "PatchFunction1.H"
//{{{ begin codeInclude
${codeInclude}
@@ -87,7 +88,7 @@ ${typeName}FixedValueFvPatch${FieldType}
const DimensionedField<${TemplateType}, volMesh>& iF
)
:
- fixedValueFvPatchField<${TemplateType}>(p, iF)
+ parent_bctype(p, iF)
{
if (${verbose:-false})
{
@@ -99,13 +100,13 @@ ${typeName}FixedValueFvPatch${FieldType}
${typeName}FixedValueFvPatch${FieldType}::
${typeName}FixedValueFvPatch${FieldType}
(
- const ${typeName}FixedValueFvPatch${FieldType}& ptf,
+ const ${typeName}FixedValueFvPatch${FieldType}& rhs,
const fvPatch& p,
const DimensionedField<${TemplateType}, volMesh>& iF,
const fvPatchFieldMapper& mapper
)
:
- fixedValueFvPatchField<${TemplateType}>(ptf, p, iF, mapper)
+ parent_bctype(rhs, p, iF, mapper)
{
if (${verbose:-false})
{
@@ -122,7 +123,7 @@ ${typeName}FixedValueFvPatch${FieldType}
const dictionary& dict
)
:
- fixedValueFvPatchField<${TemplateType}>(p, iF, dict)
+ parent_bctype(p, iF, dict)
{
if (${verbose:-false})
{
@@ -134,10 +135,10 @@ ${typeName}FixedValueFvPatch${FieldType}
${typeName}FixedValueFvPatch${FieldType}::
${typeName}FixedValueFvPatch${FieldType}
(
- const ${typeName}FixedValueFvPatch${FieldType}& ptf
+ const ${typeName}FixedValueFvPatch${FieldType}& rhs
)
:
- fixedValueFvPatchField<${TemplateType}>(ptf)
+ parent_bctype(rhs)
{
if (${verbose:-false})
{
@@ -149,11 +150,11 @@ ${typeName}FixedValueFvPatch${FieldType}
${typeName}FixedValueFvPatch${FieldType}::
${typeName}FixedValueFvPatch${FieldType}
(
- const ${typeName}FixedValueFvPatch${FieldType}& ptf,
+ const ${typeName}FixedValueFvPatch${FieldType}& rhs,
const DimensionedField<${TemplateType}, volMesh>& iF
)
:
- fixedValueFvPatchField<${TemplateType}>(ptf, iF)
+ parent_bctype(rhs, iF)
{
if (${verbose:-false})
{
@@ -176,7 +177,8 @@ ${typeName}FixedValueFvPatch${FieldType}::
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
-void ${typeName}FixedValueFvPatch${FieldType}::updateCoeffs()
+void
+${typeName}FixedValueFvPatch${FieldType}::updateCoeffs()
{
if (this->updated())
{
@@ -192,7 +194,7 @@ void ${typeName}FixedValueFvPatch${FieldType}::updateCoeffs()
${code}
//}}} end code
- this->fixedValueFvPatchField<${TemplateType}>::updateCoeffs();
+ this->parent_bctype::updateCoeffs();
}
diff --git a/etc/codeTemplates/dynamicCode/fixedValueFvPatchFieldTemplate.H b/etc/codeTemplates/dynamicCode/fixedValueFvPatchFieldTemplate.H
index 4be5ca0425..5c345838d9 100644
--- a/etc/codeTemplates/dynamicCode/fixedValueFvPatchFieldTemplate.H
+++ b/etc/codeTemplates/dynamicCode/fixedValueFvPatchFieldTemplate.H
@@ -5,8 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2019 OpenCFD Ltd.
- Copyright (C) YEAR AUTHOR, AFFILIATION
+ Copyright (C) 2019-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -39,6 +38,7 @@ SourceFiles
#define fixedValueFvPatchTemplate${FieldType}_H
#include "fixedValueFvPatchFields.H"
+#include "dictionaryContent.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -51,8 +51,13 @@ namespace Foam
class ${typeName}FixedValueFvPatch${FieldType}
:
- public fixedValueFvPatchField<${TemplateType}>
+ public fixedValueFvPatchField<${TemplateType}>,
+ public dictionaryContent
{
+ //- The parent boundary condition type
+ typedef fixedValueFvPatchField<${TemplateType}> parent_bctype;
+
+
// Private Member Functions
//- Report a message with the SHA1sum
@@ -137,6 +142,12 @@ public:
// Member Functions
+ //- Code context as a dictionary
+ const dictionary& codeContext() const
+ {
+ return dictionaryContent::dict();
+ }
+
//- Update the coefficients associated with the patch field
virtual void updateCoeffs();
};
diff --git a/etc/codeTemplates/dynamicCode/fixedValuePointPatchFieldTemplate.C b/etc/codeTemplates/dynamicCode/fixedValuePointPatchFieldTemplate.C
index d093268726..c91a478c62 100644
--- a/etc/codeTemplates/dynamicCode/fixedValuePointPatchFieldTemplate.C
+++ b/etc/codeTemplates/dynamicCode/fixedValuePointPatchFieldTemplate.C
@@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2019 OpenCFD Ltd.
+ Copyright (C) 2019-2021 OpenCFD Ltd.
Copyright (C) YEAR AUTHOR, AFFILIATION
-------------------------------------------------------------------------------
License
@@ -31,6 +31,7 @@ License
#include "pointPatchFieldMapper.H"
#include "pointFields.H"
#include "unitConversion.H"
+#include "PatchFunction1.H"
//{{{ begin codeInclude
${codeInclude}
@@ -86,7 +87,7 @@ ${typeName}FixedValuePointPatch${FieldType}
const DimensionedField<${TemplateType}, pointMesh>& iF
)
:
- fixedValuePointPatchField<${TemplateType}>(p, iF)
+ parent_bctype(p, iF)
{
if (${verbose:-false})
{
@@ -98,13 +99,13 @@ ${typeName}FixedValuePointPatch${FieldType}
${typeName}FixedValuePointPatch${FieldType}::
${typeName}FixedValuePointPatch${FieldType}
(
- const ${typeName}FixedValuePointPatch${FieldType}& ptf,
+ const ${typeName}FixedValuePointPatch${FieldType}& rhs,
const pointPatch& p,
const DimensionedField<${TemplateType}, pointMesh>& iF,
const pointPatchFieldMapper& mapper
)
:
- fixedValuePointPatchField<${TemplateType}>(ptf, p, iF, mapper)
+ parent_bctype(rhs, p, iF, mapper)
{
if (${verbose:-false})
{
@@ -122,7 +123,7 @@ ${typeName}FixedValuePointPatch${FieldType}
const bool valueRequired
)
:
- fixedValuePointPatchField<${TemplateType}>(p, iF, dict, valueRequired)
+ parent_bctype(p, iF, dict, valueRequired)
{
if (${verbose:-false})
{
@@ -134,10 +135,10 @@ ${typeName}FixedValuePointPatch${FieldType}
${typeName}FixedValuePointPatch${FieldType}::
${typeName}FixedValuePointPatch${FieldType}
(
- const ${typeName}FixedValuePointPatch${FieldType}& ptf
+ const ${typeName}FixedValuePointPatch${FieldType}& rhs
)
:
- fixedValuePointPatchField<${TemplateType}>(ptf)
+ parent_bctype(rhs)
{
if (${verbose:-false})
{
@@ -149,11 +150,11 @@ ${typeName}FixedValuePointPatch${FieldType}
${typeName}FixedValuePointPatch${FieldType}::
${typeName}FixedValuePointPatch${FieldType}
(
- const ${typeName}FixedValuePointPatch${FieldType}& ptf,
+ const ${typeName}FixedValuePointPatch${FieldType}& rhs,
const DimensionedField<${TemplateType}, pointMesh>& iF
)
:
- fixedValuePointPatchField<${TemplateType}>(ptf, iF)
+ parent_bctype(rhs, iF)
{
if (${verbose:-false})
{
@@ -176,7 +177,8 @@ ${typeName}FixedValuePointPatch${FieldType}::
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
-void ${typeName}FixedValuePointPatch${FieldType}::updateCoeffs()
+void
+${typeName}FixedValuePointPatch${FieldType}::updateCoeffs()
{
if (this->updated())
{
@@ -192,7 +194,7 @@ void ${typeName}FixedValuePointPatch${FieldType}::updateCoeffs()
${code}
//}}} end code
- this->fixedValuePointPatchField<${TemplateType}>::updateCoeffs();
+ this->parent_bctype::updateCoeffs();
}
diff --git a/etc/codeTemplates/dynamicCode/fixedValuePointPatchFieldTemplate.H b/etc/codeTemplates/dynamicCode/fixedValuePointPatchFieldTemplate.H
index cf412c02d0..9fd6198afb 100644
--- a/etc/codeTemplates/dynamicCode/fixedValuePointPatchFieldTemplate.H
+++ b/etc/codeTemplates/dynamicCode/fixedValuePointPatchFieldTemplate.H
@@ -5,8 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2019 OpenCFD Ltd.
- Copyright (C) YEAR AUTHOR, AFFILIATION
+ Copyright (C) 2019-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -35,10 +34,11 @@ SourceFiles
\*---------------------------------------------------------------------------*/
-#ifndef fixedValuePointPatchTemplate${FieldType}_H
-#define fixedValuePointPatchTemplate${FieldType}_H
+#ifndef coded_fixedValuePointPatchTemplate${FieldType}_H
+#define coded_fixedValuePointPatchTemplate${FieldType}_H
#include "fixedValuePointPatchFields.H"
+#include "dictionaryContent.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -51,8 +51,13 @@ namespace Foam
class ${typeName}FixedValuePointPatch${FieldType}
:
- public fixedValuePointPatchField<${TemplateType}>
+ public fixedValuePointPatchField<${TemplateType}>,
+ public dictionaryContent
{
+ //- The parent boundary condition type
+ typedef fixedValuePointPatchField<${TemplateType}> parent_bctype;
+
+
// Private Member Functions
//- Report a message with the SHA1sum
@@ -138,6 +143,12 @@ public:
// Member Functions
+ //- Code context as a dictionary
+ const dictionary& codeContext() const
+ {
+ return dictionaryContent::dict();
+ }
+
//- Update the coefficients associated with the patch field
virtual void updateCoeffs();
};
diff --git a/etc/codeTemplates/dynamicCode/functionObjectTemplate.C b/etc/codeTemplates/dynamicCode/functionObjectTemplate.C
index 207e2dc3c9..274fd29f7c 100644
--- a/etc/codeTemplates/dynamicCode/functionObjectTemplate.C
+++ b/etc/codeTemplates/dynamicCode/functionObjectTemplate.C
@@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2019 OpenCFD Ltd.
+ Copyright (C) 2019-2021 OpenCFD Ltd.
Copyright (C) YEAR AUTHOR, AFFILIATION
-------------------------------------------------------------------------------
License
@@ -27,6 +27,7 @@ License
\*---------------------------------------------------------------------------*/
#include "functionObjectTemplate.H"
+#define namespaceFoam // Suppress
#include "fvCFD.H"
#include "unitConversion.H"
#include "addToRunTimeSelectionTable.H"
@@ -106,7 +107,8 @@ ${typeName}FunctionObject::~${typeName}FunctionObject()
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
-bool ${typeName}FunctionObject::read(const dictionary& dict)
+bool
+${typeName}FunctionObject::read(const dictionary& dict)
{
if (${verbose:-false})
{
@@ -121,7 +123,8 @@ bool ${typeName}FunctionObject::read(const dictionary& dict)
}
-bool ${typeName}FunctionObject::execute()
+bool
+${typeName}FunctionObject::execute()
{
if (${verbose:-false})
{
@@ -136,7 +139,8 @@ bool ${typeName}FunctionObject::execute()
}
-bool ${typeName}FunctionObject::write()
+bool
+${typeName}FunctionObject::write()
{
if (${verbose:-false})
{
@@ -151,7 +155,8 @@ bool ${typeName}FunctionObject::write()
}
-bool ${typeName}FunctionObject::end()
+bool
+${typeName}FunctionObject::end()
{
if (${verbose:-false})
{
diff --git a/etc/codeTemplates/dynamicCode/functionObjectTemplate.H b/etc/codeTemplates/dynamicCode/functionObjectTemplate.H
index e56ae69538..8cb7aaaca4 100644
--- a/etc/codeTemplates/dynamicCode/functionObjectTemplate.H
+++ b/etc/codeTemplates/dynamicCode/functionObjectTemplate.H
@@ -36,6 +36,7 @@ SourceFiles
#define functionObjectTemplate_H
#include "regionFunctionObject.H"
+#include "dictionaryContent.H"
//{{{ begin codeInclude
${codeInclude}
@@ -55,7 +56,8 @@ class fvMesh;
class ${typeName}FunctionObject
:
- public functionObjects::regionFunctionObject
+ public functionObjects::regionFunctionObject,
+ public dictionaryContent
{
// Private Data
@@ -76,10 +78,16 @@ class ${typeName}FunctionObject
const fvMesh& mesh() const;
//- No copy construct
- ${typeName}FunctionObject(const ${typeName}FunctionObject&) = delete;
+ ${typeName}FunctionObject
+ (
+ const ${typeName}FunctionObject&
+ ) = delete;
//- No copy assignment
- void operator=(const ${typeName}FunctionObject&) = delete;
+ void operator=
+ (
+ const ${typeName}FunctionObject&
+ ) = delete;
public:
@@ -97,7 +105,7 @@ public:
(
const word& name,
const Time& runTime,
- const dictionary&
+ const dictionary& dict
);
@@ -107,7 +115,13 @@ public:
// Member Functions
- //- Read the dictionary
+ //- Code context as a dictionary
+ const dictionary& codeContext() const
+ {
+ return dictionaryContent::dict();
+ }
+
+ //- Read optional controls
virtual bool read(const dictionary& dict);
//- Execute (at time-step)
diff --git a/etc/codeTemplates/dynamicCode/mixedFvPatchFieldTemplate.C b/etc/codeTemplates/dynamicCode/mixedFvPatchFieldTemplate.C
index d7658f52b5..8602b151be 100644
--- a/etc/codeTemplates/dynamicCode/mixedFvPatchFieldTemplate.C
+++ b/etc/codeTemplates/dynamicCode/mixedFvPatchFieldTemplate.C
@@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2019 OpenCFD Ltd.
+ Copyright (C) 2019-2021 OpenCFD Ltd.
Copyright (C) YEAR AUTHOR, AFFILIATION
-------------------------------------------------------------------------------
License
@@ -32,6 +32,7 @@ License
#include "volFields.H"
#include "surfaceFields.H"
#include "unitConversion.H"
+#include "PatchFunction1.H"
//{{{ begin codeInclude
${codeInclude}
@@ -86,7 +87,7 @@ ${typeName}MixedValueFvPatch${FieldType}
const DimensionedField<${TemplateType}, volMesh>& iF
)
:
- mixedFvPatchField<${TemplateType}>(p, iF)
+ parent_bctype(p, iF)
{
if (${verbose:-false})
{
@@ -98,13 +99,13 @@ ${typeName}MixedValueFvPatch${FieldType}
${typeName}MixedValueFvPatch${FieldType}::
${typeName}MixedValueFvPatch${FieldType}
(
- const ${typeName}MixedValueFvPatch${FieldType}& ptf,
+ const ${typeName}MixedValueFvPatch${FieldType}& rhs,
const fvPatch& p,
const DimensionedField<${TemplateType}, volMesh>& iF,
const fvPatchFieldMapper& mapper
)
:
- mixedFvPatchField<${TemplateType}>(ptf, p, iF, mapper)
+ parent_bctype(rhs, p, iF, mapper)
{
if (${verbose:-false})
{
@@ -121,7 +122,7 @@ ${typeName}MixedValueFvPatch${FieldType}
const dictionary& dict
)
:
- mixedFvPatchField<${TemplateType}>(p, iF, dict)
+ parent_bctype(p, iF, dict)
{
if (${verbose:-false})
{
@@ -133,10 +134,10 @@ ${typeName}MixedValueFvPatch${FieldType}
${typeName}MixedValueFvPatch${FieldType}::
${typeName}MixedValueFvPatch${FieldType}
(
- const ${typeName}MixedValueFvPatch${FieldType}& ptf
+ const ${typeName}MixedValueFvPatch${FieldType}& rhs
)
:
- mixedFvPatchField<${TemplateType}>(ptf)
+ parent_bctype(rhs)
{
if (${verbose:-false})
{
@@ -148,11 +149,11 @@ ${typeName}MixedValueFvPatch${FieldType}
${typeName}MixedValueFvPatch${FieldType}::
${typeName}MixedValueFvPatch${FieldType}
(
- const ${typeName}MixedValueFvPatch${FieldType}& ptf,
+ const ${typeName}MixedValueFvPatch${FieldType}& rhs,
const DimensionedField<${TemplateType}, volMesh>& iF
)
:
- mixedFvPatchField<${TemplateType}>(ptf, iF)
+ parent_bctype(rhs, iF)
{
if (${verbose:-false})
{
@@ -175,7 +176,8 @@ ${typeName}MixedValueFvPatch${FieldType}::
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
-void ${typeName}MixedValueFvPatch${FieldType}::updateCoeffs()
+void
+${typeName}MixedValueFvPatch${FieldType}::updateCoeffs()
{
if (this->updated())
{
@@ -191,7 +193,7 @@ void ${typeName}MixedValueFvPatch${FieldType}::updateCoeffs()
${code}
//}}} end code
- this->mixedFvPatchField<${TemplateType}>::updateCoeffs();
+ this->parent_bctype::updateCoeffs();
}
diff --git a/etc/codeTemplates/dynamicCode/mixedFvPatchFieldTemplate.H b/etc/codeTemplates/dynamicCode/mixedFvPatchFieldTemplate.H
index 7588639539..83ef277870 100644
--- a/etc/codeTemplates/dynamicCode/mixedFvPatchFieldTemplate.H
+++ b/etc/codeTemplates/dynamicCode/mixedFvPatchFieldTemplate.H
@@ -5,8 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2019 OpenCFD Ltd.
- Copyright (C) YEAR AUTHOR, AFFILIATION
+ Copyright (C) 2019-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -35,10 +34,11 @@ SourceFiles
\*---------------------------------------------------------------------------*/
-#ifndef mixedFvPatchTemplate${FieldType}_H
-#define mixedFvPatchTemplate${FieldType}_H
+#ifndef coded_mixedFvPatchTemplate${FieldType}_H
+#define coded_mixedFvPatchTemplate${FieldType}_H
#include "mixedFvPatchFields.H"
+#include "dictionaryContent.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -51,8 +51,13 @@ namespace Foam
class ${typeName}MixedValueFvPatch${FieldType}
:
- public mixedFvPatchField<${TemplateType}>
+ public mixedFvPatchField<${TemplateType}>,
+ public dictionaryContent
{
+ //- The parent boundary condition type
+ typedef mixedFvPatchField<${TemplateType}> parent_bctype;
+
+
// Private Member Functions
//- Report a message with the SHA1sum
@@ -137,6 +142,12 @@ public:
// Member Functions
+ //- Code context as a dictionary
+ const dictionary& codeContext() const
+ {
+ return dictionaryContent::dict();
+ }
+
//- Update the coefficients associated with the patch field
virtual void updateCoeffs();
};
diff --git a/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.C b/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.C
index 1d6e60bd79..ae21366c0f 100644
--- a/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.C
+++ b/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.C
@@ -60,6 +60,15 @@ void Foam::codedFixedValuePointPatchField::clearRedirect() const
}
+template
+const Foam::dictionary&
+Foam::codedFixedValuePointPatchField::codeContext() const
+{
+ const dictionary* ptr = dict_.findDict("codeContext", keyType::LITERAL);
+ return (ptr ? *ptr : dictionary::null);
+}
+
+
template
const Foam::dictionary&
Foam::codedFixedValuePointPatchField::codeDict() const
@@ -124,7 +133,7 @@ Foam::codedFixedValuePointPatchField::codedFixedValuePointPatchField
const DimensionedField& iF
)
:
- fixedValuePointPatchField(p, iF),
+ parent_bctype(p, iF),
codedBase(),
redirectPatchFieldPtr_(nullptr)
{}
@@ -133,17 +142,17 @@ Foam::codedFixedValuePointPatchField::codedFixedValuePointPatchField
template
Foam::codedFixedValuePointPatchField::codedFixedValuePointPatchField
(
- const codedFixedValuePointPatchField& ptf,
+ const codedFixedValuePointPatchField& rhs,
const pointPatch& p,
const DimensionedField& iF,
const pointPatchFieldMapper& mapper
)
:
- fixedValuePointPatchField(ptf, p, iF, mapper),
+ parent_bctype(rhs, p, iF, mapper),
codedBase(),
- dict_(ptf.dict_),
- name_(ptf.name_),
- redirectPatchFieldPtr_()
+ dict_(rhs.dict_),
+ name_(rhs.name_),
+ redirectPatchFieldPtr_(nullptr)
{}
@@ -156,7 +165,7 @@ Foam::codedFixedValuePointPatchField::codedFixedValuePointPatchField
const bool valueRequired
)
:
- fixedValuePointPatchField(p, iF, dict, valueRequired),
+ parent_bctype(p, iF, dict, valueRequired),
codedBase(),
dict_
(
@@ -182,29 +191,29 @@ Foam::codedFixedValuePointPatchField::codedFixedValuePointPatchField
template
Foam::codedFixedValuePointPatchField::codedFixedValuePointPatchField
(
- const codedFixedValuePointPatchField& ptf
+ const codedFixedValuePointPatchField& rhs
)
:
- fixedValuePointPatchField(ptf),
+ parent_bctype(rhs),
codedBase(),
- dict_(ptf.dict_),
- name_(ptf.name_),
- redirectPatchFieldPtr_()
+ dict_(rhs.dict_),
+ name_(rhs.name_),
+ redirectPatchFieldPtr_(nullptr)
{}
template
Foam::codedFixedValuePointPatchField::codedFixedValuePointPatchField
(
- const codedFixedValuePointPatchField& ptf,
+ const codedFixedValuePointPatchField& rhs,
const DimensionedField& iF
)
:
- fixedValuePointPatchField(ptf, iF),
+ parent_bctype(rhs, iF),
codedBase(),
- dict_(ptf.dict_),
- name_(ptf.name_),
- redirectPatchFieldPtr_()
+ dict_(rhs.dict_),
+ name_(rhs.name_),
+ redirectPatchFieldPtr_(nullptr)
{}
@@ -220,10 +229,11 @@ Foam::codedFixedValuePointPatchField::redirectPatchField() const
// Make sure to construct the patchfield with up-to-date value
OStringStream os;
- os.writeEntry("type", name_);
static_cast&>(*this).writeEntry("value", os);
IStringStream is(os.str());
- dictionary dict(is);
+ dictionary constructDict(is);
+
+ constructDict.set("type", name_);
redirectPatchFieldPtr_.reset
(
@@ -231,9 +241,25 @@ Foam::codedFixedValuePointPatchField::redirectPatchField() const
(
this->patch(),
this->internalField(),
- dict
+ constructDict
).ptr()
);
+
+
+ // Forward copy of codeContext to the code template
+ auto* contentPtr =
+ dynamic_cast(redirectPatchFieldPtr_.get());
+
+ if (contentPtr)
+ {
+ contentPtr->dict(this->codeContext());
+ }
+ else
+ {
+ WarningInFunction
+ << name_ << " Did not derive from dictionaryContent"
+ << nl << nl;
+ }
}
return *redirectPatchFieldPtr_;
}
@@ -257,7 +283,7 @@ void Foam::codedFixedValuePointPatchField::updateCoeffs()
// Copy through value
this->operator==(fvp);
- fixedValuePointPatchField::updateCoeffs();
+ parent_bctype::updateCoeffs();
}
@@ -274,14 +300,14 @@ void Foam::codedFixedValuePointPatchField::evaluate
const_cast&>(fvp).evaluate(commsType);
- fixedValuePointPatchField::evaluate(commsType);
+ parent_bctype::evaluate(commsType);
}
template
void Foam::codedFixedValuePointPatchField::write(Ostream& os) const
{
- fixedValuePointPatchField::write(os);
+ this->parent_bctype::write(os);
os.writeEntry("name", name_);
codedBase::writeCodeDict(os, dict_);
diff --git a/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.H
index 927bde50bf..6d79944f12 100644
--- a/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/derived/codedFixedValue/codedFixedValuePointPatchField.H
@@ -31,6 +31,16 @@ Description
Constructs on-the-fly a new boundary condition (derived from
fixedValuePointPatchField) which is then used to evaluate.
+ The code entries:
+ \plaintable
+ codeInclude | include files
+ codeOptions | compiler line: added to EXE_INC (Make/options)
+ codeLibs | linker line: added to LIB_LIBS (Make/options)
+ localCode | c++; local static functions
+ code | c++; patch value assignment
+ codeContext | additional dictionary context for the code
+ \endplaintable
+
Example:
\verbatim
movingWall
@@ -47,6 +57,11 @@ Description
);
#};
+ codeContext
+ {
+ ...
+ }
+
//codeInclude
//#{
// #include "fvCFD.H"
@@ -73,6 +88,10 @@ Description
}
\endverbatim
+Note
+ The code context dictionary can be supplied separately as the
+ \c codeContext entry.
+
See also
codedFixedValueFvPatchField
@@ -102,6 +121,10 @@ class codedFixedValuePointPatchField
public fixedValuePointPatchField,
protected codedBase
{
+ //- The parent boundary condition type
+ typedef fixedValuePointPatchField parent_bctype;
+
+
// Private Data
//- Dictionary contents for the boundary condition
@@ -123,6 +146,9 @@ class codedFixedValuePointPatchField
//- Clear redirected object(s)
virtual void clearRedirect() const;
+ //- Additional 'codeContext' dictionary to pass through
+ virtual const dictionary& codeContext() const;
+
//- The code dictionary. Inline "code" or from system/codeDict
virtual const dictionary& codeDict() const;
diff --git a/src/atmosphericModels/fvOptions/atmAmbientTurbSource/atmAmbientTurbSource.C b/src/atmosphericModels/fvOptions/atmAmbientTurbSource/atmAmbientTurbSource.C
index 932942adc7..8f8b5e0ffc 100644
--- a/src/atmosphericModels/fvOptions/atmAmbientTurbSource/atmAmbientTurbSource.C
+++ b/src/atmosphericModels/fvOptions/atmAmbientTurbSource/atmAmbientTurbSource.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020 ENERCON GmbH
- Copyright (C) 2020 OpenCFD Ltd.
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -107,7 +107,7 @@ Foam::fv::atmAmbientTurbSource::atmAmbientTurbSource
<< abort(FatalError);
}
- fieldNames_.setSize(2, "undefined");
+ fieldNames_.resize(2);
tmp tepsilon = turbPtr->epsilon();
tmp tomega = turbPtr->omega();
@@ -140,7 +140,7 @@ Foam::fv::atmAmbientTurbSource::atmAmbientTurbSource
fieldNames_[1] = turbPtr->k()().name();
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
Log << " Applying atmAmbientTurbSource to: "
<< fieldNames_[0] << " and " << fieldNames_[1]
diff --git a/src/atmosphericModels/fvOptions/atmBuoyancyTurbSource/atmBuoyancyTurbSource.C b/src/atmosphericModels/fvOptions/atmBuoyancyTurbSource/atmBuoyancyTurbSource.C
index 4cbbffc2d6..111bafe6b2 100644
--- a/src/atmosphericModels/fvOptions/atmBuoyancyTurbSource/atmBuoyancyTurbSource.C
+++ b/src/atmosphericModels/fvOptions/atmBuoyancyTurbSource/atmBuoyancyTurbSource.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020 ENERCON GmbH
- Copyright (C) 2020 OpenCFD Ltd.
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -198,7 +198,7 @@ Foam::fv::atmBuoyancyTurbSource::atmBuoyancyTurbSource
<< abort(FatalError);
}
- fieldNames_.setSize(2, "undefined");
+ fieldNames_.resize(2);
tmp tepsilon = turbPtr->epsilon();
tmp tomega = turbPtr->omega();
@@ -232,7 +232,7 @@ Foam::fv::atmBuoyancyTurbSource::atmBuoyancyTurbSource
fieldNames_[1] = turbPtr->k()().name();
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
Log << " Applying atmBuoyancyTurbSource to: "
<< fieldNames_[0] << " and " << fieldNames_[1]
diff --git a/src/atmosphericModels/fvOptions/atmCoriolisUSource/atmCoriolisUSource.C b/src/atmosphericModels/fvOptions/atmCoriolisUSource/atmCoriolisUSource.C
index 04e6c1cf3b..d53653d5ad 100644
--- a/src/atmosphericModels/fvOptions/atmCoriolisUSource/atmCoriolisUSource.C
+++ b/src/atmosphericModels/fvOptions/atmCoriolisUSource/atmCoriolisUSource.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020 CENER
- Copyright (C) 2020 OpenCFD Ltd.
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -109,9 +109,9 @@ Foam::fv::atmCoriolisUSource::atmCoriolisUSource
<< endl;
}
- fieldNames_.setSize(1, "U");
+ fieldNames_.resize(1, "U");
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
Log << " Applying atmCoriolisUSource to: " << fieldNames_[0] << endl;
}
diff --git a/src/atmosphericModels/fvOptions/atmLengthScaleTurbSource/atmLengthScaleTurbSource.C b/src/atmosphericModels/fvOptions/atmLengthScaleTurbSource/atmLengthScaleTurbSource.C
index f22c8886f2..c45ab84f1d 100644
--- a/src/atmosphericModels/fvOptions/atmLengthScaleTurbSource/atmLengthScaleTurbSource.C
+++ b/src/atmosphericModels/fvOptions/atmLengthScaleTurbSource/atmLengthScaleTurbSource.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020 ENERCON GmbH
- Copyright (C) 2020 OpenCFD Ltd.
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -134,7 +134,7 @@ Foam::fv::atmLengthScaleTurbSource::atmLengthScaleTurbSource
<< abort(FatalError);
}
- fieldNames_.setSize(1, "undefined");
+ fieldNames_.resize(1);
tmp tepsilon = turbPtr->epsilon();
tmp tomega = turbPtr->omega();
@@ -165,7 +165,7 @@ Foam::fv::atmLengthScaleTurbSource::atmLengthScaleTurbSource
<< abort(FatalError);
}
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
Log << " Applying atmLengthScaleTurbSource to: " << fieldNames_[0]
<< endl;
diff --git a/src/atmosphericModels/fvOptions/atmNutSource/atmNutSource.C b/src/atmosphericModels/fvOptions/atmNutSource/atmNutSource.C
index 4a558d9678..b67ce2ab73 100644
--- a/src/atmosphericModels/fvOptions/atmNutSource/atmNutSource.C
+++ b/src/atmosphericModels/fvOptions/atmNutSource/atmNutSource.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020 ENERCON GmbH
- Copyright (C) 2020 OpenCFD Ltd.
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -88,7 +88,7 @@ Foam::fv::atmNutSource::atmNutSource
<< abort(FatalError);
}
- fieldNames_.setSize(1, "undefined");
+ fieldNames_.resize(1);
const tmp& tnut = turbPtr->nut();
@@ -104,7 +104,7 @@ Foam::fv::atmNutSource::atmNutSource
<< abort(FatalError);
}
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
Log << " Applying atmNutSource to: " << fieldNames_[0] << endl;
}
diff --git a/src/atmosphericModels/fvOptions/atmPlantCanopyTSource/atmPlantCanopyTSource.C b/src/atmosphericModels/fvOptions/atmPlantCanopyTSource/atmPlantCanopyTSource.C
index ae907dc9bd..5faebf5973 100644
--- a/src/atmosphericModels/fvOptions/atmPlantCanopyTSource/atmPlantCanopyTSource.C
+++ b/src/atmosphericModels/fvOptions/atmPlantCanopyTSource/atmPlantCanopyTSource.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020 ENERCON GmbH
- Copyright (C) 2020 OpenCFD Ltd.
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -79,9 +79,9 @@ Foam::fv::atmPlantCanopyTSource::atmPlantCanopyTSource
mesh
)
{
- fieldNames_.setSize(1, "T");
+ fieldNames_.resize(1, "T");
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
Log << " Applying atmPlantCanopyTSource to: " << fieldNames_[0] << endl;
}
diff --git a/src/atmosphericModels/fvOptions/atmPlantCanopyTurbSource/atmPlantCanopyTurbSource.C b/src/atmosphericModels/fvOptions/atmPlantCanopyTurbSource/atmPlantCanopyTurbSource.C
index 548b4dff83..b137b8ae94 100644
--- a/src/atmosphericModels/fvOptions/atmPlantCanopyTurbSource/atmPlantCanopyTurbSource.C
+++ b/src/atmosphericModels/fvOptions/atmPlantCanopyTurbSource/atmPlantCanopyTurbSource.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020 ENERCON GmbH
- Copyright (C) 2020 OpenCFD Ltd.
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -108,7 +108,7 @@ Foam::fv::atmPlantCanopyTurbSource::atmPlantCanopyTurbSource
<< abort(FatalError);
}
- fieldNames_.setSize(1, "undefined");
+ fieldNames_.resize(1);
tmp tepsilon = turbPtr->epsilon();
tmp tomega = turbPtr->omega();
@@ -138,7 +138,7 @@ Foam::fv::atmPlantCanopyTurbSource::atmPlantCanopyTurbSource
<< abort(FatalError);
}
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
Log << " Applying atmPlantCanopyTurbSource to: " << fieldNames_[0]
<< endl;
diff --git a/src/atmosphericModels/fvOptions/atmPlantCanopyUSource/atmPlantCanopyUSource.C b/src/atmosphericModels/fvOptions/atmPlantCanopyUSource/atmPlantCanopyUSource.C
index 4ad1fdc3c6..cefd8f8776 100644
--- a/src/atmosphericModels/fvOptions/atmPlantCanopyUSource/atmPlantCanopyUSource.C
+++ b/src/atmosphericModels/fvOptions/atmPlantCanopyUSource/atmPlantCanopyUSource.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020 ENERCON GmbH
- Copyright (C) 2020 OpenCFD Ltd.
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -78,9 +78,9 @@ Foam::fv::atmPlantCanopyUSource::atmPlantCanopyUSource
mesh
)
{
- fieldNames_.setSize(1, "U");
+ fieldNames_.resize(1, "U");
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
Log << " Applying atmPlantCanopyUSource to: " << fieldNames_[0] << endl;
}
diff --git a/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.H b/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.H
index e99e543441..7cc0c374af 100644
--- a/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.H
+++ b/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.H
@@ -35,10 +35,10 @@ Description
The entries are:
\plaintable
codeInclude | include files
- codeOptions | include paths; inserted into EXE_INC in Make/options
- codeLibs | link line; inserted into LIB_LIBS in Make/options
- localCode | c++; local static functions;
- code | c++; upon motionSolver::curPoints();
+ codeOptions | compiler line: added to EXE_INC (Make/options)
+ codeLibs | linker line: added to LIB_LIBS (Make/options)
+ localCode | c++; local static functions
+ code | c++; upon motionSolver::curPoints()
\endplaintable
Note that the dynamically generated motionSolver is an points0MotionSolver,
diff --git a/src/faOptions/faOption/faOption.C b/src/faOptions/faOption/faOption.C
index 9f98da33fe..b043867f81 100644
--- a/src/faOptions/faOption/faOption.C
+++ b/src/faOptions/faOption/faOption.C
@@ -40,6 +40,15 @@ namespace Foam
}
+// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
+
+void Foam::fa::option::resetApplied()
+{
+ applied_.resize(fieldNames_.size());
+ applied_ = false;
+}
+
+
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::fa::option::option
diff --git a/src/faOptions/faOption/faOption.H b/src/faOptions/faOption/faOption.H
index c8d69e473f..e7bddf348f 100644
--- a/src/faOptions/faOption/faOption.H
+++ b/src/faOptions/faOption/faOption.H
@@ -132,6 +132,13 @@ protected:
//- Region name (finite-area)
word regionName_;
+
+ // Protected Member Functions
+
+ //- Resize/reset applied flag list for all fieldNames_ entries
+ void resetApplied();
+
+
private:
// Private Data
diff --git a/src/faOptions/faOption/faOptionList.C b/src/faOptions/faOption/faOptionList.C
index b722e457a6..2c312807e7 100644
--- a/src/faOptions/faOption/faOptionList.C
+++ b/src/faOptions/faOption/faOptionList.C
@@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2019-2020 OpenCFD Ltd.
+ Copyright (C) 2019-2021 OpenCFD Ltd.
------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -38,33 +38,27 @@ namespace fa
}
-// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
+// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
const Foam::dictionary& Foam::fa::optionList::optionsDict
(
const dictionary& dict
-) const
+)
{
- if (dict.found("options"))
- {
- return dict.subDict("options");
- }
- else
- {
- return dict;
- }
+ return dict.optionalSubDict("options", keyType::LITERAL);
}
+// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
+
bool Foam::fa::optionList::readOptions(const dictionary& dict)
{
checkTimeIndex_ = mesh_.time().timeIndex() + 2;
bool allOk = true;
- forAll(*this, i)
+ for (fa::option& opt : *this)
{
- option& bs = this->operator[](i);
- bool ok = bs.read(dict.subDict(bs.name()));
+ bool ok = opt.read(dict.subDict(opt.name()));
allOk = (allOk && ok);
}
return allOk;
@@ -75,10 +69,9 @@ void Foam::fa::optionList::checkApplied() const
{
if (mesh_.time().timeIndex() == checkTimeIndex_)
{
- forAll(*this, i)
+ for (const fa::option& opt : *this)
{
- const option& bs = this->operator[](i);
- bs.checkApplied();
+ opt.checkApplied();
}
}
}
@@ -144,6 +137,22 @@ void Foam::fa::optionList::reset(const dictionary& dict)
}
+bool Foam::fa::optionList::appliesToField(const word& fieldName) const
+{
+ for (const fa::option& source : *this)
+ {
+ const label fieldi = source.applyToField(fieldName);
+
+ if (fieldi != -1)
+ {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+
bool Foam::fa::optionList::read(const dictionary& dict)
{
return readOptions(optionsDict(dict));
@@ -153,12 +162,12 @@ bool Foam::fa::optionList::read(const dictionary& dict)
bool Foam::fa::optionList::writeData(Ostream& os) const
{
// Write list contents
- forAll(*this, i)
+ for (const fa::option& opt : *this)
{
os << nl;
- this->operator[](i).writeHeader(os);
- this->operator[](i).writeData(os);
- this->operator[](i).writeFooter(os);
+ opt.writeHeader(os);
+ opt.writeData(os);
+ opt.writeFooter(os);
}
// Check state of IOstream
diff --git a/src/faOptions/faOption/faOptionList.H b/src/faOptions/faOption/faOptionList.H
index a479c97196..18b3b535ab 100644
--- a/src/faOptions/faOption/faOptionList.H
+++ b/src/faOptions/faOption/faOptionList.H
@@ -83,8 +83,8 @@ protected:
// Protected Member Functions
- //- Return the "options" sub-dictionary if present otherwise return dict
- const dictionary& optionsDict(const dictionary& dict) const;
+ //- Return "options" sub-dictionary (if present) or return dict
+ static const dictionary& optionsDict(const dictionary& dict);
//- Read options dictionary
bool readOptions(const dictionary& dict);
@@ -117,11 +117,11 @@ public:
// Constructors
- //- Construct from patch
- optionList(const fvPatch& p);
+ //- Default construct from patch
+ explicit optionList(const fvPatch& p);
- //- Construct from mesh and dictionary
- optionList(const fvPatch&, const dictionary& );
+ //- Construct from patch and dictionary
+ optionList(const fvPatch& p, const dictionary&);
//- Destructor
@@ -133,6 +133,9 @@ public:
//- Reset the source list
void reset(const dictionary& dict);
+ //- Return whether there is something to apply to the field
+ bool appliesToField(const word& fieldName) const;
+
// Sources
diff --git a/src/faOptions/faOption/faOptionListTemplates.C b/src/faOptions/faOption/faOptionListTemplates.C
index 96a266e5a3..b71f495880 100644
--- a/src/faOptions/faOption/faOptionListTemplates.C
+++ b/src/faOptions/faOption/faOptionListTemplates.C
@@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2019-2020 OpenCFD Ltd.
+ Copyright (C) 2019-2021 OpenCFD Ltd.
------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -44,11 +44,9 @@ Foam::tmp> Foam::fa::optionList::source
tmp> tmtx(new faMatrix(field, ds));
faMatrix& mtx = tmtx.ref();
- forAll(*this, i)
+ for (fa::option& source : *this)
{
- option& source = this->operator[](i);
-
- label fieldi = source.applyToField(fieldName);
+ const label fieldi = source.applyToField(fieldName);
if (fieldi != -1)
{
@@ -56,14 +54,24 @@ Foam::tmp> Foam::fa::optionList::source
source.setApplied(fieldi);
- if (source.isActive())
- {
- if (debug)
- {
- Info<< "Applying source " << source.name() << " to field "
- << fieldName << endl;
- }
+ const bool ok = source.isActive();
+ if (debug)
+ {
+ if (ok)
+ {
+ Info<< "Apply";
+ }
+ else
+ {
+ Info<< "(Inactive)";
+ }
+ Info<< " source " << source.name()
+ << " for field " << fieldName << endl;
+ }
+
+ if (ok)
+ {
source.addSup(h, mtx, fieldi);
}
}
@@ -127,11 +135,9 @@ Foam::tmp> Foam::fa::optionList::operator()
tmp> tmtx(new faMatrix(field, ds));
faMatrix& mtx = tmtx.ref();
- forAll(*this, i)
+ for (fa::option& source : *this)
{
- option& source = this->operator[](i);
-
- label fieldi = source.applyToField(fieldName);
+ const label fieldi = source.applyToField(fieldName);
if (fieldi != -1)
{
@@ -139,14 +145,24 @@ Foam::tmp> Foam::fa::optionList::operator()
source.setApplied(fieldi);
- if (source.isActive())
- {
- if (debug)
- {
- Info<< "Applying source " << source.name() << " to field "
- << fieldName << endl;
- }
+ const bool ok = source.isActive();
+ if (debug)
+ {
+ if (ok)
+ {
+ Info<< "Apply";
+ }
+ else
+ {
+ Info<< "(Inactive)";
+ }
+ Info<< " source " << source.name()
+ << " for field " << fieldName << endl;
+ }
+
+ if (ok)
+ {
source.addSup(h, rho, mtx, fieldi);
}
}
@@ -171,11 +187,9 @@ Foam::tmp> Foam::fa::optionList::operator()
tmp> tmtx(new faMatrix(field, dsMat));
faMatrix& mtx = tmtx.ref();
- forAll(*this, i)
+ for (fa::option& source : *this)
{
- option& source = this->operator[](i);
-
- label fieldi = source.applyToField(field.name());
+ const label fieldi = source.applyToField(field.name());
if (fieldi != -1)
{
@@ -183,14 +197,24 @@ Foam::tmp> Foam::fa::optionList::operator()
source.setApplied(fieldi);
- if (source.isActive())
- {
- if (debug)
- {
- Info<< "Applying source " << source.name() << " to field "
- << field.name() << endl;
- }
+ const bool ok = source.isActive();
+ if (debug)
+ {
+ if (ok)
+ {
+ Info<< "Apply";
+ }
+ else
+ {
+ Info<< "(Inactive)";
+ }
+ Info<< " source " << source.name()
+ << " for field " << field.name() << endl;
+ }
+
+ if (ok)
+ {
source.addSup(rho, mtx, fieldi);
}
}
@@ -226,11 +250,9 @@ void Foam::fa::optionList::constrain(faMatrix& eqn)
{
checkApplied();
- forAll(*this, i)
+ for (fa::option& source : *this)
{
- option& source = this->operator[](i);
-
- label fieldi = source.applyToField(eqn.psi().name());
+ const label fieldi = source.applyToField(eqn.psi().name());
if (fieldi != -1)
{
@@ -238,14 +260,24 @@ void Foam::fa::optionList::constrain(faMatrix& eqn)
source.setApplied(fieldi);
- if (source.isActive())
- {
- if (debug)
- {
- Info<< "Applying constraint " << source.name()
- << " to field " << eqn.psi().name() << endl;
- }
+ const bool ok = source.isActive();
+ if (debug)
+ {
+ if (ok)
+ {
+ Info<< "Constrain";
+ }
+ else
+ {
+ Info<< "(Inactive constrain)";
+ }
+ Info<< " source " << source.name()
+ << " for field " << eqn.psi().name() << endl;
+ }
+
+ if (ok)
+ {
source.constrain(eqn, fieldi);
}
}
@@ -261,11 +293,9 @@ void Foam::fa::optionList::correct
{
const word& fieldName = field.name();
- forAll(*this, i)
+ for (fa::option& source : *this)
{
- option& source = this->operator[](i);
-
- label fieldi = source.applyToField(fieldName);
+ const label fieldi = source.applyToField(fieldName);
if (fieldi != -1)
{
@@ -273,14 +303,24 @@ void Foam::fa::optionList::correct
source.setApplied(fieldi);
- if (source.isActive())
- {
- if (debug)
- {
- Info<< "Correcting source " << source.name()
- << " for field " << fieldName << endl;
- }
+ const bool ok = source.isActive();
+ if (debug)
+ {
+ if (ok)
+ {
+ Info<< "Correct";
+ }
+ else
+ {
+ Info<< "(Inactive correct)";
+ }
+ Info<< " source " << source.name()
+ << " for field " << fieldName << endl;
+ }
+
+ if (ok)
+ {
source.correct(field);
}
}
diff --git a/src/faOptions/faceSetOption/faceSetOption.C b/src/faOptions/faceSetOption/faceSetOption.C
index 24e176e56d..04eefeb2ff 100644
--- a/src/faOptions/faceSetOption/faceSetOption.C
+++ b/src/faOptions/faceSetOption/faceSetOption.C
@@ -204,7 +204,7 @@ Foam::fa::faceSetOption::faceSetOption
bool Foam::fa::faceSetOption::isActive()
{
- if (option::isActive() && inTimeLimits(mesh_.time().value()))
+ if (fa::option::isActive() && inTimeLimits(mesh_.time().value()))
{
// Update the face set if the mesh is changing
if (mesh_.changing())
@@ -229,7 +229,7 @@ bool Foam::fa::faceSetOption::isActive()
bool Foam::fa::faceSetOption::read(const dictionary& dict)
{
- if (option::read(dict))
+ if (fa::option::read(dict))
{
if (coeffs_.readIfPresent("timeStart", timeStart_))
{
diff --git a/src/faOptions/sources/derived/contactHeatFluxSource/contactHeatFluxSource.C b/src/faOptions/sources/derived/contactHeatFluxSource/contactHeatFluxSource.C
index e9a4133d7a..8830273407 100644
--- a/src/faOptions/sources/derived/contactHeatFluxSource/contactHeatFluxSource.C
+++ b/src/faOptions/sources/derived/contactHeatFluxSource/contactHeatFluxSource.C
@@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2019-2020 OpenCFD Ltd.
+ Copyright (C) 2019-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -78,9 +78,9 @@ Foam::fa::contactHeatFluxSource::contactHeatFluxSource
contactRes_(0),
curTimeIndex_(-1)
{
- fieldNames_.setSize(1, TName_);
+ fieldNames_.resize(1, TName_);
- applied_.setSize(fieldNames_.size(), false);
+ fa::option::resetApplied();
read(dict);
}
diff --git a/src/faOptions/sources/derived/externalFileSource/externalFileSource.C b/src/faOptions/sources/derived/externalFileSource/externalFileSource.C
index 81e93caa40..cc6da00221 100644
--- a/src/faOptions/sources/derived/externalFileSource/externalFileSource.C
+++ b/src/faOptions/sources/derived/externalFileSource/externalFileSource.C
@@ -83,9 +83,9 @@ Foam::fa::externalFileSource::externalFileSource
),
curTimeIndex_(-1)
{
- fieldNames_.setSize(1, fieldName_);
+ fieldNames_.resize(1, fieldName_);
- applied_.setSize(fieldNames_.size(), false);
+ fa::option::resetApplied();
read(dict);
}
diff --git a/src/faOptions/sources/derived/externalHeatFluxSource/externalHeatFluxSource.C b/src/faOptions/sources/derived/externalHeatFluxSource/externalHeatFluxSource.C
index 22c8404e19..2a559f0fe7 100644
--- a/src/faOptions/sources/derived/externalHeatFluxSource/externalHeatFluxSource.C
+++ b/src/faOptions/sources/derived/externalHeatFluxSource/externalHeatFluxSource.C
@@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2019-2020 OpenCFD Ltd.
+ Copyright (C) 2019-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -77,9 +77,9 @@ Foam::fa::externalHeatFluxSource::externalHeatFluxSource
Ta_(),
emissivity_(dict.getOrDefault("emissivity", 0))
{
- fieldNames_.setSize(1, TName_);
+ fieldNames_.resize(1, TName_);
- applied_.setSize(fieldNames_.size(), false);
+ fa::option::resetApplied();
read(dict);
}
diff --git a/src/faOptions/sources/derived/jouleHeatingSource/jouleHeatingSource.C b/src/faOptions/sources/derived/jouleHeatingSource/jouleHeatingSource.C
index a752b74eff..583fd34ecd 100644
--- a/src/faOptions/sources/derived/jouleHeatingSource/jouleHeatingSource.C
+++ b/src/faOptions/sources/derived/jouleHeatingSource/jouleHeatingSource.C
@@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2019-2020 OpenCFD Ltd.
+ Copyright (C) 2019-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -72,9 +72,9 @@ Foam::fa::jouleHeatingSource::jouleHeatingSource
nIter_(1),
anisotropicElectricalConductivity_(false)
{
- fieldNames_.setSize(1, TName_);
+ fieldNames_.resize(1, TName_);
- applied_.setSize(fieldNames_.size(), false);
+ fa::option::resetApplied();
if (anisotropicElectricalConductivity_)
{
diff --git a/src/finiteVolume/cfdTools/general/fvOptions/fvOption.C b/src/finiteVolume/cfdTools/general/fvOptions/fvOption.C
index 4614b1b8ac..a3aa2f6dad 100644
--- a/src/finiteVolume/cfdTools/general/fvOptions/fvOption.C
+++ b/src/finiteVolume/cfdTools/general/fvOptions/fvOption.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
- Copyright (C) 2019-2020 OpenCFD Ltd.
+ Copyright (C) 2019-2021 OpenCFD Ltd.
Copyright (C) 2020 PCOpt/NTUA
Copyright (C) 2020 FOSS GP
-------------------------------------------------------------------------------
@@ -43,6 +43,15 @@ namespace Foam
}
+// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
+
+void Foam::fv::option::resetApplied()
+{
+ applied_.resize(fieldNames_.size());
+ applied_ = false;
+}
+
+
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::fv::option::option
diff --git a/src/finiteVolume/cfdTools/general/fvOptions/fvOption.H b/src/finiteVolume/cfdTools/general/fvOptions/fvOption.H
index 84539964ac..f7a7408b84 100644
--- a/src/finiteVolume/cfdTools/general/fvOptions/fvOption.H
+++ b/src/finiteVolume/cfdTools/general/fvOptions/fvOption.H
@@ -123,6 +123,12 @@ protected:
bool active_;
+ // Protected Member Functions
+
+ //- Resize/reset applied flag list for all fieldNames_ entries
+ void resetApplied();
+
+
public:
//- Switch write log to Info
diff --git a/src/finiteVolume/cfdTools/general/fvOptions/fvOptionList.C b/src/finiteVolume/cfdTools/general/fvOptions/fvOptionList.C
index 2fe08194b5..45d114ca11 100644
--- a/src/finiteVolume/cfdTools/general/fvOptions/fvOptionList.C
+++ b/src/finiteVolume/cfdTools/general/fvOptions/fvOptionList.C
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -39,33 +40,27 @@ namespace fv
}
-// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
+// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
const Foam::dictionary& Foam::fv::optionList::optionsDict
(
const dictionary& dict
-) const
+)
{
- if (dict.found("options"))
- {
- return dict.subDict("options");
- }
- else
- {
- return dict;
- }
+ return dict.optionalSubDict("options", keyType::LITERAL);
}
+// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
+
bool Foam::fv::optionList::readOptions(const dictionary& dict)
{
checkTimeIndex_ = mesh_.time().timeIndex() + 2;
bool allOk = true;
- forAll(*this, i)
+ for (fv::option& opt : *this)
{
- option& bs = this->operator[](i);
- bool ok = bs.read(dict.subDict(bs.name()));
+ bool ok = opt.read(dict.subDict(opt.name()));
allOk = (allOk && ok);
}
return allOk;
@@ -76,10 +71,9 @@ void Foam::fv::optionList::checkApplied() const
{
if (mesh_.time().timeIndex() == checkTimeIndex_)
{
- forAll(*this, i)
+ for (const fv::option& opt : *this)
{
- const option& bs = this->operator[](i);
- bs.checkApplied();
+ opt.checkApplied();
}
}
}
@@ -141,11 +135,9 @@ void Foam::fv::optionList::reset(const dictionary& dict)
bool Foam::fv::optionList::appliesToField(const word& fieldName) const
{
- forAll(*this, i)
+ for (const fv::option& source : *this)
{
- const option& source = this->operator[](i);
-
- label fieldi = source.applyToField(fieldName);
+ const label fieldi = source.applyToField(fieldName);
if (fieldi != -1)
{
@@ -166,12 +158,12 @@ bool Foam::fv::optionList::read(const dictionary& dict)
bool Foam::fv::optionList::writeData(Ostream& os) const
{
// Write list contents
- forAll(*this, i)
+ for (const fv::option& opt : *this)
{
os << nl;
- this->operator[](i).writeHeader(os);
- this->operator[](i).writeData(os);
- this->operator[](i).writeFooter(os);
+ opt.writeHeader(os);
+ opt.writeData(os);
+ opt.writeFooter(os);
}
// Check state of IOstream
diff --git a/src/finiteVolume/cfdTools/general/fvOptions/fvOptionList.H b/src/finiteVolume/cfdTools/general/fvOptions/fvOptionList.H
index 1cbca46098..14b8ea08c9 100644
--- a/src/finiteVolume/cfdTools/general/fvOptions/fvOptionList.H
+++ b/src/finiteVolume/cfdTools/general/fvOptions/fvOptionList.H
@@ -84,8 +84,8 @@ protected:
// Protected Member Functions
- //- Return the "options" sub-dictionary if present otherwise return dict
- const dictionary& optionsDict(const dictionary& dict) const;
+ //- Return "options" sub-dictionary (if present) or return dict
+ static const dictionary& optionsDict(const dictionary& dict);
//- Read options dictionary
bool readOptions(const dictionary& dict);
@@ -117,8 +117,8 @@ public:
// Constructors
- //- Construct null
- optionList(const fvMesh& mesh);
+ //- Default construct from mesh
+ explicit optionList(const fvMesh& mesh);
//- Construct from mesh and dictionary
optionList(const fvMesh& mesh, const dictionary& dict);
diff --git a/src/finiteVolume/cfdTools/general/fvOptions/fvOptionListTemplates.C b/src/finiteVolume/cfdTools/general/fvOptions/fvOptionListTemplates.C
index 8e76688319..374cc5ab25 100644
--- a/src/finiteVolume/cfdTools/general/fvOptions/fvOptionListTemplates.C
+++ b/src/finiteVolume/cfdTools/general/fvOptions/fvOptionListTemplates.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
- Copyright (C) 2016 OpenCFD Ltd.
+ Copyright (C) 2016-2021 OpenCFD Ltd.
Copyright (C) 2020 PCOpt/NTUA
Copyright (C) 2020 FOSS GP
-------------------------------------------------------------------------------
@@ -45,11 +45,9 @@ Foam::tmp> Foam::fv::optionList::source
tmp> tmtx(new fvMatrix(field, ds));
fvMatrix& mtx = tmtx.ref();
- forAll(*this, i)
+ for (fv::option& source : *this)
{
- option& source = this->operator[](i);
-
- label fieldi = source.applyToField(fieldName);
+ const label fieldi = source.applyToField(fieldName);
if (fieldi != -1)
{
@@ -57,14 +55,24 @@ Foam::tmp> Foam::fv::optionList::source
source.setApplied(fieldi);
- if (source.isActive())
- {
- if (debug)
- {
- Info<< "Applying source " << source.name() << " to field "
- << fieldName << endl;
- }
+ const bool ok = source.isActive();
+ if (debug)
+ {
+ if (ok)
+ {
+ Info<< "Apply";
+ }
+ else
+ {
+ Info<< "(Inactive)";
+ }
+ Info<< " source " << source.name()
+ << " for field " << fieldName << endl;
+ }
+
+ if (ok)
+ {
source.addSup(mtx, fieldi);
}
}
@@ -124,11 +132,9 @@ Foam::tmp> Foam::fv::optionList::operator()
tmp> tmtx(new fvMatrix(field, ds));
fvMatrix& mtx = tmtx.ref();
- forAll(*this, i)
+ for (fv::option& source : *this)
{
- option& source = this->operator[](i);
-
- label fieldi = source.applyToField(fieldName);
+ const label fieldi = source.applyToField(fieldName);
if (fieldi != -1)
{
@@ -136,14 +142,24 @@ Foam::tmp> Foam::fv::optionList::operator()
source.setApplied(fieldi);
- if (source.isActive())
- {
- if (debug)
- {
- Info<< "Applying source " << source.name() << " to field "
- << fieldName << endl;
- }
+ const bool ok = source.isActive();
+ if (debug)
+ {
+ if (ok)
+ {
+ Info<< "Apply";
+ }
+ else
+ {
+ Info<< "(Inactive)";
+ }
+ Info<< " source " << source.name()
+ << " for field " << fieldName << endl;
+ }
+
+ if (ok)
+ {
source.addSup(rho, mtx, fieldi);
}
}
@@ -185,11 +201,9 @@ Foam::tmp> Foam::fv::optionList::operator()
tmp> tmtx(new fvMatrix(field, ds));
fvMatrix& mtx = tmtx.ref();
- forAll(*this, i)
+ for (fv::option& source : *this)
{
- option& source = this->operator[](i);
-
- label fieldi = source.applyToField(fieldName);
+ const label fieldi = source.applyToField(fieldName);
if (fieldi != -1)
{
@@ -197,14 +211,24 @@ Foam::tmp> Foam::fv::optionList::operator()
source.setApplied(fieldi);
- if (source.isActive())
- {
- if (debug)
- {
- Info<< "Applying source " << source.name() << " to field "
- << fieldName << endl;
- }
+ const bool ok = source.isActive();
+ if (debug)
+ {
+ if (ok)
+ {
+ Info<< "Apply";
+ }
+ else
+ {
+ Info<< "(Inactive)";
+ }
+ Info<< " source " << source.name()
+ << " for field " << fieldName << endl;
+ }
+
+ if (ok)
+ {
source.addSup(alpha, rho, mtx, fieldi);
}
}
@@ -291,11 +315,9 @@ void Foam::fv::optionList::constrain(fvMatrix& eqn)
{
checkApplied();
- forAll(*this, i)
+ for (fv::option& source : *this)
{
- option& source = this->operator[](i);
-
- label fieldi = source.applyToField(eqn.psi().name());
+ const label fieldi = source.applyToField(eqn.psi().name());
if (fieldi != -1)
{
@@ -303,14 +325,24 @@ void Foam::fv::optionList::constrain(fvMatrix& eqn)
source.setApplied(fieldi);
- if (source.isActive())
- {
- if (debug)
- {
- Info<< "Applying constraint " << source.name()
- << " to field " << eqn.psi().name() << endl;
- }
+ const bool ok = source.isActive();
+ if (debug)
+ {
+ if (ok)
+ {
+ Info<< "Constrain";
+ }
+ else
+ {
+ Info<< "(Inactive constrain)";
+ }
+ Info<< " source " << source.name()
+ << " for field " << eqn.psi().name() << endl;
+ }
+
+ if (ok)
+ {
source.constrain(eqn, fieldi);
}
}
@@ -326,11 +358,9 @@ void Foam::fv::optionList::correct
{
const word& fieldName = field.name();
- forAll(*this, i)
+ for (fv::option& source : *this)
{
- option& source = this->operator[](i);
-
- label fieldi = source.applyToField(fieldName);
+ const label fieldi = source.applyToField(fieldName);
if (fieldi != -1)
{
@@ -338,14 +368,24 @@ void Foam::fv::optionList::correct
source.setApplied(fieldi);
- if (source.isActive())
- {
- if (debug)
- {
- Info<< "Correcting source " << source.name()
- << " for field " << fieldName << endl;
- }
+ const bool ok = source.isActive();
+ if (debug)
+ {
+ if (ok)
+ {
+ Info<< "Correct";
+ }
+ else
+ {
+ Info<< "(Inactive correct)";
+ }
+ Info<< " source " << source.name()
+ << " for field " << fieldName << endl;
+ }
+
+ if (ok)
+ {
source.correct(field);
}
}
@@ -361,25 +401,24 @@ void Foam::fv::optionList::postProcessSens
const word& designVariablesName
)
{
- forAll(*this, i)
+ for (fv::option& source : *this)
{
- option& source = this->operator[](i);
-
- label fieldi = source.applyToField(fieldName);
+ const label fieldi = source.applyToField(fieldName);
if (fieldi != -1)
{
addProfiling(fvopt, "fvOption::postProcessSens." + source.name());
- if (source.isActive())
- {
- if (debug)
- {
- Info<< "Post processing sensitivity from source "
- << source.name()
- << " for field " << fieldName << endl;
- }
+ const bool ok = source.isActive();
+ if (debug && ok)
+ {
+ Info<< "Post processing sensitivity source "
+ << source.name() << " for field " << fieldName << endl;
+ }
+
+ if (ok)
+ {
source.postProcessSens
(
sensField,
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.C
index 2a3a1702f7..73f1e36004 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.C
@@ -60,6 +60,15 @@ void Foam::codedFixedValueFvPatchField::clearRedirect() const
}
+template
+const Foam::dictionary&
+Foam::codedFixedValueFvPatchField::codeContext() const
+{
+ const dictionary* ptr = dict_.findDict("codeContext", keyType::LITERAL);
+ return (ptr ? *ptr : dictionary::null);
+}
+
+
template
const Foam::dictionary&
Foam::codedFixedValueFvPatchField::codeDict() const
@@ -124,7 +133,7 @@ Foam::codedFixedValueFvPatchField::codedFixedValueFvPatchField
const DimensionedField& iF
)
:
- fixedValueFvPatchField(p, iF),
+ parent_bctype(p, iF),
codedBase(),
redirectPatchFieldPtr_(nullptr)
{}
@@ -133,17 +142,17 @@ Foam::codedFixedValueFvPatchField::codedFixedValueFvPatchField
template
Foam::codedFixedValueFvPatchField::codedFixedValueFvPatchField
(
- const codedFixedValueFvPatchField& ptf,
+ const codedFixedValueFvPatchField& rhs,
const fvPatch& p,
const DimensionedField& iF,
const fvPatchFieldMapper& mapper
)
:
- fixedValueFvPatchField(ptf, p, iF, mapper),
+ parent_bctype(rhs, p, iF, mapper),
codedBase(),
- dict_(ptf.dict_),
- name_(ptf.name_),
- redirectPatchFieldPtr_()
+ dict_(rhs.dict_),
+ name_(rhs.name_),
+ redirectPatchFieldPtr_(nullptr)
{}
@@ -155,7 +164,7 @@ Foam::codedFixedValueFvPatchField::codedFixedValueFvPatchField
const dictionary& dict
)
:
- fixedValueFvPatchField(p, iF, dict),
+ parent_bctype(p, iF, dict),
codedBase(),
dict_
(
@@ -181,29 +190,29 @@ Foam::codedFixedValueFvPatchField::codedFixedValueFvPatchField
template
Foam::codedFixedValueFvPatchField::codedFixedValueFvPatchField
(
- const codedFixedValueFvPatchField& ptf
+ const codedFixedValueFvPatchField& rhs
)
:
- fixedValueFvPatchField(ptf),
+ parent_bctype(rhs),
codedBase(),
- dict_(ptf.dict_),
- name_(ptf.name_),
- redirectPatchFieldPtr_()
+ dict_(rhs.dict_),
+ name_(rhs.name_),
+ redirectPatchFieldPtr_(nullptr)
{}
template
Foam::codedFixedValueFvPatchField::codedFixedValueFvPatchField
(
- const codedFixedValueFvPatchField& ptf,
+ const codedFixedValueFvPatchField& rhs,
const DimensionedField& iF
)
:
- fixedValueFvPatchField(ptf, iF),
+ parent_bctype(rhs, iF),
codedBase(),
- dict_(ptf.dict_),
- name_(ptf.name_),
- redirectPatchFieldPtr_()
+ dict_(rhs.dict_),
+ name_(rhs.name_),
+ redirectPatchFieldPtr_(nullptr)
{}
@@ -219,10 +228,11 @@ Foam::codedFixedValueFvPatchField::redirectPatchField() const
// Make sure to construct the patchfield with up-to-date value
OStringStream os;
- os.writeEntry("type", name_);
static_cast&>(*this).writeEntry("value", os);
IStringStream is(os.str());
- dictionary dict(is);
+ dictionary constructDict(is);
+
+ constructDict.set("type", name_);
redirectPatchFieldPtr_.reset
(
@@ -230,9 +240,25 @@ Foam::codedFixedValueFvPatchField::redirectPatchField() const
(
this->patch(),
this->internalField(),
- dict
+ constructDict
).ptr()
);
+
+
+ // Forward copy of codeContext to the code template
+ auto* contentPtr =
+ dynamic_cast(redirectPatchFieldPtr_.get());
+
+ if (contentPtr)
+ {
+ contentPtr->dict(this->codeContext());
+ }
+ else
+ {
+ WarningInFunction
+ << name_ << " Did not derive from dictionaryContent"
+ << nl << nl;
+ }
}
return *redirectPatchFieldPtr_;
}
@@ -256,7 +282,7 @@ void Foam::codedFixedValueFvPatchField::updateCoeffs()
// Copy through value
this->operator==(fvp);
- fixedValueFvPatchField::updateCoeffs();
+ parent_bctype::updateCoeffs();
}
@@ -273,14 +299,14 @@ void Foam::codedFixedValueFvPatchField::evaluate
const_cast&>(fvp).evaluate(commsType);
- fixedValueFvPatchField::evaluate(commsType);
+ parent_bctype::evaluate(commsType);
}
template
void Foam::codedFixedValueFvPatchField::write(Ostream& os) const
{
- fixedValueFvPatchField::write(os);
+ this->parent_bctype::write(os);
os.writeEntry("name", name_);
codedBase::writeCodeDict(os, dict_);
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.H
index 9f2c91e072..19201b6b43 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.H
@@ -34,6 +34,16 @@ Description
Constructs on-the-fly a new boundary condition (derived from
fixedValueFvPatchField) which is then used to evaluate.
+ The code entries:
+ \plaintable
+ codeInclude | include files
+ codeOptions | compiler line: added to EXE_INC (Make/options)
+ codeLibs | linker line: added to LIB_LIBS (Make/options)
+ localCode | c++; local static functions
+ code | c++; patch value assignment
+ codeContext | additional dictionary context for the code
+ \endplaintable
+
Usage
Example:
\verbatim
@@ -43,6 +53,11 @@ Usage
value uniform 0;
name rampedFixedValue; // name of generated BC
+ codeContext
+ {
+ ...
+ }
+
code
#{
operator==(min(10, 0.1*this->db().time().value()));
@@ -74,6 +89,10 @@ Usage
}
\endverbatim
+Note
+ The code context dictionary can be supplied separately as the
+ \c codeContext entry.
+
See also
Foam::dynamicCode
Foam::functionEntries::codeStream
@@ -104,6 +123,10 @@ class codedFixedValueFvPatchField
public fixedValueFvPatchField,
protected codedBase
{
+ //- The parent boundary condition type
+ typedef fixedValueFvPatchField parent_bctype;
+
+
// Private Data
//- Dictionary contents for the boundary condition
@@ -125,6 +148,9 @@ class codedFixedValueFvPatchField
//- Clear redirected object(s)
virtual void clearRedirect() const;
+ //- Additional 'codeContext' dictionary to pass through
+ virtual const dictionary& codeContext() const;
+
//- The code dictionary. Inline "code" or from system/codeDict
virtual const dictionary& codeDict() const;
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.C
index 1bb9e078ad..e294c6474d 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
- Copyright (C) 2016-2020 OpenCFD Ltd.
+ Copyright (C) 2016-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -60,6 +60,15 @@ void Foam::codedMixedFvPatchField::clearRedirect() const
}
+template
+const Foam::dictionary&
+Foam::codedMixedFvPatchField::codeContext() const
+{
+ const dictionary* ptr = dict_.findDict("codeContext", keyType::LITERAL);
+ return (ptr ? *ptr : dictionary::null);
+}
+
+
template
const Foam::dictionary&
Foam::codedMixedFvPatchField::codeDict() const
@@ -124,7 +133,7 @@ Foam::codedMixedFvPatchField::codedMixedFvPatchField
const DimensionedField& iF
)
:
- mixedFvPatchField(p, iF),
+ parent_bctype(p, iF),
codedBase(),
redirectPatchFieldPtr_(nullptr)
{}
@@ -133,17 +142,17 @@ Foam::codedMixedFvPatchField::codedMixedFvPatchField
template
Foam::codedMixedFvPatchField::codedMixedFvPatchField
(
- const codedMixedFvPatchField& ptf,
+ const codedMixedFvPatchField& rhs,
const fvPatch& p,
const DimensionedField& iF,
const fvPatchFieldMapper& mapper
)
:
- mixedFvPatchField(ptf, p, iF, mapper),
+ parent_bctype(rhs, p, iF, mapper),
codedBase(),
- dict_(ptf.dict_),
- name_(ptf.name_),
- redirectPatchFieldPtr_()
+ dict_(rhs.dict_),
+ name_(rhs.name_),
+ redirectPatchFieldPtr_(nullptr)
{}
@@ -155,7 +164,7 @@ Foam::codedMixedFvPatchField::codedMixedFvPatchField
const dictionary& dict
)
:
- mixedFvPatchField(p, iF, dict),
+ parent_bctype(p, iF, dict),
codedBase(),
dict_
(
@@ -181,29 +190,29 @@ Foam::codedMixedFvPatchField::codedMixedFvPatchField
template
Foam::codedMixedFvPatchField::codedMixedFvPatchField
(
- const codedMixedFvPatchField& ptf
+ const codedMixedFvPatchField& rhs
)
:
- mixedFvPatchField(ptf),
+ parent_bctype(rhs),
codedBase(),
- dict_(ptf.dict_),
- name_(ptf.name_),
- redirectPatchFieldPtr_()
+ dict_(rhs.dict_),
+ name_(rhs.name_),
+ redirectPatchFieldPtr_(nullptr)
{}
template
Foam::codedMixedFvPatchField::codedMixedFvPatchField
(
- const codedMixedFvPatchField& ptf,
+ const codedMixedFvPatchField& rhs,
const DimensionedField& iF
)
:
- mixedFvPatchField(ptf, iF),
+ parent_bctype(rhs, iF),
codedBase(),
- dict_(ptf.dict_),
- name_(ptf.name_),
- redirectPatchFieldPtr_()
+ dict_(rhs.dict_),
+ name_(rhs.name_),
+ redirectPatchFieldPtr_(nullptr)
{}
@@ -220,27 +229,41 @@ Foam::codedMixedFvPatchField::redirectPatchField() const
// Write the data from the mixed b.c.
OStringStream os;
- mixedFvPatchField::write(os);
+ this->parent_bctype::write(os);
IStringStream is(os.str());
// Construct dictionary from it.
- dictionary dict(is);
+ dictionary constructDict(is);
- // Override the type to enforce the fvPatchField::New constructor
- // to choose our type
- dict.set("type", name_);
+ // Override type
+ constructDict.set("type", name_);
redirectPatchFieldPtr_.reset
(
- dynamic_cast*>
+ dynamic_cast
(
fvPatchField::New
(
this->patch(),
this->internalField(),
- dict
+ constructDict
).ptr()
)
);
+
+ // Forward copy of dictionary content to the code template
+ auto* contentPtr =
+ dynamic_cast(redirectPatchFieldPtr_.get());
+
+ if (contentPtr)
+ {
+ contentPtr->dict(this->codeContext());
+ }
+ else
+ {
+ WarningInFunction
+ << name_ << " Did not derive from dictionaryContent"
+ << nl << nl;
+ }
}
return *redirectPatchFieldPtr_;
}
@@ -257,16 +280,15 @@ void Foam::codedMixedFvPatchField::updateCoeffs()
// Make sure library containing user-defined fvPatchField is up-to-date
updateLibrary(name_);
- const mixedFvPatchField& fvp = redirectPatchField();
-
- const_cast&>(fvp).updateCoeffs();
+ const parent_bctype& fvp = redirectPatchField();
+ const_cast(fvp).updateCoeffs();
// Copy through coefficients
this->refValue() = fvp.refValue();
this->refGrad() = fvp.refGrad();
this->valueFraction() = fvp.valueFraction();
- mixedFvPatchField::updateCoeffs();
+ this->parent_bctype::updateCoeffs();
}
@@ -279,21 +301,21 @@ void Foam::codedMixedFvPatchField::evaluate
// Make sure library containing user-defined fvPatchField is up-to-date
updateLibrary(name_);
- const mixedFvPatchField& fvp = redirectPatchField();
+ const parent_bctype& fvp = redirectPatchField();
// - updates the value of fvp (though not used)
// - resets the updated() flag
- const_cast&>(fvp).evaluate(commsType);
+ const_cast(fvp).evaluate(commsType);
// Update the value (using the coefficients) locally
- mixedFvPatchField::evaluate(commsType);
+ parent_bctype::evaluate(commsType);
}
template
void Foam::codedMixedFvPatchField::write(Ostream& os) const
{
- mixedFvPatchField::write(os);
+ this->parent_bctype::write(os);
os.writeEntry("name", name_);
codedBase::writeCodeDict(os, dict_);
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.H
index 2ca033652e..89bbc2320d 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.H
@@ -31,8 +31,18 @@ Group
grpGenericBoundaryConditions
Description
- Constructs on-the-fly a new boundary condition (derived from
- mixedFvPatchField) which is then used to evaluate.
+ Constructs on-the-fly a new boundary condition
+ (derived from mixedFvPatchField) which is then used to evaluate.
+
+ The code entries:
+ \plaintable
+ codeInclude | include files
+ codeOptions | compiler line: added to EXE_INC (Make/options)
+ codeLibs | linker line: added to LIB_LIBS (Make/options)
+ localCode | c++; local static functions;
+ code | c++; patch value assignment
+ codeContext | additional dictionary context for the code
+ \endplaintable
Usage
Example:
@@ -84,6 +94,10 @@ Usage
}
\endverbatim
+Note
+ The code context dictionary can be supplied separately as the
+ \c codeContext entry.
+
See also
Foam::dynamicCode
Foam::functionEntries::codeStream
@@ -114,6 +128,10 @@ class codedMixedFvPatchField
public mixedFvPatchField,
public codedBase
{
+ //- The parent boundary condition type
+ typedef mixedFvPatchField parent_bctype;
+
+
// Private Data
//- Dictionary contents for the boundary condition
@@ -137,6 +155,9 @@ protected:
//- Clear redirected object(s)
virtual void clearRedirect() const;
+ //- Additional 'codeContext' dictionary to pass through
+ virtual const dictionary& codeContext() const;
+
//- The code dictionary. Inline "code" or from system/codeDict
virtual const dictionary& codeDict() const;
diff --git a/src/functionObjects/utilities/codedFunctionObject/codedFunctionObject.C b/src/functionObjects/utilities/codedFunctionObject/codedFunctionObject.C
index 829df54868..cc8ab31bc8 100644
--- a/src/functionObjects/utilities/codedFunctionObject/codedFunctionObject.C
+++ b/src/functionObjects/utilities/codedFunctionObject/codedFunctionObject.C
@@ -32,6 +32,7 @@ License
#include "Time.H"
#include "dynamicCode.H"
#include "dynamicCodeContext.H"
+#include "dictionaryContent.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@@ -47,8 +48,8 @@ namespace functionObjects
codedFunctionObject,
dictionary
);
-}
-}
+} // End namespace functionObjects
+} // End namespace Foam
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
@@ -71,6 +72,14 @@ void Foam::functionObjects::codedFunctionObject::clearRedirect() const
}
+const Foam::dictionary&
+Foam::functionObjects::codedFunctionObject::codeContext() const
+{
+ const dictionary* ptr = dict_.findDict("codeContext", keyType::LITERAL);
+ return (ptr ? *ptr : dictionary::null);
+}
+
+
const Foam::dictionary&
Foam::functionObjects::codedFunctionObject::codeDict() const
{
@@ -156,6 +165,22 @@ Foam::functionObjects::codedFunctionObject::redirectFunctionObject() const
time_,
constructDict
);
+
+
+ // Forward copy of codeContext to the code template
+ auto* contentPtr =
+ dynamic_cast(redirectFunctionObjectPtr_.get());
+
+ if (contentPtr)
+ {
+ contentPtr->dict(this->codeContext());
+ }
+ else
+ {
+ WarningInFunction
+ << name_ << " Did not derive from dictionaryContent"
+ << nl << nl;
+ }
}
return *redirectFunctionObjectPtr_;
}
diff --git a/src/functionObjects/utilities/codedFunctionObject/codedFunctionObject.H b/src/functionObjects/utilities/codedFunctionObject/codedFunctionObject.H
index 0ef530cb99..8508c4a408 100644
--- a/src/functionObjects/utilities/codedFunctionObject/codedFunctionObject.H
+++ b/src/functionObjects/utilities/codedFunctionObject/codedFunctionObject.H
@@ -36,14 +36,15 @@ Description
The entries are:
\plaintable
codeInclude | include files
- codeOptions | include paths; inserted into EXE_INC in Make/options
- codeLibs | link line; inserted into LIB_LIBS in Make/options
- codeData | c++; local member data (default constructed);
- localCode | c++; local static functions;
- codeRead | c++; upon functionObject::read();
- codeExecute | c++; upon functionObject::execute();
+ codeOptions | compiler line: added to EXE_INC (Make/options)
+ codeLibs | linker line: added to LIB_LIBS (Make/options)
+ codeData | c++; local member data (default constructed)
+ localCode | c++; local static functions
+ codeRead | c++; upon functionObject::read()
+ codeExecute | c++; upon functionObject::execute()
codeWrite | c++; upon functionObject::write()
- codeEnd | c++; upon functionObject::end();
+ codeEnd | c++; upon functionObject::end()
+ codeContext | additional dictionary context for the code
\endplaintable
Usage
@@ -67,6 +68,10 @@ Usage
}
\endverbatim
+Note
+ The code context dictionary can be supplied separately as the
+ \c codeContext entry.
+
See also
Foam::functionObject
Foam::codedBase
@@ -128,6 +133,9 @@ protected:
//- Clear redirected object(s)
virtual void clearRedirect() const;
+ //- Additional 'codeContext' dictionary to pass through
+ virtual const dictionary& codeContext() const;
+
//- The code dictionary
virtual const dictionary& codeDict() const;
diff --git a/src/fvOptions/Make/files b/src/fvOptions/Make/files
index da81bfc306..01e2288baa 100644
--- a/src/fvOptions/Make/files
+++ b/src/fvOptions/Make/files
@@ -4,7 +4,7 @@ interRegionOption/interRegionOption.C
/* Sources */
generalSources=sources/general
-$(generalSources)/codedSource/codedSource.C
+$(generalSources)/codedSource/codedFvSources.C
$(generalSources)/semiImplicitSource/semiImplicitSource.C
derivedSources=sources/derived
diff --git a/src/fvOptions/constraints/derived/fixedTemperatureConstraint/fixedTemperatureConstraint.C b/src/fvOptions/constraints/derived/fixedTemperatureConstraint/fixedTemperatureConstraint.C
index 3bfa919f9e..1142b18bba 100644
--- a/src/fvOptions/constraints/derived/fixedTemperatureConstraint/fixedTemperatureConstraint.C
+++ b/src/fvOptions/constraints/derived/fixedTemperatureConstraint/fixedTemperatureConstraint.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2012-2016 OpenFOAM Foundation
- Copyright (C) 2020 OpenCFD Ltd.
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -101,9 +101,9 @@ Foam::fv::fixedTemperatureConstraint::fixedTemperatureConstraint
const auto& thermo = mesh_.lookupObject(basicThermo::dictName);
- fieldNames_.setSize(1, thermo.he().name());
+ fieldNames_.resize(1, thermo.he().name());
- applied_.setSize(1, false);
+ fv::option::resetApplied();
}
diff --git a/src/fvOptions/constraints/derived/velocityDampingConstraint/velocityDampingConstraint.C b/src/fvOptions/constraints/derived/velocityDampingConstraint/velocityDampingConstraint.C
index a9eeea31b3..9e96727a52 100644
--- a/src/fvOptions/constraints/derived/velocityDampingConstraint/velocityDampingConstraint.C
+++ b/src/fvOptions/constraints/derived/velocityDampingConstraint/velocityDampingConstraint.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2015 OpenFOAM Foundation
- Copyright (C) 2015 OpenCFD Ltd.
+ Copyright (C) 2015-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -132,7 +132,7 @@ bool Foam::fv::velocityDampingConstraint::read(const dictionary& dict)
fieldNames_.first() = coeffs_.getOrDefault("U", "U");
}
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
return true;
}
diff --git a/src/fvOptions/constraints/general/fixedValueConstraint/FixedValueConstraint.C b/src/fvOptions/constraints/general/fixedValueConstraint/FixedValueConstraint.C
index 34ac46c490..30681d5891 100644
--- a/src/fvOptions/constraints/general/fixedValueConstraint/FixedValueConstraint.C
+++ b/src/fvOptions/constraints/general/fixedValueConstraint/FixedValueConstraint.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2016 OpenFOAM Foundation
- Copyright (C) 2020 OpenCFD Ltd.
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -59,9 +59,10 @@ bool Foam::fv::FixedValueConstraint::read(const dictionary& dict)
label count = fieldValuesDict.size();
- fieldNames_.setSize(count);
- fieldValues_.setSize(count);
- applied_.setSize(count, false);
+ fieldNames_.resize(count);
+ fieldValues_.resize(count);
+
+ fv::option::resetApplied();
count = 0;
for (const entry& dEntry : fieldValuesDict)
diff --git a/src/fvOptions/corrections/limitTemperature/limitTemperature.C b/src/fvOptions/corrections/limitTemperature/limitTemperature.C
index 7d07a32188..627e69cdeb 100644
--- a/src/fvOptions/corrections/limitTemperature/limitTemperature.C
+++ b/src/fvOptions/corrections/limitTemperature/limitTemperature.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2012-2017 OpenFOAM Foundation
- Copyright (C) 2018-2020 OpenCFD Ltd.
+ Copyright (C) 2018-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -66,9 +66,9 @@ Foam::fv::limitTemperature::limitTemperature
IOobject::groupName(basicThermo::dictName, phase_)
);
- fieldNames_.setSize(1, thermo.he().name());
+ fieldNames_.resize(1, thermo.he().name());
- applied_.setSize(1, false);
+ fv::option::resetApplied();
}
diff --git a/src/fvOptions/corrections/limitVelocity/limitVelocity.C b/src/fvOptions/corrections/limitVelocity/limitVelocity.C
index 9ac693e5ed..4458695984 100644
--- a/src/fvOptions/corrections/limitVelocity/limitVelocity.C
+++ b/src/fvOptions/corrections/limitVelocity/limitVelocity.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2016-2017 OpenFOAM Foundation
- Copyright (C) 2018-2020 OpenCFD Ltd.
+ Copyright (C) 2018-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -56,8 +56,8 @@ Foam::fv::limitVelocity::limitVelocity
UName_(coeffs_.getOrDefault("U", "U")),
max_(coeffs_.get("max"))
{
- fieldNames_.setSize(1, UName_);
- applied_.setSize(1, false);
+ fieldNames_.resize(1, UName_);
+ fv::option::resetApplied();
}
diff --git a/src/fvOptions/sources/derived/acousticDampingSource/acousticDampingSource.C b/src/fvOptions/sources/derived/acousticDampingSource/acousticDampingSource.C
index 428e602694..d9bfb7e95d 100644
--- a/src/fvOptions/sources/derived/acousticDampingSource/acousticDampingSource.C
+++ b/src/fvOptions/sources/derived/acousticDampingSource/acousticDampingSource.C
@@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2016-2020 OpenCFD Ltd.
+ Copyright (C) 2016-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -182,7 +182,7 @@ bool Foam::fv::acousticDampingSource::read(const dictionary& dict)
fieldNames_.first() = coeffs_.getOrDefault("U", "U");
}
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
coeffs_.readEntry("frequency", frequency_.value());
coeffs_.readEntry("URef", URefName_);
diff --git a/src/fvOptions/sources/derived/actuationDiskSource/actuationDiskSource.C b/src/fvOptions/sources/derived/actuationDiskSource/actuationDiskSource.C
index aee210098f..4c4995e801 100644
--- a/src/fvOptions/sources/derived/actuationDiskSource/actuationDiskSource.C
+++ b/src/fvOptions/sources/derived/actuationDiskSource/actuationDiskSource.C
@@ -7,7 +7,7 @@
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2020 ENERCON GmbH
- Copyright (C) 2018-2020 OpenCFD Ltd
+ Copyright (C) 2018-2021 OpenCFD Ltd
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -219,9 +219,9 @@ Foam::fv::actuationDiskSource::actuationDiskSource
{
setMonitorCells(coeffs_);
- fieldNames_.setSize(1, "U");
+ fieldNames_.resize(1, "U");
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
Info<< " - creating actuation disk zone: " << this->name() << endl;
diff --git a/src/fvOptions/sources/derived/buoyancyEnergy/buoyancyEnergy.C b/src/fvOptions/sources/derived/buoyancyEnergy/buoyancyEnergy.C
index ee3e5d1312..92d0cb41d5 100644
--- a/src/fvOptions/sources/derived/buoyancyEnergy/buoyancyEnergy.C
+++ b/src/fvOptions/sources/derived/buoyancyEnergy/buoyancyEnergy.C
@@ -64,7 +64,7 @@ Foam::fv::buoyancyEnergy::buoyancyEnergy
<< "settings are:" << fieldNames_ << exit(FatalError);
}
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
}
diff --git a/src/fvOptions/sources/derived/buoyancyForce/buoyancyForce.C b/src/fvOptions/sources/derived/buoyancyForce/buoyancyForce.C
index 72fa97cfd4..1debb34aae 100644
--- a/src/fvOptions/sources/derived/buoyancyForce/buoyancyForce.C
+++ b/src/fvOptions/sources/derived/buoyancyForce/buoyancyForce.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2015-2017 OpenFOAM Foundation
- Copyright (C) 2018-2020 OpenCFD Ltd.
+ Copyright (C) 2018-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -64,7 +64,7 @@ Foam::fv::buoyancyForce::buoyancyForce
<< "settings are:" << fieldNames_ << exit(FatalError);
}
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
}
diff --git a/src/fvOptions/sources/derived/buoyancyTurbSource/buoyancyTurbSource.C b/src/fvOptions/sources/derived/buoyancyTurbSource/buoyancyTurbSource.C
index a262664637..b2b8be4bab 100644
--- a/src/fvOptions/sources/derived/buoyancyTurbSource/buoyancyTurbSource.C
+++ b/src/fvOptions/sources/derived/buoyancyTurbSource/buoyancyTurbSource.C
@@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2020 OpenCFD Ltd.
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -178,7 +178,7 @@ Foam::fv::buoyancyTurbSource::buoyancyTurbSource
<< exit(FatalError);
}
- fieldNames_.setSize(2, "undefined");
+ fieldNames_.resize(2);
tmp tepsilon = turbPtr->epsilon();
tmp tomega = turbPtr->omega();
@@ -202,7 +202,8 @@ Foam::fv::buoyancyTurbSource::buoyancyTurbSource
}
fieldNames_[1] = turbPtr->k()().name();
- applied_.setSize(fieldNames_.size(), false);
+
+ fv::option::resetApplied();
Log << " Applying buoyancyTurbSource to: "
<< fieldNames_[0] << " and " << fieldNames_[1]
diff --git a/src/fvOptions/sources/derived/directionalPressureGradientExplicitSource/directionalPressureGradientExplicitSource.C b/src/fvOptions/sources/derived/directionalPressureGradientExplicitSource/directionalPressureGradientExplicitSource.C
index ef9866c434..6f1d97e559 100644
--- a/src/fvOptions/sources/derived/directionalPressureGradientExplicitSource/directionalPressureGradientExplicitSource.C
+++ b/src/fvOptions/sources/derived/directionalPressureGradientExplicitSource/directionalPressureGradientExplicitSource.C
@@ -223,7 +223,7 @@ directionalPressureGradientExplicitSource
<< exit(FatalError);
}
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
// Read the initial pressure gradient from file if it exists
IFstream propsFile
diff --git a/src/fvOptions/sources/derived/effectivenessHeatExchangerSource/effectivenessHeatExchangerSource.C b/src/fvOptions/sources/derived/effectivenessHeatExchangerSource/effectivenessHeatExchangerSource.C
index 807a3bc67c..e2d9b56fd4 100644
--- a/src/fvOptions/sources/derived/effectivenessHeatExchangerSource/effectivenessHeatExchangerSource.C
+++ b/src/fvOptions/sources/derived/effectivenessHeatExchangerSource/effectivenessHeatExchangerSource.C
@@ -160,9 +160,9 @@ Foam::fv::effectivenessHeatExchangerSource::effectivenessHeatExchangerSource
const auto& thermo = mesh_.lookupObject(basicThermo::dictName);
- fieldNames_.setSize(1, thermo.he().name());
+ fieldNames_.resize(1, thermo.he().name());
- applied_.setSize(1, false);
+ fv::option::resetApplied();
eTable_.reset(new interpolation2DTable(coeffs_));
diff --git a/src/fvOptions/sources/derived/explicitPorositySource/explicitPorositySource.C b/src/fvOptions/sources/derived/explicitPorositySource/explicitPorositySource.C
index b5ee9b738a..d52cd09b5f 100644
--- a/src/fvOptions/sources/derived/explicitPorositySource/explicitPorositySource.C
+++ b/src/fvOptions/sources/derived/explicitPorositySource/explicitPorositySource.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2012-2018 OpenFOAM Foundation
- Copyright (C) 2020 OpenCFD Ltd.
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -123,7 +123,7 @@ bool Foam::fv::explicitPorositySource::read(const dictionary& dict)
fieldNames_.first() = coeffs_.getOrDefault("U", "U");
}
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
return true;
}
diff --git a/src/fvOptions/sources/derived/jouleHeatingSource/jouleHeatingSource.C b/src/fvOptions/sources/derived/jouleHeatingSource/jouleHeatingSource.C
index ff661db956..5b59cfbfc8 100644
--- a/src/fvOptions/sources/derived/jouleHeatingSource/jouleHeatingSource.C
+++ b/src/fvOptions/sources/derived/jouleHeatingSource/jouleHeatingSource.C
@@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2016-2020 OpenCFD Ltd.
+ Copyright (C) 2016-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -134,9 +134,9 @@ Foam::fv::jouleHeatingSource::jouleHeatingSource
const auto& thermo = mesh_.lookupObject(basicThermo::dictName);
- fieldNames_.setSize(1, thermo.he().name());
+ fieldNames_.resize(1, thermo.he().name());
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
read(dict);
}
diff --git a/src/fvOptions/sources/derived/meanVelocityForce/meanVelocityForce.C b/src/fvOptions/sources/derived/meanVelocityForce/meanVelocityForce.C
index 00c9a8f1e1..f10e8d8d97 100644
--- a/src/fvOptions/sources/derived/meanVelocityForce/meanVelocityForce.C
+++ b/src/fvOptions/sources/derived/meanVelocityForce/meanVelocityForce.C
@@ -98,7 +98,7 @@ Foam::fv::meanVelocityForce::meanVelocityForce
<< "settings are:" << fieldNames_ << exit(FatalError);
}
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
// Read the initial pressure gradient from file if it exists
IFstream propsFile
diff --git a/src/fvOptions/sources/derived/multiphaseStabilizedTurbulence/multiphaseStabilizedTurbulence.C b/src/fvOptions/sources/derived/multiphaseStabilizedTurbulence/multiphaseStabilizedTurbulence.C
index 96a399d2be..b88e716163 100644
--- a/src/fvOptions/sources/derived/multiphaseStabilizedTurbulence/multiphaseStabilizedTurbulence.C
+++ b/src/fvOptions/sources/derived/multiphaseStabilizedTurbulence/multiphaseStabilizedTurbulence.C
@@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2019-2020 OpenCFD Ltd.
+ Copyright (C) 2019-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -96,7 +96,7 @@ Foam::fv::multiphaseStabilizedTurbulence::multiphaseStabilizedTurbulence
)
)
{
- fieldNames_.setSize(2, "undefined");
+ fieldNames_.resize(2);
// Note: incompressible only
const auto* turbPtr =
@@ -123,7 +123,7 @@ Foam::fv::multiphaseStabilizedTurbulence::multiphaseStabilizedTurbulence
<< exit(FatalError);
}
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
}
diff --git a/src/fvOptions/sources/derived/phaseLimitStabilization/PhaseLimitStabilization.C b/src/fvOptions/sources/derived/phaseLimitStabilization/PhaseLimitStabilization.C
index 69df18ba5e..7d90715a32 100644
--- a/src/fvOptions/sources/derived/phaseLimitStabilization/PhaseLimitStabilization.C
+++ b/src/fvOptions/sources/derived/phaseLimitStabilization/PhaseLimitStabilization.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2017 OpenFOAM Foundation
- Copyright (C) 2020 OpenCFD Ltd.
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -47,8 +47,8 @@ Foam::fv::PhaseLimitStabilization::PhaseLimitStabilization
rateName_(coeffs_.get("rate")),
residualAlpha_(coeffs_.get("residualAlpha"))
{
- fieldNames_.setSize(1, fieldName_);
- applied_.setSize(1, false);
+ fieldNames_.resize(1, fieldName_);
+ fv::option::resetApplied();
}
diff --git a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C
index 509b5e1695..2094eb7170 100644
--- a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C
+++ b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
- Copyright (C) 2018-2020 OpenCFD Ltd.
+ Copyright (C) 2018-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -548,7 +548,7 @@ bool Foam::fv::rotorDiskSource::read(const dictionary& dict)
if (cellSetOption::read(dict))
{
coeffs_.readEntry("fields", fieldNames_);
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
// Read coordinate system/geometry invariant properties
omega_ = rpmToRads(coeffs_.get("rpm"));
diff --git a/src/fvOptions/sources/derived/solidificationMeltingSource/solidificationMeltingSource.C b/src/fvOptions/sources/derived/solidificationMeltingSource/solidificationMeltingSource.C
index e2d464b8c5..ca9deb5827 100644
--- a/src/fvOptions/sources/derived/solidificationMeltingSource/solidificationMeltingSource.C
+++ b/src/fvOptions/sources/derived/solidificationMeltingSource/solidificationMeltingSource.C
@@ -192,7 +192,7 @@ Foam::fv::solidificationMeltingSource::solidificationMeltingSource
curTimeIndex_(-1),
deltaT_(cells_.size(), 0)
{
- fieldNames_.setSize(2);
+ fieldNames_.resize(2);
fieldNames_[0] = UName_;
switch (mode_)
@@ -218,7 +218,7 @@ Foam::fv::solidificationMeltingSource::solidificationMeltingSource
}
}
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
}
diff --git a/src/fvOptions/sources/derived/tabulatedAccelerationSource/tabulatedAccelerationSource.C b/src/fvOptions/sources/derived/tabulatedAccelerationSource/tabulatedAccelerationSource.C
index 7daf9d27a6..eafb5d8dc7 100644
--- a/src/fvOptions/sources/derived/tabulatedAccelerationSource/tabulatedAccelerationSource.C
+++ b/src/fvOptions/sources/derived/tabulatedAccelerationSource/tabulatedAccelerationSource.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2015-2016 OpenFOAM Foundation
- Copyright (C) 2020 OpenCFD Ltd.
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -59,8 +59,8 @@ Foam::fv::tabulatedAccelerationSource::tabulatedAccelerationSource
UName_(coeffs_.getOrDefault("U", "U")),
g0_("g0", dimAcceleration, Zero)
{
- fieldNames_.setSize(1, UName_);
- applied_.setSize(1, false);
+ fieldNames_.resize(1, UName_);
+ fv::option::resetApplied();
if (mesh.time().foundObject("g"))
{
diff --git a/src/fvOptions/sources/derived/viscousDissipation/viscousDissipation.C b/src/fvOptions/sources/derived/viscousDissipation/viscousDissipation.C
index c3c4b71a79..79673faffa 100644
--- a/src/fvOptions/sources/derived/viscousDissipation/viscousDissipation.C
+++ b/src/fvOptions/sources/derived/viscousDissipation/viscousDissipation.C
@@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
- Copyright (C) 2017-2020 OpenCFD Ltd.
+ Copyright (C) 2017-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -106,7 +106,7 @@ Foam::fv::viscousDissipation::viscousDissipation
if (thermoPtr)
{
- fieldNames_.setSize(1, thermoPtr->he().name());
+ fieldNames_.resize(1, thermoPtr->he().name());
}
if (fieldNames_.empty())
@@ -120,7 +120,7 @@ Foam::fv::viscousDissipation::viscousDissipation
<< "settings are:" << fieldNames_ << exit(FatalError);
}
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
}
diff --git a/src/fvOptions/sources/general/codedSource/CodedSource.C b/src/fvOptions/sources/general/codedSource/CodedFvSource.C
similarity index 76%
rename from src/fvOptions/sources/general/codedSource/CodedSource.C
rename to src/fvOptions/sources/general/codedSource/CodedFvSource.C
index 07bb792d99..969cb79374 100644
--- a/src/fvOptions/sources/general/codedSource/CodedSource.C
+++ b/src/fvOptions/sources/general/codedSource/CodedFvSource.C
@@ -26,7 +26,7 @@ License
\*---------------------------------------------------------------------------*/
-#include "CodedSource.H"
+#include "CodedFvSource.H"
#include "fvMesh.H"
#include "fvMatrices.H"
#include "dynamicCode.H"
@@ -52,7 +52,7 @@ Foam::string Foam::fv::CodedSource::description() const
template
void Foam::fv::CodedSource::clearRedirect() const
{
- redirectFvOptionPtr_.reset(nullptr);
+ redirectOptionPtr_.reset(nullptr);
}
@@ -124,7 +124,7 @@ Foam::fv::CodedSource::CodedSource
const fvMesh& mesh
)
:
- cellSetOption(name, modelType, dict, mesh)
+ fv::cellSetOption(name, modelType, dict, mesh)
{
read(dict);
}
@@ -133,22 +133,62 @@ Foam::fv::CodedSource::CodedSource
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template
-Foam::fv::option& Foam::fv::CodedSource::redirectFvOption() const
+bool Foam::fv::CodedSource::read(const dictionary& dict)
{
- if (!redirectFvOptionPtr_)
+ codedBase::setCodeContext(coeffs_);
+
+ if (!fv::cellSetOption::read(dict))
+ {
+ return false;
+ }
+
+ coeffs_.readEntry("fields", fieldNames_);
+
+ fv::option::resetApplied();
+
+ dict.readCompat("name", {{"redirectType", 1706}}, name_);
+
+
+ // Code context chunks
+
+ auto& ctx = codedBase::codeContext();
+
+ ctx.readEntry("codeCorrect", codeCorrect_);
+ ctx.readEntry("codeAddSup", codeAddSup_);
+
+ // ctx.readEntry("codeConstrain", codeConstrain_);
+ ctx.readEntry // Compatibility
+ (
+ coeffs_.lookupEntryCompat
+ (
+ "codeConstrain",
+ {{ "codeSetValue", 1812 }},
+ keyType::LITERAL
+ ).keyword(),
+ codeConstrain_
+ );
+
+ return true;
+}
+
+
+template
+Foam::fv::option& Foam::fv::CodedSource::redirectOption() const
+{
+ if (!redirectOptionPtr_)
{
dictionary constructDict(dict_);
constructDict.set("type", name_);
constructDict.changeKeyword(modelType_ & "Coeffs", name_ & "Coeffs");
- redirectFvOptionPtr_ = fv::option::New
+ redirectOptionPtr_ = fv::option::New
(
name_,
constructDict,
mesh_
);
}
- return *redirectFvOptionPtr_;
+ return *redirectOptionPtr_;
}
@@ -159,11 +199,11 @@ void Foam::fv::CodedSource::correct
)
{
DebugInfo
- << "CodedSource<" << pTraits::typeName
+ << "fv::CodedSource<" << pTraits::typeName
<< ">::correct for source " << name_ << endl;
updateLibrary(name_);
- redirectFvOption().correct(field);
+ redirectOption().correct(field);
}
@@ -175,11 +215,11 @@ void Foam::fv::CodedSource::addSup
)
{
DebugInfo
- << "CodedSource<" << pTraits::typeName
+ << "fv::CodedSource<" << pTraits::typeName
<< ">::addSup for source " << name_ << endl;
updateLibrary(name_);
- redirectFvOption().addSup(eqn, fieldi);
+ redirectOption().addSup(eqn, fieldi);
}
@@ -192,11 +232,11 @@ void Foam::fv::CodedSource::addSup
)
{
DebugInfo
- << "CodedSource<" << pTraits::typeName
+ << "fv::CodedSource<" << pTraits::typeName
<< ">::addSup for source " << name_ << endl;
updateLibrary(name_);
- redirectFvOption().addSup(rho, eqn, fieldi);
+ redirectOption().addSup(rho, eqn, fieldi);
}
@@ -208,11 +248,11 @@ void Foam::fv::CodedSource::constrain
)
{
DebugInfo
- << "CodedSource<" << pTraits::typeName
+ << "fv::CodedSource<" << pTraits::typeName
<< ">::constrain for source " << name_ << endl;
updateLibrary(name_);
- redirectFvOption().constrain(eqn, fieldi);
+ redirectOption().constrain(eqn, fieldi);
}
diff --git a/src/fvOptions/sources/general/codedSource/CodedSource.H b/src/fvOptions/sources/general/codedSource/CodedFvSource.H
similarity index 91%
rename from src/fvOptions/sources/general/codedSource/CodedSource.H
rename to src/fvOptions/sources/general/codedSource/CodedFvSource.H
index 0da0e711c7..2f1606df96 100644
--- a/src/fvOptions/sources/general/codedSource/CodedSource.H
+++ b/src/fvOptions/sources/general/codedSource/CodedFvSource.H
@@ -58,6 +58,14 @@ Description
field is the name of the field in the fields list
eqn is the fvMatrix
+ These are in addition to the usual code entries:
+ \plaintable
+ codeInclude | include files
+ codeOptions | compiler line: added to EXE_INC (Make/options)
+ codeLibs | linker line: added to LIB_LIBS (Make/options)
+ localCode | c++; local static functions
+ \endplaintable
+
Usage
Example usage in controlDict:
\verbatim
@@ -89,7 +97,7 @@ Usage
heSource -= 0.1*sqr(time.value())*V;
#};
- codeContrain
+ codeConstrain
#{
Pout<< "**codeConstrain**" << endl;
#};
@@ -97,14 +105,13 @@ Usage
}
\endverbatim
-
SourceFiles
codedSource.C
\*---------------------------------------------------------------------------*/
-#ifndef CodedSource_H
-#define CodedSource_H
+#ifndef fv_CodedFvSource_H
+#define fv_CodedFvSource_H
#include "cellSetOption.H"
#include "codedBase.H"
@@ -137,7 +144,7 @@ protected:
string codeConstrain_;
//- Underlying code
- mutable autoPtr redirectFvOptionPtr_;
+ mutable autoPtr redirectOptionPtr_;
// Protected Member Functions
@@ -190,7 +197,7 @@ public:
// Member Functions
//- Dynamically compiled fvOption
- option& redirectFvOption() const;
+ fv::option& redirectOption() const;
// Evaluation
@@ -239,8 +246,7 @@ public:
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#ifdef NoRepository
- #include "CodedSource.C"
- #include "CodedSourceIO.C"
+ #include "CodedFvSource.C"
#endif
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/fvOptions/sources/general/codedSource/CodedSourceIO.C b/src/fvOptions/sources/general/codedSource/CodedSourceIO.C
deleted file mode 100644
index 02a1232f43..0000000000
--- a/src/fvOptions/sources/general/codedSource/CodedSourceIO.C
+++ /dev/null
@@ -1,72 +0,0 @@
-/*---------------------------------------------------------------------------*\
- ========= |
- \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
- \\ / O peration |
- \\ / A nd | www.openfoam.com
- \\/ M anipulation |
--------------------------------------------------------------------------------
- Copyright (C) 2012-2016 OpenFOAM Foundation
- Copyright (C) 2019-2021 OpenCFD Ltd.
--------------------------------------------------------------------------------
-License
- This file is part of OpenFOAM.
-
- OpenFOAM is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- for more details.
-
- You should have received a copy of the GNU General Public License
- along with OpenFOAM. If not, see .
-
-\*---------------------------------------------------------------------------*/
-
-#include "CodedSource.H"
-
-// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
-
-template
-bool Foam::fv::CodedSource::read(const dictionary& dict)
-{
- codedBase::setCodeContext(coeffs_);
-
- if (!cellSetOption::read(dict))
- {
- return false;
- }
-
- coeffs_.readEntry("fields", fieldNames_);
- applied_.resize(fieldNames_.size(), false);
-
- dict.readCompat("name", {{"redirectType", 1706}}, name_);
-
-
- // Code context chunks
-
- auto& ctx = codedBase::codeContext();
-
- ctx.readEntry("codeCorrect", codeCorrect_);
- ctx.readEntry("codeAddSup", codeAddSup_);
-
- // ctx.readEntry("codeConstrain", codeConstrain_);
- ctx.readEntry // Compatibility
- (
- coeffs_.lookupEntryCompat
- (
- "codeConstrain",
- {{ "codeSetValue", 1812 }},
- keyType::LITERAL
- ).keyword(),
- codeConstrain_
- );
-
- return true;
-}
-
-
-// ************************************************************************* //
diff --git a/src/fvOptions/sources/general/codedSource/codedSource.C b/src/fvOptions/sources/general/codedSource/codedFvSources.C
similarity index 98%
rename from src/fvOptions/sources/general/codedSource/codedSource.C
rename to src/fvOptions/sources/general/codedSource/codedFvSources.C
index 0b0a7bc1cc..f07d55e4b1 100644
--- a/src/fvOptions/sources/general/codedSource/codedSource.C
+++ b/src/fvOptions/sources/general/codedSource/codedFvSources.C
@@ -26,7 +26,7 @@ License
\*---------------------------------------------------------------------------*/
#include "makeFvOption.H"
-#include "CodedSource.H"
+#include "CodedFvSource.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/fvOptions/sources/general/semiImplicitSource/SemiImplicitSource.C b/src/fvOptions/sources/general/semiImplicitSource/SemiImplicitSource.C
index 2a3739f173..f605301139 100644
--- a/src/fvOptions/sources/general/semiImplicitSource/SemiImplicitSource.C
+++ b/src/fvOptions/sources/general/semiImplicitSource/SemiImplicitSource.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
- Copyright (C) 2020 OpenCFD Ltd.
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -54,10 +54,10 @@ void Foam::fv::SemiImplicitSource::setFieldData(const dictionary& dict)
label count = dict.size();
fieldNames_.resize(count);
- Su_.resize(count);
- Sp_.resize(count);
+ Su_.resize(fieldNames_.size());
+ Sp_.resize(fieldNames_.size());
- applied_.resize(count, false);
+ fv::option::resetApplied();
count = 0;
for (const entry& dEntry : dict)
diff --git a/src/fvOptions/sources/interRegion/interRegionExplicitPorositySource/interRegionExplicitPorositySource.C b/src/fvOptions/sources/interRegion/interRegionExplicitPorositySource/interRegionExplicitPorositySource.C
index e4b815b68b..4e00e9b225 100644
--- a/src/fvOptions/sources/interRegion/interRegionExplicitPorositySource/interRegionExplicitPorositySource.C
+++ b/src/fvOptions/sources/interRegion/interRegionExplicitPorositySource/interRegionExplicitPorositySource.C
@@ -126,8 +126,8 @@ Foam::fv::interRegionExplicitPorositySource::interRegionExplicitPorositySource
{
if (active_)
{
- fieldNames_.setSize(1, UName_);
- applied_.setSize(1, false);
+ fieldNames_.resize(1, UName_);
+ fv::option::resetApplied();
}
}
diff --git a/src/fvOptions/sources/interRegion/interRegionHeatTransfer/interRegionHeatTransferModel/interRegionHeatTransferModel.C b/src/fvOptions/sources/interRegion/interRegionHeatTransfer/interRegionHeatTransferModel/interRegionHeatTransferModel.C
index 5cf4aff036..ea1d6f4d17 100644
--- a/src/fvOptions/sources/interRegion/interRegionHeatTransfer/interRegionHeatTransferModel/interRegionHeatTransferModel.C
+++ b/src/fvOptions/sources/interRegion/interRegionHeatTransfer/interRegionHeatTransferModel/interRegionHeatTransferModel.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
- Copyright (C) 2020 OpenCFD Ltd.
+ Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -147,9 +147,8 @@ Foam::fv::interRegionHeatTransferModel::interRegionHeatTransferModel
if (active())
{
coeffs_.readEntry("fields", fieldNames_);
- applied_.setSize(fieldNames_.size(), false);
-
coeffs_.readEntry("semiImplicit", semiImplicit_);
+ fv::option::resetApplied();
}
}
diff --git a/src/meshTools/PatchFunction1/CodedField/CodedField.C b/src/meshTools/PatchFunction1/CodedField/CodedField.C
index 40c0c4588b..60ca1ecca8 100644
--- a/src/meshTools/PatchFunction1/CodedField/CodedField.C
+++ b/src/meshTools/PatchFunction1/CodedField/CodedField.C
@@ -27,6 +27,7 @@ License
#include "dynamicCode.H"
#include "dynamicCodeContext.H"
+#include "dictionaryContent.H"
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
@@ -53,6 +54,15 @@ void Foam::PatchFunction1Types::CodedField::clearRedirect() const
}
+template
+const Foam::dictionary&
+Foam::PatchFunction1Types::CodedField::codeContext() const
+{
+ // What else would make sense?
+ return dict_;
+}
+
+
template
const Foam::dictionary&
Foam::PatchFunction1Types::CodedField::codeDict
@@ -147,6 +157,10 @@ Foam::PatchFunction1Types::CodedField::CodedField
dict_(dict),
name_(dict.getOrDefault("name", entryName))
{
+ this->codedBase::setCodeContext(dict_);
+
+ // No additional code chunks...
+
updateLibrary(name_);
}
@@ -183,15 +197,13 @@ Foam::PatchFunction1Types::CodedField::redirectFunction() const
{
if (!redirectFunctionPtr_)
{
- // Construct a PatchFunction1 containing the input code
- dictionary completeDict(dict_);
+ dictionary constructDict;
+ // Force 'name_' sub-dictionary into existence
+ dictionary& coeffs = constructDict.subDictOrAdd(name_);
- // Override the type to enforce the PatchFunction1::New constructor
- // to choose our type
- completeDict.set("type", name_);
-
- dictionary dict;
- dict.add(name_, completeDict);
+ coeffs = dict_; // Copy input code and coefficients
+ coeffs.remove("name"); // Redundant
+ coeffs.set("type", name_); // Specify our new (redirect) type
redirectFunctionPtr_.reset
(
@@ -199,10 +211,25 @@ Foam::PatchFunction1Types::CodedField::redirectFunction() const
(
this->patch(),
name_,
- dict,
+ constructDict,
this->faceValues()
)
);
+
+ // Forward copy of codeContext to the code template
+ auto* contentPtr =
+ dynamic_cast(redirectFunctionPtr_.get());
+
+ if (contentPtr)
+ {
+ contentPtr->dict(this->codeContext());
+ }
+ else
+ {
+ WarningInFunction
+ << name_ << " Did not derive from dictionaryContent"
+ << nl << nl;
+ }
}
return *redirectFunctionPtr_;
}
diff --git a/src/meshTools/PatchFunction1/CodedField/CodedField.H b/src/meshTools/PatchFunction1/CodedField/CodedField.H
index d034c5337e..a4dd238c8d 100644
--- a/src/meshTools/PatchFunction1/CodedField/CodedField.H
+++ b/src/meshTools/PatchFunction1/CodedField/CodedField.H
@@ -30,6 +30,15 @@ Description
PatchFunction1 with the code supplied by an on-the-fly compiled C++
expression.
+ The code entries:
+ \plaintable
+ codeInclude | include files
+ codeOptions | compiler line: added to EXE_INC (Make/options)
+ codeLibs | linker line: added to LIB_LIBS (Make/options)
+ localCode | c++; local static functions
+ code | c++; return the patch values at (scalar x)
+ \endplaintable
+
Usage
Example:
\verbatim
@@ -38,11 +47,8 @@ Usage
type uniformFixedValue;
uniformValue
{
- type coded;
- // Explictly supply name of generated PatchFunction1. Only needed
- // if entryname ('uniformValue') would clash with existing
- // runtime selection tables.
- name myExpression;
+ type coded;
+ name myExpression; // Name of generated PatchFunction1
code
#{
@@ -50,20 +56,24 @@ Usage
Pout<< "** Patch size:" << pp.size() << endl;
return tmp::New(pp.size(), vector(1, 0, 0))
#};
+
+ //codeInclude
+ //#{
+ // #include "volFields.H"
+ //#};
+
+ //codeOptions
+ //#{
+ // -I$(LIB_SRC)/finiteVolume/lnInclude
+ //#};
}
-
- //codeInclude
- //#{
- // #include "fvCFD.H"
- //#};
-
- //codeOptions
- //#{
- // -I$(LIB_SRC)/finiteVolume/lnInclude
- //#};
}
\endverbatim
+Note
+ The code context dictionary is simply the dictionary used to specify
+ the PatchFunction1 coefficients.
+
See also
Foam::dynamicCode
Foam::codedFixedValue
@@ -126,6 +136,9 @@ protected:
//- Clear redirected object(s)
virtual void clearRedirect() const;
+ //- Additional 'codeContext' dictionary to pass through
+ virtual const dictionary& codeContext() const;
+
// Get the code (sub)dictionary
virtual const dictionary& codeDict(const dictionary& dict) const;
diff --git a/src/thermophysicalModels/radiation/fvOptions/radiation/radiation.C b/src/thermophysicalModels/radiation/fvOptions/radiation/radiation.C
index 93f8eb8bfd..e9f8993233 100644
--- a/src/thermophysicalModels/radiation/fvOptions/radiation/radiation.C
+++ b/src/thermophysicalModels/radiation/fvOptions/radiation/radiation.C
@@ -57,9 +57,9 @@ Foam::fv::radiation::radiation
{
const auto& thermo = mesh_.lookupObject(basicThermo::dictName);
- fieldNames_.setSize(1);
+ fieldNames_.resize(1);
fieldNames_[0] = thermo.he().name();
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
radiation_ = Foam::radiation::radiationModel::New(thermo.T());
}
diff --git a/src/waveModels/fvOptions/multiphaseMangrovesSource/multiphaseMangrovesSource.C b/src/waveModels/fvOptions/multiphaseMangrovesSource/multiphaseMangrovesSource.C
index c7cb5844d5..b0e7d64fe6 100644
--- a/src/waveModels/fvOptions/multiphaseMangrovesSource/multiphaseMangrovesSource.C
+++ b/src/waveModels/fvOptions/multiphaseMangrovesSource/multiphaseMangrovesSource.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2017 IH-Cantabria
- Copyright (C) 2017-2020 OpenCFD Ltd.
+ Copyright (C) 2017-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -213,8 +213,7 @@ bool Foam::fv::multiphaseMangrovesSource::read(const dictionary& dict)
fieldNames_.resize(1);
fieldNames_.first() = coeffs_.getOrDefault("U", "U");
}
-
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
// Create the Mangroves models - 1 per region
const dictionary& regionsDict(coeffs_.subDict("regions"));
diff --git a/src/waveModels/fvOptions/multiphaseMangrovesTurbulenceModel/multiphaseMangrovesTurbulenceModel.C b/src/waveModels/fvOptions/multiphaseMangrovesTurbulenceModel/multiphaseMangrovesTurbulenceModel.C
index fb754cafbc..5cda1d1da8 100644
--- a/src/waveModels/fvOptions/multiphaseMangrovesTurbulenceModel/multiphaseMangrovesTurbulenceModel.C
+++ b/src/waveModels/fvOptions/multiphaseMangrovesTurbulenceModel/multiphaseMangrovesTurbulenceModel.C
@@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2017 IH-Cantabria
- Copyright (C) 2017-2018 OpenCFD Ltd.
+ Copyright (C) 2017-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -243,8 +243,7 @@ bool Foam::fv::multiphaseMangrovesTurbulenceModel::read(const dictionary& dict)
fieldNames_[1] = "k";
}
}
-
- applied_.setSize(fieldNames_.size(), false);
+ fv::option::resetApplied();
// Create the Mangroves models - 1 per region
const dictionary& regionsDict(coeffs_.subDict("regions"));
diff --git a/tutorials/compressible/overRhoPimpleDyMFoam/twoSimpleRotors/system/controlDict b/tutorials/compressible/overRhoPimpleDyMFoam/twoSimpleRotors/system/controlDict
index fa36ef0362..47912f4c9b 100644
--- a/tutorials/compressible/overRhoPimpleDyMFoam/twoSimpleRotors/system/controlDict
+++ b/tutorials/compressible/overRhoPimpleDyMFoam/twoSimpleRotors/system/controlDict
@@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
-| \\ / O peration | Version: v2012 |
+| \\ / O peration | Version: v2106 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
@@ -59,7 +59,6 @@ maxCo 1.2;
functions
{
- // #include "catalyst"
probes
{
type probes;
@@ -82,7 +81,6 @@ functions
(
(0.015 0.005 0.005)
);
-
}
mass
@@ -114,12 +112,10 @@ functions
codeWrite
#{
-
const volScalarField& rho =
mesh().lookupObject("rho");
Info<< "rho volume = " << rho.weightedAverage(mesh().Vsc()) << endl;
-
#};
}
}
diff --git a/tutorials/compressible/rhoPimpleAdiabaticFoam/rutlandVortex2D/system/preProcess b/tutorials/compressible/rhoPimpleAdiabaticFoam/rutlandVortex2D/system/preProcess
index f0c0ed10cf..18112454bc 100644
--- a/tutorials/compressible/rhoPimpleAdiabaticFoam/rutlandVortex2D/system/preProcess
+++ b/tutorials/compressible/rhoPimpleAdiabaticFoam/rutlandVortex2D/system/preProcess
@@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
-| \\ / O peration | Version: v2012 |
+| \\ / O peration | Version: v2106 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
@@ -24,19 +24,14 @@ functions
libs (utilityFunctionObjects);
enabled yes;
- codeInclude
- #{
- #include "volFields.H"
- #};
-
codeWrite
#{
- scalar D = 0.57;
- scalar UInf = 50;
- scalar pInf = 101325;
- scalar TInf = 224;
- scalar gamma = 1.4;
- scalar A = -0.3*D*UInf;
+ const scalar D = 0.57;
+ const scalar UInf = 50;
+ const scalar pInf = 101325;
+ const scalar TInf = 224;
+ const scalar gamma = 1.4;
+ const scalar A = -0.3*D*UInf;
const dimensionedScalar rhoRef("rhoRef", dimDensity, 1);
const auto& rho = mesh().lookupObject("rho");
diff --git a/tutorials/incompressible/pimpleFoam/RAS/rotatingFanInRoom/system/controlDict b/tutorials/incompressible/pimpleFoam/RAS/rotatingFanInRoom/system/controlDict
index 58b7d5222e..a417bf71a5 100644
--- a/tutorials/incompressible/pimpleFoam/RAS/rotatingFanInRoom/system/controlDict
+++ b/tutorials/incompressible/pimpleFoam/RAS/rotatingFanInRoom/system/controlDict
@@ -51,4 +51,9 @@ maxCo 1;
maxDeltaT 1;
+functions
+{
+ #include "relVelocity"
+}
+
// ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleFoam/RAS/rotatingFanInRoom/system/relVelocity b/tutorials/incompressible/pimpleFoam/RAS/rotatingFanInRoom/system/relVelocity
new file mode 100644
index 0000000000..5d0eb1e1e6
--- /dev/null
+++ b/tutorials/incompressible/pimpleFoam/RAS/rotatingFanInRoom/system/relVelocity
@@ -0,0 +1,118 @@
+// --------------------------------*- C++ -*-------------------------------- //
+//
+// File
+// OpenFOAM coded function object
+//
+// Description
+// Write relative rotational speed
+//
+// ------------------------------------------------------------------------- //
+
+relVelocity
+{
+ type coded;
+ name relVelocity;
+ libs ( utilityFunctionObjects );
+
+ coeffs
+ {
+ // User input (duplicate of constant/dynamicMeshDict)
+ // origin (-3 2 2.6);
+ // axis (0 0 1);
+ // omega 10;
+ // zones ( rotatingZone );
+
+ #sinclude "/dynamicMeshDict"
+ }
+
+ // Additional context for code execute/write
+ codeContext
+ {
+ verbose true;
+ }
+
+ codeData
+ #{
+ vector origin;
+ vector omega;
+ wordRes zoneNames;
+ #};
+
+ codeRead
+ #{
+ const dictionary& coeffs = dict.optionalSubDict("coeffs");
+ const dictionary& context = this->codeContext();
+
+ origin = coeffs.get("origin");
+
+ omega =
+ (
+ // speed
+ (
+ coeffs.found("rpm")
+ ? degToRad(coeffs.get("rpm") / 60.0)
+ : coeffs.get("omega")
+ )
+ // axis
+ * normalised(coeffs.getOrDefault("axis", vector(0,0,1)))
+ );
+
+ if (!coeffs.readIfPresent("zones", zoneNames))
+ {
+ if (coeffs.found("cellZone"))
+ {
+ zoneNames.resize(1);
+ coeffs.readEntry("cellZone", zoneNames[0]);
+ }
+ }
+
+ if (context.getOrDefault("verbose", false))
+ {
+ Log<< "Relative velocity at origin " << origin << "\n";
+ }
+ #};
+
+ codeExecute // codeWrite
+ #{
+ const dictionary& context = this->codeContext();
+
+ if (context.getOrDefault