///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// More...
#include <triangle_mesh.template.h>
Public Member Functions | |
RefineableSolidTriangleMesh (TriangleMeshParameters &triangle_mesh_parameters, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper) | |
Build mesh, based on the specifications on TriangleMeshParameter. More... | |
RefineableSolidTriangleMesh (const Vector< double > &target_area, TriangulateIO &triangulate_io, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper, const bool &use_attributes=false, const bool &allow_automatic_creation_of_vertices_on_boundaries=true, OomphCommunicator *comm_pt=0) | |
Build mesh from specified triangulation and associated target areas for elements in it. More... | |
virtual | ~RefineableSolidTriangleMesh () |
Empty Destructor. More... | |
Public Member Functions inherited from oomph::RefineableTriangleMesh< ELEMENT > | |
RefineableTriangleMesh (TriangleMeshParameters &triangle_mesh_parameters, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper) | |
Build mesh, based on the specifications on TriangleMeshParameters. More... | |
RefineableTriangleMesh (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) | |
Build mesh, based on the polyfiles. More... | |
virtual | ~RefineableTriangleMesh () |
Empty Destructor. More... | |
void | enable_timings_tranfering_target_areas () |
Enables info. and timings for tranferring of target areas. More... | |
void | disable_timings_tranfering_target_areas () |
Disables info. and timings for tranferring of target areas. More... | |
void | enable_projection () |
Enables the solution projection step during adaptation. More... | |
void | disable_projection () |
Disables the solution projection step during adaptation. More... | |
void | enable_timings_projection () |
Enables info. and timings for projection. More... | |
void | disable_timings_projection () |
Disables info. and timings for projection. More... | |
unsigned & | nbin_x_for_area_transfer () |
Read/write access to number of bins in the x-direction when transferring target areas by bin method. Only used if we don't have CGAL! More... | |
unsigned & | nbin_y_for_area_transfer () |
Read/write access to number of bins in the y-direction when transferring target areas by bin method. Only used if we don't have CGAL! More... | |
unsigned | max_sample_points_for_limited_locate_zeta_during_target_area_transfer () |
Read/write access to number of sample points from which we try to locate zeta by Newton method when transferring target areas using cgal-based sample point container. If Newton method doesn't converge from any of these we use the nearest sample point. More... | |
double & | max_element_size () |
Max element size allowed during adaptation. More... | |
double & | min_element_size () |
Min element size allowed during adaptation. More... | |
double & | min_permitted_angle () |
Min angle before remesh gets triggered. More... | |
bool | use_iterative_solver_for_projection () |
void | enable_iterative_solver_for_projection () |
Enables the use of an iterative solver for the projection problem. More... | |
void | disable_iterative_solver_for_projection () |
Enables the use of an iterative solver for the projection problem. More... | |
void | enable_print_timings_adaptation (const unsigned &print_level=1) |
Enables printing of timings for adaptation. More... | |
void | disable_print_timings_adaptation () |
Disables printing of timings for adaptation. More... | |
void | set_print_level_timings_adaptation (const unsigned &print_level) |
Sets the printing level of timings for adaptation. More... | |
void | enable_print_timings_load_balance (const unsigned &print_level=1) |
Enables printing of timings for load balance. More... | |
void | disable_print_timings_load_balance () |
Disables printing of timings for load balance. More... | |
void | set_print_level_timings_load_balance (const unsigned &print_level) |
Sets the printing level of timings for load balance. More... | |
void | doc_adaptivity_targets (std::ostream &outfile) |
Doc the targets for mesh adaptation. More... | |
void | refine_uniformly (DocInfo &doc_info) |
Refine mesh uniformly and doc process. More... | |
unsigned | unrefine_uniformly () |
Unrefine mesh uniformly: Return 0 for success, 1 for failure (if unrefinement has reached the coarsest permitted level) More... | |
void | adapt (const Vector< double > &elem_error) |
Adapt mesh, based on elemental error provided. More... | |
MeshUpdateFctPt & | mesh_update_fct_pt () |
Access to function pointer to function that updates the mesh following the snapping of boundary nodes to the boundaries (e.g. to move boundary nodes very slightly to satisfy volume constraints) More... | |
InternalHolePointUpdateFctPt & | internal_hole_point_update_fct_pt () |
Access to function pointer to can be used to generate the internal point for the ihole-th hole. More... | |
unsigned | nsorted_shared_boundary_node (unsigned &b) |
void | flush_sorted_shared_boundary_node () |
Node * | sorted_shared_boundary_node_pt (unsigned &b, unsigned &i) |
Vector< Node * > | sorted_shared_boundary_node_pt (unsigned &b) |
void | create_polylines_from_polyfiles (const std::string &node_file_name, const std::string &poly_file_name) |
Helper function to create polylines and fill associate data. More... | |
void | fill_boundary_elements_and_nodes_for_internal_boundaries () |
void | fill_boundary_elements_and_nodes_for_internal_boundaries (std::ofstream &outfile) |
void | reestablish_distribution_info_for_restart (OomphCommunicator *comm_pt, std::istream &restart_file) |
Used to re-establish any additional info. related with the distribution after a re-starting for triangle meshes. More... | |
void | update_polyline_representation_from_restart () |
Method used to update the polylines representation after restart. More... | |
void | load_balance (const Vector< unsigned > &input_target_domain_for_local_non_halo_element) |
Performs the load balancing for unstructured meshes, the load balancing strategy is based on mesh migration. More... | |
void | get_shared_boundary_elements_and_face_indexes (const Vector< FiniteElement * > &first_element_pt, const Vector< FiniteElement * > &second_element_pt, Vector< FiniteElement * > &first_shared_boundary_element_pt, Vector< unsigned > &first_shared_boundary_element_face_index, Vector< FiniteElement * > &second_shared_boundary_element_pt, Vector< unsigned > &second_shared_boundary_element_face_index) |
Use the first and second group of elements to find the intersection between them to get the shared boundary elements from the first and second group. More... | |
void | create_new_shared_boundaries (std::set< FiniteElement * > &element_in_processor_pt, Vector< Vector< FiniteElement * >> &new_shared_boundary_element_pt, Vector< Vector< unsigned >> &new_shared_boundary_element_face_index) |
Creates the new shared boundaries, this method is also in charge of computing the shared boundaries ids of each processor and send that info. to all the processors. More... | |
void | compute_shared_node_degree_helper (Vector< Vector< FiniteElement * >> &unsorted_face_ele_pt, std::map< Node *, unsigned > &global_node_degree) |
Computes the degree of the nodes on the shared boundaries, the degree of the node is computed from the global graph created by the shared boundaries of all processors. More... | |
void | create_adjacency_matrix_new_shared_edges_helper (Vector< Vector< FiniteElement * >> &unsorted_face_ele_pt, Vector< Vector< Node * >> &tmp_sorted_shared_node_pt, std::map< Node *, Vector< Vector< unsigned >>> &node_alias, Vector< Vector< Vector< unsigned >>> &adjacency_matrix) |
Sort the nodes on the new shared boundaries (after load balancing), computes the alias of the nodes and creates the adjacency matrix that represent the graph created by the shared edges between each pair of processors. More... | |
void | get_shared_boundary_segment_nodes_helper (const unsigned &shd_bnd_id, Vector< Vector< Node * >> &tmp_segment_nodes) |
Get the nodes on the shared boundary (b), these are stored in the segment they belong. More... | |
void | get_boundary_segment_nodes_helper (const unsigned &b, Vector< Vector< Node * >> &tmp_segment_nodes) |
Get the nodes on the boundary (b), these are stored in the segment they belong (also used by the load balance method to re-set the number of segments per boundary after load balance has taken place) More... | |
void | enable_boundary_unrefinement_constrained_by_target_areas () |
Enable/disable unrefinement/refinement methods for original boundaries. More... | |
void | disable_boundary_unrefinement_constrained_by_target_areas () |
void | enable_boundary_refinement_constrained_by_target_areas () |
void | disable_boundary_refinement_constrained_by_target_areas () |
void | enable_shared_boundary_unrefinement_constrained_by_target_areas () |
Enable/disable unrefinement/refinement methods for shared boundaries. More... | |
void | disable_shared_boundary_unrefinement_constrained_by_target_areas () |
void | enable_shared_boundary_refinement_constrained_by_target_areas () |
void | disable_shared_boundary_refinement_constrained_by_target_areas () |
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... | |
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 | 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 Types inherited from oomph::RefineableTriangleMesh< ELEMENT > | |
typedef void(* | MeshUpdateFctPt) (Mesh *mesh_pt) |
Function pointer to function that updates the mesh following the snapping of boundary nodes to the boundaries (e.g. to move boundary nodes very slightly to satisfy volume constraints) More... | |
typedef void(* | InternalHolePointUpdateFctPt) (const unsigned &ihole, TriangleMeshPolygon *poly_pt) |
Function pointer to a function that can generate a point within the ihole-th hole, so that this can be overloaded by the user if they have a better way of doing it than our clunky default. The function should update the components of the Vector poly_pt->internal_point() More... | |
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::RefineableTriangleMesh< ELEMENT > | |
RefineableTriangleMesh (const Vector< double > &target_area, TriangulateIO &triangulate_io, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper, const bool &use_attributes=false, const bool &allow_automatic_creation_of_vertices_on_boundaries=true, OomphCommunicator *comm_pt=0) | |
Build mesh from specified triangulation and associated target areas for elements in it NOTE: This is used ONLY during adaptation and should not be used as a method of constructing a TriangleMesh object in demo drivers! More... | |
const bool | boundary_connections (const unsigned &b, const unsigned &c, std::set< Vector< double >> &vertices) |
Verifies if the given boundary receives a connection, and if that is the case then returns the list of vertices that receive the connections. More... | |
const void | synchronize_shared_boundary_connections () |
Synchronise the vertices that are marked for non deletion. More... | |
void | add_vertices_for_non_deletion () |
Mark the vertices that are not allowed for deletion by the unrefienment/refinement polyline methods. In charge of filling the Boundary_chunk_connections_pt structure. More... | |
void | add_non_delete_vertices_from_boundary_helper (Vector< Vector< Node * >> src_bound_segment_node_pt, Vector< Vector< Node * >> dst_bound_segment_node_pt, const unsigned &dst_bnd_id, const unsigned &dst_bnd_chunk) |
Adds the vertices from the sources boundary that are repeated in the destination boundary to the list of non delete-able vertices in the destination boundary. More... | |
void | create_temporary_boundary_connections (Vector< TriangleMeshPolygon * > &tmp_outer_polygons_pt, Vector< TriangleMeshOpenCurve * > &tmp_open_curves_pt) |
After unrefinement and refinement has taken place compute the new vertices numbers of the temporary representation of the. More... | |
void | restore_boundary_connections (Vector< TriangleMeshPolyLine * > &resume_initial_connection_polyline_pt, Vector< TriangleMeshPolyLine * > &resume_final_connection_polyline_pt) |
After unrefinement and refinement has taken place compute the new vertices numbers of the boundaries to connect (in a distributed scheme it may be possible that the destination boundary does no longer exist, therefore the connection is suspended and resumed after the adaptation processor. More... | |
void | restore_polyline_connections_helper (TriangleMeshPolyLine *polyline_pt, Vector< TriangleMeshPolyLine * > &resume_initial_connection_polyline_pt, Vector< TriangleMeshPolyLine * > &resume_final_connection_polyline_pt) |
Restore the connections of the specific polyline The vertices numbering on the destination boundaries may have change because of (un)refinement in the destination boundaries. Also deals with connection that do not longer exist because the destination boundary does no longer exist because of the distribution process. More... | |
void | resume_boundary_connections (Vector< TriangleMeshPolyLine * > &resume_initial_connection_polyline_pt, Vector< TriangleMeshPolyLine * > &resume_final_connection_polyline_pt) |
Resume the boundary connections that may have been suspended because the destination boundary is no part of the domain. The connections are no permanently suspended because if load balance takes place the destination boundary may be part of the new domain representation therefore the connection would exist. More... | |
bool | get_connected_vertex_number_on_dst_boundary (Vector< double > &vertex_coordinates, const unsigned &dst_b_id, unsigned &vertex_number) |
Computes the associated vertex number on the destination boundary. More... | |
bool | unrefine_boundary (const unsigned &b, const unsigned &c, Vector< Vector< double >> &vector_bnd_vertices, double &unrefinement_tolerance, const bool &check_only=false) |
Helper function that performs the unrefinement process. More... | |
bool | refine_boundary (Mesh *face_mesh_pt, Vector< Vector< double >> &vector_bnd_vertices, double &refinement_tolerance, const bool &check_only=false) |
Helper function that performs the refinement process on the specified boundary by using the provided vertices representation. Optional boolean is used to run it as test only (if true is specified as input) in which case vertex coordinates aren't actually modified. Returned boolean indicates if polyline was (or would have been – if called with check_only=false) changed. More... | |
bool | apply_max_length_constraint (Mesh *face_mesh_pt, Vector< Vector< double >> &vector_bnd_vertices, double &max_length_constraint) |
bool | unrefine_boundary_constrained_by_target_area (const unsigned &b, const unsigned &c, Vector< Vector< double >> &vector_bnd_vertices, double &unrefinement_tolerance, Vector< double > &area_constraint) |
Helper function that performs the unrefinement process on the specified boundary by using the provided vertices representation and the associated target area. Used only when the 'allow_automatic_creation_of_vertices_on_boundaries' flag is set to true. More... | |
bool | refine_boundary_constrained_by_target_area (MeshAsGeomObject *mesh_geom_obj_pt, Vector< Vector< double >> &vector_bnd_vertices, double &refinement_tolerance, Vector< double > &area_constraint) |
Helper function that performs the refinement process on the specified boundary by using the provided vertices representation and the associated elements target area. Used only when the 'allow_automatic_creation_of_vertices_on_boundaries' flag is set to true. More... | |
bool | unrefine_shared_boundary_constrained_by_target_area (const unsigned &b, const unsigned &c, Vector< Vector< double >> &vector_bnd_vertices, Vector< double > &area_constraint) |
Helper function that performs the unrefinement process on the specified boundary by using the provided vertices representation and the associated target area. NOTE: This is the version that applies unrefinement to shared boundaries. More... | |
bool | refine_shared_boundary_constrained_by_target_area (Vector< Vector< double >> &vector_bnd_vertices, Vector< double > &area_constraint) |
Helper function that performs the refinement process on the specified boundary by using the provided vertices representation and the associated elements target area. NOTE: This is the version that applies refinement to shared boundaries. More... | |
void | initialise_boundary_refinement_data () |
Set all the flags to true (the default values) More... | |
void | sort_nodes_on_shared_boundaries () |
Sort the nodes on shared boundaries so that the processors that share a boundary agree with the order of the nodes on the boundary. More... | |
void | reset_shared_boundary_elements_and_nodes (const bool flush_elements=true, const bool update_elements=true, const bool flush_nodes=true, const bool update_nodes=true) |
Re-establish the shared boundary elements after the adaptation process (the updating of shared nodes is optional and performed by default) More... | |
void | reset_halo_haloed_scheme () |
In charge of. re-establish the halo(ed) scheme on all processors. Sends info. to create halo elements and nodes on the processors that need it. It uses and all to all communication strategy therefore must be called on all processors. More... | |
void | compute_global_node_names_and_shared_nodes (Vector< Vector< Vector< std::map< unsigned, Node * >>>> &other_proc_shd_bnd_node_pt, Vector< Vector< Vector< unsigned >>> &global_node_names, std::map< Vector< unsigned >, unsigned > &node_name_to_global_index, Vector< Node * > &global_shared_node_pt) |
Compute the names of the nodes on shared boundaries in this (my_rank) processor with other processors. Also compute the names of nodes on shared boundaries of other processors with other processors (useful when there is an element that requires to be sent to this (my_rank) processor because there is a shared node between this (my_rank) and other processors BUT there is not a shared boundary between this and the other processor. More... | |
void | send_boundary_node_info_of_shared_nodes (Vector< Vector< Vector< unsigned >>> &global_node_names, std::map< Vector< unsigned >, unsigned > &node_name_to_global_index, Vector< Node * > &global_shared_node_pt) |
Get the original boundaries to which is associated each shared node, and send the info. to the related processors. We need to do this so that at the reset of halo(ed) info. stage, the info. be already updated. More... | |
void | reset_halo_haloed_scheme_helper (Vector< Vector< Vector< std::map< unsigned, Node * >>>> &other_proc_shd_bnd_node_pt, Vector< Vector< Node * >> &iproc_currently_created_nodes_pt, Vector< Vector< Vector< unsigned >>> &global_node_names, std::map< Vector< unsigned >, unsigned > &node_name_to_global_index, Vector< Node * > &global_shared_node_pt) |
In charge of creating additional halo(ed) elements on those processors that have no shared boundaries in common but have shared nodes. More... | |
unsigned | try_to_add_element_pt_load_balance (Vector< FiniteElement * > &new_elements_on_domain, FiniteElement *&ele_pt) |
Check if necessary to add the element to the new domain or if it has been previously added. More... | |
void | get_required_elemental_information_load_balance_helper (unsigned &iproc, Vector< Vector< FiniteElement * >> &f_haloed_ele_pt, FiniteElement *ele_pt) |
Helper function to get the required elemental information from the element to be sent. This info. involves the association of the element to a boundary or region, and if its part of the halo(ed) elements within a processor. More... | |
unsigned | try_to_add_node_pt_load_balance (Vector< Node * > &new_nodes_on_domain, Node *&node_pt) |
Check if necessary to add the node to the new domain or if it has been already added. More... | |
void | add_node_load_balance_helper (unsigned &iproc, Vector< Vector< FiniteElement * >> &f_halo_ele_pt, Vector< Node * > &new_nodes_on_domain, Node *nod_pt) |
Helper function to add haloed node. More... | |
void | get_required_nodal_information_load_balance_helper (Vector< Vector< FiniteElement * >> &f_halo_ele_pt, unsigned &iproc, Node *nod_pt) |
Helper function to get the required nodal information from an haloed node so that a fully-functional node (and therefore element) can be created on the receiving process (this is the specific version for the load balance strategy, the difference with the original method is that it checks if the node is on a shared boundary no associated with the current processor –my_rank–, or in a haloed element from other processors. More... | |
void | create_element_load_balance_helper (unsigned &iproc, Vector< Vector< FiniteElement * >> &f_haloed_ele_pt, Vector< Vector< std::map< unsigned, FiniteElement * >>> &received_old_haloed_element_pt, Vector< FiniteElement * > &new_elements_on_domain, Vector< Node * > &new_nodes_on_domain, Vector< Vector< Vector< std::map< unsigned, Node * >>>> &other_proc_shd_bnd_node_pt, Vector< Vector< Vector< unsigned >>> &global_node_names, std::map< Vector< unsigned >, unsigned > &node_name_to_global_index, Vector< Node * > &global_shared_node_pt) |
Helper function to create elements on the loop process based on the info received in send_and_received_elements_nodes_info. More... | |
void | add_element_load_balance_helper (const unsigned &iproc, Vector< Vector< std::map< unsigned, FiniteElement * >>> &received_old_haloed_element_pt, FiniteElement *ele_pt) |
Helper function to create elements on the loop process based on the info received in send_and_received_elements_nodes_info This function is in charge of verify if the element is associated to a boundary and associate to it if that is the case. More... | |
void | add_received_node_load_balance_helper (Node *&new_nod_pt, Vector< Vector< FiniteElement * >> &f_haloed_ele_pt, Vector< Vector< std::map< unsigned, FiniteElement * >>> &received_old_haloed_element_pt, Vector< Node * > &new_nodes_on_domain, Vector< Vector< Vector< std::map< unsigned, Node * >>>> &other_proc_shd_bnd_node_pt, unsigned &iproc, unsigned &node_index, FiniteElement *const &new_el_pt, Vector< Vector< Vector< unsigned >>> &global_node_names, std::map< Vector< unsigned >, unsigned > &node_name_to_global_index, Vector< Node * > &global_shared_node_pt) |
Helper function to add a new node from load balance. More... | |
void | construct_new_node_load_balance_helper (Node *&new_nod_pt, Vector< Vector< FiniteElement * >> &f_haloed_ele_pt, Vector< Vector< std::map< unsigned, FiniteElement * >>> &received_old_haloed_element_pt, Vector< Node * > &new_nodes_on_domain, Vector< Vector< Vector< std::map< unsigned, Node * >>>> &other_proc_shd_bnd_node_pt, unsigned &iproc, unsigned &node_index, FiniteElement *const &new_el_pt, Vector< Vector< Vector< unsigned >>> &global_node_names, std::map< Vector< unsigned >, unsigned > &node_name_to_global_index, Vector< Node * > &global_shared_node_pt) |
Helper function which constructs a new node (on an element) with the information sent from the load balance process. More... | |
unsigned | try_to_add_root_haloed_element_pt (const unsigned &p, GeneralisedElement *&el_pt) |
Check if necessary to add the element as haloed or if it has been previously added to the haloed scheme. More... | |
unsigned | try_to_add_haloed_node_pt (const unsigned &p, Node *&nod_pt) |
Check if necessary to add the node as haloed or if it has been previously added to the haloed scheme. More... | |
void | get_required_elemental_information_helper (unsigned &iproc, FiniteElement *ele_pt) |
Helper function to get the required elemental information from an haloed element. This info. involves the association of the element to a boundary or region. More... | |
void | get_required_nodal_information_helper (unsigned &iproc, Node *nod_pt) |
Helper function to get the required nodal information from a haloed node so that a fully-functional halo node (and therefore element) can be created on the receiving process. More... | |
void | add_haloed_node_helper (unsigned &iproc, Node *nod_pt) |
Helper function to add haloed node. More... | |
void | send_and_receive_elements_nodes_info (int &send_proc, int &recv_proc) |
Helper function to send back halo and haloed information. More... | |
void | create_halo_element (unsigned &iproc, Vector< Node * > &new_nodes_on_domain, Vector< Vector< Vector< std::map< unsigned, Node * >>>> &other_proc_shd_bnd_node_pt, Vector< Vector< Vector< unsigned >>> &global_node_names, std::map< Vector< unsigned >, unsigned > &node_name_to_global_index, Vector< Node * > &global_shared_node_pt) |
Helper function to create (halo) elements on the loop process based on the info received in send_and_received_located_info. More... | |
void | add_halo_element_helper (unsigned &iproc, FiniteElement *ele_pt) |
Helper function to create (halo) elements on the loop process based on the info received in send_and_received_located_info This function is in charge of verify if the element is associated to a boundary. More... | |
void | add_halo_node_helper (Node *&new_nod_pt, Vector< Node * > &new_nodes_on_domain, Vector< Vector< Vector< std::map< unsigned, Node * >>>> &other_proc_shd_bnd_node_pt, unsigned &iproc, unsigned &node_index, FiniteElement *const &new_el_pt, Vector< Vector< Vector< unsigned >>> &global_node_names, std::map< Vector< unsigned >, unsigned > &node_name_to_global_index, Vector< Node * > &global_shared_node_pt) |
Helper function to add halo node. More... | |
void | construct_new_halo_node_helper (Node *&new_nod_pt, Vector< Node * > &new_nodes_on_domain, Vector< Vector< Vector< std::map< unsigned, Node * >>>> &other_proc_shd_bnd_node_pt, unsigned &iproc, unsigned &node_index, FiniteElement *const &new_el_pt, Vector< Vector< Vector< unsigned >>> &global_node_names, std::map< Vector< unsigned >, unsigned > &node_name_to_global_index, Vector< Node * > &global_shared_node_pt) |
Helper function which constructs a new halo node (on an element) with the information sent from the haloed process. More... | |
void | update_other_proc_shd_bnd_node_helper (Node *&new_nod_pt, Vector< Vector< Vector< std::map< unsigned, Node * >>>> &other_proc_shd_bnd_node_pt, Vector< unsigned > &other_processor_1, Vector< unsigned > &other_processor_2, Vector< unsigned > &other_shared_boundaries, Vector< unsigned > &other_indexes, Vector< Vector< Vector< unsigned >>> &global_node_names, std::map< Vector< unsigned >, unsigned > &node_name_to_global_index, Vector< Node * > &global_shared_node_pt) |
Helper function that assigns/updates the references to the node so that it can be found with any other reference. The return value indicates whether or not a node was found on the same reference. More... | |
bool | update_polygon_using_face_mesh (TriangleMeshPolygon *polygon_pt, const bool &check_only=false) |
Helper function that updates the input polygon's PSLG by using the end-points of elements from FaceMesh(es) that are constructed for the boundaries associated with the segments of the polygon. Optional boolean is used to run it as test only (if true is specified as input) in which case polygon isn't actually modified. Returned boolean indicates if polygon was (or would have been – if called with check_only=false) changed. More... | |
bool | update_open_curve_using_face_mesh (TriangleMeshOpenCurve *open_polyline_pt, const bool &check_only=false) |
Helper function that updates the input open curve by using end-points of elements from FaceMesh(es) that are constructed for the boundaries associated with the polylines. Optional boolean is used to run it as test only (if true is specified as input) in which case the polylines are not actually modified. Returned boolean indicates if polylines were (or would have been – if called with check_only=false) changed. More... | |
virtual bool | surface_remesh_for_inner_hole_boundaries (Vector< Vector< double >> &internal_point_coord, const bool &check_only=false) |
Generate a new PSLG representation of the inner hole boundaries. Optional boolean is used to run it as test only (if true is specified as input) in which case PSLG isn't actually modified. Returned boolean indicates if PSLG was (or would have been – if called with check_only=false) changed. More... | |
void | snap_nodes_onto_boundary (RefineableTriangleMesh< ELEMENT > *&new_mesh_pt, const unsigned &b) |
Snap the boundary nodes onto any curvilinear boundaries. More... | |
void | create_unsorted_face_mesh_representation (const unsigned &boundary_id, Mesh *face_mesh_pt) |
Helper function Creates an unsorted face mesh representation from the specified boundary id. It means that the elements are not sorted along the boundary. More... | |
void | create_sorted_face_mesh_representation (const unsigned &boundary_id, Mesh *face_mesh_pt, std::map< FiniteElement *, bool > &is_inverted, bool &inverted_face_mesh) |
Helper function Creates a sorted face mesh representation of the specified PolyLine It means that the elements are sorted along the boundary It also returns a map that indicated the inverted elements. More... | |
void | get_face_mesh_representation (TriangleMeshPolygon *polygon_pt, Vector< Mesh * > &face_mesh_pt) |
Helper function to construct face mesh representation of all polylines, possibly with segments re-distributed between polylines to maintain an appxroximately even sub-division of the polygon. More... | |
void | get_face_mesh_representation (TriangleMeshOpenCurve *open_polyline_pt, Vector< Mesh * > &face_mesh_pt) |
Helper function to construct face mesh representation of open curves. More... | |
void | update_polygon_after_restart (TriangleMeshPolygon *&polygon_pt) |
Updates the polylines representation after restart. More... | |
void | update_open_curve_after_restart (TriangleMeshOpenCurve *&open_curve_pt) |
Updates the open curve representation after restart. More... | |
bool | update_polygon_using_elements_area (TriangleMeshPolygon *&polygon_pt, const Vector< double > &target_area) |
Updates the polylines using the elements area as constraint for the number of points along the boundaries. More... | |
bool | update_open_curve_using_elements_area (TriangleMeshOpenCurve *&open_curve_pt, const Vector< double > &target_area) |
Updates the open curve but using the elements area instead of the default refinement and unrefinement methods. More... | |
bool | update_shared_curve_using_elements_area (Vector< TriangleMeshPolyLine * > &vector_polyline_pt, const Vector< double > &target_areas) |
Updates the polylines using the elements area as constraint for the number of points along the boundaries. More... | |
void | update_shared_curve_after_restart (Vector< TriangleMeshPolyLine * > &vector_polyline_pt) |
Updates the shared polylines representation after restart. More... | |
void | initialise_adaptation_data () |
Helper function to initialise data associated with adaptation. More... | |
void | refine_triangulateio (TriangulateIO &triangulate_io, const Vector< double > &target_area, TriangulateIO &triangle_refine) |
Build a new TriangulateIO object from previous TriangulateIO based on target area for each element. More... | |
double | compute_area_target (const Vector< double > &elem_error, Vector< double > &target_area) |
Compute target area based on the element's error and the error target; return minimum angle (in degrees) 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::RefineableTriangleMesh< ELEMENT > | |
std::map< unsigned, std::set< Vector< double > > > | Boundary_connections_pt |
A map that stores the vertices that receive connections, they are identified by the boundary number that receive the connection This is necessary for not erasing them on the adaptation process, specifically for the un-refinement process. More... | |
bool | Do_boundary_unrefinement_constrained_by_target_areas |
Flag that enables or disables boundary unrefinement (true by default) More... | |
bool | Do_boundary_refinement_constrained_by_target_areas |
Flag that enables or disables boundary refinement (true by default) More... | |
bool | Do_shared_boundary_unrefinement_constrained_by_target_areas |
Flag that enables or disables boundary unrefinement (true by default) More... | |
bool | Do_shared_boundary_refinement_constrained_by_target_areas |
Flag that enables or disables boundary unrefinement (true by default) More... | |
std::map< unsigned, Vector< Node * > > | Sorted_shared_boundary_node_pt |
Stores the nodes in the boundaries in the same order in all the processors Sorted_shared_boundary_node_pt[bnd_id][i-th node] = Node* It is a map since the boundary id may not start at zero. More... | |
Vector< double > | Flat_packed_doubles |
Vector of flat-packed doubles to be communicated with other processors. More... | |
unsigned | Counter_for_flat_packed_doubles |
Counter used when processing vector of flat-packed doubles. More... | |
Vector< unsigned > | Flat_packed_unsigneds |
Vector of flat-packed unsigneds to be communicated with other processors. More... | |
unsigned | Counter_for_flat_packed_unsigneds |
Counter used when processing vector of flat-packed unsigneds. More... | |
Vector< std::string > | Flat_packed_unsigneds_string |
Temporary vector of strings to enable full annotation of RefineableTriangleMesh comms. More... | |
unsigned | Nbin_x_for_area_transfer |
Number of bins in the x-direction when transferring target areas by bin method. Only used if we don't have CGAL! More... | |
unsigned | Nbin_y_for_area_transfer |
Number of bins in the y-direction when transferring target areas by bin method. Only used if we don't have CGAL! More... | |
unsigned | Max_sample_points_for_limited_locate_zeta_during_target_area_transfer |
Default value for max. number of sample points used for locate_zeta when transferring target areas using cgal-based sample point container. More... | |
double | Max_element_size |
Max permitted element size. More... | |
double | Min_element_size |
Min permitted element size. More... | |
double | Min_permitted_angle |
Min angle before remesh gets triggered. More... | |
bool | Disable_projection |
Enable/disable solution projection during adaptation. More... | |
bool | Use_iterative_solver_for_projection |
Flag to indicate whether to use or not an iterative solver (CG with diagonal preconditioned) for the projection problem. More... | |
bool | Print_timings_transfering_target_areas |
Enable/disable printing timings for transfering target areas. More... | |
bool | Print_timings_projection |
Enable/disable printing timings for projection. More... | |
unsigned | Print_timings_level_adaptation |
The printing level for adaptation. More... | |
unsigned | Print_timings_level_load_balance |
The printing level for load balance. More... | |
MeshUpdateFctPt | Mesh_update_fct_pt |
Function pointer to function that updates the mesh following the snapping of boundary nodes to the boundaries (e.g. to move boundary nodes very slightly to satisfy volume constraints) More... | |
InternalHolePointUpdateFctPt | Internal_hole_point_update_fct_pt |
Function pointer to function that can be set to update the position of the central point in internal holes. 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 refineable Triangle Mesh upgraded to solid mesh
Definition at line 3945 of file triangle_mesh.template.h.
|
inline |
Build mesh, based on the specifications on TriangleMeshParameter.
Definition at line 3952 of file triangle_mesh.template.h.
|
inline |
Build mesh from specified triangulation and associated target areas for elements in it.
Definition at line 3965 of file triangle_mesh.template.h.
|
inlinevirtual |
Empty Destructor.
Definition at line 3985 of file triangle_mesh.template.h.