cutFace.H
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 DHI
9 Copyright (C) 2018-2019 Johan Roenby
10 Copyright (C) 2019-2020 DLR
11-------------------------------------------------------------------------------
12License
13 This file is part of OpenFOAM.
14
15 OpenFOAM is free software: you can redistribute it and/or modify it
16 under the terms of the GNU General Public License as published by
17 the Free Software Foundation, either version 3 of the License, or
18 (at your option) any later version.
19
20 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
21 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
22 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
23 for more details.
24
25 You should have received a copy of the GNU General Public License
26 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
27
28Class
29 Foam::cutFace
30
31Description
32 Base class for cutting a face, faceI, of an fvMesh, mesh_, at its
33 intersections
34
35 Original code supplied by
36 Johan Roenby, DHI (2016)
37 Henning Scheufler, DLR (2019)
38
39SourceFiles
40 cutFace.C
41
42\*---------------------------------------------------------------------------*/
43
44#ifndef cutFace_H
45#define cutFace_H
46
47#include "fvMesh.H"
48#include "surfaceFields.H"
49#include "volFields.H"
50
51// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
52
53namespace Foam
54{
55
56/*---------------------------------------------------------------------------*\
57 Class cutFaces Declaration
58\*---------------------------------------------------------------------------*/
60class cutFace
61{
62 // Private Data
63
64 //- Reference to mesh
65 const fvMesh& mesh_;
66
67
68protected:
69
70 //- Calculate cut points along edges of face with pointStatus, pointfield
71 //- and computes geometric information and the face status where:
72 // - -1: faceStatus is fully below the isosurface
73 // - 0: faceStatus is cut (has values larger and smaller than isoValue)
74 // - +1: faceStatus is fully above the isosurface
75 void calcSubFace
76 (
77 const label faceI,
78 const scalarList& pointStatus,
79 label firstFullySubmergedPoint,
80 DynamicList<point>& subFacePoints,
81 DynamicList<point>& surfacePoints,
82 label& faceStatus,
83 vector& subFaceCentre,
84 vector& subFaceArea
85 );
86
87 //- Calculate cut points along edges of face with pointStatus, pointfield,
88 //- weights and computes geometric information and the face status where:
89 // - -1: faceStatus is fully below the isosurface
90 // - 0: faceStatus is cut (has values larger and smaller than isoValue)
91 // - +1: faceStatus is fully above the isosurface
92 void calcSubFace
93 (
94 const label faceI,
95 const scalarList& pointStatus,
96 const scalarList& weights,
97 label firstFullySubmergedPoint,
98 DynamicList<point>& subFacePoints,
99 DynamicList<point>& surfacePoints,
100 label& faceStatus,
101 vector& subFaceCentre,
102 vector& subFaceArea
103 );
104
105 //- Calculates centre and normal of the face
107 (
108 DynamicList<point>& subFacePoints,
109 vector& subFaceCentre,
110 vector& subFaceArea
111 );
112
113 //- Calculate cut points along edges of face with pointStatus, pointfield
114 //- and computes geometric information and the face status where:
115 // - -1: faceStatus is fully below the isosurface
116 // - 0: faceStatus is cut (has values larger and smaller than isoValue)
117 // - +1: faceStatus is fully above the isosurface
118 void calcSubFace
119 (
120 const face& f,
121 const pointField& points,
122 const scalarList& pointStatus,
123 label firstFullySubmergedPoint,
124 DynamicList<point>& subFacePoints,
125 DynamicList<point>& surfacePoints,
126 label& faceStatus,
127 vector& subFaceCentre,
128 vector& subFaceArea
129 );
130
131
132public:
133
134 // Static Data
135 static int debug;
136
137
138 // Constructors
139
140 //- Construct from fvMesh
141 explicit cutFace(const fvMesh& mesh);
142};
143
144// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
145
146} // End namespace Foam
147
148// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
149
150#endif
151
152// ************************************************************************* //
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
Definition: DynamicList.H:72
Base class for cutting a face, faceI, of an fvMesh, mesh_, at its intersections.
Definition: cutFace.H:60
void calcSubFace(const label faceI, const scalarList &pointStatus, label firstFullySubmergedPoint, DynamicList< point > &subFacePoints, DynamicList< point > &surfacePoints, label &faceStatus, vector &subFaceCentre, vector &subFaceArea)
Definition: cutFace.C:39
void calcSubFaceCentreAndArea(DynamicList< point > &subFacePoints, vector &subFaceCentre, vector &subFaceArea)
Calculates centre and normal of the face.
Definition: cutFace.C:265
static int debug
Definition: cutFace.H:134
A face is a list of labels corresponding to mesh vertices.
Definition: face.H:75
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:91
dynamicFvMesh & mesh
const pointField & points
Namespace for OpenFOAM.
labelList f(nPoints)
Foam::surfaceFields.