////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// More...
#include <triangle_mesh.template.h>
Public Member Functions | |
SolidTriangleMesh (TriangleMeshParameters &triangle_mesh_parameters, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper) | |
Build mesh, based on closed curve that specifies the outer boundary of the domain and any number of internal clsed curves. Specify target area for uniform element size. More... | |
SolidTriangleMesh (const std::string &node_file_name, const std::string &element_file_name, const std::string &poly_file_name, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper, const bool &allow_automatic_creation_of_vertices_on_boundaries=true) | |
virtual | ~SolidTriangleMesh () |
Empty Destructor. More... | |
Public Member Functions inherited from oomph::TriangleMesh< ELEMENT > | |
TriangleMesh () | |
Empty constructor. More... | |
TriangleMesh (const std::string &node_file_name, const std::string &element_file_name, const std::string &poly_file_name, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper, const bool &allow_automatic_creation_of_vertices_on_boundaries=true) | |
Constructor with the input files. More... | |
TriangleMesh (TriangleMeshParameters &triangle_mesh_parameters, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper) | |
Build mesh, based on the specifications on TriangleMeshParameters. More... | |
TriangleMesh (const std::string &poly_file_name, const double &element_area, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper, const bool &allow_automatic_creation_of_vertices_on_boundaries=true) | |
Build mesh from poly file, with specified target area for all elements. More... | |
TriangleMesh (const TriangleMesh &dummy)=delete | |
Broken copy constructor. More... | |
void | operator= (const TriangleMesh &)=delete |
Broken assignment operator. More... | |
virtual | ~TriangleMesh () |
Destructor. More... | |
void | set_mesh_level_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data) |
Overload set_mesh_level_time_stepper so that the stored time stepper now corresponds to the new timestepper. More... | |
void | compute_boundary_segments_connectivity_and_initial_zeta_values (const unsigned &b) |
Compute the boundary segments connectivity for those boundaries that were splited during the distribution process. More... | |
void | re_assign_initial_zeta_values_for_internal_boundary (const unsigned &b, Vector< std::list< FiniteElement * >> &old_segment_sorted_ele_pt, std::map< FiniteElement *, bool > &old_is_inverted) |
Re-assign the boundary segments initial zeta (arclength) value for those internal boundaries that were splited during the distribution process. Those boundaries that have one face element at each side of the boundary. More... | |
void | re_scale_re_assigned_initial_zeta_values_for_internal_boundary (const unsigned &b) |
Re-scale the re-assigned zeta values for the boundary nodes, apply only for internal boundaries. More... | |
void | identify_boundary_segments_and_assign_initial_zeta_values (const unsigned &b, Vector< FiniteElement * > &input_face_ele_pt, const bool &is_internal_boundary, std::map< FiniteElement *, FiniteElement * > &face_to_bulk_element_pt) |
Identify the segments from the old mesh (original mesh) in the new mesh (this) and assign initial and final boundary coordinates for the segments that create the boundary. (This is the version called from the original mesh to identify its own segments) More... | |
void | identify_boundary_segments_and_assign_initial_zeta_values (const unsigned &b, TriangleMesh< ELEMENT > *original_mesh_pt) |
Identify the segments from the old mesh (original mesh) in the new mesh (this) and assign initial and final boundary coordinates for the segments that create the boundary. More... | |
void | synchronize_boundary_coordinates (const unsigned &b) |
In charge of sinchronize the boundary coordinates for internal boundaries that were split as part of the distribution process. Called after setup_boundary_coordinates() for the original mesh only. More... | |
void | select_boundary_face_elements (Vector< FiniteElement * > &face_el_pt, const unsigned &b, bool &is_internal_boundary, std::map< FiniteElement *, FiniteElement * > &face_to_bulk_element_pt) |
Select face element from boundary using the criteria to decide which of the two face elements should be used on internal boundaries. More... | |
Vector< Vector< Node * > > & | boundary_segment_node_pt (const unsigned &b) |
Return direct access to nodes associated with a boundary but sorted in segments. More... | |
Vector< Node * > & | boundary_segment_node_pt (const unsigned &b, const unsigned &s) |
Return direct access to nodes associated with a segment of a given boundary. More... | |
Node *& | boundary_segment_node_pt (const unsigned &b, const unsigned &s, const unsigned &n) |
Return pointer to node n on boundary b. More... | |
void | update_triangulateio (Vector< Vector< double >> &internal_point) |
Update the TriangulateIO object to the current nodal position and the centre hole coordinates. More... | |
void | update_triangulateio () |
Update the triangulateio object to the current nodal positions. More... | |
void | dump_distributed_info_for_restart (std::ostream &dump_file) |
Used to dump info. related with distributed triangle meshes. More... | |
const unsigned | read_unsigned_line_helper (std::istream &read_file) |
void | read_distributed_info_for_restart (std::istream &restart_file) |
Used to read info. related with distributed triangle meshes. More... | |
virtual void | reestablish_distribution_info_for_restart (OomphCommunicator *comm_pt, std::istream &restart_file) |
Virtual function used to re-establish any additional info. related with the distribution after a re-starting for triangle meshes. More... | |
void | remesh_from_internal_triangulateio () |
Completely regenerate the mesh from the trianglateio structure. More... | |
bool | triangulateio_exists () |
Boolean defining if Triangulateio object has been built or not. More... | |
Vector< unsigned > | oomph_vertex_nodes_id () |
Return the vector that contains the oomph-lib node number for all vertex nodes in the TriangulateIO representation of the mesh. More... | |
const unsigned | initial_shared_boundary_id () |
The initial boundary id for shared boundaries. More... | |
const unsigned | final_shared_boundary_id () |
The final boundary id for shared boundaries. More... | |
virtual void | load_balance (const Vector< unsigned > &target_domain_for_local_non_halo_element) |
Virtual function to perform the load balance routines. More... | |
virtual void | reset_boundary_element_info (Vector< unsigned > &ntmp_boundary_elements, Vector< Vector< unsigned >> &ntmp_boundary_elements_in_region, Vector< FiniteElement * > &deleted_elements) |
Virtual function to perform the reset boundary elements info routines. Generally used after load balance. More... | |
void | output_boundary_coordinates (const unsigned &b, std::ostream &outfile) |
Output the nodes on the boundary and their respective boundary coordinates(into separate tecplot zones) More... | |
Additional Inherited Members | |
Public Attributes inherited from oomph::TriangleMesh< ELEMENT > | |
TimeStepper * | Time_stepper_pt |
Timestepper used to build elements. More... | |
bool | Use_attributes |
Boolean flag to indicate whether to use attributes or not (required for multidomain meshes) More... | |
Protected Member Functions inherited from oomph::TriangleMesh< ELEMENT > | |
void | build_from_scaffold (TimeStepper *time_stepper_pt, const bool &use_attributes) |
Build mesh from scaffold. More... | |
void | build_triangulateio (const std::string &poly_file_name, TriangulateIO &triangulate_io, bool &use_attributes) |
Helper function to create TriangulateIO object (return in triangulate_io) from the .poly file. More... | |
void | generic_constructor (Vector< TriangleMeshPolygon * > &outer_boundary_pt, Vector< TriangleMeshPolygon * > &internal_polygon_pt, Vector< TriangleMeshOpenCurve * > &open_polylines_pt, const double &element_area, Vector< Vector< double >> &extra_holes_coordinates, std::map< unsigned, Vector< double >> ®ions_coordinates, std::map< unsigned, double > ®ions_areas, TimeStepper *time_stepper_pt, const bool &use_attributes, const bool &refine_boundary, const bool &refine_internal_boundary) |
A general-purpose construction function that builds the mesh once the different specific constructors have assembled the appropriate information. More... | |
void | shared_boundaries_in_this_processor (Vector< unsigned > &shared_boundaries_in_this_processor) |
Get the shared boundaries ids living in the current processor. More... | |
const unsigned | nshared_boundaries (const unsigned &p, const unsigned &q) const |
Access functions to boundaries shared with processors. More... | |
Vector< Vector< Vector< unsigned > > > | shared_boundaries_ids () const |
Vector< Vector< Vector< unsigned > > > & | shared_boundaries_ids () |
Vector< Vector< unsigned > > | shared_boundaries_ids (const unsigned &p) const |
Vector< Vector< unsigned > > & | shared_boundaries_ids (const unsigned &p) |
Vector< unsigned > | shared_boundaries_ids (const unsigned &p, const unsigned &q) const |
Vector< unsigned > & | shared_boundaries_ids (const unsigned &p, const unsigned &q) |
const unsigned | shared_boundaries_ids (const unsigned &p, const unsigned &q, const unsigned &i) const |
const unsigned | nshared_boundary_curves (const unsigned &p) const |
const unsigned | nshared_boundary_polyline (const unsigned &p, const unsigned &c) const |
Vector< TriangleMeshPolyLine * > & | shared_boundary_polyline_pt (const unsigned &p, const unsigned &c) |
TriangleMeshPolyLine * | shared_boundary_polyline_pt (const unsigned &p, const unsigned &c, const unsigned &i) const |
const unsigned | nshared_boundaries () const |
const unsigned | nshared_boundary_element (const unsigned &b) |
void | flush_shared_boundary_element () |
void | flush_shared_boundary_element (const unsigned &b) |
void | add_shared_boundary_element (const unsigned &b, FiniteElement *ele_pt) |
FiniteElement * | shared_boundary_element_pt (const unsigned &b, const unsigned &e) |
void | flush_face_index_at_shared_boundary () |
void | add_face_index_at_shared_boundary (const unsigned &b, const unsigned &i) |
int | face_index_at_shared_boundary (const unsigned &b, const unsigned &e) |
const unsigned | nshared_boundary_node (const unsigned &b) |
void | flush_shared_boundary_node () |
Flush ALL the shared boundary nodes. More... | |
void | flush_shared_boundary_node (const unsigned &b) |
Flush the boundary nodes associated to the shared boundary b. More... | |
void | add_shared_boundary_node (const unsigned &b, Node *node_pt) |
Add the node the shared boundary. More... | |
Node * | shared_boundary_node_pt (const unsigned &b, const unsigned &n) |
bool | is_node_on_shared_boundary (const unsigned &b, Node *const &node_pt) |
Is the node on the shared boundary. More... | |
std::map< unsigned, Vector< unsigned > > & | shared_boundary_from_processors () |
Return the association of the shared boundaries with the processors. More... | |
Vector< unsigned > & | shared_boundary_from_processors (const unsigned &b) |
const unsigned | nshared_boundary_overlaps_internal_boundary () |
Get the number of shared boundaries overlaping internal boundaries. More... | |
const bool | shared_boundary_overlaps_internal_boundary (const unsigned &shd_bnd_id) |
Checks if the shared boundary overlaps an internal boundary. More... | |
const unsigned | shared_boundary_overlapping_internal_boundary (const unsigned &shd_bnd_id) |
Gets the boundary id of the internal boundary that the shared boundary lies on. More... | |
void | get_shared_boundaries_overlapping_internal_boundary (const unsigned &internal_bnd_id, Vector< unsigned > &shd_bnd_ids) |
Gets the shared boundaries ids that overlap the given internal boundary. More... | |
std::map< unsigned, unsigned > & | shared_boundary_overlaps_internal_boundary () |
Gets the storage that indicates if a shared boundary is part of an internal boundary. More... | |
const bool | boundary_was_splitted (const unsigned &b) |
Helper function to verify if a given boundary was splitted in the distribution process. More... | |
const unsigned | nboundary_subpolylines (const unsigned &b) |
Gets the number of subpolylines that create the boundarya (useful only when the boundary is marked as split) More... | |
Vector< TriangleMeshPolyLine * > & | boundary_subpolylines (const unsigned &b) |
Gets the vector of auxiliar polylines that will represent the given boundary (useful only when the boundaries were split) More... | |
const bool | boundary_marked_as_shared_boundary (const unsigned &b, const unsigned &isub) |
Returns the value that indicates if a subpolyline of a given boundary continues been used as internal boundary or should be changed as shared boundary. More... | |
void | flush_shared_boundary_polyline_pt () |
void | create_distributed_domain_representation (Vector< TriangleMeshPolygon * > &polygons_pt, Vector< TriangleMeshOpenCurve * > &open_curves_pt) |
Creates the distributed domain representation. Joins the original boundaires, shared boundaries and creates connections among them to create the new polygons that represent the distributed domain. More... | |
void | sort_polylines_helper (Vector< TriangleMeshPolyLine * > &unsorted_polylines_pt, Vector< Vector< TriangleMeshPolyLine * >> &sorted_polylines_pt) |
Sorts the polylines so they be continuous and then we can create a closed or open curve from them. More... | |
void | create_tmp_polygons_helper (Vector< Vector< TriangleMeshPolyLine * >> &polylines_pt, Vector< TriangleMeshPolygon * > &polygons_pt) |
Take the polylines from the shared boundaries and create temporary polygon representations of the domain. More... | |
void | create_tmp_open_curves_helper (Vector< Vector< TriangleMeshPolyLine * >> &sorted_open_curves_pt, Vector< TriangleMeshPolyLine * > &unsorted_shared_to_internal_poly_pt, Vector< TriangleMeshOpenCurve * > &open_curves_pt) |
Take the polylines from the original open curves and created new temporaly representations of open curves with the bits of original curves not overlapped by shared boundaries. More... | |
void | compute_holes_left_by_halo_elements_helper (Vector< Vector< double >> &output_holes_coordinates) |
Compute the holes left by the halo elements, those adjacent to the shared boundaries. More... | |
void | update_holes_information_helper (Vector< TriangleMeshPolygon * > &polygons_pt, Vector< Vector< double >> &output_holes_coordinates) |
Keeps those vertices that define a hole, those that are inside closed internal boundaries in the new polygons that define the domain. Delete those outside/inside the outer polygons (this is required since Triangle can not deal with vertices that define holes outside the new outer polygons of the domain) More... | |
const int | check_connections_of_polyline_nodes (std::set< FiniteElement * > &element_in_processor_pt, const int &root_edge_bnd_id, std::map< std::pair< Node *, Node * >, bool > &overlapped_face, std::map< unsigned, std::map< Node *, bool >> &node_on_bnd_not_overlapped_by_shd_bnd, std::list< Node * > ¤t_polyline_nodes, std::map< unsigned, std::list< Node * >> &shared_bnd_id_to_sorted_list_node_pt, const unsigned &node_degree, Node *&new_node_pt, const bool called_from_load_balance=false) |
Check for any possible connections that the array of sorted nodes have with any previous boundaries or with itself. Return -1 if no connection was found, return -2 if the connection is with the same polyline, return the boundary id of the boundary to which the connection is performed. More... | |
void | create_shared_polylines_connections () |
Establish the connections of the polylines previously marked as having connections. This connections were marked in the function TriangleMesh::create_polylines_from_halo_elements_helper(). More... | |
void | create_shared_boundaries (OomphCommunicator *comm_pt, const Vector< unsigned > &element_domain, const Vector< GeneralisedElement * > &backed_up_el_pt, const Vector< FiniteElement * > &backed_up_f_el_pt, std::map< Data *, std::set< unsigned >> &processors_associated_with_data, const bool &overrule_keep_as_halo_element_status) |
Creates the shared boundaries. More... | |
void | get_halo_elements_on_all_procs (const unsigned &nproc, const Vector< unsigned > &element_domain, const Vector< GeneralisedElement * > &backed_up_el_pt, std::map< Data *, std::set< unsigned >> &processors_associated_with_data, const bool &overrule_keep_as_halo_element_status, std::map< GeneralisedElement *, unsigned > &element_to_global_index, Vector< Vector< Vector< GeneralisedElement * >>> &output_halo_elements_pt) |
Creates the halo elements on all processors Gets the halo elements on all processors, these elements are then used on the function that computes the shared boundaries among the processors. More... | |
void | get_element_edges_on_boundary (std::map< std::pair< Node *, Node * >, unsigned > &element_edges_on_boundary) |
Get the element edges (pair of nodes, edges) that lie on a boundary (used to mark shared boundaries that lie on internal boundaries) More... | |
void | create_polylines_from_halo_elements_helper (const Vector< unsigned > &element_domain, std::map< GeneralisedElement *, unsigned > &element_to_global_index, std::set< FiniteElement * > &element_in_processor_pt, Vector< Vector< Vector< GeneralisedElement * >>> &input_halo_elements, std::map< std::pair< Node *, Node * >, unsigned > &elements_edges_on_boundary, Vector< Vector< Vector< TriangleMeshPolyLine * >>> &output_polylines_pt) |
Creates polylines from the intersection of halo elements on all processors. The new polylines define the shared boundaries in the domain This get the polylines on ALL processors, that is why the three dimensions output_polylines_pt[iproc][ncurve][npolyline]. More... | |
void | break_loops_on_shared_polyline_helper (const unsigned &initial_shd_bnd_id, std::list< Node * > &input_nodes, Vector< FiniteElement * > &input_boundary_element_pt, Vector< int > &input_face_index_element, const int &input_connect_to_the_left, const int &input_connect_to_the_right, Vector< std::list< Node * >> &output_sorted_nodes_pt, Vector< Vector< FiniteElement * >> &output_boundary_element_pt, Vector< Vector< int >> &output_face_index_element, Vector< int > &output_connect_to_the_left, Vector< int > &output_connect_to_the_right) |
Break any possible loop created by the sorted list of nodes that is used to create a new shared polyline. More... | |
void | break_loops_on_shared_polyline_load_balance_helper (const unsigned &initial_shd_bnd_id, std::list< Node * > &input_nodes, Vector< FiniteElement * > &input_boundary_element_pt, Vector< FiniteElement * > &input_boundary_face_element_pt, Vector< int > &input_face_index_element, const int &input_connect_to_the_left, const int &input_connect_to_the_right, Vector< std::list< Node * >> &output_sorted_nodes_pt, Vector< Vector< FiniteElement * >> &output_boundary_element_pt, Vector< Vector< FiniteElement * >> &output_boundary_face_element_pt, Vector< Vector< int >> &output_face_index_element, Vector< int > &output_connect_to_the_left, Vector< int > &output_connect_to_the_right) |
Break any possible loop created by the sorted list of nodes that is used to create a new shared polyline (modified version for load balance) More... | |
void | create_shared_polyline (const unsigned &my_rank, const unsigned &shd_bnd_id, const unsigned &iproc, const unsigned &jproc, std::list< Node * > &sorted_nodes, const int &root_edge_bnd_id, Vector< FiniteElement * > &bulk_bnd_ele_pt, Vector< int > &face_index_ele, Vector< Vector< TriangleMeshPolyLine * >> &unsorted_polylines_pt, const int &connect_to_the_left_flag, const int &connect_to_the_right_flag) |
Create the shared polyline and fill the data structured that keep all the information associated with the creationg of the shared boundary. More... | |
Protected Attributes inherited from oomph::TriangleMesh< ELEMENT > | |
std::map< unsigned, double > | Regions_areas |
Target areas for regions; defaults to 0.0 which (luckily) implies "no specific target area" for triangle! More... | |
bool | Triangulateio_exists |
Boolean defining if Triangulateio object has been built or not. More... | |
TriangleScaffoldMesh * | Tmp_mesh_pt |
Temporary scaffold mesh. More... | |
Vector< unsigned > | Oomph_vertex_nodes_id |
Vector storing oomph-lib node number for all vertex nodes in the TriangulateIO representation of the mesh. More... | |
unsigned | Initial_shared_boundary_id |
The initial boundary id for shared boundaries. More... | |
unsigned | Final_shared_boundary_id |
The final boundary id for shared boundaries. More... | |
Vector< Vector< Vector< unsigned > > > | Shared_boundaries_ids |
Stores the boundaries ids created by the interaction of two processors Shared_boundaries_ids[iproc][jproc] = Vector of shared boundaries ids "iproc" processor shares boundaries with "jproc" processor. More... | |
std::map< unsigned, Vector< unsigned > > | Shared_boundary_from_processors |
Stores the processors involved in the generation of a shared boundary, in 2D two processors give rise to the creation of a shared boundary. More... | |
std::map< unsigned, unsigned > | Shared_boundary_overlaps_internal_boundary |
Stores information about those shared boundaries that lie over or over a segment of an internal boundary (only used when using internal boundaries in the domain) More... | |
Vector< Vector< Vector< TriangleMeshPolyLine * > > > | Shared_boundary_polyline_pt |
Stores the polyline representation of the shared boundaries Shared_boundary_polyline_pt[iproc][ncurve][npolyline] = polyline_pt. More... | |
std::map< unsigned, Vector< FiniteElement * > > | Shared_boundary_element_pt |
Stores the boundary elements adjacent to the shared boundaries, these elements are a subset of the halo and haloed elements. More... | |
std::map< unsigned, Vector< int > > | Face_index_at_shared_boundary |
For the e-th finite element on shared boundary b, this is the index of the face that lies along that boundary. More... | |
std::map< unsigned, Vector< Node * > > | Shared_boundary_node_pt |
Stores the boundary nodes adjacent to the shared boundaries, these nodes are a subset of the halo and haloed nodes. More... | |
std::map< unsigned, bool > | Boundary_was_splitted |
Flag to indicate if a polyline has been splitted during the distribution process, the boundary id of the polyline is used to indicate if spplited. More... | |
std::map< unsigned, Vector< TriangleMeshPolyLine * > > | Boundary_subpolylines |
The polylines that will temporary represent the boundary that was splitted in the distribution process. Used to ease the sending of info. to Triangle during the adaptation process. More... | |
std::map< unsigned, std::vector< bool > > | Boundary_marked_as_shared_boundary |
Flag to indicate if an internal boundary will be used as shared boundary because there is overlapping of the internal boundary with the shared boundary. More... | |
bool | First_time_compute_holes_left_by_halo_elements |
Flag to know if it is the first time we are going to compute the holes left by the halo elements. More... | |
Vector< Vector< double > > | Original_extra_holes_coordinates |
Backup the original extra holes coordinates. More... | |
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
Unstructured Triangle Mesh upgraded to solid mesh
Definition at line 3894 of file triangle_mesh.template.h.
|
inline |
Build mesh, based on closed curve that specifies the outer boundary of the domain and any number of internal clsed curves. Specify target area for uniform element size.
Definition at line 3903 of file triangle_mesh.template.h.
|
inline |
Definition at line 3913 of file triangle_mesh.template.h.
|
inlinevirtual |
Empty Destructor.
Definition at line 3931 of file triangle_mesh.template.h.