Simple 2D triangular mesh for TElements. More...
#include <simple_rectangular_tri_mesh.template.h>
Public Member Functions  
SimpleRectangularTriMesh (const unsigned &n_x, const unsigned &n_y, const double &l_x, const double &l_y, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)  
Constructor n_x : number of elements in the x direction; n_y : number of elements in the y direction; l_x : length in the x direction l_y : length in the y direction Ordering of elements: 'lower left' to 'lower right' then 'upwards'. More...  
const unsigned &  nx () const 
Access function for number of elements in x directions. More...  
const unsigned &  ny () const 
Access function for number of elements in y directions. More...  
Public Member Functions inherited from oomph::TriangleMeshBase  
TriangleMeshBase ()  
Constructor. More...  
TriangleMeshBase (const TriangleMeshBase &node)=delete  
Broken copy constructor. More...  
virtual  ~TriangleMeshBase () 
Broken assignment operator. More...  
void  setup_boundary_element_info () 
Setup lookup schemes which establish whic elements are located next to mesh's boundaries (wrapper to suppress doc). More...  
void  setup_boundary_element_info (std::ostream &outfile) 
Setup lookup schemes which establish which elements are located next to mesh's boundaries. Doc in outfile (if it's open). More...  
bool  use_triangulateio_restart () const 
const access for Use_triangulateio_restart. More...  
void  enable_triangulateio_restart () 
write access for Use_triangulateio_restart. More...  
void  disable_triangulateio_restart () 
write access for Use_triangulateio_restart. More...  
TriangulateIO &  triangulateio_representation () 
Access to the triangulateio representation of the mesh. More...  
void  write_triangulateio (TriangulateIO &triangulate_io, std::string &s) 
Helper function. Write a TriangulateIO object file with all the triangulateio fields. String s is add to assign a different value for the input and/or output structure. More...  
void  clear_triangulateio () 
Helper function. Clean up the memory associated with the TriangulateIO object. This should really only be used to save memory in extremely tight situations. More...  
void  dump_triangulateio (std::ostream &dump_file) 
Dump the triangulateio structure to a dump file and record boundary coordinates of boundary nodes. More...  
virtual void  dump_distributed_info_for_restart (std::ostream &dump_file) 
Virtual function that is used to dump info. related with distributed triangle meshes. More...  
virtual void  dump_info_to_reset_halo_haloed_scheme (std::ostream &dump_file) 
Virtual function that is used to dump info. related with distributed triangle meshes. More...  
virtual void  read_distributed_info_for_restart (std::istream &restart_file) 
Virtual function that is 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 reestablish any additional info. related with the distribution after a restarting for triangle meshes. More...  
virtual void  update_polyline_representation_from_restart () 
Virtual function used to update the polylines representation after restart. More...  
void  remesh_from_triangulateio (std::istream &restart_file) 
Regenerate the mesh from a dumped triangulateio file and dumped boundary coordinates of boundary nodes. More...  
virtual void  remesh_from_internal_triangulateio () 
Virtual function that is used for specific remeshing from the triangulateio. More...  
virtual void  load_balance (const Vector< unsigned > &target_domain_for_local_non_halo_element) 
Virtual function to perform the load balance rutines. 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 rutines. More...  
Public Member Functions inherited from oomph::UnstructuredTwoDMeshGeometryBase  
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 ith region. More...  
FiniteElement *  region_element_pt (const unsigned &i, const unsigned &e) 
Return the eth element in the ith 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) 
Return the geometric object associated with the bth boundary or null if the boundary has associated geometric object. More...  
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 () 
Return access to the vector of boundary coordinates associated with each geometric object. More...  
Vector< double > &  boundary_coordinate_limits (const unsigned &b) 
Return access to the coordinate limits associated with the geometric object associated with boundary b. More...  
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 eth 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 eth element adjacent to boundary b in region r. More...  
TriangleMeshPolyLine *  boundary_polyline_pt (const unsigned &b) 
Return pointer to the current polyline that describes the bth mesh boundary. More...  
std::map< unsigned, std::set< Node * > > &  nodes_on_boundary_pt () 
Gets a pointer to a set with all the nodes related with a boundary. More...  
const bool  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) More...  
void  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. More...  
void  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. More...  
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 (a set of sorted vertices that connected create a polygon) More...  
void  enable_automatic_creation_of_vertices_on_boundaries () 
Enables the creation of points (by Triangle) on the outer and internal boundaries. More...  
void  disable_automatic_creation_of_vertices_on_boundaries () 
Disables the creation of points (by Triangle) on the outer and internal boundaries. More...  
bool  is_automatic_creation_of_vertices_on_boundaries_allowed () 
Returns the status of the variable Allow_automatic_creation_of_vertices_on_boundaries. More...  
void  flush_boundary_segment_node (const unsigned &b) 
Flush the boundary segment node storage. More...  
void  set_nboundary_segment_node (const unsigned &b, const unsigned &s) 
Set the number of segments associated with a boundary. More...  
unsigned  nboundary_segment (const unsigned &b) 
Return the number of segments associated with a boundary. More...  
unsigned long  nboundary_segment_node (const unsigned &b) 
Return the number of segments associated with a boundary. More...  
unsigned long  nboundary_segment_node (const unsigned &b, const unsigned &s) 
Return the number of nodes associated with a given segment of a boundary. More...  
void  add_boundary_segment_node (const unsigned &b, const unsigned &s, Node *const &node_pt) 
Add the node node_pt to the bth boundary and the sth segment of the mesh. More...  
std::map< unsigned, Vector< double > > &  boundary_initial_coordinate () 
Return direct access to the initial coordinates of a boundary. More...  
std::map< unsigned, Vector< double > > &  boundary_final_coordinate () 
Return direct access to the final coordinates of a boundary. More...  
std::map< unsigned, Vector< double > > &  boundary_initial_zeta_coordinate () 
Return direct access to the initial zeta coordinate of a boundary. More...  
std::map< unsigned, Vector< double > > &  boundary_final_zeta_coordinate () 
Return direct access to the final zeta coordinates of a boundary. More...  
std::map< unsigned, Vector< unsigned > > &  boundary_segment_inverted () 
Return the info. to know if it is necessary to reverse the segment based on a previous mesh. More...  
std::map< unsigned, Vector< Vector< double > > > &  boundary_segment_initial_coordinate () 
Return direct access to the initial coordinates for the segments that are part of a boundary. More...  
std::map< unsigned, Vector< Vector< double > > > &  boundary_segment_final_coordinate () 
Return direct access to the final coordinates for the segments that are part of a boundary. More...  
std::map< unsigned, Vector< double > > &  boundary_segment_initial_arclength () 
Return direct access to the initial arclength for the segments that are part of a boundary. More...  
std::map< unsigned, Vector< double > > &  boundary_segment_final_arclength () 
Return direct access to the final arclength for the segments that are part of a boundary. More...  
std::map< unsigned, Vector< double > > &  boundary_segment_initial_zeta () 
Return direct access to the initial zeta for the segments that are part of a boundary. More...  
std::map< unsigned, Vector< double > > &  boundary_segment_final_zeta () 
Return direct access to the final zeta for the segments that are part of a boundary. More...  
Vector< double > &  boundary_segment_initial_zeta (const unsigned &b) 
Return the initial zeta for the segments that are part of a boundary. More...  
Vector< double > &  boundary_segment_final_zeta (const unsigned &b) 
Return the final zeta for the segments that are part of a boundary. More...  
Vector< double > &  boundary_initial_coordinate (const unsigned &b) 
Return the initial coordinates for the boundary. More...  
Vector< double > &  boundary_final_coordinate (const unsigned &b) 
Return the final coordinates for the boundary. More...  
const Vector< unsigned >  boundary_segment_inverted (const unsigned &b) const 
Return the info. to know if it is necessary to reverse the segment based on a previous mesh. More...  
Vector< unsigned > &  boundary_segment_inverted (const unsigned &b) 
Return the info. to know if it is necessary to reverse the segment based on a previous mesh. More...  
Vector< double > &  boundary_initial_zeta_coordinate (const unsigned &b) 
Return the initial zeta coordinate for the boundary. More...  
Vector< double > &  boundary_final_zeta_coordinate (const unsigned &b) 
Return the final zeta coordinate for the boundary. More...  
Vector< double > &  boundary_segment_initial_arclength (const unsigned &b) 
Return the initial arclength for the segments that are part of a boundary. More...  
Vector< double > &  boundary_segment_final_arclength (const unsigned &b) 
Return the final arclength for the segments that are part of a boundary. More...  
Vector< Vector< double > > &  boundary_segment_initial_coordinate (const unsigned &b) 
Return the initial coordinates for the segments that are part of a boundary. More...  
Vector< Vector< double > > &  boundary_segment_final_coordinate (const unsigned &b) 
Return the final coordinates for the segments that are part of a boundary. More...  
template<class ELEMENT >  
void  setup_boundary_coordinates (const unsigned &b) 
Setup boundary coordinate on boundary b. Boundary coordinate increases continously along polygonal boundary. It's zero at the lowest left node on the boundary. More...  
template<class ELEMENT >  
void  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. More...  
Public Member Functions inherited from oomph::Mesh  
void  resize_halo_nodes () 
Helper function that resizes halo nodes to the same size as their nonhalo counterparts if required. (A discrepancy can arise if a FaceElement that introduces additional unknowns are attached to a bulk element that shares a node with a haloed element. In that case the joint node between haloed and nonhaloed element is resized on that processor but not on the one that holds the halo counterpart (because no FaceElement is attached to the halo element) More...  
Mesh ()  
Default constructor. More...  
Mesh (const Vector< Mesh * > &sub_mesh_pt)  
Constructor builds combined mesh from the meshes specified. Note: This simply merges the meshes' elements and nodes (ignoring duplicates; no boundary information etc. is created). More...  
void  merge_meshes (const Vector< Mesh * > &sub_mesh_pt) 
Merge meshes. Note: This simply merges the meshes' elements and nodes (ignoring duplicates; no boundary information etc. is created). More...  
template<class BULK_ELEMENT >  
void  doc_boundary_coordinates (const unsigned &b, std::ofstream &the_file) 
Output boundary coordinates on boundary b – template argument specifies the bulk element type (needed to create FaceElement of appropriate type on mesh boundary). More...  
virtual void  scale_mesh (const double &factor) 
Scale all nodal coordinates by given factor. Virtual so it can be overloaded in SolidMesh class where it also reassigns the Lagrangian coordinates. More...  
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 () 
Flush storage for elements and nodes by emptying the vectors that store the pointers to them. This is useful if a particular mesh is only built to generate a small part of a bigger mesh. Once the elements and nodes have been created, they are typically copied into the new mesh and the auxiliary mesh can be deleted. However, if we simply call the destructor of the auxiliary mesh, it will also wipe out the nodes and elements, because it still "thinks" it's in charge of these... More...  
void  flush_element_storage () 
Flush storage for elements (only) by emptying the vectors that store the pointers to them. This is useful if a particular mesh is only built to generate a small part of a bigger mesh. Once the elements and nodes have been created, they are typically copied into the new mesh and the auxiliary mesh can be deleted. However, if we simply call the destructor of the auxiliary mesh, it will also wipe out the nodes and elements, because it still "thinks" it's in charge of these... More...  
void  flush_node_storage () 
Flush storage for nodes (only) by emptying the vectors that store the pointers to them. More...  
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 
Upcast (downcast?) to FiniteElement (needed to access FiniteElement member functions). More...  
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) 
Remove all information about nodes stored on the bth boundary of the mesh. More...  
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 bth boundary. More...  
void  copy_boundary_node_data_from_nodes () 
Replace existing boundary node lookup schemes with new schemes created using the boundary data stored in the nodes. More...  
bool  boundary_coordinate_exists (const unsigned &i) const 
Indicate whether the ith 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) 
Update nodal positions in response to changes in the domain shape. Uses the FiniteElement::get_x(...) function for FiniteElements and doesn't do anything for other element types. If a MacroElement pointer has been set for a FiniteElement, the MacroElement representation is used to update the nodal positions; if not get_x(...) uses the FE interpolation and thus leaves the nodal positions unchanged. Virtual, so it can be overloaded by specific meshes, such as AlgebraicMeshes or SpineMeshes. Generally, this function updates the position of all nodes in response to changes in the boundary position. However, we ignore all SolidNodes since their position is computed as part of the solution – unless the bool flag is set to true. Such calls are typically made when the initial mesh is created and/or after a mesh has been refined repeatedly before the start of the computation. More...  
virtual void  reorder_nodes (const bool &use_old_ordering=true) 
Reorder nodes in the order in which they appear in elements – can be overloaded for more efficient reordering. More...  
virtual void  get_node_reordering (Vector< Node * > &reordering, const bool &use_old_ordering=true) const 
Get a reordering of the nodes in the order in which they appear in elements – can be overloaded for more efficient reordering. More...  
template<class BULK_ELEMENT , template< class > class FACE_ELEMENT>  
void  build_face_mesh (const unsigned &b, Mesh *const &face_mesh_pt) 
Constuct a Mesh of FACE_ELEMENTs along the bth boundary of the mesh (which contains elements of type BULK_ELEMENT) More...  
unsigned  self_test () 
Selftest: Check elements and nodes. Return 0 for OK. More...  
void  max_and_min_element_size (double &max_size, double &min_size) 
Determine max and min area for all FiniteElements in the mesh (nonFiniteElements are ignored) More...  
double  total_size () 
Determine the sum of all "sizes" of the FiniteElements in the mesh (nonFiniteElements are ignored). This gives the length/area/volume occupied by the mesh. More...  
void  check_inverted_elements (bool &mesh_has_inverted_elements, std::ofstream &inverted_element_file) 
Check for inverted elements and report outcome in boolean variable. This visits all elements at their integration points and checks if the Jacobian of the mapping between local and global coordinates is positive – using the same test that would be carried out (but only in PARANOID mode) during the assembly of the elements' Jacobian matrices. Inverted elements are output in inverted_element_file (if the stream is open). More...  
void  check_inverted_elements (bool &mesh_has_inverted_elements) 
Check for inverted elements and report outcome in boolean variable. This visits all elements at their integration points and checks if the Jacobian of the mapping between local and global coordinates is positive – using the same test that would be carried out (but only in PARANOID mode) during the assembly of the elements' Jacobian matrices. More...  
unsigned  check_for_repeated_nodes (const double &epsilon=1.0e12) 
Check for repeated nodes within a given spatial tolerance. Return (0/1) for (pass/fail). More...  
Vector< Node * >  prune_dead_nodes () 
Prune nodes. Nodes that have been marked as obsolete are removed from the mesh (and its boundarynode scheme). Returns vector of pointers to deleted nodes. More...  
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 eth finite element on boundary b. More...  
Node *  get_some_non_boundary_node () const 
Find a node not on any boundary in mesh_pt (useful for pinning a single node in a purely Neumann problem so that it is fully determined). More...  
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 
For the eth finite element on boundary b, return int to indicate the face_index of the face adjacent to the boundary. This is consistent with input required during the generation of FaceElements. More...  
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 
Output in paraview format into specified file. Breaks up each element into subelements for plotting purposes. We assume that all elements are of the same type (fct will break break (in paranoid mode) if paraview output fcts of the elements are inconsistent). More...  
void  output_fct_paraview (std::ofstream &file_out, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt) const 
Output in paraview format into specified file. Breaks up each element into subelements for plotting purposes. We assume that all elements are of the same type (fct will break break (in paranoid mode) if paraview output fcts of the elements are inconsistent). More...  
void  output_fct_paraview (std::ofstream &file_out, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt) const 
Output in paraview format into specified file. Breaks up each element into subelements for plotting purposes. We assume that all elements are of the same type (fct will break break (in paranoid mode) if paraview output fcts of the elements are inconsistent). More...  
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 (Cstyle output) More...  
void  output (FILE *file_pt, const unsigned &nplot) 
Output at f(n_plot) points in each element (Cstyle 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) 
Output a given timedep. Vector function at f(n_plot) points in each element. More...  
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) 
Output the nodes on the boundaries (into separate tecplot zones). Specify filename. More...  
void  assign_initial_values_impulsive () 
Assign initial values for an impulsive start. More...  
void  shift_time_values () 
Shift timedependent data along for next timestep: Deal with nodal Data/positions and the element's internal Data. More...  
void  calculate_predictions () 
Calculate predictions for all Data and positions associated with the mesh, usually used in adaptive timestepping. More...  
void  set_nodal_and_elemental_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data) 
Set the timestepper associated with all nodal and elemental data stored in the mesh. More...  
virtual void  set_mesh_level_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data) 
Function that can be used to set any additional timestepper data stored at the Mesh (as opposed to nodal and elemental) levels. This is virtual so that it can be overloaded in the appropriate Meshes. Examples include the SpineMeshes and adaptive triangle and tet meshes. More...  
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) 
Set the timestepper associated with the internal data stored within elements in the meah. More...  
virtual void  compute_norm (double &norm) 
Compute norm of solution by summing contributions of compute_norm(...) for all constituent elements in the mesh. What that norm means depends on what's defined in the element's function; may need to take the square root afterwards if the elements compute the square of the L2 norm, say. More...  
virtual void  compute_norm (Vector< double > &norm) 
Compute norm of solution by summing contributions of compute_norm(...) for all constituent elements in the mesh. What that norm means depends on what's defined in the element's function; may need to take the square root afterwards if the elements compute the square of the L2 norm, say. More...  
virtual void  compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm) 
Plot error when compared against a given exact solution. Also returns the norm of the error and that of the exact solution. More...  
virtual void  compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm) 
Plot error when compared against a given timedepdendent exact solution. Also returns the norm of the error and that of the exact solution. More...  
virtual void  compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm) 
Plot error when compared against a given timedependent exact solution. Also returns the norm of the error and that of the exact solution. More...  
virtual void  compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm) 
Plot error when compared against a given timedependent exact solution. Also returns the norm of the error and that of the exact solution. More...  
virtual void  compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm) 
Plot error when compared against a given timedepdendent exact solution. Also returns the norm of the error and that of the exact solution. Version with vectors of norms and errors so that different variables' norms and errors can be returned individually. More...  
virtual void  compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm) 
Plot error when compared against a given timedepdendent exact solution. Also returns the norm of the error and that of the exact solution. Version with vectors of norms and errors so that different variables' norms and errors can be returned individually. More...  
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) 
Returns the norm of the error and that of the exact solution. Version with vectors of norms and errors so that different variables' norms and errors can be returned individually. More...  
bool  is_mesh_distributed () const 
Boolean to indicate if Mesh has been distributed. More...  
OomphCommunicator *  communicator_pt () const 
Readonly access fct to communicator (Null if mesh is not distributed, i.e. if we don't have mpi). More...  
void  set_communicator_pt (OomphCommunicator *comm_pt) 
Function to set communicator (mesh is assumed to be distributed if the communicator pointer is nonnull). Only defined if mpi is enabled becaus Comm_pt itself is only defined when mpi is enabled. More...  
void  set_keep_all_elements_as_halos () 
Call this function to keep all the elements as halo elements. More...  
void  unset_keep_all_elements_as_halos () 
Calll this function to unset the flag that keeps all elements in the mesh as halo elements. More...  
virtual void  distribute (OomphCommunicator *comm_pt, const Vector< unsigned > &element_domain, Vector< GeneralisedElement * > &deleted_element_pt, DocInfo &doc_info, const bool &report_stats, const bool &overrule_keep_as_halo_element_status) 
Distribute the problem and doc; make this virtual to allow overloading for particular meshes where further work is required. Add to vector of pointers to deleted elements. More...  
void  distribute (OomphCommunicator *comm_pt, const Vector< unsigned > &element_domain, Vector< GeneralisedElement * > &deleted_element_pt, const bool &report_stats=false) 
Distribute the problem Add to vector of pointers to deleted elements. More...  
void  prune_halo_elements_and_nodes (Vector< GeneralisedElement * > &deleted_element_pt, const bool &report_stats=false) 
(Irreversibly) prune halo(ed) elements and nodes, usually after another round of refinement, to get rid of excessively wide halo layers. Note that the current mesh will be now regarded as the base mesh and no unrefinement relative to it will be possible once this function has been called. More...  
void  prune_halo_elements_and_nodes (Vector< GeneralisedElement * > &deleted_element_pt, DocInfo &doc_info, const bool &report_stats) 
(Irreversibly) prune halo(ed) elements and nodes, usually after another round of refinement, to get rid of excessively wide halo layers. Note that the current mesh will be now regarded as the base mesh and no unrefinement relative to it will be possible once this function has been called. More...  
void  get_efficiency_of_mesh_distribution (double &av_efficiency, double &max_efficiency, double &min_efficiency) 
Get efficiency of mesh distribution: In an ideal distribution without halo overhead, each processor would only hold its own elements. Efficieny per processor = (number of nonhalo elements)/ (total number of elements). More...  
void  doc_mesh_distribution (DocInfo &doc_info) 
Doc the mesh distribution, to be processed with tecplot macros. More...  
void  check_halo_schemes (DocInfo &doc_info, double &max_permitted_error_for_halo_check) 
Check halo and shared schemes on the mesh. More...  
virtual void  classify_halo_and_haloed_nodes (DocInfo &doc_info, const bool &report_stats) 
Classify the halo and haloed nodes in the mesh. Virtual so it can be overloaded to perform additional functionality (such as synchronising hanging nodes) in refineable meshes, say. More...  
virtual void  classify_halo_and_haloed_nodes (const bool &report_stats=false) 
Classify the halo and haloed nodes in the mesh. Virtual so it can be overloaded to perform additional functionality (such as synchronising hanging nodes) in refineable meshes, say. More...  
void  synchronise_shared_nodes (const bool &report_stats) 
Synchronise shared node lookup schemes to cater for the the case where: (1) a certain node on the current processor is halo with proc p (i.e. its nonhalo counterpart lives on processor p) (2) that node is also exists (also as a halo) on another processor (q, say) where its nonhalo counter part is also known to be on processor p. However, without calling this function the current processor does not necessarily know that it shares a node with processor q. This information can be required, e.g. when synchronising hanging node schemes over all processors. More...  
void  get_all_halo_data (std::map< unsigned, double * > &map_of_halo_data) 
Get all the halo data stored in the mesh and add pointers to the data to the map, indexed by global equation number. More...  
Vector< GeneralisedElement * >  halo_element_pt (const unsigned &p) 
Return vector of halo elements in this Mesh whose nonhalo counterpart is held on processor p. More...  
Vector< GeneralisedElement * >  haloed_element_pt (const unsigned &p) 
Return vector of haloed elements in this Mesh whose haloing counterpart is held on processor p. More...  
unsigned  nnon_halo_element () 
Total number of nonhalo elements in this mesh (Costly call computes result on the fly) More...  
unsigned  nroot_halo_element () 
Total number of root halo elements in this Mesh. More...  
unsigned  nroot_halo_element (const unsigned &p) 
Number of root halo elements in this Mesh whose nonhalo counterpart is held on processor p. More...  
Vector< GeneralisedElement * >  root_halo_element_pt (const unsigned &p) 
Vector of pointers to root halo elements in this Mesh whose nonhalo counterpart is held on processor p. More...  
GeneralisedElement *&  root_halo_element_pt (const unsigned &p, const unsigned &e) 
Access fct to the eth root halo element in this Mesh whose nonhalo counterpart is held on processor p. More...  
void  add_root_halo_element_pt (const unsigned &p, GeneralisedElement *&el_pt) 
Add root halo element whose nonhalo counterpart is held on processor p to this Mesh. More...  
unsigned  nhalo_node () 
Total number of halo nodes in this Mesh. More...  
unsigned  nhalo_node (const unsigned &p) 
Number of halo nodes in this Mesh whose nonhalo counterpart is held on processor p. More...  
void  add_halo_node_pt (const unsigned &p, Node *&nod_pt) 
Add halo node whose nonhalo counterpart is held on processor p to the storage scheme for halo nodes. More...  
Node *  halo_node_pt (const unsigned &p, const unsigned &j) 
Access fct to the jth halo node in this Mesh whose nonhalo counterpart is held on processor p. More...  
unsigned  nroot_haloed_element () 
Total number of root haloed elements in this Mesh. More...  
unsigned  nroot_haloed_element (const unsigned &p) 
Number of root haloed elements in this Mesh whose nonhalo counterpart is held on processor p. More...  
Vector< GeneralisedElement * >  root_haloed_element_pt (const unsigned &p) 
Vector of pointers to root haloed elements in this Mesh whose nonhalo counterpart is held on processor p. More...  
GeneralisedElement *&  root_haloed_element_pt (const unsigned &p, const unsigned &e) 
Access fct to the eth root haloed element in this Mesh whose nonhalo counterpart is held on processor p. More...  
void  add_root_haloed_element_pt (const unsigned &p, GeneralisedElement *&el_pt) 
Add root haloed element whose nonhalo counterpart is held on processor p to the storage scheme for haloed elements. Note: This does not add the element to the storage scheme for elements as it's understood to naturally live on this processor anyway! More...  
unsigned  nhaloed_node () 
Total number of haloed nodes in this Mesh. More...  
unsigned  nhaloed_node (const unsigned &p) 
Number of haloed nodes in this Mesh whose haloed counterpart is held on processor p. More...  
Node *  haloed_node_pt (const unsigned &p, const unsigned &j) 
Access fct to the jth haloed node in this Mesh whose halo counterpart is held on processor p. More...  
void  add_haloed_node_pt (const unsigned &p, Node *&nod_pt) 
Add haloed node whose halo counterpart is held on processor p to the storage scheme for haloed nodes. More...  
void  disable_resizing_of_halo_nodes () 
Function to suppress resizing of halo nodes – optmisation but call it at your own risk! More...  
void  enable_resizing_of_halo_nodes () 
Function to (re)enable resizing of halo nodes – this returns things to the default behaviour. More...  
void  disable_output_of_halo_elements () 
Function to disable halo element output. More...  
void  enable_output_of_halo_elements () 
Function to enable halo element output. More...  
unsigned  nshared_node () 
Total number of shared nodes in this Mesh. More...  
void  doc_shared_nodes () 
Doc shared nodes. More...  
unsigned  nshared_node (const unsigned &p) 
Number of shared nodes in this Mesh who have a counterpart on processor p. More...  
Node *  shared_node_pt (const unsigned &p, const unsigned &j) 
Access fct to the jth shared node in this Mesh who has a counterpart on processor p. More...  
void  get_shared_node_pt (const unsigned &p, Vector< Node * > &shared_node_pt) 
Get vector of pointers to shared nodes with processor p. Required for faster search in Missing_masters_functions::add_external_haloed_node_helper() and Missing_masters_functions::add_external_haloed_master_node_helper() More...  
void  add_shared_node_pt (const unsigned &p, Node *&nod_pt) 
Add shared node whose counterpart is held on processor p to the storage scheme for shared nodes. (NB: ensure that this routine is called twice, once for each process) More...  
void  get_halo_node_stats (double &av_number, unsigned &max_number, unsigned &min_number) 
Get halo node stats for this distributed mesh: Average/max/min number of halo nodes over all processors. Careful: Involves MPI Broadcasts and must therefore be called on all processors! More...  
void  get_haloed_node_stats (double &av_number, unsigned &max_number, unsigned &min_number) 
Get haloed node stats for this distributed mesh: Average/max/min number of haloed nodes over all processors. Careful: Involves MPI Broadcasts and must therefore be called on all processors! More...  
void  output_external_halo_elements (std::ostream &outfile, const unsigned &n_plot=5) 
Output all external halo elements. More...  
void  output_external_halo_elements (const unsigned &p, std::ostream &outfile, const unsigned &n_plot=5) 
Output all external halo elements with processor p. More...  
void  output_external_haloed_elements (std::ostream &outfile, const unsigned &n_plot=5) 
Output all external haloed elements. More...  
void  output_external_haloed_elements (const unsigned &p, std::ostream &outfile, const unsigned &n_plot=5) 
Output all external haloed elements with processor p. More...  
unsigned  nexternal_halo_element () 
Total number of external halo elements in this Mesh. More...  
unsigned  nexternal_halo_element (const unsigned &p) 
Number of external halo elements in this Mesh whose nonhalo counterpart is held on processor p. More...  
GeneralisedElement *&  external_halo_element_pt (const unsigned &p, const unsigned &e) 
Access fct to the eth external halo element in this Mesh whose nonhalo counterpart is held on processor p. More...  
void  add_external_halo_element_pt (const unsigned &p, GeneralisedElement *&el_pt) 
Add external halo element whose nonhalo counterpart is held on processor p to this Mesh. More...  
unsigned  nexternal_haloed_element () 
Total number of external haloed elements in this Mesh. More...  
unsigned  nexternal_haloed_element (const unsigned &p) 
Number of external haloed elements in this Mesh whose nonhalo counterpart is held on processor p. More...  
GeneralisedElement *&  external_haloed_element_pt (const unsigned &p, const unsigned &e) 
Access fct to the eth external haloed element in this Mesh whose nonhalo counterpart is held on processor p. More...  
unsigned  add_external_haloed_element_pt (const unsigned &p, GeneralisedElement *&el_pt) 
Add external haloed element whose nonhalo counterpart is held on processor p to the storage scheme for haloed elements. More...  
unsigned  nexternal_halo_node () 
Total number of external halo nodes in this Mesh. More...  
void  get_external_halo_node_pt (Vector< Node * > &external_halo_node_pt) 
Get vector of pointers to all external halo nodes. More...  
unsigned  nexternal_halo_node (const unsigned &p) 
Number of external halo nodes in this Mesh whose nonhalo (external) counterpart is held on processor p. More...  
void  add_external_halo_node_pt (const unsigned &p, Node *&nod_pt) 
Add external halo node whose nonhalo (external) counterpart is held on processor p to the storage scheme for halo nodes. More...  
Node *&  external_halo_node_pt (const unsigned &p, const unsigned &j) 
Access fct to the jth external halo node in this Mesh whose nonhalo external counterpart is held on processor p. More...  
Vector< Node * >  external_halo_node_pt (const unsigned &p) 
Access fct to vector of external halo node in this Mesh whose nonhalo external counterpart is held on processor p. (read only) More...  
void  set_external_halo_node_pt (const unsigned &p, const Vector< Node * > &external_halo_node_pt) 
Set vector of external halo node in this Mesh whose nonhalo external counterpart is held on processor p. More...  
void  null_external_halo_node (const unsigned &p, Node *nod_pt) 
Null out specified external halo node (used when deleting duplicates) More...  
void  remove_null_pointers_from_external_halo_node_storage () 
Consolidate external halo node storage by removing nulled out pointes in external halo and haloed schemes. More...  
unsigned  nexternal_haloed_node () 
Total number of external haloed nodes in this Mesh. More...  
unsigned  nexternal_haloed_node (const unsigned &p) 
Number of external haloed nodes in this Mesh whose halo (external) counterpart is held on processor p. More...  
Node *&  external_haloed_node_pt (const unsigned &p, const unsigned &j) 
Access fct to the jth external haloed node in this Mesh whose halo external counterpart is held on processor p. More...  
unsigned  add_external_haloed_node_pt (const unsigned &p, Node *&nod_pt) 
Add external haloed node whose halo (external) counterpart is held on processor p to the storage scheme for haloed nodes. More...  
Vector< Node * >  external_haloed_node_pt (const unsigned &p) 
Access fct to vector of external haloed node in this Mesh whose halo external counterpart is held on processor p. (read only) More...  
void  set_external_haloed_node_pt (const unsigned &p, const Vector< Node * > &external_haloed_node_pt) 
Set vector of external haloed node in this Mesh whose halo external counterpart is held on processor p. More...  
std::set< int >  external_halo_proc () 
Return the set of processors that hold external halo nodes. This is required to avoid having to pass a communicator into the node_update functions for Algebraicbased and MacroElementbased Meshes. More...  
virtual 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, only used in unstructured meshes In this case with the "TriangleMesh" class. More...  
virtual unsigned  try_to_add_root_haloed_element_pt (const unsigned &p, GeneralisedElement *&el_pt) 
virtual unsigned  try_to_add_haloed_node_pt (const unsigned &p, Node *&nod_pt) 
void  delete_all_external_storage () 
Wipe the storage for all externallybased elements. More...  
Private Attributes  
unsigned  Nx 
Number of elements in x direction. More...  
unsigned  Ny 
Number of elements in y directions. More...  
double  Lx 
Length of mesh in xdirection. More...  
double  Ly 
Length of mesh in ydirection. More...  
Additional Inherited Members  
Public Types inherited from oomph::Mesh  
typedef void(FiniteElement::*  SteadyExactSolutionFctPt) (const Vector< double > &x, Vector< double > &soln) 
Typedef for function pointer to function that computes steady exact solution. More...  
typedef void(FiniteElement::*  UnsteadyExactSolutionFctPt) (const double &time, const Vector< double > &x, Vector< double > &soln) 
Typedef for function pointer to function that computes unsteady exact solution. More...  
Public Attributes inherited from oomph::UnstructuredTwoDMeshGeometryBase  
std::map< unsigned, bool >  Assigned_segments_initial_zeta_values 
Flag used at the setup_boundary_coordinate function to know if initial zeta values for segments have been assigned. More...  
Public Attributes inherited from oomph::Mesh  
bool  Output_halo_elements 
Bool for output of halo elements. More...  
Static Public Attributes inherited from oomph::UnstructuredTwoDMeshGeometryBase  
static bool  Suppress_warning_about_regions_and_boundaries 
Public static flag to suppress warning; defaults to false. More...  
Static Public Attributes inherited from oomph::Mesh  
static Steady< 0 >  Default_TimeStepper 
Default Steady Timestepper, to be used in default arguments to Mesh constructors. More...  
static bool  Suppress_warning_about_empty_mesh_level_time_stepper_function 
Boolean used to control warning about empty mesh level timestepper function. More...  
Protected Member Functions inherited from oomph::UnstructuredTwoDMeshGeometryBase  
void  build_triangulateio (Vector< TriangleMeshPolygon * > &outer_polygons_pt, Vector< TriangleMeshPolygon * > &internal_polygons_pt, Vector< TriangleMeshOpenCurve * > &open_curves_pt, Vector< Vector< double >> &extra_holes_coordinates, std::map< unsigned, Vector< double >> ®ions_coordinates, std::map< unsigned, double > ®ions_areas, TriangulateIO &triangulate_io) 
Create TriangulateIO object from outer boundaries, internal boundaries, and open curves. Add the holes and regions information as well. More...  
void  add_connection_matrix_info_helper (TriangleMeshPolyLine *polyline_pt, std::map< unsigned, std::map< unsigned, Vector< vertex_connection_info >>> &connection_matrix, TriangleMeshPolyLine *next_polyline_pt=0) 
Helps to add information to the connection matrix of the given polyline. More...  
void  initialise_base_vertex (TriangleMeshPolyLine *polyline_pt, std::map< unsigned, std::map< unsigned, Vector< base_vertex_info >>> &base_vertices) 
Initialise the base vertex structure, set every vertex to no visited and not being a base vertex. More...  
void  add_base_vertex_info_helper (TriangleMeshPolyLine *polyline_pt, std::map< unsigned, std::map< unsigned, Vector< base_vertex_info >>> &base_vertices, std::map< unsigned, std::map< unsigned, Vector< vertex_connection_info >>> &connection_matrix, std::map< unsigned, std::map< unsigned, unsigned >> &boundary_chunk_nvertices) 
Helps to identify the base vertex of the given polyline. More...  
void  snap_nodes_onto_geometric_objects () 
Snap the boundary nodes onto any curvilinear boundaries defined by geometric objects. More...  
void  copy_connection_information (TriangleMeshCurveSection *input_curve_pt, TriangleMeshCurveSection *output_curve_pt) 
Helper function to copy the connection information from the input curve(polyline or curviline) to the output polyline. More...  
void  copy_connection_information_to_sub_polylines (TriangleMeshCurveSection *input_curve_pt, TriangleMeshCurveSection *output_curve_pt) 
Helper function to copy the connection information from the input curve(polyline or curviline) to the output subpolyline. More...  
void  create_vertex_coordinates_for_polyline_no_connections (TriangleMeshCurviLine *boundary_pt, Vector< Vector< double >> &vertex_coord, Vector< std::pair< double, double >> &polygonal_vertex_arclength_info) 
Helper function to create polyline vertex coordinates for curvilinear boundary specified by boundary_pt, using either equal increments in zeta or in (approximate) arclength along the curviline. vertex_coord[i_vertex][i_dim] stores i_dimth coordinate of i_vertexth vertex. polygonal_vertex_arclength_info[i_vertex] contains the pair of doubles made of the arclength of the i_vertexth vertex along the polygonal representation (.first), and the corresponding coordinate on the GeomObject (.second) More...  
void  create_vertex_coordinates_for_polyline_connections (TriangleMeshCurviLine *boundary_pt, Vector< Vector< double >> &vertex_coord, Vector< std::pair< double, double >> &polygonal_vertex_arclength_info) 
Helper function to create polyline vertex coordinates for curvilinear boundary specified by boundary_pt, using either equal increments in zeta or in (approximate) arclength along the curviline. vertex_coord[i_vertex][i_dim] stores i_dimth coordinate of i_vertexth vertex. polygonal_vertex_arclength_info[i_vertex] contains the pair of doubles made of the arclength of the i_vertexth vertex along the polygonal representation (.first), and the corresponding coordinate on the GeomObject (.second) More...  
TriangleMeshPolygon *  closed_curve_to_polygon_helper (TriangleMeshClosedCurve *closed_curve_pt, unsigned &max_bnd_id_local) 
Helper function that returns a polygon representation for the given closed curve, it also computes the maximum boundary id of the constituent curves. If the TriangleMeshClosedCurve is already a TriangleMeshPolygon we simply return a pointer to it. Otherwise a new TrilangleMeshPolygon is created – this is deleted automatically when the TriangleMesh destructor is called, so no external bookkeeping is required. More...  
TriangleMeshOpenCurve *  create_open_curve_with_polyline_helper (TriangleMeshOpenCurve *open_curve_pt, unsigned &max_bnd_id_local) 
Helper function that creates and returns an open curve with the polyline representation of its constituent curve sections. The new created open curve is deleted when the TriangleMesh destructor is called. More...  
void  set_geom_objects_and_coordinate_limits_for_close_curve (TriangleMeshClosedCurve *input_closed_curve_pt) 
Stores the geometric objects associated to the curve sections that compound the closed curve. It also stores the limits defined by these geometric objects. More...  
void  set_geom_objects_and_coordinate_limits_for_open_curve (TriangleMeshOpenCurve *input_open_curve_pt) 
Stores the geometric objects associated to the curve sections that compound the open curve. It also stores the limits defined by these geometric objects. More...  
Protected Member Functions inherited from oomph::Mesh  
void  setup_shared_node_scheme () 
Setup shared node scheme. More...  
unsigned long  assign_global_eqn_numbers (Vector< double * > &Dof_pt) 
Assign the global equation numbers in the Data stored at the nodes and also internal element Data. Also, build (via push_back) the Vector of pointers to the dofs (variables). More...  
void  describe_dofs (std::ostream &out, const std::string ¤t_string) const 
Function to describe the dofs of the Mesh. The ostream specifies the output stream to which the description is written; the string stores the currently assembled output that is ultimately written to the output stream by Data::describe_dofs(...); it is typically built up incrementally as we descend through the call hierarchy of this function when called from Problem::describe_dofs(...) More...  
void  describe_local_dofs (std::ostream &out, const std::string ¤t_string) const 
Function to describe the local dofs of the elements. The ostream specifies the output stream to which the description is written; the string stores the currently assembled output that is ultimately written to the output stream by Data::describe_dofs(...); it is typically built up incrementally as we descend through the call hierarchy of this function when called from Problem::describe_dofs(...) More...  
void  assign_local_eqn_numbers (const bool &store_local_dof_pt) 
Assign the local equation numbers in all elements If the boolean argument is true then also store pointers to dofs. More...  
void  convert_to_boundary_node (Node *&node_pt, const Vector< FiniteElement * > &finite_element_pt) 
A function that upgrades an ordinary node to a boundary node We shouldn't ever really use this, but it does make life that bit easier for the lazy mesh writer. The pointer to the node is replaced by a pointer to the new boundary node in all element lookup schemes and in the mesh's Node_pt vector. The new node is also addressed by node_pt on return from the function. More...  
void  convert_to_boundary_node (Node *&node_pt) 
A function that upgrades an ordinary node to a boundary node. All pointers to the node from the mesh's elements are found. and replaced by pointers to the new boundary node. If the node is present in the mesh's list of nodes, that pointer is also replaced. Finally, the pointer argument node_pt addresses the new node on return from the function. We shouldn't ever really use this, but it does make life that bit easier for the lazy mesh writer. More...  
Protected Attributes inherited from oomph::TriangleMeshBase  
TriangulateIO  Triangulateio 
TriangulateIO representation of the mesh. More...  
bool  Use_triangulateio_restart 
Should we use triangulateio specific parts for dump/restart? (Doesn't work with some elements and isn't needed if not using adaptivity). More...  
Protected Attributes inherited from oomph::UnstructuredTwoDMeshGeometryBase  
std::map< unsigned, Vector< Vector< Node * > > >  Boundary_segment_node_pt 
Used to store the nodes associated to a boundary and to an specific segment (this only applies in distributed meshes where the boundary is splitted in segments) More...  
std::map< unsigned, Vector< double > >  Boundary_segment_initial_zeta 
Stores the initial zeta coordinate for the segments that appear when a boundary is splited among processors. More...  
std::map< unsigned, Vector< double > >  Boundary_segment_final_zeta 
Stores the final zeta coordinate for the segments that appear when a boundary is splited among processors. More...  
std::map< unsigned, Vector< double > >  Boundary_initial_coordinate 
Stores the initial coordinates for the boundary. More...  
std::map< unsigned, Vector< double > >  Boundary_final_coordinate 
Stores the final coordinates for the boundary. More...  
std::map< unsigned, Vector< unsigned > >  Boundary_segment_inverted 
Stores the info. to know if it is necessary to reverse the segment based on a previous mesh. More...  
std::map< unsigned, Vector< double > >  Boundary_initial_zeta_coordinate 
Stores the initial zeta coordinate for the boundary. More...  
std::map< unsigned, Vector< double > >  Boundary_final_zeta_coordinate 
Stores the final zeta coordinate for the boundary. More...  
std::map< unsigned, Vector< double > >  Boundary_segment_initial_arclength 
Stores the initial arclength for the segments that appear when a boundary is splited among processors. More...  
std::map< unsigned, Vector< double > >  Boundary_segment_final_arclength 
Stores the final arclength for the segments that appear when a boundary is splited among processors. More...  
std::map< unsigned, Vector< Vector< double > > >  Boundary_segment_initial_coordinate 
Stores the initial coordinates for the segments that appear when a boundary is splited among processors. More...  
std::map< unsigned, Vector< Vector< double > > >  Boundary_segment_final_coordinate 
Stores the final coordinates for the segments that appear when a boundary is splited among processors. More...  
bool  Allow_automatic_creation_of_vertices_on_boundaries 
Flag to indicate whether the automatic creation of vertices along the boundaries by Triangle is allowed. More...  
std::map< unsigned, Vector< FiniteElement * > >  Region_element_pt 
Vector of elements in each region differentiated by attribute (the key of the map is the attribute) More...  
Vector< double >  Region_attribute 
Vector of attributes associated with the elements in each region. More...  
std::map< unsigned, GeomObject * >  Boundary_geom_object_pt 
Storage for the geometric objects associated with any boundaries. More...  
std::map< unsigned, Vector< double > >  Boundary_coordinate_limits 
Storage for the limits of the boundary coordinates defined by the use of geometric objects. Only used for curvilinear boundaries. More...  
Vector< TriangleMeshPolygon * >  Outer_boundary_pt 
Polygon that defines outer boundaries. More...  
Vector< TriangleMeshPolygon * >  Internal_polygon_pt 
Vector of polygons that define internal polygons. More...  
Vector< TriangleMeshOpenCurve * >  Internal_open_curve_pt 
Vector of open polylines that define internal curves. More...  
Vector< Vector< double > >  Extra_holes_coordinates 
Storage for extra coordinates for holes. More...  
std::map< unsigned, Vector< double > >  Regions_coordinates 
Storage for extra coordinates for regions. The key on the map is the region id. More...  
std::map< unsigned, TriangleMeshCurveSection * >  Boundary_curve_section_pt 
A map that stores the associated curve section of the specified boundary id. More...  
Vector< std::map< unsigned, Vector< FiniteElement * > > >  Boundary_region_element_pt 
Storage for elements adjacent to a boundary in a particular region. More...  
Vector< std::map< unsigned, Vector< int > > >  Face_index_region_at_boundary 
Storage for the face index adjacent to a boundary in a particular region. More...  
std::map< unsigned, Vector< std::pair< double, double > > >  Polygonal_vertex_arclength_info 
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. More...  
std::map< unsigned, std::set< Node * > >  Nodes_on_boundary_pt 
Stores a pointer to a set with all the nodes related with a boundary. More...  
std::set< TriangleMeshCurveSection * >  Free_curve_section_pt 
A set that contains the curve sections created by this object therefore it is necessary to free their associated memory. More...  
std::set< TriangleMeshPolygon * >  Free_polygon_pt 
A set that contains the polygons created by this object therefore it is necessary to free their associated memory. More...  
std::set< TriangleMeshOpenCurve * >  Free_open_curve_pt 
A set that contains the open curves created by this object therefore it is necessary to free their associated memory. More...  
bool  Immersed_rigid_body_triangle_mesh_polygon_used 
Protected Attributes inherited from oomph::Mesh  
Vector< Vector< Node * > >  Boundary_node_pt 
Vector of Vector of pointers to nodes on the boundaries: Boundary_node_pt(b,n). Note that this is private to force the use of the add_boundary_node() function, which ensures that the reverse lookup schemes for the nodes are set up. More...  
bool  Lookup_for_elements_next_boundary_is_setup 
Flag to indicate that the lookup schemes for elements that are adjacent to the boundaries has been set up. More...  
Vector< Vector< FiniteElement * > >  Boundary_element_pt 
Vector of Vector of pointers to elements on the boundaries: Boundary_element_pt(b,e) More...  
Vector< Vector< int > >  Face_index_at_boundary 
For the eth finite element on boundary b, this is the index of the face that lies along that boundary. More...  
std::map< unsigned, Vector< GeneralisedElement * > >  Root_halo_element_pt 
Map of vectors holding the pointers to the root halo elements. More...  
std::map< unsigned, Vector< GeneralisedElement * > >  Root_haloed_element_pt 
Map of vectors holding the pointers to the root haloed elements. More...  
std::map< unsigned, Vector< Node * > >  Halo_node_pt 
Map of vectors holding the pointers to the halo nodes. More...  
std::map< unsigned, Vector< Node * > >  Haloed_node_pt 
Map of vectors holding the pointers to the haloed nodes. More...  
std::map< unsigned, Vector< Node * > >  Shared_node_pt 
Map of vectors holding the pointers to the shared nodes. These are all the nodes that are on two "neighbouring" processes (the halo(ed) lookup scheme depends upon which processor is in charge. More...  
OomphCommunicator *  Comm_pt 
Pointer to communicator – set to NULL if mesh is not distributed. More...  
std::map< unsigned, Vector< GeneralisedElement * > >  External_halo_element_pt 
External halo(ed) elements are created as and when they are needed to act as source elements for the particular process's mesh. The storage is wiped and rebuilt every time the mesh is refined. More...  
std::map< unsigned, Vector< GeneralisedElement * > >  External_haloed_element_pt 
Map of vectors holding the pointers to the external haloed elements. More...  
std::map< unsigned, Vector< Node * > >  External_halo_node_pt 
Map of vectors holding the pointers to the external halo nodes. More...  
std::map< unsigned, Vector< Node * > >  External_haloed_node_pt 
Map of vectors holding the pointers to the external haloed nodes. More...  
bool  Keep_all_elements_as_halos 
bool to indicate whether to keep all elements in a mesh as halos or not More...  
bool  Resize_halo_nodes_not_required 
Set this to true to suppress resizing of halo nodes (at your own risk!) More...  
Vector< Node * >  Node_pt 
Vector of pointers to nodes. More...  
Vector< GeneralisedElement * >  Element_pt 
Vector of pointers to generalised elements. More...  
std::vector< bool >  Boundary_coordinate_exists 
Vector of boolean data that indicates whether the boundary coordinates have been set for the boundary. More...  
Simple 2D triangular mesh for TElements.
Definition at line 48 of file simple_rectangular_tri_mesh.template.h.
oomph::SimpleRectangularTriMesh< ELEMENT >::SimpleRectangularTriMesh  (  const unsigned &  n_x, 
const unsigned &  n_y,  
const double &  l_x,  
const double &  l_y,  
TimeStepper *  time_stepper_pt = &Mesh::Default_TimeStepper 

) 
Constructor n_x : number of elements in the x direction; n_y : number of elements in the y direction; l_x : length in the x direction l_y : length in the y direction Ordering of elements: 'lower left' to 'lower right' then 'upwards'.
Constructor for simple 2D triangular mesh class:
n_x : number of elements in the x direction
n_y : number of elements in the y direction
l_x : length in the x direction
l_y : length in the y direction
Ordering of elements: 'lower left' to 'lower right' then 'upwards'
Definition at line 54 of file simple_rectangular_tri_mesh.template.cc.
References oomph::Mesh::add_boundary_node(), oomph::FiniteElement::construct_node(), oomph::Mesh::convert_to_boundary_node(), oomph::Mesh::Element_pt, oomph::Mesh::finite_element_pt(), i, oomph::SimpleRectangularTriMesh< ELEMENT >::Lx, oomph::SimpleRectangularTriMesh< ELEMENT >::Ly, oomph::FiniteElement::nnode_1d(), oomph::FiniteElement::node_pt(), oomph::Mesh::Node_pt, oomph::SimpleRectangularTriMesh< ELEMENT >::Nx, oomph::SimpleRectangularTriMesh< ELEMENT >::Ny, and oomph::Mesh::set_nboundary().

inline 
Access function for number of elements in x directions.
Definition at line 65 of file simple_rectangular_tri_mesh.template.h.
References oomph::SimpleRectangularTriMesh< ELEMENT >::Nx.

inline 
Access function for number of elements in y directions.
Definition at line 71 of file simple_rectangular_tri_mesh.template.h.
References oomph::SimpleRectangularTriMesh< ELEMENT >::Ny.

private 
Length of mesh in xdirection.
Definition at line 84 of file simple_rectangular_tri_mesh.template.h.
Referenced by oomph::SimpleRectangularTriMesh< ELEMENT >::SimpleRectangularTriMesh().

private 
Length of mesh in ydirection.
Definition at line 87 of file simple_rectangular_tri_mesh.template.h.
Referenced by oomph::SimpleRectangularTriMesh< ELEMENT >::SimpleRectangularTriMesh().

private 
Number of elements in x direction.
Definition at line 78 of file simple_rectangular_tri_mesh.template.h.
Referenced by oomph::SimpleRectangularTriMesh< ELEMENT >::nx(), and oomph::SimpleRectangularTriMesh< ELEMENT >::SimpleRectangularTriMesh().

private 
Number of elements in y directions.
Definition at line 81 of file simple_rectangular_tri_mesh.template.h.
Referenced by oomph::SimpleRectangularTriMesh< ELEMENT >::ny(), and oomph::SimpleRectangularTriMesh< ELEMENT >::SimpleRectangularTriMesh().