ConformalMesher Class Reference

Tools to define a BoundaryMesh and use it to generate a BezierMesh. More...

#include </usr1/tp517/Tumble/trunk/src/tumble/conformalmesher.h>

Collaboration diagram for ConformalMesher:

[legend]
List of all members.

Public Member Functions

 ConformalMesher (BezierMesh *, BoundaryMesh *)
 ~ConformalMesher ()
void add_face_point (BoundaryFace *f, Point2D p)
void add_hole (Point2D p)
void mesh ()
 Fill in the (assumed empty) bezier mesh with a conformal mesh based on the boundary mesh.

Private Member Functions

void create_bbox ()
void insert_d0_vertices ()
void create_subsplines ()
void conform ()
void reticulate_splines ()
void set_face_pointers ()
void excavate_holes ()
void link_edge (Subspline *)
void unlink_edge (Subspline *s)
bool segment_appears (Subspline *)
bool angle_is_positive (Subspline *, BezierVertex *, BezierEdge *)
BezierVertexsplit_destroy_segment (Subspline *, std::vector< Subspline * > &)
void collect_faces (Point2D, hashers::hash_set< BezierTriangle * > &)
void set_face_pointer (BoundaryFace *face)
void remove_hole (Point2D)

Private Attributes

BezierMeshbezier
BoundaryMeshbdry
std::list< Subspline * > subsplines
std::vector< Subspline * > spline_stack
hashers::hash_set< Subspline *,
CastHash< Subspline * > > 
is_encroached
hashers::hash_set< Subspline *,
CastHash< Subspline * > > 
in_stack
hashers::hash_map< BezierVertex *,
std::vector< Subspline * > > 
incident_edges
std::vector< Point2Dremove_points
std::vector< std::pair< BoundaryFace *,
Point2D > > 
face_points

Detailed Description

Tools to define a BoundaryMesh and use it to generate a BezierMesh.

This class provides tools to use when designing a new mesh from scratch. We produce a conformal mesh -- a Delaunay mesh in which all the segments appear and no elements are inverted. We do not produce a quality mesh: run a mesh refinement algorithm after this pre-processing step.

Todo:
eventually remove this whole class, and move its functions to BoundaryMesh or simulation.

Definition at line 32 of file conformalmesher.h.


Constructor & Destructor Documentation

ConformalMesher::ConformalMesher ( BezierMesh ,
BoundaryMesh  
)

Definition at line 141 of file conformalmesher.C.

References bdry, and bezier.

ConformalMesher::~ConformalMesher (  ) 

Definition at line 151 of file conformalmesher.C.

References subsplines.


Member Function Documentation

void ConformalMesher::create_bbox (  )  [private]

Definition at line 200 of file conformalmesher.C.

References BezierMesh::add_bezier_triangle(), BezierMesh::add_bezier_vertex(), BezierMesh::add_straight_bezier_edge(), BoundaryMesh::bbox(), bdry, bezier, BezierMesh::check_consistency(), and remove_points.

Referenced by mesh().

Here is the call graph for this function:

void ConformalMesher::insert_d0_vertices (  )  [private]

Definition at line 256 of file conformalmesher.C.

References bdry, bezier, BezierMesh::check_consistency(), BezierMesh::clean_insert_point(), BezierVertex::get_control_point(), BezierVertex::get_cp(), CellComplex< Vertex, Edge, Face, Tuple >::get_vertexs_begin(), CellComplex< Vertex, Edge, Face, Tuple >::get_vertexs_end(), BezierMesh::replace_control_point(), and BezierVertex::set_bdry().

Referenced by mesh().

Here is the call graph for this function:

void ConformalMesher::create_subsplines (  )  [private]

Definition at line 284 of file conformalmesher.C.

References bdry, bezier, BezierMesh::check_consistency(), BezierMesh::clean_insert_point(), BezierMesh::find_inverted_triangles(), QBSpline::get_control_point_at_idx(), CellComplex< Vertex, Edge, Face, Tuple >::get_edges_begin(), CellComplex< Vertex, Edge, Face, Tuple >::get_edges_end(), QBSpline::get_num_segments(), link_edge(), BezierMesh::replace_control_point(), BezierVertex::set_bdry(), QBSpline::set_bezier_vertex(), and MeshBinaryOutput::write().

Referenced by mesh().

Here is the call graph for this function:

void ConformalMesher::conform (  )  [private]

Definition at line 352 of file conformalmesher.C.

References bezier, BezierMesh::check_consistency(), CellComplex< Vertex, Edge, Face, Tuple >::enqueue_edges(), CellComplex< Vertex, Edge, Face, Tuple >::get_opposite_vertex(), in_stack, incident_edges, is_encroached, segment_appears(), spline_stack, and split_destroy_segment().

Referenced by mesh().

Here is the call graph for this function:

void ConformalMesher::reticulate_splines (  )  [private]

Definition at line 432 of file conformalmesher.C.

References bdry, bezier, BezierMesh::check_consistency(), CellComplex< Vertex, Edge, Face, Tuple >::find_common_edge(), QBSpline::get_bezier_vertex(), QBSpline::get_deboor(), CellComplex< Vertex, Edge, Face, Tuple >::get_edges_begin(), CellComplex< Vertex, Edge, Face, Tuple >::get_edges_end(), QBSpline::get_num_segments(), QBSpline::k, BezierMesh::replace_control_point(), and BezierEdge::set_bdry().

Referenced by mesh().

Here is the call graph for this function:

void ConformalMesher::set_face_pointers (  )  [private]

Definition at line 467 of file conformalmesher.C.

References collect_faces(), and face_points.

