oomph::SpineMesh Class Referenceabstract

#include <spines.h>

+ Inheritance diagram for oomph::SpineMesh:

Public Member Functions

virtual ~SpineMesh ()
 Destructor to clean up the memory allocated to the spines. More...
 
Spine *& spine_pt (const unsigned long &i)
 Return the i-th spine in the mesh. More...
 
const Spinespine_pt (const unsigned long &i) const
 Return the i-th spine in the mesh (const version) More...
 
unsigned long nspine () const
 Return the number of spines in the mesh. More...
 
void add_spine_pt (Spine *const &spine_pt)
 Add a spine to the mesh. More...
 
SpineNodenode_pt (const unsigned long &n)
 Return a pointer to the n-th global SpineNode. More...
 
SpineNodeelement_node_pt (const unsigned long &e, const unsigned &n)
 
unsigned long assign_global_spine_eqn_numbers (Vector< double * > &Dof_pt)
 Assign spines to Spine_pt vector of element. More...
 
void describe_spine_dofs (std::ostream &out, const std::string &current_string) const
 
void set_mesh_level_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 
void set_spine_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 Assign time stepper to spines data. More...
 
void set_consistent_pinned_spine_values_for_continuation (ContinuationStorageScheme *const &continuation_stepper_pt)
 
bool does_pointer_correspond_to_spine_data (double *const &parameter_pt)
 
void node_update (const bool &update_all_solid_nodes=false)
 
virtual void spine_node_update (SpineNode *spine_node_pt)=0
 
void dump (std::ofstream &dump_file) const
 Overload the dump function so that the spine data is dumped. More...
 
void read (std::ifstream &restart_file)
 Overload the read function so that the spine data is also read. 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 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...
 
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)
 
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...
 

Protected Attributes

Vector< Spine * > Spine_pt
 A Spine mesh contains a Vector of pointers to spines. More...
 
- 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
 

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)
 

Detailed Description

/////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// General SpineMesh class.

Derived from Mesh with virtual so that spine meshes can be derived from general meshes, without multiple copies of Mesh objects.

Constructor & Destructor Documentation

◆ ~SpineMesh()

SpineMesh::~SpineMesh ( )
virtual

Destructor to clean up the memory allocated to the spines.

//////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////

