pointToPoint.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-2017 OpenFOAM Foundation
9  Copyright (C) 2018-2020 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
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 
29 #include "pointToPoint.H"
30 #include "polyMesh.H"
31 #include "pointSet.H"
33 
34 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
35 
36 namespace Foam
37 {
38  defineTypeNameAndDebug(pointToPoint, 0);
39  addToRunTimeSelectionTable(topoSetSource, pointToPoint, word);
40  addToRunTimeSelectionTable(topoSetSource, pointToPoint, istream);
41  addToRunTimeSelectionTable(topoSetPointSource, pointToPoint, word);
42  addToRunTimeSelectionTable(topoSetPointSource, pointToPoint, istream);
43 }
44 
45 
46 Foam::topoSetSource::addToUsageTable Foam::pointToPoint::usage_
47 (
48  pointToPoint::typeName,
49  "\n Usage: pointToPoint <pointSet>\n\n"
50  " Select all points in the pointSet\n\n"
51 );
52 
53 
54 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
55 
57 (
58  const polyMesh& mesh,
59  const word& setName
60 )
61 :
63  names_(Foam::one{}, setName),
64  isZone_(false)
65 {}
66 
67 
69 (
70  const polyMesh& mesh,
71  const dictionary& dict
72 )
73 :
75  names_(),
76  isZone_(topoSetSource::readNames(dict, names_))
77 {}
78 
79 
81 (
82  const polyMesh& mesh,
83  Istream& is
84 )
85 :
87  names_(Foam::one{}, word(checkIs(is))),
88  isZone_(false)
89 {}
90 
91 
92 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
93 
95 (
96  const topoSetSource::setAction action,
97  topoSet& set
98 ) const
99 {
100  if (action == topoSetSource::ADD || action == topoSetSource::NEW)
101  {
102  if (verbose_)
103  {
104  Info<< " Adding all elements of point "
105  << (isZone_ ? "zones: " : "sets: ")
106  << flatOutput(names_) << nl;
107  }
108 
109  for (const word& setName : names_)
110  {
111  if (isZone_)
112  {
113  set.addSet(mesh_.pointZones()[setName]);
114  }
115  else
116  {
117  pointSet loadedSet(mesh_, setName, IOobject::NO_REGISTER);
118 
119  set.addSet(loadedSet);
120  }
121  }
122  }
123  else if (action == topoSetSource::SUBTRACT)
124  {
125  if (verbose_)
126  {
127  Info<< " Removing all elements of point "
128  << (isZone_ ? "zones: " : "sets: ")
129  << flatOutput(names_) << nl;
130  }
131 
132  for (const word& setName : names_)
133  {
134  if (isZone_)
135  {
136  set.subtractSet(mesh_.pointZones()[setName]);
137  }
138  else
139  {
140  pointSet loadedSet(mesh_, setName, IOobject::NO_REGISTER);
141 
142  set.subtractSet(loadedSet);
143  }
144  }
145  }
146 }
147 
148 
149 // ************************************************************************* //
dictionary dict
The topoSetPointSource is a intermediate class for handling topoSet sources for selecting points...
Create a new set and ADD elements to it.
Add elements to current set.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
Definition: Istream.H:57
constexpr char nl
The newline &#39;\n&#39; character (0x0a)
Definition: Ostream.H:50
Macros for easy insertion into run-time selection tables.
Base class of a source for a topoSet.
Definition: topoSetSource.H:63
dynamicFvMesh & mesh
pointToPoint(const polyMesh &mesh, const word &setName)
Construct from components.
Definition: pointToPoint.C:50
A class for handling words, derived from Foam::string.
Definition: word.H:63
setAction
Enumeration defining various actions.
virtual void applyToSet(const topoSetSource::setAction action, topoSet &set) const
Apply specified action to the topoSet.
Definition: pointToPoint.C:88
defineTypeNameAndDebug(combustionModel, 0)
General set of labels of mesh quantity (points, cells, faces).
Definition: topoSet.H:59
Subtract elements from current set.
Class with constructor to add usage string to table.
messageStream Info
Information stream (stdout output on master, null elsewhere)
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:75
Do not request registration (bool: false)
Namespace for OpenFOAM.
addToRunTimeSelectionTable(functionObject, pointHistory, dictionary)
A class representing the concept of 1 (one) that can be used to avoid manipulating objects known to b...
Definition: one.H:56
FlatOutput::OutputAdaptor< Container, Delimiters > flatOutput(const Container &obj, Delimiters delim)
Global flatOutput() function with specified output delimiters.
Definition: FlatOutput.H:225