![]() |
|
00001 /*---------------------------------------------------------------------------*\ 00002 ========= | 00003 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox 00004 \\ / O peration | 00005 \\ / A nd | Copyright (C) 1991-2005 OpenCFD Ltd. 00006 \\/ M anipulation | 00007 ------------------------------------------------------------------------------- 00008 License 00009 This file is part of OpenFOAM. 00010 00011 OpenFOAM is free software; you can redistribute it and/or modify it 00012 under the terms of the GNU General Public License as published by the 00013 Free Software Foundation; either version 2 of the License, or (at your 00014 option) any later version. 00015 00016 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT 00017 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00018 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 00019 for more details. 00020 00021 You should have received a copy of the GNU General Public License 00022 along with OpenFOAM; if not, write to the Free Software Foundation, 00023 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00024 00025 Class 00026 tetPolyPatchFaceDecomp 00027 00028 Description 00029 00030 SourceFiles 00031 tetPolyPatchFaceDecomp.C 00032 00033 \*---------------------------------------------------------------------------*/ 00034 00035 #ifndef tetPolyPatchFaceDecomp_H 00036 #define tetPolyPatchFaceDecomp_H 00037 00038 #include "labelList.H" 00039 #include "vectorField.H" 00040 #include "triFaceList.H" 00041 00042 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00043 00044 namespace Foam 00045 { 00046 00047 // Class forward declarations 00048 class tetPolyBoundaryMeshFaceDecomp; 00049 00050 /*---------------------------------------------------------------------------*\ 00051 Class tetPolyPatchFaceDecomp Declaration 00052 \*---------------------------------------------------------------------------*/ 00053 00054 class tetPolyPatchFaceDecomp 00055 { 00056 // Private data 00057 00058 //- Reference to boundary mesh 00059 const tetPolyBoundaryMeshFaceDecomp& boundaryMesh_; 00060 00061 00062 // Private Member Functions 00063 00064 //- Disallow default bitwise copy construct 00065 tetPolyPatchFaceDecomp(const tetPolyPatchFaceDecomp&); 00066 00067 //- Disallow default bitwise assignment 00068 void operator=(const tetPolyPatchFaceDecomp&); 00069 00070 00071 public: 00072 00073 typedef tetPolyBoundaryMeshFaceDecomp BoundaryMesh; 00074 00075 00076 //- Runtime type information 00077 TypeName("basePatch"); 00078 00079 00080 // Constructor 00081 00082 //- Construct from polyPatch 00083 tetPolyPatchFaceDecomp 00084 ( 00085 const tetPolyBoundaryMeshFaceDecomp& bm 00086 ) 00087 : 00088 boundaryMesh_(bm) 00089 {} 00090 00091 00092 // Destructor 00093 00094 virtual ~tetPolyPatchFaceDecomp() 00095 {} 00096 00097 00098 // Member Functions 00099 00100 //- Return name 00101 virtual const word& name() const = 0; 00102 00103 //- Return size 00104 virtual label size() const = 0; 00105 00106 //- Return number of faces 00107 virtual label nFaces() const = 0; 00108 00109 //- Return the index of this patch in the tetPolyBoundaryMeshFaceDecomp 00110 virtual label index() const = 0; 00111 00112 00113 //- Return boundaryMesh reference 00114 const tetPolyBoundaryMeshFaceDecomp& boundaryMesh() const 00115 { 00116 return boundaryMesh_; 00117 } 00118 00119 //- Return mesh points 00120 virtual const labelList& meshPoints() const = 0; 00121 00122 //- Return mesh points 00123 virtual const vectorField& localPoints() const = 0; 00124 00125 //- Return point normals 00126 virtual const vectorField& pointNormals() const = 0; 00127 00128 //- Face decomposition into triangle 00129 // Used for implementation of FEM boundary conditions 00130 virtual triFaceList faceTriangles(const label faceID) const = 0; 00131 00132 //- Return complete list of faces. All are triangles 00133 virtual faceList triFaces() const = 0; 00134 00135 00136 // Update topology 00137 virtual void updateMesh() 00138 {} 00139 }; 00140 00141 00142 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00143 00144 } // End namespace Foam 00145 00146 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00147 00148 #endif 00149 00150 // ************************************************************************* //