oversetPolyPatch.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) 2016-2017 OpenCFD Ltd.
9 -------------------------------------------------------------------------------
10 License
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 
28 #include "oversetPolyPatch.H"
30 #include "polyBoundaryMesh.H"
31 #include "processorPolyPatch.H"
32 
33 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
34 
35 namespace Foam
36 {
37  defineTypeNameAndDebug(oversetPolyPatch, 0);
38 
39  addToRunTimeSelectionTable(polyPatch, oversetPolyPatch, word);
40  addToRunTimeSelectionTable(polyPatch, oversetPolyPatch, dictionary);
41 }
42 
43 // * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * * * * * //
44 
46 (
47  const word& name,
48  const label size,
49  const label start,
50  const label index,
51  const polyBoundaryMesh& bm,
52  const word& patchType
53 )
54 :
55  polyPatch(name, size, start, index, bm, patchType),
56  masterPatchID_(-1)
57 {
58  // 'overset' is not constraint type so add to group explicitly
59  if (!inGroups().found(typeName))
60  {
61  inGroups().append(typeName);
62  }
63 }
64 
65 
67 (
68  const word& name,
69  const dictionary& dict,
70  const label index,
71  const polyBoundaryMesh& bm,
72  const word& patchType
73 )
74 :
75  polyPatch(name, dict, index, bm, patchType),
76  masterPatchID_(-1)
77 {
78  // 'overset' is not constraint type so add to group explicitly
79  if (!inGroups().found(typeName))
80  {
81  inGroups().append(typeName);
82  }
83 }
84 
85 
87 (
88  const oversetPolyPatch& pp,
89  const polyBoundaryMesh& bm
90 )
91 :
92  polyPatch(pp, bm),
93  masterPatchID_(-1)
94 {}
95 
96 
98 (
99  const oversetPolyPatch& pp,
100  const polyBoundaryMesh& bm,
101  const label index,
102  const label newSize,
103  const label newStart
104 )
105 :
106  polyPatch(pp, bm, index, newSize, newStart),
107  masterPatchID_(-1)
108 {}
109 
110 
112 (
113  const oversetPolyPatch& pp,
114  const polyBoundaryMesh& bm,
115  const label index,
116  const labelUList& mapAddressing,
117  const label newStart
118 )
119 :
120  polyPatch(pp, bm, index, mapAddressing, newStart),
121  masterPatchID_(-1)
122 {}
123 
124 
125 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
126 
128 {}
129 
130 
131 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
132 
134 {
135  if (masterPatchID_ == -1)
136  {
137  // Find lowest numbered overset patch
138  const polyBoundaryMesh& pbm = boundaryMesh();
139 
140  forAll(pbm, patchi)
141  {
142  if (isA<oversetPolyPatch>(pbm[patchi]))
143  {
144  masterPatchID_ = patchi;
145  break;
146  }
147  }
148 
149  if (masterPatchID_ != -1 && masterPatchID_ > 0)
150  {
151  WarningInFunction<< "The master overset patch is not the"
152  << " first patch. Generally the first patch should be an"
153  << " overset patch to guarantee consistent operation." << endl;
154  }
155  }
156 
157  return index() == masterPatchID_;
158 }
159 
160 
161 // ************************************************************************* //
Foam::addToRunTimeSelectionTable
addToRunTimeSelectionTable(decompositionMethod, kahipDecomp, dictionary)
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:62
Foam::polyBoundaryMesh
A polyBoundaryMesh is a polyPatch list with additional search methods and registered IO.
Definition: polyBoundaryMesh.H:62
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:350
Foam::oversetPolyPatch::master
bool master() const
Am I master patch? The master is responsible for doing all.
Definition: oversetPolyPatch.C:133
forAll
#define forAll(list, i)
Loop across all elements in list.
Definition: stdFoam.H:296
Foam::oversetPolyPatch
Patch for indicating interpolated boundaries (in overset meshes).
Definition: oversetPolyPatch.H:52
Foam::polyPatch
A patch is a list of labels that address the faces in the global face list.
Definition: polyPatch.H:68
Foam::name
word name(const complex &c)
Return string representation of complex.
Definition: complex.C:76
oversetPolyPatch.H
dict
dictionary dict
Definition: searchingEngine.H:14
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:121
processorPolyPatch.H
addToRunTimeSelectionTable.H
Macros for easy insertion into run-time selection tables.
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
found
bool found
Definition: TABSMDCalcMethod2.H:32
Foam::UList< label >
polyBoundaryMesh.H
Foam::boundaryMesh
Addressing for all faces on surface of mesh. Can either be read from polyMesh or from triSurface....
Definition: boundaryMesh.H:62
Foam::defineTypeNameAndDebug
defineTypeNameAndDebug(combustionModel, 0)
WarningInFunction
#define WarningInFunction
Report a warning using Foam::Warning.
Definition: messageStream.H:303
Foam::oversetPolyPatch::~oversetPolyPatch
virtual ~oversetPolyPatch()
Destructor.
Definition: oversetPolyPatch.C:127
Foam::oversetPolyPatch::oversetPolyPatch
oversetPolyPatch(const word &name, const label size, const label start, const label index, const polyBoundaryMesh &bm, const word &patchType)
Construct from components.
Definition: oversetPolyPatch.C:46