fixedJumpAMIFvPatchField.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) 2012-2017 OpenFOAM Foundation
9-------------------------------------------------------------------------------
10License
11 This file is part of OpenFOAM.
12
13 OpenFOAM is free software: you can redistribute it and/or modify it
14 under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25
26\*---------------------------------------------------------------------------*/
27
29
30// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
31
32template<class Type>
34(
35 const fvPatch& p,
37)
38:
40 jump_(this->size(), Zero)
41{}
42
43
44template<class Type>
46(
48 const fvPatch& p,
50 const fvPatchFieldMapper& mapper
51)
52:
53 jumpCyclicAMIFvPatchField<Type>(ptf, p, iF, mapper),
54 jump_(ptf.jump_, mapper)
55{}
56
57
58template<class Type>
60(
61 const fvPatch& p,
63 const dictionary& dict
64)
65:
67 jump_(p.size(), Zero)
68{
69 if (this->cyclicAMIPatch().owner())
70 {
71 jump_ = Field<Type>("jump", dict, p.size());
72 }
73
74 if (dict.found("value"))
75 {
77 (
78 Field<Type>("value", dict, p.size())
79 );
80 }
81 else
82 {
84 }
85}
86
87
88template<class Type>
90(
92)
93:
95 jump_(ptf.jump_)
96{}
97
98
99template<class Type>
101(
104)
105:
106 jumpCyclicAMIFvPatchField<Type>(ptf, iF),
107 jump_(ptf.jump_)
108{}
109
110
111// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
112
113template<class Type>
115{
116 if (this->cyclicAMIPatch().owner())
117 {
118 return jump_;
119 }
120 else
121 {
122 const fixedJumpAMIFvPatchField& nbrPatch =
123 refCast<const fixedJumpAMIFvPatchField<Type>>
124 (
125 this->neighbourPatchField()
126 );
128 if (this->cyclicAMIPatch().applyLowWeightCorrection())
129 {
130 return this->cyclicAMIPatch().interpolate
131 (
132 nbrPatch.jump(),
133 Field<Type>(this->size(), Zero)
134 );
135 }
136 else
137 {
138 return this->cyclicAMIPatch().interpolate(nbrPatch.jump());
139 }
140 }
141}
142
143
144template<class Type>
146(
147 const fvPatchFieldMapper& m
148)
149{
151 jump_.autoMap(m);
152}
153
154
155template<class Type>
157(
158 const fvPatchField<Type>& ptf,
159 const labelList& addr
161{
163
164 const fixedJumpAMIFvPatchField<Type>& tiptf =
165 refCast<const fixedJumpAMIFvPatchField<Type>>(ptf);
166 jump_.rmap(tiptf.jump_, addr);
167}
168
169
170template<class Type>
172{
174 os.writeEntry("patchType", this->interfaceFieldType());
175
176 if (this->cyclicAMIPatch().owner())
177 {
178 jump_.writeEntry("jump", os);
179 }
180
181 this->writeEntry("value", os);
182}
183
185// ************************************************************************* //
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Generic templated field type.
Definition: Field.H:82
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:62
Ostream & writeEntry(const keyType &key, const T &value)
Write a keyword/value entry.
Definition: Ostream.H:239
void size(const label n)
Older name for setAddressableSize.
Definition: UList.H:114
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.
virtual void evaluate(const Pstream::commsTypes commsType)
Evaluate the patch field.
const cyclicAMIFvPatch & cyclicAMIPatch() const
Return local reference cast into the cyclic AMI patch.
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 provides a jump condition, across non-conformal cyclic path-pairs,...
virtual void autoMap(const fvPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
virtual tmp< Field< Type > > jump() const
Return the "jump" across the patch.
virtual void rmap(const fvPatchField< Type > &, const labelList &)
Reverse map the given fvPatchField onto this fvPatchField.
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
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition: fvPatch.H:71
This boundary condition provides a base class that enforces a cyclic condition with a specified 'jump...
A class for managing temporary objects.
Definition: tmp.H:65
volScalarField & p
OBJstream os(runTime.globalPath()/outputName)
static constexpr const zero Zero
Global zero (0)
Definition: zero.H:131
dictionary dict