Referenced by mesh().

Here is the call graph for this function:

void ConformalMesher::excavate_holes (  )  [private]

Definition at line 495 of file conformalmesher.C.

References bezier, BezierMesh::check_consistency(), collect_faces(), BezierMesh::delete_edge(), BezierMesh::delete_face(), BezierMesh::delete_vertex(), CellTuple< Vertex, Edge, Face >::e, CellComplex< Vertex, Edge, Face, Tuple >::get_tuple(), remove_points, CellComplex< Vertex, Edge, Face, Tuple >::Switch(), and CellTuple< Vertex, Edge, Face >::v.

Referenced by mesh().

Here is the call graph for this function:

void ConformalMesher::link_edge ( Subspline *   )  [private]

Definition at line 674 of file conformalmesher.C.

References in_stack, incident_edges, spline_stack, and subsplines.

Referenced by create_subsplines().

void ConformalMesher::unlink_edge ( Subspline *  s  )  [private]

Definition at line 687 of file conformalmesher.C.

References in_stack, incident_edges, is_encroached, and subsplines.

bool ConformalMesher::segment_appears ( Subspline *   )  [private]

Definition at line 578 of file conformalmesher.C.

References angle_is_positive(), bezier, CellTuple< Vertex, Edge, Face >::e, CellComplex< Vertex, Edge, Face, Tuple >::find_common_edge(), CellComplex< Vertex, Edge, Face, Tuple >::get_tuple(), CellComplex< Vertex, Edge, Face, Tuple >::Switch(), and CellTuple< Vertex, Edge, Face >::v.

Referenced by conform().

Here is the call graph for this function:

bool ConformalMesher::angle_is_positive ( Subspline *  ,
BezierVertex ,
BezierEdge  
) [private]

Definition at line 635 of file conformalmesher.C.

References bezier, BezierVertex::get_cp(), CellComplex< Vertex, Edge, Face, Tuple >::get_opposite_vertex(), and Point2D::line_side_test().

Referenced by segment_appears().

Here is the call graph for this function:

BezierVertex* ConformalMesher::split_destroy_segment ( Subspline *  ,
std::vector< Subspline * > &   
) [private]

Referenced by conform().

void ConformalMesher::collect_faces ( Point2D  ,
hashers::hash_set< BezierTriangle * > &   
) [private]

Referenced by excavate_holes(), and set_face_pointers().

void ConformalMesher::set_face_pointer ( BoundaryFace face  )  [private]

void ConformalMesher::remove_hole ( Point2D   )  [private]

void ConformalMesher::add_face_point ( BoundaryFace f,
Point2D  p 
) [inline]

Definition at line 77 of file conformalmesher.h.

References face_points.

void ConformalMesher::add_hole ( Point2D  p  )  [inline]

Definition at line 80 of file conformalmesher.h.

References remove_points.

Referenced by MeshConstructor::add_remove_point().

void ConformalMesher::mesh (  ) 

Fill in the (assumed empty) bezier mesh with a conformal mesh based on the boundary mesh.

Definition at line 164 of file conformalmesher.C.

References bdry, bezier, conform(), create_bbox(), create_subsplines(), excavate_holes(), CellComplex< Vertex, Edge, Face, Tuple >::get_num_faces(), insert_d0_vertices(), CellComplex< Vertex, Edge, Face, Tuple >::print_statistics(), reticulate_splines(), set_face_pointers(), and BezierMesh::set_linear_flips().

Referenced by MeshConstructor::mesh().

Here is the call graph for this function:


Member Data Documentation

BezierMesh* ConformalMesher::bezier [private]

Definition at line 35 of file conformalmesher.h.

Referenced by angle_is_positive(), conform(), ConformalMesher(), create_bbox(), create_subsplines(), excavate_holes(), insert_d0_vertices(), mesh(), reticulate_splines(), and segment_appears().

BoundaryMesh* ConformalMesher::bdry [private]

Definition at line 36 of file conformalmesher.h.

Referenced by ConformalMesher(), create_bbox(), create_subsplines(), insert_d0_vertices(), mesh(), and reticulate_splines().

std::list<Subspline*> ConformalMesher::subsplines [private]

Definition at line 39 of file conformalmesher.h.

Referenced by link_edge(), unlink_edge(), and ~ConformalMesher().

std::vector<Subspline*> ConformalMesher::spline_stack [private]

Definition at line 43 of file conformalmesher.h.

Referenced by conform(), and link_edge().

hashers::hash_set<Subspline*, CastHash<Subspline*> > ConformalMesher::is_encroached [private]

Definition at line 44 of file conformalmesher.h.

Referenced by conform(), and unlink_edge().

hashers::hash_set<Subspline*, CastHash<Subspline*> > ConformalMesher::in_stack [private]

Definition at line 45 of file conformalmesher.h.

Referenced by conform(), link_edge(), and unlink_edge().

hashers::hash_map<BezierVertex*, std::vector<Subspline*> > ConformalMesher::incident_edges [private]

Definition at line 47 of file conformalmesher.h.

Referenced by conform(), link_edge(), and unlink_edge().

std::vector<Point2D> ConformalMesher::remove_points [private]

Definition at line 49 of file conformalmesher.h.

Referenced by add_hole(), create_bbox(), and excavate_holes().

std::vector<std::pair<BoundaryFace*,Point2D> > ConformalMesher::face_points [private]

Definition at line 50 of file conformalmesher.h.

Referenced by add_face_point(), and set_face_pointers().


The documentation for this class was generated from the following files:
Generated on Mon May 24 09:53:33 2010 for TUMBLE by  doxygen 1.5.2