initial commit for version 1.5.x patch release
[OpenFOAM-1.5.x.git] / src / OpenFOAM / meshes / meshShapes / tetCell / tetCell.H
blob67f4a9e78965dc0d2835a9ec338916980fa29245
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2008 OpenCFD Ltd.
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     Foam::tetCell
28 Description
29     A tetrahedral cell primitive.
31     It is important that the ordering of edges is the same for a tetrahedron
32     class, a tetrahedron cell shape model and a tetCell
34 SourceFiles
35     tetCellI.H
37 \*---------------------------------------------------------------------------*/
39 #ifndef tetCell_H
40 #define tetCell_H
42 #include "FixedList.H"
43 #include "triFace.H"
44 #include "edge.H"
45 #include "pointField.H"
46 #include "tetPointRef.H"
48 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
50 namespace Foam
53 class cellShape;
55 /*---------------------------------------------------------------------------*\
56                            class tetCell Declaration
57 \*---------------------------------------------------------------------------*/
59 class tetCell
61     public FixedList<label, 4>
64 public:
66     // Constructors
68         //- Construct null
69         inline tetCell();
71         //- Construct from four points
72         inline tetCell
73         (
74             const label a,
75             const label b,
76             const label c,
77             const label d
78         );
80         //- Construct from Istream
81         inline tetCell(Istream&);
84     // Member Functions
86         // Access
88             //- Return ith face
89             inline triFace face(const label facei) const;
91             //- Return fisrt face adjacent to the given edge
92             inline label edgeFace(const label edgei) const;
94             //- Return face adjacent to the given face sharing the same edge
95             inline label edgeAdjacentFace
96             (
97                 const label edgei,
98                 const label facei
99             ) const;
101             //- Return ith edge
102             inline edge tetEdge(const label edgei) const;
105         // Operations
107             //- Return tet shape cell
108             cellShape tetCellShape() const;
110             //- Return the tetrahedron
111             inline tetPointRef tet(const pointField&) const;
115 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
117 } // End namespace Foam
119 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
121 #include "tetCellI.H"
123 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
125 #endif
127 // ************************************************************************* //