Loading...
Searching...
No Matches
edgeMeshIO.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) 2019-2022 OpenCFD Ltd.
10-------------------------------------------------------------------------------
11License
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\*---------------------------------------------------------------------------*/
29#include "edgeMesh.H"
30#include "boundBox.H"
31#include "edgeMeshFormat.H"
32
33// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
34
36(
37 const fileName& name,
38 const word& fileType
39)
40:
41 points_(),
42 edges_(),
43 pointEdgesPtr_(nullptr)
44{
45 read(name, fileType);
46}
47
48
50:
51 points_(),
52 edges_(),
53 pointEdgesPtr_(nullptr)
55 read(name);
56}
57
58
59// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
60
62{
63 if (name.has_ext("gz"))
64 {
65 return read(name.lessExt(), name.stem().ext());
66 }
67
68 return read(name, name.ext());
69}
70
71
73(
74 const fileName& name,
75 const word& fileType
76)
78 // Read via selector mechanism
79 transfer(*New(name, fileType));
80 return true;
81}
82
83
85(
86 const fileName& name,
87 const word& fileType,
88 const edgeMesh& mesh,
89 IOstreamOption streamOpt,
90 const dictionary& options
91)
92{
93 DebugInFunction << "Writing to " << name << endl;
94
95 auto* mfuncPtr = writefileExtensionMemberFunctionTable(fileType);
96
97 if (!mfuncPtr)
98 {
100 (
101 "extension",
102 fileType,
103 *writefileExtensionMemberFunctionTablePtr_
105 }
106
107 mfuncPtr(name, mesh, streamOpt, options);
108}
109
110
112(
113 const fileName& name,
114 const edgeMesh& mesh,
115 IOstreamOption streamOpt,
116 const dictionary& options
117)
118{
119 write(name, name.ext(), mesh, streamOpt, options);
120}
121
122
124{
125 os << indent << "points : " << points().size() << nl;
126 os << indent << "edges : " << edges().size() << nl;
127 os << indent << "boundingBox : " << boundBox(this->points()) << endl;
128}
129
130
131// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * //
132
133Foam::Ostream& Foam::operator<<(Ostream& os, const edgeMesh& em)
134{
135 fileFormats::edgeMeshFormat::write(os, em.points_, em.edges_);
136
137 os.check(FUNCTION_NAME);
138 return os;
139}
140
141
142Foam::Istream& Foam::operator>>(Istream& is, edgeMesh& em)
143{
144 fileFormats::edgeMeshFormat::read(is, em.points_, em.edges_);
145
146 em.pointEdgesPtr_.reset(nullptr);
147
148 is.check(FUNCTION_NAME);
149 return is;
150}
151
152
153// ************************************************************************* //
A simple container for options an IOstream can normally have.
virtual bool check(const char *operation) const
Check IOstream status for given operation.
Definition IOstream.C:45
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Definition Istream.H:60
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition Ostream.H:59
void size(const label n)
Older name for setAddressableSize.
Definition UList.H:118
A bounding box defined in terms of min/max extrema points.
Definition boundBox.H:71
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
Mesh data needed to do the Finite Area discretisation.
Definition edgeFaMesh.H:50
edgeMesh()
Default construct.
Definition edgeMeshI.H:38
edgeMesh(const faMesh &mesh)
Construct finite-area edge mesh faMesh reference.
Definition edgeFaMesh.H:58
const edgeList & edges() const noexcept
Return edges.
Definition edgeMeshI.H:98
bool read(const fileName &name, const word &fileType)
Read from file. Chooses reader based on explicit extension.
Definition edgeMeshIO.C:66
void transfer(edgeMesh &mesh)
Transfer the contents of the argument and annul the argument.
Definition edgeMesh.C:119
virtual void writeStats(Ostream &) const
Definition edgeMeshIO.C:116
static void write(const fileName &name, const edgeMesh &mesh, IOstreamOption streamOpt=IOstreamOption(), const dictionary &options=dictionary::null)
Write to file (format implicit in the extension).
Definition edgeMeshIO.C:105
static bool read(Istream &, pointField &, edgeList &)
Read edgeMesh components from stream.
static Ostream & write(Ostream &, const pointField &, const edgeList &)
Write edgeMesh components to stream.
A class for handling file names.
Definition fileName.H:75
A class for handling words, derived from Foam::string.
Definition word.H:66
dynamicFvMesh & mesh
#define FatalErrorInLookup(lookupTag, lookupName, lookupTable)
Report an error message using Foam::FatalError.
Definition error.H:607
OBJstream os(runTime.globalPath()/outputName)
auto & name
const pointField & points
#define FUNCTION_NAME
#define DebugInFunction
Report an information message using Foam::Info.
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tf1, const word &name, const dimensionSet &dimensions, const bool initCopy=false)
Global function forwards to reuseTmpDimensionedField::New.
bool read(const char *buf, int32_t &val)
Same as readInt32.
Definition int32.H:127
Ostream & operator<<(Ostream &, const boundaryPatch &p)
Write boundaryPatch as dictionary entries (without surrounding braces).
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition Ostream.H:519
Ostream & indent(Ostream &os)
Indent stream.
Definition Ostream.H:481
Istream & operator>>(Istream &, directionInfo &)
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for expressions::valueTypeCode::INVALID.
Definition exprTraits.C:127
errorManipArg< error, int > exit(error &err, const int errNo=1)
Definition errorManip.H:125
constexpr char nl
The newline '\n' character (0x0a).
Definition Ostream.H:50
runTime write()