fixed writing out entries in advective bc
[OpenFOAM-1.6-ext.git] / src / tetDecompositionFiniteElement / tetPolyMeshCellDecomp / tetPolyPatches / faceTetPolyPatch / faceTetPolyPatchCellDecomp.H
blob1d37b87d679a9ae5685749ca14e40b29424cb9cb
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright held by original author
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software; you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation; either version 2 of the License, or (at your
14     option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM; if not, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 Class
26     faceTetPolyPatchCellDecomp
28 Description
29     A tetPolyPatch based on a polyPatch
31 SourceFiles
32     faceTetPolyPatchCellDecomp.C
33     faceTetPolyPatchCellDecompM.C
34     newTetPolyPatch.C
36 \*---------------------------------------------------------------------------*/
38 #ifndef faceTetPolyPatchCellDecomp_H
39 #define faceTetPolyPatchCellDecomp_H
41 #include "tetPolyPatchCellDecomp.H"
42 #include "polyPatch.H"
43 #include "autoPtr.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
50 /*---------------------------------------------------------------------------*\
51                   Class faceTetPolyPatchCellDecomp Declaration
52 \*---------------------------------------------------------------------------*/
54 class faceTetPolyPatchCellDecomp
56     public tetPolyPatchCellDecomp
58     // Private data
60         //- Index of polyPatch in boundary
61         //  Needs to be stored as faceTetPolyPatch does not hold a reference to
62         //  a polyPatch in order to enable topological changes
63         const label boundaryIndex_;
66     // Private Member Functions
68         //- Disallow default bitwise copy construct
69         faceTetPolyPatchCellDecomp(const faceTetPolyPatchCellDecomp&);
71         //- Disallow default bitwise assignment
72         void operator=(const faceTetPolyPatchCellDecomp&);
75 public:
77     typedef tetPolyBoundaryMeshCellDecomp BoundaryMesh;
80     //- Runtime type information
81     TypeName(polyPatch::typeName_());
83     // Declare run-time constructor selection tables
85         declareRunTimeSelectionTable
86         (
87             autoPtr,
88             faceTetPolyPatchCellDecomp,
89             polyPatch,
90             (const polyPatch& patch, const tetPolyBoundaryMeshCellDecomp& bm),
91             (patch, bm)
92         );
95     // Constructors
97         //- Construct from polyPatch
98         faceTetPolyPatchCellDecomp
99         (
100             const polyPatch&,
101             const tetPolyBoundaryMeshCellDecomp&
102         );
105     // Selectors
107         //- Return a pointer to a new patch created on freestore from polyPatch
108         static autoPtr<faceTetPolyPatchCellDecomp> New
109         (
110             const polyPatch&,
111             const tetPolyBoundaryMeshCellDecomp&
112         );
115     // Destructor
117         virtual ~faceTetPolyPatchCellDecomp()
118         {}
121     // Member Functions
123         //- Return the polyPatch
124         const polyPatch& patch() const;
126         //- Return name
127         virtual const word& name() const
128         {
129             return patch().name();
130         }
132         //- Return size
133         virtual label size() const
134         {
135             return patch().nPoints();
136         }
138         //- Return number of faces
139         virtual label nFaces() const
140         {
141             return patch().size();
142         }
144         //- Return the index of this patch in the tetPolyBoundaryMeshCellDecomp
145         virtual label index() const
146         {
147             return boundaryIndex_;
148         }
151         // Access functions for demand driven data
153             //- Return mesh points
154             virtual const labelList& meshPoints() const
155             {
156                 return patch().meshPoints();
157             }
159             //- Return pointField of points in patch
160             virtual const pointField& localPoints() const
161             {
162                 return patch().localPoints();
163             }
165             //- Return point unit normals
166             virtual const vectorField& pointNormals() const
167             {
168                 return patch().pointNormals();
169             }
171             //- Face decomposition into triangle
172             //  Used for implementation of FEM boundary conditions
173             virtual triFaceList faceTriangles(const label faceID) const;
175             //- Return complete list of faces. All are triangles
176             virtual faceList triFaces() const;
179         // Update topology - not required
183 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
185 } // End namespace Foam
187 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
189 #endif
191 // ************************************************************************* //