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_(one{}, setName)
64 {}
65 
66 
68 (
69  const polyMesh& mesh,
70  const dictionary& dict
71 )
72 :
73  topoSetPointSource(mesh),
74  names_()
75 {
76  // Look for 'sets' or 'set'
77  if (!dict.readIfPresent("sets", names_))
78  {
79  names_.resize(1);
80  dict.readEntry("set", names_.front());
81  }
82 }
83 
84 
86 (
87  const polyMesh& mesh,
88  Istream& is
89 )
90 :
91  topoSetPointSource(mesh),
92  names_(one{}, word(checkIs(is)))
93 {}
94 
95 
96 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
97 
99 (
100  const topoSetSource::setAction action,
101  topoSet& set
102 ) const
103 {
104  if (action == topoSetSource::ADD || action == topoSetSource::NEW)
105  {
106  if (verbose_)
107  {
108  Info<< " Adding all elements of point sets: "
109  << flatOutput(names_) << nl;
110  }
111 
112  for (const word& setName : names_)
113  {
114  pointSet loadedSet(mesh_, setName);
115 
116  set.addSet(loadedSet);
117  }
118  }
119  else if (action == topoSetSource::SUBTRACT)
120  {
121  if (verbose_)
122  {
123  Info<< " Removing all elements of point sets: "
124  << flatOutput(names_) << nl;
125  }
126 
127  for (const word& setName : names_)
128  {
129  pointSet loadedSet(mesh_, setName);
130 
131  set.subtractSet(loadedSet);
132  }
133  }
134 }
135 
136 
137 // ************************************************************************* //
dictionary dict
The topoSetPointSource is a intermediate class for handling topoSet sources for selecting points...
void resize(const label len)
Adjust allocated size of list.
Definition: ListI.H:160
Create a new set and ADD elements to it.
Add elements to current set.
constexpr char nl
The newline &#39;\n&#39; character (0x0a)
Definition: Ostream.H:50
T & front()
Access first element of the list, position [0].
Definition: UListI.H:237
Macros for easy insertion into run-time selection tables.
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:92
defineTypeNameAndDebug(combustionModel, 0)
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:74
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