blockEdge.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) 2019-2021 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 "blockEdge.H"
30 #include "blockVertex.H"
31 #include "polyLine.H"
32 
33 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
34 
35 namespace Foam
36 {
37  defineTypeNameAndDebug(blockEdge, 0);
38  defineRunTimeSelectionTable(blockEdge, Istream);
39 }
40 
41 
42 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
43 
45 (
46  const pointField& points,
47  const edge& fromTo
48 )
49 :
50  points_(points),
51  start_(fromTo.first()),
52  end_(fromTo.last())
53 {}
54 
55 
57 (
58  const dictionary& dict,
59  const label index,
60  const pointField& points,
61  Istream& is
62 )
63 :
64  points_(points),
65  start_(blockVertex::read(is, dict)),
66  end_(blockVertex::read(is, dict))
67 {}
68 
69 
71 {
73  return nullptr;
74 }
75 
76 
78 (
79  const dictionary& dict,
80  const label index,
81  const searchableSurfaces& geometry,
82  const pointField& points,
83  Istream& is
84 )
85 {
86  DebugInFunction << "Constructing blockEdge" << endl;
87 
88  const word edgeType(is);
89 
90  auto* ctorPtr = IstreamConstructorTable(edgeType);
91 
92  if (!ctorPtr)
93  {
95  (
96  dict,
97  "blockEdge",
98  edgeType,
99  *IstreamConstructorTablePtr_
100  ) << abort(FatalIOError);
101  }
102 
103  return autoPtr<blockEdge>(ctorPtr(dict, index, geometry, points, is));
104 }
105 
106 
107 // * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
108 
110 (
111  const pointField& p,
112  const label from,
113  const label to,
114  const pointField& intermediate
115 )
116 {
117  return pointField(polyLine::concat(p[from], intermediate, p[to]));
118 }
119 
120 
121 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
122 
125 {
126  auto tpoints = tmp<pointField>::New(lambdas.size());
127  auto& points = tpoints.ref();
128 
129  forAll(lambdas, i)
130  {
131  points[i] = position(lambdas[i]);
132  }
133  return tpoints;
134 }
135 
136 
138 {
139  blockVertex::write(os, start_, dict);
140  os << tab;
141  blockVertex::write(os, end_, dict);
142  os << endl;
143 }
144 
145 
146 // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
147 
149 {
150  os << e.start_ << tab << e.end_ << endl;
151 
152  return os;
153 }
154 
155 
156 // ************************************************************************* //
Foam::pointField
vectorField pointField
pointField is a vectorField.
Definition: pointFieldFwd.H:44
p
volScalarField & p
Definition: createFieldRefs.H:8
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:65
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:61
Foam::defineRunTimeSelectionTable
defineRunTimeSelectionTable(reactionRateFlameArea, dictionary)
polyLine.H
Foam::edge
An edge is a list of two point labels. The functionality it provides supports the discretisation on a...
Definition: edge.H:63
Foam::blockEdge::New
static autoPtr< blockEdge > New(const dictionary &dict, const label index, const searchableSurfaces &geometry, const pointField &points, Istream &is)
New function which constructs and returns pointer to a blockEdge.
Definition: blockEdge.C:78
Foam::FatalIOError
IOerror FatalIOError
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:369
Foam::blockEdge
Define a curved edge that is parameterized for 0<lambda<1 between the start/end points.
Definition: blockEdge.H:63
forAll
#define forAll(list, i)
Loop across all elements in list.
Definition: stdFoam.H:296
Foam::blockMeshTools::read
void read(Istream &, label &val, const dictionary &)
In-place read with dictionary lookup.
Definition: blockMeshTools.C:57
Foam::blockEdge::blockEdge
blockEdge(const pointField &points, const label from, const label to)
Construct from components.
Definition: blockEdge.H:97
Foam::operator<<
Ostream & operator<<(Ostream &, const boundaryPatch &p)
Write boundaryPatch as dictionary entries (without surrounding braces)
Definition: boundaryPatch.C:83
NotImplemented
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
Definition: error.H:517
FatalIOErrorInLookup
#define FatalIOErrorInLookup(ios, lookupTag, lookupName, lookupTable)
Report an error message using Foam::FatalIOError.
Definition: error.H:478
Foam::Field< vector >
Foam::Istream
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Definition: Istream.H:61
DebugInFunction
#define DebugInFunction
Report an information message using Foam::Info.
Definition: messageStream.H:388
Foam::polyLine::concat
static tmp< pointField > concat(const point &start, const pointField &intermediate, const point &end)
Concatenate begin, intermediate and end points.
Definition: polyLine.C:35
dict
dictionary dict
Definition: searchingEngine.H:14
blockVertex.H
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:123
os
OBJstream os(runTime.globalPath()/outputName)
Foam::blockEdge::position
virtual point position(const scalar lambda) const =0
The point position corresponding to the curve parameter.
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::abort
errorManip< error > abort(error &err)
Definition: errorManip.H:144
Foam::blockEdge::appendEndPoints
static pointField appendEndPoints(const pointField &p, const label from, const label to, const pointField &intermediate)
Definition: blockEdge.C:110
Foam::autoPtr
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: HashPtrTable.H:53
Foam::tab
constexpr char tab
Definition: Ostream.H:403
Foam::List< scalar >
Foam::searchableSurfaces
Container for searchableSurfaces. The collection is specified as a dictionary. For example,...
Definition: searchableSurfaces.H:92
Foam::blockEdge::clone
virtual autoPtr< blockEdge > clone() const
Clone function.
Definition: blockEdge.C:70
Foam::blockEdge::write
void write(Ostream &os, const dictionary &dict) const
Write edge with variable back-substitution.
Definition: blockEdge.C:137
points
const pointField & points
Definition: gmvOutputHeader.H:1
Foam::constant::electromagnetic::e
const dimensionedScalar e
Elementary charge.
Definition: createFields.H:11
Foam::tmp::New
static tmp< T > New(Args &&... args)
Construct tmp of T with forwarding arguments.
Foam::Ostream
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:56
Foam::blockVertex::write
static void write(Ostream &, const label, const dictionary &)
Write vertex index with optional name backsubstitution.
Definition: blockVertex.C:118
blockEdge.H
Foam::defineTypeNameAndDebug
defineTypeNameAndDebug(combustionModel, 0)