Nektar++
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TriangleInterface.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////////////
2 //
3 // File: TriangleInterface.h
4 //
5 // For more information, please see: http://www.nektar.info/
6 //
7 // The MIT License
8 //
9 // Copyright (c) 2006 Division of Applied Mathematics, Brown University (USA),
10 // Department of Aeronautics, Imperial College London (UK), and Scientific
11 // Computing and Imaging Institute, University of Utah (USA).
12 //
13 // License for the specific language governing rights and limitations under
14 // Permission is hereby granted, free of charge, to any person obtaining a
15 // copy of this software and associated documentation files (the "Software"),
16 // to deal in the Software without restriction, including without limitation
17 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
18 // and/or sell copies of the Software, and to permit persons to whom the
19 // Software is furnished to do so, subject to the following conditions:
20 //
21 // The above copyright notice and this permission notice shall be included
22 // in all copies or substantial portions of the Software.
23 //
24 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
27 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
30 // DEALINGS IN THE SOFTWARE.
31 //
32 // Description: class for interfacing with triangle
33 //
34 ////////////////////////////////////////////////////////////////////////////////
35 
36 #ifndef NEKTAR_MESHUTILS_EXTLIBINTERFACE_TRIANGLEINTERFACE_H
37 #define NEKTAR_MESHUTILS_EXTLIBINTERFACE_TRIANGLEINTERFACE_H
38 
39 #include <boost/shared_ptr.hpp>
40 
44 
46 
47 namespace Nektar
48 {
49 namespace NekMeshUtils
50 {
51 
52 /**
53  * @brief class for interfacing with external library triangle
54  */
56 {
57 public:
59 
60  /**
61  * @brief default constructor
62  */
64 
65  /**
66  * @brief assign meshing paramters
67  */
68  void Assign(std::vector<std::vector<NodeSharedPtr> > &boundingloops,
69  std::vector<Array<OneD, NekDouble> > &centers,
70  int i,
71  NekDouble str = 1.0)
72  {
73  m_boundingloops = boundingloops;
74  m_centers = centers;
75  m_str = str;
76  sid = i;
77  }
78 
79  void AssignStiener(std::vector<NodeSharedPtr> stiner)
80  {
81  m_stienerpoints = stiner;
82  }
83 
84  /**
85  * @brief Execute meshing
86  */
87  void Mesh(bool Quality = false);
88 
89  /**
90  * @brief Extract mesh
91  */
92  void Extract(std::vector<std::vector<NodeSharedPtr> > &Connec);
93 
94 private:
95  /**
96  * @brief Clear memory
97  */
98  void SetUp();
99 
100  /// List of bounding nodes to the surface
101  std::vector<std::vector<NodeSharedPtr> > m_boundingloops;
102  /// List of additional nodes
103  std::vector<NodeSharedPtr> m_stienerpoints;
104  /// Coordinates of the centers of the loops
105  std::vector<Array<OneD, NekDouble> > m_centers;
106  /// Map from NekMesh id to triangle id
107  std::map<int, NodeSharedPtr> nodemap;
108  /// ID of the surface
109  int sid;
110  /// Stretching factor of parameter plane
112  /// Triangle data strucutres
114 };
115 
116 typedef boost::shared_ptr<TriangleInterface> TriangleInterfaceSharedPtr;
117 }
118 }
119 
120 #endif
std::vector< Array< OneD, NekDouble > > m_centers
Coordinates of the centers of the loops.
void Mesh(bool Quality=false)
Execute meshing.
class for interfacing with external library triangle
void Extract(std::vector< std::vector< NodeSharedPtr > > &Connec)
Extract mesh.
boost::shared_ptr< TriangleInterface > TriangleInterfaceSharedPtr
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
std::vector< std::vector< NodeSharedPtr > > m_boundingloops
List of bounding nodes to the surface.
std::map< int, NodeSharedPtr > nodemap
Map from NekMesh id to triangle id.
std::vector< NodeSharedPtr > m_stienerpoints
List of additional nodes.
DelaunayTriangle dt
Triangle data strucutres.
NekDouble m_str
Stretching factor of parameter plane.
double NekDouble
void AssignStiener(std::vector< NodeSharedPtr > stiner)
void Assign(std::vector< std::vector< NodeSharedPtr > > &boundingloops, std::vector< Array< OneD, NekDouble > > &centers, int i, NekDouble str=1.0)
assign meshing paramters