![]() |
|
#include <spines.h>
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 Spine * | spine_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... | |
SpineNode * | node_pt (const unsigned long &n) |
Return a pointer to the n-th global SpineNode. More... | |
SpineNode * | element_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 ¤t_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 ¶meter_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... | |
![]() | |
Mesh () | |
Default constructor. More... | |
Mesh (const Vector< Mesh * > &sub_mesh_pt) | |
void | merge_meshes (const Vector< Mesh * > &sub_mesh_pt) |
virtual void | setup_boundary_element_info () |
virtual void | setup_boundary_element_info (std::ostream &outfile) |
virtual void | reset_boundary_element_info (Vector< unsigned > &ntmp_boundary_elements, Vector< Vector< unsigned >> &ntmp_boundary_elements_in_region, Vector< FiniteElement * > &deleted_elements) |
Virtual function to perform the reset boundary elements info rutines. More... | |
template<class BULK_ELEMENT > | |
void | doc_boundary_coordinates (const unsigned &b, std::ofstream &the_file) |
virtual void | scale_mesh (const double &factor) |
Mesh (const Mesh &dummy)=delete | |
Broken copy constructor. More... | |
void | operator= (const Mesh &)=delete |
Broken assignment operator. More... | |
virtual | ~Mesh () |
Virtual Destructor to clean up all memory. More... | |
void | flush_element_and_node_storage () |
void | flush_element_storage () |
void | flush_node_storage () |
Node *& | node_pt (const unsigned long &n) |
Return pointer to global node n. More... | |
Node * | node_pt (const unsigned long &n) const |
Return pointer to global node n (const version) More... | |
GeneralisedElement *& | element_pt (const unsigned long &e) |
Return pointer to element e. More... | |
GeneralisedElement * | element_pt (const unsigned long &e) const |
Return pointer to element e (const version) More... | |
const Vector< GeneralisedElement * > & | element_pt () const |
Return reference to the Vector of elements. More... | |
Vector< GeneralisedElement * > & | element_pt () |
Return reference to the Vector of elements. More... | |
FiniteElement * | finite_element_pt (const unsigned &e) const |
Node *& | boundary_node_pt (const unsigned &b, const unsigned &n) |
Return pointer to node n on boundary b. More... | |
Node * | boundary_node_pt (const unsigned &b, const unsigned &n) const |
Return pointer to node n on boundary b. More... | |
void | set_nboundary (const unsigned &nbound) |
Set the number of boundaries in the mesh. More... | |
void | remove_boundary_nodes () |
Clear all pointers to boundary nodes. More... | |
void | remove_boundary_nodes (const unsigned &b) |
void | remove_boundary_node (const unsigned &b, Node *const &node_pt) |
Remove a node from the boundary b. More... | |
void | add_boundary_node (const unsigned &b, Node *const &node_pt) |
Add a (pointer to) a node to the b-th boundary. More... | |
void | copy_boundary_node_data_from_nodes () |
bool | boundary_coordinate_exists (const unsigned &i) const |
Indicate whether the i-th boundary has an intrinsic coordinate. More... | |
unsigned long | nelement () const |
Return number of elements in the mesh. More... | |
unsigned long | nnode () const |
Return number of nodes in the mesh. More... | |
unsigned | ndof_types () const |
Return number of dof types in mesh. More... | |
unsigned | elemental_dimension () const |
Return number of elemental dimension in mesh. More... | |
unsigned | nodal_dimension () const |
Return number of nodal dimension in mesh. More... | |
void | add_node_pt (Node *const &node_pt) |
Add a (pointer to a) node to the mesh. More... | |
void | add_element_pt (GeneralisedElement *const &element_pt) |
Add a (pointer to) an element to the mesh. More... | |
virtual void | reorder_nodes (const bool &use_old_ordering=true) |
virtual void | get_node_reordering (Vector< Node * > &reordering, const bool &use_old_ordering=true) const |
template<class BULK_ELEMENT , template< class > class FACE_ELEMENT> | |
void | build_face_mesh (const unsigned &b, Mesh *const &face_mesh_pt) |
unsigned | self_test () |
Self-test: Check elements and nodes. Return 0 for OK. More... | |
void | max_and_min_element_size (double &max_size, double &min_size) |
double | total_size () |
void | check_inverted_elements (bool &mesh_has_inverted_elements, std::ofstream &inverted_element_file) |
void | check_inverted_elements (bool &mesh_has_inverted_elements) |
unsigned | check_for_repeated_nodes (const double &epsilon=1.0e-12) |
Vector< Node * > | prune_dead_nodes () |
unsigned | nboundary () const |
Return number of boundaries. More... | |
unsigned long | nboundary_node (const unsigned &ibound) const |
Return number of nodes on a particular boundary. More... | |
FiniteElement * | boundary_element_pt (const unsigned &b, const unsigned &e) const |
Return pointer to e-th finite element on boundary b. More... | |
Node * | get_some_non_boundary_node () const |
unsigned | nboundary_element (const unsigned &b) const |
Return number of finite elements that are adjacent to boundary b. More... | |
int | face_index_at_boundary (const unsigned &b, const unsigned &e) const |
virtual void | dump (std::ofstream &dump_file, const bool &use_old_ordering=true) const |
Dump the data in the mesh into a file for restart. More... | |
void | dump (const std::string &dump_file_name, const bool &use_old_ordering=true) const |
Dump the data in the mesh into a file for restart. More... | |
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 ¶meter_pt) |
Does the double pointer correspond to any mesh data. More... | |
void | set_nodal_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data) |
Set the timestepper associated with the nodal data in the mesh. More... | |
void | set_elemental_internal_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data) |
virtual void | compute_norm (double &norm) |
virtual void | compute_norm (Vector< double > &norm) |
virtual void | compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm) |
virtual void | compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm) |
virtual void | compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm) |
virtual void | compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm) |
virtual void | compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm) |
virtual void | compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm) |
virtual void | compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm) |
Returns the norm of the error and that of the exact solution. More... | |
virtual void | compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm) |
bool | is_mesh_distributed () const |
Boolean to indicate if Mesh has been distributed. More... | |
OomphCommunicator * | communicator_pt () const |
void | delete_all_external_storage () |
Wipe the storage for all externally-based elements. More... | |
Protected Attributes | |
Vector< Spine * > | Spine_pt |
A Spine mesh contains a Vector of pointers to spines. More... | |
![]() | |
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< bool > | Boundary_coordinate_exists |
Additional Inherited Members | |
![]() | |
typedef void(FiniteElement::* | SteadyExactSolutionFctPt) (const Vector< double > &x, Vector< double > &soln) |
typedef void(FiniteElement::* | UnsteadyExactSolutionFctPt) (const double &time, const Vector< double > &x, Vector< double > &soln) |
![]() | |
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... | |
![]() | |
unsigned long | assign_global_eqn_numbers (Vector< double * > &Dof_pt) |
Assign (global) equation numbers to the nodes. More... | |
void | describe_dofs (std::ostream &out, const std::string ¤t_string) const |
void | describe_local_dofs (std::ostream &out, const std::string ¤t_string) const |
void | assign_local_eqn_numbers (const bool &store_local_dof_pt) |
Assign local equation numbers in all elements. More... | |
void | convert_to_boundary_node (Node *&node_pt, const Vector< FiniteElement * > &finite_element_pt) |
void | convert_to_boundary_node (Node *&node_pt) |
/////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// General SpineMesh class.
Derived from Mesh with virtual so that spine meshes can be derived from general meshes, without multiple copies of Mesh objects.
|
virtual |
Destructor to clean up the memory allocated to the spines.
//////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
|
inline |
Add a spine to the mesh.
References Spine_pt, and spine_pt().
Assign spines to Spine_pt vector of element.
Assign (global) equation numbers to spines, nodes and elements.
Assign equation numbers for spines
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(...)
References i, out(), Spine_pt, and oomph::Global_string_for_annotation::string().
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.
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.
References oomph::Mesh::dump(), oomph::Data::dump(), nspine(), s, oomph::Spine::spine_height_pt(), and spine_pt().
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
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().
Return a pointer to the n-th global SpineNode.
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().
|
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.
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().
|
inline |
Return the number of spines in the mesh.
References Spine_pt.
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(), MeltSpinningProblem< ELEMENT >::deform_free_surface(), AxisymFreeSurfaceNozzleAdvDiffRobinProblem< ELEMENT >::deform_free_surface(), InterfaceProblem< ELEMENT, TIMESTEPPER >::deform_free_surface(), does_pointer_correspond_to_spine_data(), dump(), oomph::BrethertonSpineMesh< ELEMENT, INTERFACE_ELEMENT >::pin_all_spines(), read(), CombCanSpineMesh< ELEMENT, INTERFACE_ELEMENT >::rotate_90(), CombTipSpineMesh< ELEMENT, INTERFACE_ELEMENT >::rotate_90_zeq1_xeq0(), CombTipSpineMesh< ELEMENT, INTERFACE_ELEMENT >::rotate_90_zeq1_yeq0(), set_consistent_pinned_spine_values_for_continuation(), set_spine_time_stepper(), and SimpleSpineMesh< ELEMENT >::SimpleSpineMesh().
|
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.
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().
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
References i, nspine(), oomph::ContinuationStorageScheme::set_consistent_pinned_values(), and Spine_pt.
|
inlinevirtual |
Overload the mesh_level timestepper function to set the timestepper data for the spines
Reimplemented from oomph::Mesh.
References 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.
References i, nspine(), and Spine_pt.
Referenced by set_mesh_level_time_stepper().
|
pure virtual |
Update function for given spine node – this must be implemented by all specific SpineMeshes.
Implemented in oomph::TwoLayerSpineMesh< ELEMENT >, oomph::TwoLayerSpineMesh< BASE_ELEMENT >, oomph::TwoLayerSpineMesh< SpineElement< ELEMENT > >, oomph::SingleLayerSpineMesh< ELEMENT >, oomph::SingleLayerSpineMesh< SpineElement< ELEMENT > >, oomph::SingleLayerCubicSpineMesh< ELEMENT >, oomph::HorizontalSingleLayerSpineMesh< ELEMENT >, oomph::ChannelSpineMesh< ELEMENT >, oomph::BrethertonSpineMesh< ELEMENT, INTERFACE_ELEMENT >, oomph::BrethertonSpineMesh< ELEMENT, SpineLineFluidInterfaceElement< ELEMENT > >, AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >, MyTipMesh< ELEMENT, INTERFACE_ELEMENT >, STSpineMesh< ELEMENT, INTERFACE_ELEMENT >, CombTipSpineMesh< ELEMENT, INTERFACE_ELEMENT >, CombCanSpineMesh< ELEMENT, INTERFACE_ELEMENT >, MyCanyonMesh< ELEMENT, INTERFACE_ELEMENT >, SimpleSpineMesh< ELEMENT >, SpineInclinedPlaneMesh< ELEMENT >, AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >, oomph::MyHorizontalSingleLayerSpineMesh< ELEMENT >, and oomph::AnnularSpineMesh< ELEMENT >.
Referenced by oomph::SpineNode::node_update().
Return the i-th spine in the mesh.
Referenced by add_spine_pt(), CombCanSpineMesh< ELEMENT, INTERFACE_ELEMENT >::build_single_layer_mesh(), 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(), dump(), oomph::BrethertonSpineMesh< ELEMENT, INTERFACE_ELEMENT >::pin_all_spines(), read(), CombCanSpineMesh< ELEMENT, INTERFACE_ELEMENT >::rotate_90(), CombTipSpineMesh< ELEMENT, INTERFACE_ELEMENT >::rotate_90_zeq1_xeq0(), and CombTipSpineMesh< ELEMENT, INTERFACE_ELEMENT >::rotate_90_zeq1_yeq0().
A Spine mesh contains a Vector of pointers to spines.
Referenced by add_spine_pt(), assign_global_spine_eqn_numbers(), oomph::ChannelSpineMesh< ELEMENT >::centre_spine_pt(), describe_spine_dofs(), does_pointer_correspond_to_spine_data(), oomph::ChannelSpineMesh< ELEMENT >::left_spine_pt(), nspine(), oomph::ChannelSpineMesh< ELEMENT >::right_spine_pt(), set_consistent_pinned_spine_values_for_continuation(), set_spine_time_stepper(), SimpleSpineMesh< ELEMENT >::SimpleSpineMesh(), spine_pt(), and ~SpineMesh().