Mesh1D< ELEMENT > Class Template Reference
+ Inheritance diagram for Mesh1D< ELEMENT >:

Public Member Functions

 Mesh1D (const unsigned &N1, const unsigned &N2, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 
const unsignedn1 () const
 
const unsignedn2 () const
 
const unsignednx () const
 
FiniteElementfinite_element_pt (const unsigned &ielem)
 Return pointer to FiniteElement. More...
 
 Mesh1D (const unsigned &N1, const unsigned &N2, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 
const unsignedn1 () const
 
const unsignedn2 () const
 
const unsignednx () const
 
FiniteElementfinite_element_pt (const unsigned &ielem)
 Return pointer to FiniteElement. More...
 
- Public Member Functions inherited from oomph::Mesh
 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...
 
Nodenode_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...
 
GeneralisedElementelement_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...
 
FiniteElementfinite_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...
 
Nodeboundary_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...
 
FiniteElementboundary_element_pt (const unsigned &b, const unsigned &e) const
 Return pointer to e-th finite element on boundary b. More...
 
Nodeget_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 &parameter_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...
 
OomphCommunicatorcommunicator_pt () const
 
void delete_all_external_storage ()
 Wipe the storage for all externally-based elements. More...
 

Private Attributes

unsigned N1
 
unsigned N2
 

Additional Inherited Members

- Public Types inherited from oomph::Mesh
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)
 
- Static Public Attributes inherited from oomph::Mesh
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 inherited from oomph::Mesh
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 &current_string) const
 
void describe_local_dofs (std::ostream &out, const std::string &current_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)
 
- Protected Attributes inherited from oomph::Mesh
Vector< Vector< Node * > > Boundary_node_pt
 
bool Lookup_for_elements_next_boundary_is_setup
 
Vector< Vector< FiniteElement * > > Boundary_element_pt
 
Vector< Vector< int > > Face_index_at_boundary
 
Vector< Node * > Node_pt
 Vector of pointers to nodes. More...
 
Vector< GeneralisedElement * > Element_pt
 Vector of pointers to generalised elements. More...
 
std::vector< boolBoundary_coordinate_exists
 

Constructor & Destructor Documentation

◆ Mesh1D() [1/2]

