Fixed URL for libccmio-2.6.1 (bug report #5 by Thomas Oliveira)
[foam-extend-3.2.git] / src / mesh / cfMesh / utilities / meshes / triSurf / triSurf.H
blob6af0d4134c29e4eecd870dd2157ecb67558fe96a
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | cfMesh: A library for mesh generation
4    \\    /   O peration     |
5     \\  /    A nd           | Author: Franjo Juretic (franjo.juretic@c-fields.com)
6      \\/     M anipulation  | Copyright (C) Creative Fields, Ltd.
7 -------------------------------------------------------------------------------
8 License
9     This file is part of cfMesh.
11     cfMesh 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 3 of the License, or (at your
14     option) any later version.
16     cfMesh 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 cfMesh.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     triSurf
27 Description
28     A class for triangulated surface used in the meshing process.
29     It is derived from points and facets with some additional subsets.
30     Subsets are vert useful for local mesh refinement.
32 SourceFiles
33     triSurf.C
35 \*---------------------------------------------------------------------------*/
37 #ifndef triSurf_H
38 #define triSurf_H
40 #include "triSurfPoints.H"
41 #include "triSurfFacets.H"
42 #include "triSurfFeatureEdges.H"
43 #include "triSurfAddressing.H"
44 #include <map>
45 #include "DynList.H"
46 #include "labelLongList.H"
48 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
50 namespace Foam
53 // Froward declarations
54 class triSurfModifier;
56 /*---------------------------------------------------------------------------*\
57                         Class triSurf Declaration
58 \*---------------------------------------------------------------------------*/
60 class triSurf
62     public triSurfPoints,
63     public triSurfFacets,
64     public triSurfFeatureEdges,
65     public triSurfAddressing
67     // Private member functions
68         void readFromFTR(const fileName&);
69         void writeToFTR(const fileName&) const;
71         void readFromFMS(const fileName&);
72         void writeToFMS(const fileName&) const;
74         inline LongList<labelledTri>& accessToFacets();
75         inline geometricSurfacePatchList& accessToPatches();
77         void topologyCheck();
79         //- Disallow default bitwise assignment
80         void operator=(const triSurf&);
82 public:
84     // Friend classes
85         friend class triSurfModifer;
87     // Constructors
89         //- Default construct
90         triSurf();
92         //- Construct from parts
93         triSurf
94         (
95             const LongList<labelledTri>& triangles,
96             const geometricSurfacePatchList& patches,
97             const edgeLongList& featureEdges_,
98             const pointField& points
99         );
101         //- Read from file
102         triSurf(const fileName& fName);
104     // Destructor
106         ~triSurf();
109     // Member Functions
110         //- read and write the surface
111         void readSurface(const fileName&);
112         void writeSurface(const fileName&) const;
116 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
118 } // End namespace Foam
120 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
122 #include "triSurfI.H"
124 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
126 #endif
128 // ************************************************************************* //