This avoids potential hidden run-time errors caused by solvers running with boundary conditions which are not fully specified. Note that "null-constructor" here means the constructor from patch and internal field only, no data is provided. Constraint and simple BCs such as 'calculated', 'zeroGradient' and others which do not require user input to fully specify their operation remain on the null-constructor table for the construction of fields with for example all 'calculated' or all 'zeroGradient' BCs. Following this improvement the null-constructors have been removed from all pointPatchFields not added to the null-constructor table thus reducing the amount of code and maintenance overhead and making easier and more obvious to write new pointPatchField types.
127 lines
4.0 KiB
C++
127 lines
4.0 KiB
C++
/*---------------------------------------------------------------------------*\
|
|
========= |
|
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
\\ / O peration | Website: https://openfoam.org
|
|
\\ / A nd | Copyright (C) YEAR OpenFOAM Foundation
|
|
\\/ M anipulation |
|
|
-------------------------------------------------------------------------------
|
|
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 <http://www.gnu.org/licenses/>.
|
|
|
|
Description
|
|
Template for use with dynamic code generation of a
|
|
fixedValue pointPatchField.
|
|
|
|
- without state
|
|
|
|
SourceFiles
|
|
fixedValuePointPatchFieldTemplate.C
|
|
|
|
\*---------------------------------------------------------------------------*/
|
|
|
|
#ifndef codedFixedValuePointPatchFieldTemplate_H
|
|
#define codedFixedValuePointPatchFieldTemplate_H
|
|
|
|
#include "fixedValuePointPatchFields.H"
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
namespace Foam
|
|
{
|
|
|
|
/*---------------------------------------------------------------------------*\
|
|
A templated FixedValuePointPatchField
|
|
\*---------------------------------------------------------------------------*/
|
|
|
|
class ${typeName}FixedValuePointPatch${FieldType}
|
|
:
|
|
public fixedValuePointPatchField<${TemplateType}>
|
|
{
|
|
public:
|
|
|
|
//- Information about the SHA1 of the code itself
|
|
static const char* const SHA1sum;
|
|
|
|
//- Runtime type information
|
|
TypeName("${typeName}");
|
|
|
|
|
|
// Constructors
|
|
|
|
//- Construct from patch, internal field and dictionary
|
|
${typeName}FixedValuePointPatch${FieldType}
|
|
(
|
|
const pointPatch&,
|
|
const DimensionedField<${TemplateType}, pointMesh>&,
|
|
const dictionary&
|
|
);
|
|
|
|
//- Construct by mapping a copy onto a new patch
|
|
${typeName}FixedValuePointPatch${FieldType}
|
|
(
|
|
const ${typeName}FixedValuePointPatch${FieldType}&,
|
|
const pointPatch&,
|
|
const DimensionedField<${TemplateType}, pointMesh>&,
|
|
const pointPatchFieldMapper&
|
|
);
|
|
|
|
//- Disallow copy without setting internal field reference
|
|
${typeName}FixedValuePointPatch${FieldType}
|
|
(
|
|
const ${typeName}FixedValuePointPatch${FieldType}&
|
|
) = delete;
|
|
|
|
//- Copy constructor setting internal field reference
|
|
${typeName}FixedValuePointPatch${FieldType}
|
|
(
|
|
const ${typeName}FixedValuePointPatch${FieldType}&,
|
|
const DimensionedField<${TemplateType}, pointMesh>&
|
|
);
|
|
|
|
//- Construct and return a clone setting internal field reference
|
|
virtual autoPtr<pointPatchField<${TemplateType}>> clone
|
|
(
|
|
const DimensionedField<${TemplateType}, pointMesh>& iF
|
|
) const
|
|
{
|
|
return autoPtr<pointPatchField<${TemplateType}>>
|
|
(
|
|
new ${typeName}FixedValuePointPatch${FieldType}(*this, iF)
|
|
);
|
|
}
|
|
|
|
|
|
//- Destructor
|
|
virtual ~${typeName}FixedValuePointPatch${FieldType}();
|
|
|
|
|
|
// Member Functions
|
|
|
|
//- Update the coefficients associated with the patch field
|
|
virtual void updateCoeffs();
|
|
};
|
|
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
} // End namespace Foam
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
#endif
|
|
|
|
// ************************************************************************* //
|