67  {
68  // Set the range of Spine_pt
69  unsigned long Spine_pt_range = Spine_pt.size();
70  // Loop over the entries in reverse and free memory
71  for (unsigned long i = Spine_pt_range; i > 0; i--)
72  {
73  delete Spine_pt[i - 1];
74  Spine_pt[i - 1] = 0;
75  }
76  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Vector< Spine * > Spine_pt
A Spine mesh contains a Vector of pointers to spines.
Definition: spines.h:616

References i, and Spine_pt.

Member Function Documentation

◆ add_spine_pt()

void oomph::SpineMesh::add_spine_pt ( Spine *const &  spine_pt)
inline

Add a spine to the mesh.

642  {
643  Spine_pt.push_back(spine_pt);
644  }
Spine *& spine_pt(const unsigned long &i)
Return the i-th spine in the mesh.
Definition: spines.h:623

References Spine_pt, and spine_pt().

◆ assign_global_spine_eqn_numbers()

unsigned long SpineMesh::assign_global_spine_eqn_numbers ( Vector< double * > &  Dof_pt)

Assign spines to Spine_pt vector of element.

Assign (global) equation numbers to spines, nodes and elements.

Assign equation numbers for spines

126  {
127  // Find the current number of dofs
128  unsigned long equation_number = Dof_pt.size();
129 
130  // Loop over spines and set global equation numbers for the spine heights
131  // (they are the only Data items whose global eqn numbers are assigned
132  // here)
133  unsigned long Spine_pt_range = Spine_pt.size();
134  for (unsigned long i = 0; i < Spine_pt_range; i++)
135  {
136  Spine_pt[i]->spine_height_pt()->assign_eqn_numbers(equation_number,
137  Dof_pt);
138  }
139 
140  // Return the total number of equations
141  return (equation_number);
142  }

References i, and Spine_pt.

◆ describe_spine_dofs()

void SpineMesh::describe_spine_dofs ( std::ostream &  out,
const std::string &  current_string 
) const

Function to describe the dofs of the Spine. 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(...)

156  {
157  // Describe spine heights.
158  unsigned long Spine_pt_range = Spine_pt.size();
159  for (unsigned long i = 0; i < Spine_pt_range; i++)
160  {
161  std::stringstream conversion;
162  conversion << " of Spine Height " << i << current_string;
163  std::string in(conversion.str());
164  Spine_pt[i]->spine_height_pt()->describe_dofs(out, in);
165  }
166  }
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286
std::ofstream out("Result.txt")

References i, out(), Spine_pt, and oomph::Global_string_for_annotation::string().

◆ does_pointer_correspond_to_spine_data()

bool SpineMesh::does_pointer_correspond_to_spine_data ( double *const &  parameter_pt)

Check whether the pointer parameter_pt addresses data stored in the spines

Return true if the pointer addresses data stored within the spines, false if not.

209  {
210  // Loop over spines and check their data
211  const unsigned long n_spine = this->nspine();
212  for (unsigned long i = 0; i < n_spine; i++)
213  {
214  if (this->Spine_pt[i]
215  ->spine_height_pt()
216  ->does_pointer_correspond_to_value(parameter_pt))
217  {
218  return true;
219  }
220  }
221 
222  // If we haven't found it yet, then it's not present in the spine data
223  return false;
224  }
unsigned long nspine() const
Return the number of spines in the mesh.
Definition: spines.h:635

References i, nspine(), and Spine_pt.

◆ dump()

void SpineMesh::dump ( std::ofstream &  dump_file) const

Overload the dump function so that the spine data is dumped.

Overload the dump function so that the spine data is also dumped.

230  {
231  // Call the standard mesh dump function
232  Mesh::dump(dump_file);
233 
234  // Now loop over the spine data and dump the spine height data
235  // The ASSUMPTION is that the geometric data is stored elsewhere and will
236  // be dumped elsewhere
237 
238  // Find the number of spines
239  unsigned long n_spine = nspine();
240  // Doc number of spines
241  dump_file << n_spine << " # number of spines " << std::endl;
242 
243  // Loop over the spines
244  for (unsigned long s = 0; s < n_spine; s++)
245  {
246  spine_pt(s)->spine_height_pt()->dump(dump_file);
247  }
248  }
void dump(std::ostream &dump_file) const
Dump the data object to a file.
Definition: nodes.cc:645
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.
Definition: mesh.cc:1088
Data *& spine_height_pt()
Access function to Data object that stores the spine height.
Definition: spines.h:156
RealScalar s
Definition: level1_cplx_impl.h:130

References oomph::Mesh::dump(), oomph::Data::dump(), nspine(), s, oomph::Spine::spine_height_pt(), and spine_pt().

◆ element_node_pt()

SpineNode* oomph::SpineMesh::element_node_pt ( const unsigned long &  e,
const unsigned n 
)
inline

Return the n-th local SpineNode in element e. This is required to cast the nodes in a spine mesh to be SpineNodes and therefore allow access to the extra SpineNode data

670  {
671 #ifdef PARANOID
672  // Try to cast to FiniteElement
673  FiniteElement* el_pt = dynamic_cast<FiniteElement*>(Element_pt[e]);
674  if (el_pt == 0)
675  {
676  throw OomphLibError(
677  "Can't execute element_node_pt(...) for non FiniteElements",
680  }
681  if (!dynamic_cast<SpineNode*>(el_pt->node_pt(n)))
682  {
683  std::ostringstream error_message;
684  error_message << "Node " << n << "is a "
685  << typeid(el_pt->node_pt(n)).name() << ", not a SpineNode"
686  << std::endl;
687 
688  throw OomphLibError(error_message.str(),
691  }
692 #endif
693  // Return a cast to the node pointer
694  return (dynamic_cast<SpineNode*>(
695  dynamic_cast<FiniteElement*>(Element_pt[e])->node_pt(n)));
696  }
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
Array< double, 1, 3 > e(1./3., 0.5, 2.)
Vector< GeneralisedElement * > Element_pt
Vector of pointers to generalised elements.
Definition: mesh.h:186
SpineNode * node_pt(const unsigned long &n)
Return a pointer to the n-th global SpineNode.
Definition: spines.h:648
string name
Definition: plotDoE.py:33
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86

References e(), oomph::Mesh::Element_pt, n, plotDoE::name, oomph::FiniteElement::node_pt(), node_pt(), OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by SimpleSpineMesh< ELEMENT >::SimpleSpineMesh().

◆ node_pt()

SpineNode* oomph::SpineMesh::node_pt ( const unsigned long &  n)
inline

Return a pointer to the n-th global SpineNode.

649  {
650 #ifdef PARANOID
651  if (!dynamic_cast<SpineNode*>(Node_pt[n]))
652  {
653  std::ostringstream error_message;
654  error_message << "Node " << n << "is a " << typeid(Node_pt[n]).name()
655  << ", not a SpineNode" << std::endl;
656 
657  throw OomphLibError(error_message.str(),
660  }
661 #endif
662  // Return a cast to the pointer to the node
663  return (dynamic_cast<SpineNode*>(Node_pt[n]));
664  }
Vector< Node * > Node_pt
Vector of pointers to nodes.
Definition: mesh.h:183

References n, plotDoE::name, oomph::Mesh::Node_pt, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by CombCanSpineMesh< ELEMENT, INTERFACE_ELEMENT >::build_single_layer_mesh(), CombTipSpineMesh< ELEMENT, INTERFACE_ELEMENT >::build_single_layer_mesh(), STSpineMesh< ELEMENT, INTERFACE_ELEMENT >::build_single_layer_mesh(), doc_sparse_node_update(), element_node_pt(), CombCanSpineMesh< ELEMENT, INTERFACE_ELEMENT >::rotate_90(), CombTipSpineMesh< ELEMENT, INTERFACE_ELEMENT >::rotate_90_zeq1_xeq0(), and CombTipSpineMesh< ELEMENT, INTERFACE_ELEMENT >::rotate_90_zeq1_yeq0().

◆ node_update()

void SpineMesh::node_update ( const bool update_all_solid_nodes = false)
virtual

Update function to update all nodes of mesh [Doesn't make sense to use this mesh with SolidElements anyway, so we buffer the case if update_all_solid_nodes is set to true.]

Update function to update all nodes of mesh. [Doesn't make sense to use this mesh with SolidElements anyway, so we buffer the case if update_all_solid_nodes (which defaults to false) is set to true.]

Reimplemented from oomph::Mesh.

85  {
86 #ifdef PARANOID
87  if (update_all_solid_nodes)
88  {
89  std::string error_message =
90  "Doesn't make sense to use an SpineMesh with\n";
91  error_message +=
92  "SolidElements so specifying update_all_solid_nodes=true\n";
93  error_message += "doesn't make sense either\n";
94 
95  throw OomphLibError(
97  }
98 #endif
99 
100  // Loop over all the nodes
101  unsigned long Node_pt_range = Node_pt.size();
102  for (unsigned long l = 0; l < Node_pt_range; l++)
103  {
104 #ifdef PARANOID
105  if (!dynamic_cast<SpineNode*>(Node_pt[l]))
106  {
107  std::ostringstream error_stream;
108  error_stream << "Error: Node " << l << "is a "
109  << typeid(Node_pt[l]).name() << ", not a SpineNode"
110  << std::endl;
111  throw OomphLibError(
112  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
113  }
114 #endif
115 
116  // Need to cast to spine node to get to update function
117  dynamic_cast<SpineNode*>(Node_pt[l])->node_update();
118  }
119  }
void node_update(const bool &update_all_solid_nodes=false)
Definition: spines.cc:84

References plotDoE::name, oomph::Mesh::Node_pt, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::actions_before_newton_convergence_check(), CapProblem< ELEMENT >::actions_before_newton_convergence_check(), CombTipSpineMesh< ELEMENT, INTERFACE_ELEMENT >::build_single_layer_mesh(), STSpineMesh< ELEMENT, INTERFACE_ELEMENT >::build_single_layer_mesh(), MeltSpinningProblem< ELEMENT >::deform_free_surface(), AxisymFreeSurfaceNozzleAdvDiffRobinProblem< ELEMENT >::deform_free_surface(), InterfaceProblem< ELEMENT, TIMESTEPPER >::deform_free_surface(), doc_sparse_node_update(), CombCanSpineMesh< ELEMENT, INTERFACE_ELEMENT >::rotate_90(), CombTipSpineMesh< ELEMENT, INTERFACE_ELEMENT >::rotate_90_zeq1_xeq0(), and CombTipSpineMesh< ELEMENT, INTERFACE_ELEMENT >::rotate_90_zeq1_yeq0().

◆ nspine()

◆ read()

void SpineMesh::read ( std::ifstream &  restart_file)
virtual

Overload the read function so that the spine data is also read.

Overload the read function so that the spine data is read from the restart file

Reimplemented from oomph::Mesh.

254  {
255  // Call the standard mesh read function
256  Mesh::read(restart_file);
257 
258  // Now loop over the spine data and dump the spine height data
259  // The ASSUMPTION is that the geometric data is stored elsewhere and will
260  // be dumped elsewhere
261 
262  // Get the number of spines
263  unsigned long n_spine = nspine();
264 
265  std::string input_string;
266  // Read line up to termination sign
267  getline(restart_file, input_string, '#');
268  // Ignore the restr of the line
269  restart_file.ignore(80, '\n');
270 
271  // check the number of spines
272  unsigned long check_n_spine = atoi(input_string.c_str());
273 
274  if (check_n_spine != n_spine)
275  {
276  std::ostringstream error_stream;
277  error_stream << "Number of spines in the restart file, " << check_n_spine
278  << std::endl
279  << "does not equal the number of spines in the mesh "
280  << n_spine << std::endl;
281 
282  throw OomphLibError(
283  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
284  }
285 
286  // Loop over the spines and read the data
287  for (unsigned long s = 0; s < n_spine; s++)
288  {
289  spine_pt(s)->spine_height_pt()->read(restart_file);
290  }
291  }
void read(std::ifstream &restart_file)
Read data object from a file.
Definition: nodes.cc:672
virtual void read(std::ifstream &restart_file)
Read solution from restart file.
Definition: mesh.cc:1130

References nspine(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::Mesh::read(), oomph::Data::read(), s, oomph::Spine::spine_height_pt(), spine_pt(), and oomph::Global_string_for_annotation::string().

◆ set_consistent_pinned_spine_values_for_continuation()

void SpineMesh::set_consistent_pinned_spine_values_for_continuation ( ContinuationStorageScheme *const &  continuation_stepper_pt)

Set any pinned spine "history" values to be consistent for continuation problems

Set the data associated with pinned spine values to be consistent for continuation when using the continuation storage scheme

191  {
192  // Loop over spines and set consistent values by using the function
193  // provided by the continuation storage scheme
194  const unsigned long n_spine = this->nspine();
195  for (unsigned long i = 0; i < n_spine; i++)
196  {
197  continuation_stepper_pt->set_consistent_pinned_values(
198  this->Spine_pt[i]->spine_height_pt());
199  }
200  }

References i, nspine(), oomph::ContinuationStorageScheme::set_consistent_pinned_values(), and Spine_pt.

◆ set_mesh_level_time_stepper()

void oomph::SpineMesh::set_mesh_level_time_stepper ( TimeStepper *const &  time_stepper_pt,
const bool preserve_existing_data 
)
inlinevirtual

Overload the mesh_level timestepper function to set the timestepper data for the spines

Reimplemented from oomph::Mesh.

723  {
724  this->set_spine_time_stepper(time_stepper_pt, preserve_existing_data);
725  }
void set_spine_time_stepper(TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
Assign time stepper to spines data.
Definition: spines.cc:171

References set_spine_time_stepper().

◆ set_spine_time_stepper()

void SpineMesh::set_spine_time_stepper ( TimeStepper *const &  time_stepper_pt,
const bool preserve_existing_data 
)

Assign time stepper to spines data.

Set the time stepper forthe spine data that is stored in the mesh.

173  {
174  // Loop over spines and set the time stepper for the spine heights
175  // (they are the only Data that are additional to the standard nodal and
176  // elemental)
177  const unsigned long n_spine = this->nspine();
178  for (unsigned long i = 0; i < n_spine; i++)
179  {
180  this->Spine_pt[i]->spine_height_pt()->set_time_stepper(
181  time_stepper_pt, preserve_existing_data);
182  }
183  }

References i, nspine(), and Spine_pt.

Referenced by set_mesh_level_time_stepper().

◆ spine_node_update()

◆ spine_pt() [1/2]

◆ spine_pt() [2/2]

const Spine* oomph::SpineMesh::spine_pt ( const unsigned long &  i) const
inline

Return the i-th spine in the mesh (const version)

630  {
631  return Spine_pt[i];
632  }

References i, and Spine_pt.

Member Data Documentation

◆ Spine_pt


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