uniformFixedValueFvPatchField.C
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2011-2016 OpenFOAM Foundation
9 Copyright (C) 2018-2020 OpenCFD Ltd.
10-------------------------------------------------------------------------------
11License
12 This file is part of OpenFOAM.
13
14 OpenFOAM is free software: you can redistribute it and/or modify it
15 under the terms of the GNU General Public License as published by
16 the Free Software Foundation, either version 3 of the License, or
17 (at your option) any later version.
18
19 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22 for more details.
23
24 You should have received a copy of the GNU General Public License
25 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26
27\*---------------------------------------------------------------------------*/
28
30
31// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
32
33template<class Type>
35(
36 const fvPatch& p,
38)
39:
40 fixedValueFvPatchField<Type>(p, iF),
41 uniformValue_(nullptr)
42{}
43
44
45template<class Type>
47(
48 const fvPatch& p,
50 const Field<Type>& fld
51)
52:
53 fixedValueFvPatchField<Type>(p, iF, fld),
54 uniformValue_(nullptr)
55{}
56
57
58template<class Type>
60(
61 const fvPatch& p,
63 const dictionary& dict
64)
65:
66 fixedValueFvPatchField<Type>(p, iF, dict, false),
67 uniformValue_(PatchFunction1<Type>::New(p.patch(), "uniformValue", dict))
68{
69 if (dict.found("value"))
70 {
72 (
73 Field<Type>("value", dict, p.size())
74 );
75 }
76 else
77 {
78 this->evaluate();
79 }
80}
81
82
83template<class Type>
85(
87 const fvPatch& p,
89 const fvPatchFieldMapper& mapper
90)
91:
92 fixedValueFvPatchField<Type>(p, iF), // Don't map
93 uniformValue_(ptf.uniformValue_.clone(p.patch()))
94{
95 if (mapper.direct() && !mapper.hasUnmapped())
96 {
97 // Use mapping instead of re-evaluation
98 this->map(ptf, mapper);
99 }
100 else
101 {
102 // Evaluate since value not mapped
103 this->evaluate();
104 }
105}
106
107
108template<class Type>
110(
112)
113:
114 fixedValueFvPatchField<Type>(ptf),
115 uniformValue_(ptf.uniformValue_.clone(this->patch().patch()))
116{}
117
118
119template<class Type>
121(
124)
125:
126 fixedValueFvPatchField<Type>(ptf, iF),
127 uniformValue_(ptf.uniformValue_.clone(this->patch().patch()))
128{}
129
130
131// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
132
133template<class Type>
135(
136 const fvPatchFieldMapper& mapper
137)
138{
140 uniformValue_().autoMap(mapper);
141
142 if (uniformValue_().constant())
143 {
144 // If mapper is not dependent on time we're ok to evaluate
145 this->evaluate();
146 }
147}
148
149
150template<class Type>
152(
153 const fvPatchField<Type>& ptf,
154 const labelList& addr
155)
156{
158
159 const uniformFixedValueFvPatchField& tiptf =
160 refCast<const uniformFixedValueFvPatchField>(ptf);
161
162 uniformValue_().rmap(tiptf.uniformValue_(), addr);
163}
164
165
166template<class Type>
168{
169 if (this->updated())
170 {
171 return;
172 }
173
174 const scalar t = this->db().time().timeOutputValue();
175 fvPatchField<Type>::operator==(uniformValue_->value(t));
177}
178
179
180template<class Type>
182{
184 uniformValue_->writeData(os);
185 this->writeEntry("value", os);
186}
187
188
189// ************************************************************************* //
Info<< nl<< "Wrote faMesh in vtk format: "<< writer.output().name()<< nl;}{ vtk::lineWriter writer(aMesh.points(), aMesh.edges(), fileName(aMesh.mesh().time().globalPath()/"finiteArea-edges"));writer.writeGeometry();writer.beginCellData(4);writer.writeProcIDs();{ Field< scalar > fld(faMeshTools::flattenEdgeField(aMesh.magLe(), true))
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
virtual bool direct() const =0
Is it a direct (non-interpolating) mapper?
virtual bool hasUnmapped() const =0
Any unmapped values?
Generic templated field type.
Definition: Field.H:82
void map(const UList< Type > &mapF, const labelUList &mapAddressing)
1 to 1 map from the given field
Definition: Field.C:240
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:62
Top level data entry class for use in dictionaries. Provides a mechanism to specify a variable as a c...
void size(const label n)
Older name for setAddressableSize.
Definition: UList.H:114
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
void autoMap(const fvPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
void rmap(const atmBoundaryLayer &, const labelList &)
Reverse map the given fvPatchField onto this fvPatchField.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
bool found(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
Search for an entry (const access) with the given keyword.
Definition: dictionaryI.H:87
This boundary condition supplies a fixed value constraint, and is the base class for a number of othe...
virtual bool write()
Write the output fields.
A FieldMapper for finite-volume patch fields.
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
Definition: fvPatchField.H:82
virtual void evaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::blocking)
Evaluate the patch field, sets Updated to false.
Definition: fvPatchField.C:345
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition: fvPatch.H:71
constant condensation/saturation model.
friend bool operator==(const refineCell &rc1, const refineCell &rc2)
Definition: refineCell.H:97
This boundary condition provides a uniform fixed value condition.
virtual void autoMap(const fvPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
virtual void rmap(const fvPatchField< Type > &, const labelList &)
Reverse map the given fvPatchField onto this fvPatchField.
volScalarField & p
OBJstream os(runTime.globalPath()/outputName)
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tdf1, const word &name, const dimensionSet &dimensions)
Global function forwards to reuseTmpDimensionedField::New.
dictionary dict