![]() |
|
#include <unstructured_two_d_mesh_geometry_base.h>
Public Member Functions | |
UnstructuredTwoDMeshGeometryBase () | |
Empty constructor. More... | |
UnstructuredTwoDMeshGeometryBase (const UnstructuredTwoDMeshGeometryBase &dummy)=delete | |
Broken copy constructor. More... | |
void | operator= (const UnstructuredTwoDMeshGeometryBase &)=delete |
Broken assignment operator. More... | |
~UnstructuredTwoDMeshGeometryBase () | |
Empty destructor. More... | |
unsigned | nregion () |
Return the number of regions specified by attributes. More... | |
unsigned | nregion_element (const unsigned &i) |
Return the number of elements in the i-th region. More... | |
FiniteElement * | region_element_pt (const unsigned &i, const unsigned &e) |
Return the e-th element in the i-th region. More... | |
unsigned | nregion_attribute () |
Return the number of attributes used in the mesh. More... | |
double | region_attribute (const unsigned &i) |
Return the attribute associated with region i. More... | |
GeomObject * | boundary_geom_object_pt (const unsigned &b) |
std::map< unsigned, GeomObject * > & | boundary_geom_object_pt () |
Return direct access to the geometric object storage. More... | |
std::map< unsigned, Vector< double > > & | boundary_coordinate_limits () |
Vector< double > & | boundary_coordinate_limits (const unsigned &b) |
unsigned | nboundary_element_in_region (const unsigned &b, const unsigned &r) const |
Return the number of elements adjacent to boundary b in region r. More... | |
FiniteElement * | boundary_element_in_region_pt (const unsigned &b, const unsigned &r, const unsigned &e) const |
Return pointer to the e-th element adjacent to boundary b in region r. More... | |
int | face_index_at_boundary_in_region (const unsigned &b, const unsigned &r, const unsigned &e) const |
Return face index of the e-th element adjacent to boundary b in region r. More... | |
TriangleMeshPolyLine * | boundary_polyline_pt (const unsigned &b) |
std::map< unsigned, std::set< Node * > > & | nodes_on_boundary_pt () |
const bool | get_connected_vertex_number_on_destination_polyline (TriangleMeshPolyLine *dst_polyline_pt, Vector< double > &vertex_coordinates, unsigned &vertex_number) |
void | check_contiguousness_on_polylines_helper (Vector< TriangleMeshPolyLine * > &polylines_pt, unsigned &index) |
void | check_contiguousness_on_polylines_helper (Vector< TriangleMeshPolyLine * > &polylines_pt, unsigned &index_halo_start, unsigned &index_halo_end) |
bool | is_point_inside_polygon_helper (Vector< Vector< double >> polygon_vertices, Vector< double > point) |
Helper function that checks if a given point is inside a polygon. More... | |
void | enable_automatic_creation_of_vertices_on_boundaries () |
void | disable_automatic_creation_of_vertices_on_boundaries () |
bool | is_automatic_creation_of_vertices_on_boundaries_allowed () |
template<class ELEMENT > | |
void | setup_boundary_coordinates (const unsigned &b) |
template<class ELEMENT > | |
void | setup_boundary_coordinates (const unsigned &b, std::ofstream &outfile) |
![]() | |
Mesh () | |
Default constructor. More... | |
Mesh (const Vector< Mesh * > &sub_mesh_pt) | |
void | merge_meshes (const Vector< Mesh * > &sub_mesh_pt) |
virtual void | setup_boundary_element_info () |
virtual void | setup_boundary_element_info (std::ostream &outfile) |
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 rutines. More... | |
template<class BULK_ELEMENT > | |
void | doc_boundary_coordinates (const unsigned &b, std::ofstream &the_file) |
virtual void | scale_mesh (const double &factor) |
Mesh (const Mesh &dummy)=delete | |
Broken copy constructor. More... | |
void | operator= (const Mesh &)=delete |
Broken assignment operator. More... | |
virtual | ~Mesh () |
Virtual Destructor to clean up all memory. More... | |
void | flush_element_and_node_storage () |
void | flush_element_storage () |
void | flush_node_storage () |
Node *& | node_pt (const unsigned long &n) |
Return pointer to global node n. More... | |
Node * | node_pt (const unsigned long &n) const |
Return pointer to global node n (const version) More... | |
GeneralisedElement *& | element_pt (const unsigned long &e) |
Return pointer to element e. More... | |
GeneralisedElement * | element_pt (const unsigned long &e) const |
Return pointer to element e (const version) More... | |
const Vector< GeneralisedElement * > & | element_pt () const |
Return reference to the Vector of elements. More... | |
Vector< GeneralisedElement * > & | element_pt () |
Return reference to the Vector of elements. More... | |
FiniteElement * | finite_element_pt (const unsigned &e) const |
Node *& | boundary_node_pt (const unsigned &b, const unsigned &n) |
Return pointer to node n on boundary b. More... | |
Node * | boundary_node_pt (const unsigned &b, const unsigned &n) const |
Return pointer to node n on boundary b. More... | |
void | set_nboundary (const unsigned &nbound) |
Set the number of boundaries in the mesh. More... | |
void | remove_boundary_nodes () |
Clear all pointers to boundary nodes. More... | |
void | remove_boundary_nodes (const unsigned &b) |
void | remove_boundary_node (const unsigned &b, Node *const &node_pt) |
Remove a node from the boundary b. More... | |
void | add_boundary_node (const unsigned &b, Node *const &node_pt) |
Add a (pointer to) a node to the b-th boundary. More... | |
void | copy_boundary_node_data_from_nodes () |
bool | boundary_coordinate_exists (const unsigned &i) const |
Indicate whether the i-th boundary has an intrinsic coordinate. More... | |
unsigned long | nelement () const |
Return number of elements in the mesh. More... | |
unsigned long | nnode () const |
Return number of nodes in the mesh. More... | |
unsigned | ndof_types () const |
Return number of dof types in mesh. More... | |
unsigned | elemental_dimension () const |
Return number of elemental dimension in mesh. More... | |
unsigned | nodal_dimension () const |
Return number of nodal dimension in mesh. More... | |
void | add_node_pt (Node *const &node_pt) |
Add a (pointer to a) node to the mesh. More... | |
void | add_element_pt (GeneralisedElement *const &element_pt) |
Add a (pointer to) an element to the mesh. More... | |
virtual void | node_update (const bool &update_all_solid_nodes=false) |
virtual void | reorder_nodes (const bool &use_old_ordering=true) |
virtual void | get_node_reordering (Vector< Node * > &reordering, const bool &use_old_ordering=true) const |
template<class BULK_ELEMENT , template< class > class FACE_ELEMENT> | |
void | build_face_mesh (const unsigned &b, Mesh *const &face_mesh_pt) |
unsigned | self_test () |
Self-test: Check elements and nodes. Return 0 for OK. More... | |
void | max_and_min_element_size (double &max_size, double &min_size) |
double | total_size () |
void | check_inverted_elements (bool &mesh_has_inverted_elements, std::ofstream &inverted_element_file) |
void | check_inverted_elements (bool &mesh_has_inverted_elements) |
unsigned | check_for_repeated_nodes (const double &epsilon=1.0e-12) |
Vector< Node * > | prune_dead_nodes () |
unsigned | nboundary () const |
Return number of boundaries. More... | |
unsigned long | nboundary_node (const unsigned &ibound) const |
Return number of nodes on a particular boundary. More... | |
FiniteElement * | boundary_element_pt (const unsigned &b, const unsigned &e) const |
Return pointer to e-th finite element on boundary b. More... | |
Node * | get_some_non_boundary_node () const |
unsigned | nboundary_element (const unsigned &b) const |
Return number of finite elements that are adjacent to boundary b. More... | |
int | face_index_at_boundary (const unsigned &b, const unsigned &e) const |
virtual void | dump (std::ofstream &dump_file, const bool &use_old_ordering=true) const |
Dump the data in the mesh into a file for restart. More... | |
void | dump (const std::string &dump_file_name, const bool &use_old_ordering=true) const |
Dump the data in the mesh into a file for restart. More... | |
virtual void | read (std::ifstream &restart_file) |
Read solution from restart file. More... | |
void | output_paraview (std::ofstream &file_out, const unsigned &nplot) const |
void | output_fct_paraview (std::ofstream &file_out, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt) const |
void | output_fct_paraview (std::ofstream &file_out, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt) const |
void | output (std::ostream &outfile) |
Output for all elements. More... | |
void | output (std::ostream &outfile, const unsigned &n_plot) |
Output at f(n_plot) points in each element. More... | |
void | output (FILE *file_pt) |
Output for all elements (C-style output) More... | |
void | output (FILE *file_pt, const unsigned &nplot) |
Output at f(n_plot) points in each element (C-style output) More... | |
void | output (const std::string &output_filename) |
Output for all elements. More... | |
void | output (const std::string &output_filename, const unsigned &n_plot) |
Output at f(n_plot) points in each element. More... | |
void | output_fct (std::ostream &outfile, const unsigned &n_plot, FiniteElement::SteadyExactSolutionFctPt) |
Output a given Vector function at f(n_plot) points in each element. More... | |
void | output_fct (std::ostream &outfile, const unsigned &n_plot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt) |
void | output_boundaries (std::ostream &outfile) |
Output the nodes on the boundaries (into separate tecplot zones) More... | |
void | output_boundaries (const std::string &output_filename) |
void | assign_initial_values_impulsive () |
Assign initial values for an impulsive start. More... | |
void | shift_time_values () |
void | calculate_predictions () |
void | set_nodal_and_elemental_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data) |
virtual void | set_mesh_level_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data) |
void | set_consistent_pinned_values_for_continuation (ContinuationStorageScheme *const &continuation_stepper_pt) |
Set consistent values for pinned data in continuation. More... | |
bool | does_pointer_correspond_to_mesh_data (double *const ¶meter_pt) |
Does the double pointer correspond to any mesh data. More... | |
void | set_nodal_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data) |
Set the timestepper associated with the nodal data in the mesh. More... | |
void | set_elemental_internal_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data) |
virtual void | compute_norm (double &norm) |
virtual void | compute_norm (Vector< double > &norm) |
virtual void | compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm) |
virtual void | compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm) |
virtual void | compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm) |
virtual void | compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm) |
virtual void | compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm) |
virtual void | compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm) |
virtual void | compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm) |
Returns the norm of the error and that of the exact solution. More... | |
virtual void | compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm) |
bool | is_mesh_distributed () const |
Boolean to indicate if Mesh has been distributed. More... | |
OomphCommunicator * | communicator_pt () const |
void | delete_all_external_storage () |
Wipe the storage for all externally-based elements. More... | |
Static Public Attributes | |
static bool | Suppress_warning_about_regions_and_boundaries |
Public static flag to suppress warning; defaults to false. More... | |
![]() | |
static Steady< 0 > | Default_TimeStepper |
The Steady Timestepper. More... | |
static bool | Suppress_warning_about_empty_mesh_level_time_stepper_function |
Static boolean flag to control warning about mesh level timesteppers. More... | |
Protected Member Functions | |
void | snap_nodes_onto_geometric_objects () |
void | copy_connection_information (TriangleMeshCurveSection *input_curve_pt, TriangleMeshCurveSection *output_curve_pt) |
void | copy_connection_information_to_sub_polylines (TriangleMeshCurveSection *input_curve_pt, TriangleMeshCurveSection *output_curve_pt) |
![]() | |
unsigned long | assign_global_eqn_numbers (Vector< double * > &Dof_pt) |
Assign (global) equation numbers to the nodes. More... | |
void | describe_dofs (std::ostream &out, const std::string ¤t_string) const |
void | describe_local_dofs (std::ostream &out, const std::string ¤t_string) const |
void | assign_local_eqn_numbers (const bool &store_local_dof_pt) |
Assign local equation numbers in all elements. More... | |
void | convert_to_boundary_node (Node *&node_pt, const Vector< FiniteElement * > &finite_element_pt) |
void | convert_to_boundary_node (Node *&node_pt) |
Additional Inherited Members | |
![]() | |
typedef void(FiniteElement::* | SteadyExactSolutionFctPt) (const Vector< double > &x, Vector< double > &soln) |
typedef void(FiniteElement::* | UnsteadyExactSolutionFctPt) (const double &time, const Vector< double > &x, Vector< double > &soln) |
Contains functions which define the geometry of the mesh, i.e. regions, boundaries, etc.
|
inline |
|
delete |
Broken copy constructor.
|
inline |
|
inline |
Return access to the vector of boundary coordinates associated with each geometric object
References Boundary_coordinate_limits.
Referenced by setup_boundary_coordinates().
|
inline |
Return access to the coordinate limits associated with the geometric object associated with boundary b
References b, Boundary_coordinate_limits, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
|
inline |
Return pointer to the e-th element adjacent to boundary b in region r.
References b, Boundary_region_element_pt, e(), Eigen::placeholders::end, and UniformPSDSelfTest::r.
Referenced by setup_boundary_coordinates().
|
inline |
Return direct access to the geometric object storage.
References Boundary_geom_object_pt.
Referenced by setup_boundary_coordinates(), and snap_nodes_onto_geometric_objects().
|
inline |
Return the geometric object associated with the b-th boundary or null if the boundary has associated geometric object.
References b, and Boundary_geom_object_pt.
|
inline |
Return pointer to the current polyline that describes the b-th mesh boundary
References b, and Boundary_curve_section_pt.
Referenced by ContactProblem< ELEMENT >::actions_before_adapt().
void oomph::UnstructuredTwoDMeshGeometryBase::check_contiguousness_on_polylines_helper | ( | Vector< TriangleMeshPolyLine * > & | polylines_pt, |
unsigned & | index | ||
) |
Sort the polylines coming from joining them. Check whether it is necessary to reverse them or not. Used when joining two curve polylines in order to create a polygon
void oomph::UnstructuredTwoDMeshGeometryBase::check_contiguousness_on_polylines_helper | ( | Vector< TriangleMeshPolyLine * > & | polylines_pt, |
unsigned & | index_halo_start, | ||
unsigned & | index_halo_end | ||
) |
Sort the polylines coming from joining them. Check whether it is necessary to reverse them or not. Used when joining polylines and they still do not create a polygon
|
protected |
Helper function to copy the connection information from the input curve(polyline or curviline) to the output polyline
|
protected |
Helper function to copy the connection information from the input curve(polyline or curviline) to the output sub-polyline
|
inline |
Disables the creation of points (by Triangle) on the outer and internal boundaries
References Allow_automatic_creation_of_vertices_on_boundaries.
|
inline |
Enables the creation of points (by Triangle) on the outer and internal boundaries
References Allow_automatic_creation_of_vertices_on_boundaries.
|
inline |
Return face index of the e-th element adjacent to boundary b in region r.
References b, e(), Eigen::placeholders::end, Face_index_region_at_boundary, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and UniformPSDSelfTest::r.
Referenced by setup_boundary_coordinates().
const bool oomph::UnstructuredTwoDMeshGeometryBase::get_connected_vertex_number_on_destination_polyline | ( | TriangleMeshPolyLine * | dst_polyline_pt, |
Vector< double > & | vertex_coordinates, | ||
unsigned & | vertex_number | ||
) |
Gets the vertex number on the destination polyline (used to create the connections among shared boundaries)
Gets the vertex number on the destination polyline (used / to create the connections among shared boundaries)
References i, oomph::TriangleMeshPolyLine::nvertex(), sqrt(), oomph::ToleranceForVertexMismatchInPolygons::Tolerable_error, and oomph::TriangleMeshPolyLine::vertex_coordinate().
|
inline |
Returns the status of the variable Allow_automatic_creation_of_vertices_on_boundaries
References Allow_automatic_creation_of_vertices_on_boundaries.
bool oomph::UnstructuredTwoDMeshGeometryBase::is_point_inside_polygon_helper | ( | Vector< Vector< double >> | polygon_vertices, |
Vector< double > | point | ||
) |
Helper function that checks if a given point is inside a polygon.
Helper function that checks if a given point is inside a polygon (a set of sorted vertices that connected create a polygon)
|
inline |
Return the number of elements adjacent to boundary b in region r.
References b, Boundary_region_element_pt, Eigen::placeholders::end, and UniformPSDSelfTest::r.
Referenced by setup_boundary_coordinates().
|
inline |
Gets a pointer to a set with all the nodes related with a boundary
References Nodes_on_boundary_pt.
|
inline |
Return the number of regions specified by attributes.
References Region_element_pt.
Referenced by setup_boundary_coordinates().
|
inline |
Return the number of attributes used in the mesh.
References Region_attribute.
|
delete |
Broken assignment operator.
Return the attribute associated with region i.
References i, and Region_attribute.
|
inline |
Return the e-th element in the i-th region.
References e(), i, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and Region_element_pt.
|
inline |
void oomph::UnstructuredTwoDMeshGeometryBase::setup_boundary_coordinates | ( | const unsigned & | b, |
std::ofstream & | outfile | ||
) |
Setup boundary coordinate on boundary b. Doc Faces in outfile. Boundary coordinate increases continously along polygonal boundary. It's zero at the lowest left node on the boundary.
Setup boundary coordinate on boundary b. Doc Faces in outfile. Boundary coordinate increases continously along polygonal boundary. It's zero at the lexicographically smallest node on the boundary.
References b, oomph::Mesh::Boundary_coordinate_exists, boundary_coordinate_limits(), boundary_element_in_region_pt(), oomph::Mesh::boundary_element_pt(), boundary_geom_object_pt(), e(), calibrate::error, boost::multiprecision::fabs(), oomph::Mesh::face_index_at_boundary(), face_index_at_boundary_in_region(), MergeRestartFiles::found, oomph::Node::get_coordinates_on_boundary(), i, oomph::Mesh::is_mesh_distributed(), j, k, max, min, oomph::Mesh::nboundary_element(), nboundary_element_in_region(), oomph::FiniteElement::nnode(), oomph::FiniteElement::node_pt(), nregion(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, Polygonal_vertex_arclength_info, oomph::GeomObject::position(), Region_attribute, oomph::Node::set_coordinates_on_boundary(), size, sqrt(), oomph::Global_string_for_annotation::string(), Suppress_warning_about_regions_and_boundaries, oomph::ToleranceForVertexMismatchInPolygons::Tolerable_error, v, oomph::Node::x(), and Eigen::zeta().
|
protected |
Snap the boundary nodes onto any curvilinear boundaries defined by geometric objects
Move the nodes on boundaries with associated Geometric Objects so that they exactly coincide with the geometric object. This requires that the boundary coordinates are set up consistently
References b, boundary_geom_object_pt(), oomph::Mesh::boundary_node_pt(), oomph::Node::get_coordinates_on_boundary(), i, n, oomph::Mesh::nboundary(), oomph::Mesh::nboundary_node(), oomph::TimeStepper::nprev_values(), oomph::GeomObject::position(), oomph::Node::position_time_stepper_pt(), plotPSD::t, and oomph::Node::x().
|
protected |
Flag to indicate whether the automatic creation of vertices along the boundaries by Triangle is allowed
Referenced by disable_automatic_creation_of_vertices_on_boundaries(), enable_automatic_creation_of_vertices_on_boundaries(), is_automatic_creation_of_vertices_on_boundaries_allowed(), oomph::QuadFromTriangleMesh< ELEMENT >::QuadFromTriangleMesh(), and oomph::TriangleMesh< ELEMENT >::TriangleMesh().
|
protected |
Storage for the limits of the boundary coordinates defined by the use of geometric objects. Only used for curvilinear boundaries.
Referenced by boundary_coordinate_limits().
|
protected |
A map that stores the associated curve section of the specified boundary id
Referenced by boundary_polyline_pt().
|
protected |
Storage for the geometric objects associated with any boundaries.
Referenced by boundary_geom_object_pt().
|
protected |
Storage for elements adjacent to a boundary in a particular region.
Referenced by boundary_element_in_region_pt(), and nboundary_element_in_region().
Storage for extra coordinates for holes.
|
protected |
Storage for the face index adjacent to a boundary in a particular region.
Referenced by face_index_at_boundary_in_region().
|
protected |
A set that contains the curve sections created by this object therefore it is necessary to free their associated memory
Referenced by oomph::QuadFromTriangleMesh< ELEMENT >::~QuadFromTriangleMesh(), and oomph::TriangleMesh< ELEMENT >::~TriangleMesh().
|
protected |
A set that contains the open curves created by this object therefore it is necessary to free their associated memory
Referenced by oomph::QuadFromTriangleMesh< ELEMENT >::~QuadFromTriangleMesh(), and oomph::TriangleMesh< ELEMENT >::~TriangleMesh().
|
protected |
A set that contains the polygons created by this object therefore it is necessary to free their associated memory
Referenced by oomph::QuadFromTriangleMesh< ELEMENT >::~QuadFromTriangleMesh(), and oomph::TriangleMesh< ELEMENT >::~TriangleMesh().
|
protected |
Vector of open polylines that define internal curves.
|
protected |
Vector of polygons that define internal polygons.
|
protected |
Stores a pointer to a set with all the nodes related with a boundary
Referenced by nodes_on_boundary_pt().
|
protected |
Polygon that defines outer boundaries.
|
protected |
Storage for pairs of doubles representing: .first: the arclength along the polygonal representation of the curviline .second: the corresponding intrinsic coordinate on the associated geometric object at which the vertices on the specified boundary are located. Only used for boundaries represented by geom objects.
Referenced by setup_boundary_coordinates().
Vector of attributes associated with the elements in each region.
Referenced by nregion_attribute(), region_attribute(), and setup_boundary_coordinates().
|
protected |
Vector of elements in each region differentiated by attribute (the key of the map is the attribute)
Referenced by nregion(), nregion_element(), and region_element_pt().
|
protected |
Storage for extra coordinates for regions. The key on the map is the region id
|
static |
Public static flag to suppress warning; defaults to false.
Referenced by setup_boundary_coordinates().