template<class ELEMENT >
Mesh1D< ELEMENT >::Mesh1D ( const unsigned N1,
const unsigned N2,
TimeStepper time_stepper_pt = &Mesh::Default_TimeStepper 
)
81 {
82 
83  //Set the internal values
84  N1 = n1; N2 = n2;
85 
86  //Resize the boundary node pointer to the number of boundaries
87  set_nboundary(2);
88 
89  unsigned Nx = N1 + N2;
90 
91  //Allocate the store for the elements
92  Element_pt.resize(Nx);
93  //Allocate the memory for the first element
94  Element_pt[0] = new ELEMENT;
95  //Read out the number of linear points in the element
96  unsigned Np = dynamic_cast<ELEMENT*>(finite_element_pt(0))->nnode_1d();
97 
98  //Can now allocate the store for the nodes
99  Node_pt.resize(1 + (Np-1)*Nx);
100 
101  //Set up geometrical data
102  unsigned long node_count=0;
103  double x1init = -1.0, x2init = 0.0;
104  //Set the values of the increments
105  double x1step = 1.0/((Np-1)*N1), x2step = 1.0/((Np-1)*N2);
106 
107  //Now assign the topology
108  //Boundaries are numbered 0 (bottom) 1 (top)
109 
110  //FIRST ELEMENT (bottom)
111  //Allocate memory for the node
112  Node_pt[node_count] = finite_element_pt(0)->
113  construct_boundary_node(0,time_stepper_pt);
114  //Set the position of the node
115  Node_pt[node_count]->x(0) = x1init;
116  //Push the node back onto boundary
117  add_boundary_node(0,Node_pt[node_count]);
118  //Increment the node number
119  node_count++;
120 
121  //Loop over the other nodes in the first element
122  for(unsigned l1=1;l1<Np;l1++)
123  {
124  //Allocate memory for the nodes
125  Node_pt[node_count] =
126  finite_element_pt(0)->construct_node(l1,time_stepper_pt);
127  //Set the position of the node
128  Node_pt[node_count]->x(0) = x1init + x1step*l1;
129  //Increment the node number
130  node_count++;
131  }
132  //END OF FIRST ELEMENT
133 
134  //CENTRAL ELEMENTS
135  //Loop over all other elements apart from the last element
136  for(unsigned j=1;j<(Nx-1);j++)
137  {
138  //Allocate memory for new element
139  Element_pt[j] = new ELEMENT;
140  //First node is same as last node of previous element
142  //New nodes
143  for(unsigned l1=1;l1<Np;l1++)
144  {
145  //Allocate memory for the nodes
146  Node_pt[node_count] =
147  finite_element_pt(j)->construct_node(l1,time_stepper_pt);
148 
149  //Set the position of the node
150  if(j<N1)
151  {
152  Node_pt[node_count]->x(0) = x1init + x1step*(l1+(Np-1)*j);
153  }
154  else
155  {
156  Node_pt[node_count]->x(0) = x2init + x2step*(l1+(Np-1)*(j-N1));
157  }
158  //Increment the node number
159  node_count++;
160  }
161  }
162  //END OF CENTRAL ELEMENTS
163 
164  //FINAL ELEMENT (top)
165  //Allocate memory for element
166  Element_pt[Nx-1] = new ELEMENT;
167  //First nodes is same as last node of previous element
169 
170  //Assign the new middle nodes
171  for(unsigned l1=1;l1<(Np-1);l1++)
172  {
173  //Allocate memory for node
174  Node_pt[node_count] = finite_element_pt(Nx-1)->construct_node(l1,time_stepper_pt);
175  //Set the position of the node
176  Node_pt[node_count]->x(0) = x2init + x2step*(l1+(Np-1)*(N2-1));
177  //Increment the node number
178  node_count++;
179  }
180 
181  //New final node
182  //Allocate memory for the node
183  Node_pt[node_count] =
184  finite_element_pt(Nx-1)->construct_boundary_node(Np-1,time_stepper_pt);
185  //Set the position of the node
186  Node_pt[node_count]->x(0) = x2init + x2step*((Np-1)*N2);
187  //Push the node back onto boundary
188  add_boundary_node(1,Node_pt[node_count]);
189  //Increment the node number
190  node_count++;
191  //END OF FINAL ELEMENT IN MESH
192 }
unsigned N1
Definition: bifurcation_tracking/pitchfork.cc:56
const unsigned & n2() const
Definition: bifurcation_tracking/pitchfork.cc:63
FiniteElement * finite_element_pt(const unsigned &ielem)
Return pointer to FiniteElement.
Definition: bifurcation_tracking/pitchfork.cc:67
unsigned N2
Definition: bifurcation_tracking/pitchfork.cc:56
const unsigned & n1() const
Definition: bifurcation_tracking/pitchfork.cc:62
virtual Node * construct_node(const unsigned &n)
Definition: elements.h:2509
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
Definition: elements.h:2175
virtual Node * construct_boundary_node(const unsigned &n)
Definition: elements.h:2538
void add_boundary_node(const unsigned &b, Node *const &node_pt)
Add a (pointer to) a node to the b-th boundary.
Definition: mesh.cc:243
Vector< Node * > Node_pt
Vector of pointers to nodes.
Definition: mesh.h:183
void set_nboundary(const unsigned &nbound)
Set the number of boundaries in the mesh.
Definition: mesh.h:505
Vector< GeneralisedElement * > Element_pt
Vector of pointers to generalised elements.
Definition: mesh.h:186
unsigned Nx
Number of elements in each direction (used by SimpleCubicMesh)
Definition: structured_cubic_point_source.cc:114
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References j, and GlobalParameters::Nx.

◆ Mesh1D() [2/2]

template<class ELEMENT >
Mesh1D< ELEMENT >::Mesh1D ( const unsigned N1,
const unsigned N2,
TimeStepper time_stepper_pt = &Mesh::Default_TimeStepper 
)

Member Function Documentation

◆ finite_element_pt() [1/2]

template<class ELEMENT >
FiniteElement* Mesh1D< ELEMENT >::finite_element_pt ( const unsigned ielem)
inline

Return pointer to FiniteElement.

68  { return dynamic_cast<FiniteElement*>(Element_pt[ielem]);}
Definition: elements.h:1313

◆ finite_element_pt() [2/2]

template<class ELEMENT >
FiniteElement* Mesh1D< ELEMENT >::finite_element_pt ( const unsigned ielem)
inline

Return pointer to FiniteElement.

68  { return dynamic_cast<FiniteElement*>(Element_pt[ielem]);}

◆ n1() [1/2]

template<class ELEMENT >
const unsigned& Mesh1D< ELEMENT >::n1 ( ) const
inline
62 {return N1;}

◆ n1() [2/2]

template<class ELEMENT >
const unsigned& Mesh1D< ELEMENT >::n1 ( ) const
inline
62 {return N1;}

◆ n2() [1/2]

template<class ELEMENT >
const unsigned& Mesh1D< ELEMENT >::n2 ( ) const
inline
63 {return N2;}

◆ n2() [2/2]

template<class ELEMENT >
const unsigned& Mesh1D< ELEMENT >::n2 ( ) const
inline
63 {return N2;}

◆ nx() [1/2]

template<class ELEMENT >
const unsigned& Mesh1D< ELEMENT >::nx ( ) const
inline
64 {return N1+N2;}

◆ nx() [2/2]

template<class ELEMENT >
const unsigned& Mesh1D< ELEMENT >::nx ( ) const
inline
64 {return N1+N2;}

Member Data Documentation

◆ N1

template<class ELEMENT >
unsigned Mesh1D< ELEMENT >::N1
private

◆ N2

template<class ELEMENT >
unsigned Mesh1D< ELEMENT >::N2
private

The documentation for this class was generated from the following file: