#include </usr1/tp517/Tumble/trunk/src/tumble/conformalmesher.h>
Collaboration diagram for ConformalMesher:
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 *) |
BezierVertex * | split_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 | |
BezierMesh * | bezier |
BoundaryMesh * | bdry |
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< Point2D > | remove_points |
std::vector< std::pair< BoundaryFace *, Point2D > > | face_points |
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.
Definition at line 32 of file conformalmesher.h.
ConformalMesher::ConformalMesher | ( | BezierMesh * | , | |
BoundaryMesh * | ||||
) |
ConformalMesher::~ConformalMesher | ( | ) |
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] |
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:
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] |
hashers::hash_set<Subspline*, CastHash<Subspline*> > ConformalMesher::is_encroached [private] |
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().