AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT > Class Template Reference
+ Inheritance diagram for AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >:

Public Member Functions

FiniteElement *& interface_element_pt (const unsigned long &i)
 Access functions for pointers to interface elements. More...
 
unsigned long ninterface_element () const
 Number of elements on interface. More...
 
FiniteElement *& interface_edge_element_pt (const unsigned long &i)
 Access functions for pointers to interface elements. More...
 
unsigned long ninterface_edge_element () const
 Number of elements on interface. More...
 
Vector< GeneralisedElement * > & bulk_element_pt ()
 
GeneralisedElement *& bulk_element_pt (const unsigned long &i)
 Access functions for pointers to elements in bulk. More...
 
unsigned long nbulk () const
 Number of elements in bulk. More...
 
 AxialSpineQuarterTubeMesh (GeomObject *wall_pt, const Vector< double > &xi_lo, const double &fract_mid, const Vector< double > &xi_hi, const unsigned &nlayer, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Constructor. More...
 
virtual void spine_node_update (SpineNode *spine_node_pt)
 Update nodal positions in response to spine changes. More...
 
FiniteElement *& interface_element_pt (const unsigned long &i)
 Access functions for pointers to interface elements. More...
 
unsigned long ninterface_element () const
 Number of elements on interface. More...
 
FiniteElement *& interface_edge_element_pt (const unsigned long &i)
 Access functions for pointers to interface elements. More...
 
unsigned long ninterface_edge_element () const
 Number of elements on interface. More...
 
Vector< GeneralisedElement * > & bulk_element_pt ()
 
GeneralisedElement *& bulk_element_pt (const unsigned long &i)
 Access functions for pointers to elements in bulk. More...
 
unsigned long nbulk () const
 Number of elements in bulk. More...
 
 AxialSpineQuarterTubeMesh (GeomObject *wall_pt, const Vector< double > &xi_lo, const double &fract_mid, const Vector< double > &xi_hi, const unsigned &nlayer, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Constructor. More...
 
virtual void spine_node_update (SpineNode *spine_node_pt)
 Update nodal positions in response to spine changes. More...
 
- Public Member Functions inherited from oomph::RefineableQuarterTubeMesh< ELEMENT >
 RefineableQuarterTubeMesh (GeomObject *wall_pt, const Vector< double > &xi_lo, const double &fract_mid, const Vector< double > &xi_hi, const unsigned &nlayer, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 
virtual ~RefineableQuarterTubeMesh ()
 Destructor: empty. More...
 
- Public Member Functions inherited from oomph::QuarterTubeMesh< ELEMENT >
 QuarterTubeMesh (GeomObject *wall_pt, const Vector< double > &xi_lo, const double &fract_mid, const Vector< double > &xi_hi, const unsigned &nlayer, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 
virtual ~QuarterTubeMesh ()
 Destructor: empty. More...
 
GeomObject *& wall_pt ()
 Access function to GeomObject representing wall. More...
 
QuarterTubeDomaindomain_pt ()
 Access function to domain. More...
 
QuarterTubeDomain::BLSquashFctPtbl_squash_fct_pt ()
 
virtual QuarterTubeDomain::AxialSpacingFctPtaxial_spacing_fct_pt ()
 Function pointer for function for axial spacing. More...
 
QuarterTubeDomaindomain_pt () const
 Access function to underlying domain. More...
 
- Public Member Functions inherited from oomph::BrickMeshBase
 BrickMeshBase ()
 Constructor (empty) More...
 
 BrickMeshBase (const BrickMeshBase &)=delete
 Broken copy constructor. More...
 
virtual ~BrickMeshBase ()
 Broken assignment operator. More...
 
void setup_boundary_element_info ()
 
void setup_boundary_element_info (std::ostream &outfile)
 
- 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 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...
 
- Public Member Functions inherited from oomph::RefineableBrickMesh< ELEMENT >
 RefineableBrickMesh ()
 Constructor: Setup static octree data. More...
 
 RefineableBrickMesh (const RefineableBrickMesh &dummy)=delete
 Broken copy constructor. More...
 
void operator= (const RefineableBrickMesh &)=delete
 Broken assignment operator. More...
 
virtual ~RefineableBrickMesh ()
 Destructor: More...
 
virtual void setup_tree_forest ()
 
void setup_octree_forest ()
 Do what it says... More...
 
- Public Member Functions inherited from oomph::TreeBasedRefineableMesh< ELEMENT >
 TreeBasedRefineableMesh ()
 Constructor, call the constructor of the base class. More...
 
 TreeBasedRefineableMesh (const TreeBasedRefineableMesh &dummy)=delete
 Broken copy constructor. More...
 
virtual ~TreeBasedRefineableMesh ()
 Empty virtual destructor. More...
 
- Public Member Functions inherited from oomph::TreeBasedRefineableMeshBase
 TreeBasedRefineableMeshBase ()
 Constructor. More...
 
 TreeBasedRefineableMeshBase (const TreeBasedRefineableMeshBase &dummy)=delete
 Broken copy constructor. More...
 
void operator= (const TreeBasedRefineableMeshBase &)=delete
 Broken assignment operator. More...
 
virtual ~TreeBasedRefineableMeshBase ()
 Empty Destructor: More...
 
void adapt (const Vector< double > &elemental_error)
 
void p_adapt (const Vector< double > &elemental_error)
 
void refine_uniformly (DocInfo &doc_info)
 Refine mesh uniformly and doc process. More...
 
void refine_uniformly ()
 Refine mesh uniformly. More...
 
void p_refine_uniformly (DocInfo &doc_info)
 p-refine mesh uniformly and doc process More...
 
void p_refine_uniformly ()
 p-refine mesh uniformly More...
 
unsigned unrefine_uniformly ()
 
void p_unrefine_uniformly (DocInfo &doc_info)
 p-unrefine mesh uniformly More...
 
TreeForestforest_pt ()
 Return pointer to the Forest represenation of the mesh. More...
 
void doc_adaptivity_targets (std::ostream &outfile)
 Doc the targets for mesh adaptation. More...
 
unsignedmax_refinement_level ()
 Access fct for max. permissible refinement level (relative to base mesh) More...
 
unsignedmin_refinement_level ()
 Access fct for min. permissible refinement level (relative to base mesh) More...
 
unsignedmax_p_refinement_level ()
 
unsignedmin_p_refinement_level ()
 
virtual void adapt_mesh (DocInfo &doc_info)
 
virtual void adapt_mesh ()
 
void p_adapt_mesh (DocInfo &doc_info)
 
void p_adapt_mesh ()
 
virtual void refine_selected_elements (const Vector< unsigned > &elements_to_be_refined)
 
virtual void refine_selected_elements (const Vector< RefineableElement * > &elements_to_be_refined)
 
void p_refine_selected_elements (const Vector< unsigned > &elements_to_be_refined)
 p-refine mesh by refining the elements identified by their numbers. More...
 
void p_refine_selected_elements (const Vector< PRefineableElement * > &elements_to_be_refined_pt)
 p-refine mesh by refining the elements identified by their pointers. More...
 
virtual void refine_base_mesh_as_in_reference_mesh (TreeBasedRefineableMeshBase *const &ref_mesh_pt)
 Refine to same degree as the reference mesh. More...
 
virtual bool refine_base_mesh_as_in_reference_mesh_minus_one (TreeBasedRefineableMeshBase *const &ref_mesh_pt)
 
virtual void refine_as_in_reference_mesh (TreeBasedRefineableMeshBase *const &ref_mesh_pt)
 
virtual void get_refinement_levels (unsigned &min_refinement_level, unsigned &max_refinement_level)
 Get max/min refinement levels in mesh. More...
 
virtual void get_elements_at_refinement_level (unsigned &refinement_level, Vector< RefineableElement * > &level_elements)
 
virtual void get_refinement_pattern (Vector< Vector< unsigned >> &to_be_refined)
 
void refine_base_mesh (Vector< Vector< unsigned >> &to_be_refined)
 Refine base mesh according to specified refinement pattern. More...
 
virtual void refine (std::ifstream &restart_file)
 Refine mesh according to refinement pattern in restart file. More...
 
virtual void dump_refinement (std::ostream &outfile)
 Dump refinement pattern to allow for rebuild. More...
 
virtual void read_refinement (std::ifstream &restart_file, Vector< Vector< unsigned >> &to_be_refined)
 Read refinement pattern to allow for rebuild. More...
 
unsigned uniform_refinement_level_when_pruned () const
 
unsigneduniform_refinement_level_when_pruned ()
 Level to which the mesh was uniformly refined when it was pruned. More...
 
- Public Member Functions inherited from oomph::RefineableMeshBase
bool adapt_flag ()
 
 RefineableMeshBase ()
 
 RefineableMeshBase (const RefineableMeshBase &dummy)=delete
 Broken copy constructor. More...
 
void operator= (const RefineableMeshBase &)=delete
 Broken assignment operator. More...
 
virtual ~RefineableMeshBase ()
 Empty Destructor: More...
 
unsigned nrefined ()
 Access fct for number of elements that were refined. More...
 
unsigned nunrefined ()
 Access fct for number of elements that were unrefined. More...
 
unsignednrefinement_overruled ()
 
unsignedmax_keep_unrefined ()
 
ErrorEstimator *& spatial_error_estimator_pt ()
 Access to spatial error estimator. More...
 
ErrorEstimatorspatial_error_estimator_pt () const
 Access to spatial error estimator (const version. More...
 
doublemin_permitted_error ()
 
doublemax_permitted_error ()
 
doublemin_error ()
 
doublemax_error ()
 
DocInfo *& doc_info_pt ()
 Access fct for pointer to DocInfo. More...
 
void enable_adaptation ()
 Enable adaptation. More...
 
void disable_adaptation ()
 Disable adaptation. More...
 
void enable_p_adaptation ()
 Enable adaptation. More...
 
void disable_p_adaptation ()
 Disable adaptation. More...
 
void enable_additional_synchronisation_of_hanging_nodes ()
 Enable additional synchronisation of hanging nodes. More...
 
void disable_additional_synchronisation_of_hanging_nodes ()
 Disable additional synchronisation of hanging nodes. More...
 
bool is_adaptation_enabled () const
 Return whether the mesh is to be adapted. More...
 
bool is_p_adaptation_enabled () const
 Return whether the mesh is to be adapted. More...
 
bool is_additional_synchronisation_of_hanging_nodes_disabled () const
 Return whether additional synchronisation is enabled. More...
 
DocInfo doc_info ()
 Access fct for DocInfo. More...
 
void p_unrefine_uniformly (DocInfo &doc_info)
 p-unrefine mesh uniformly More...
 
- Public Member Functions inherited from oomph::SpineMesh
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)
 
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...
 

Private Attributes

Vector< GeneralisedElement * > Bulk_element_pt
 Vector of pointers to element in the fluid layer. More...
 
Vector< FiniteElement * > Interface_element_pt
 Vector of pointers to interface elements. More...
 
Vector< FiniteElement * > Interface_edge_element_pt
 Vector of pointers to interface elements. More...
 

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 Member Functions inherited from oomph::TreeBasedRefineableMeshBase
void complete_hanging_nodes (const int &ncont_interpolated_values)
 Complete the hanging node scheme recursively. More...
 
void complete_hanging_nodes_recursively (Node *&nod_pt, Vector< Node * > &master_nodes, Vector< double > &hang_weights, const int &ival)
 Auxiliary routine for recursive hanging node completion. More...
 
- Protected Attributes inherited from oomph::QuarterTubeMesh< ELEMENT >
QuarterTubeDomainDomain_pt
 Pointer to domain. More...
 
GeomObjectWall_pt
 Pointer to the geometric object that represents the curved wall. More...
 
Vector< doubleXi_lo
 Lower limits for the coordinates along the wall. More...
 
double Fract_mid
 Fraction along wall where outer ring is to be divided. More...
 
Vector< doubleXi_hi
 Upper limits for the coordinates along the wall. 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
 
- Protected Attributes inherited from oomph::TreeBasedRefineableMeshBase
unsigned Uniform_refinement_level_when_pruned
 Level to which the mesh was uniformly refined when it was pruned. More...
 
unsigned Max_refinement_level
 Max. permissible refinement level (relative to base mesh) More...
 
unsigned Min_refinement_level
 Min. permissible refinement level (relative to base mesh) More...
 
unsigned Max_p_refinement_level
 Max. permissible p-refinement level (relative to base mesh) More...
 
unsigned Min_p_refinement_level
 Min. permissible p-refinement level (relative to base mesh) More...
 
TreeForestForest_pt
 Forest representation of the mesh. More...
 
- Protected Attributes inherited from oomph::RefineableMeshBase
ErrorEstimatorSpatial_error_estimator_pt
 Pointer to spatial error estimator. More...
 
double Max_permitted_error
 Max. error (i.e. split elements if their error is larger) More...
 
double Min_permitted_error
 Min. error (i.e. (try to) merge elements if their error is smaller) More...
 
double Min_error
 Min.actual error. More...
 
double Max_error
 Max. actual error. More...
 
unsigned Nrefined
 Stats: Number of elements that were refined. More...
 
unsigned Nunrefined
 Stats: Number of elements that were unrefined. More...
 
bool Adapt_flag
 Flag that requests adaptation. More...
 
bool P_adapt_flag
 Flag that requests p-adaptation. More...
 
bool Additional_synchronisation_of_hanging_nodes_not_required
 Flag that disables additional synchronisation of hanging nodes. More...
 
DocInfoDoc_info_pt
 Pointer to DocInfo. More...
 
unsigned Max_keep_unrefined
 
unsigned Nrefinement_overruled
 
- Protected Attributes inherited from oomph::SpineMesh
Vector< Spine * > Spine_pt
 A Spine mesh contains a Vector of pointers to spines. More...
 

Constructor & Destructor Documentation

◆ AxialSpineQuarterTubeMesh() [1/2]

template<class ELEMENT , class INTERFACE_ELEMENT >
AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::AxialSpineQuarterTubeMesh ( GeomObject wall_pt,
const Vector< double > &  xi_lo,
const double fract_mid,
const Vector< double > &  xi_hi,
const unsigned nlayer,
TimeStepper time_stepper_pt = &Mesh::Default_TimeStepper 
)
inline

Constructor.

126  :
127  QuarterTubeMesh<ELEMENT>(wall_pt,xi_lo,fract_mid,xi_hi,
128  nlayer,time_stepper_pt),
129 
130  RefineableQuarterTubeMesh<ELEMENT>(wall_pt,xi_lo,fract_mid,xi_hi,
131  nlayer,time_stepper_pt),
132  SpineMesh()
133  {
134  //Perform a singleuniform refinement
135  this->refine_uniformly();
136  this->refine_uniformly();
137 
138  unsigned n_layer=4;
139 
140  //Now worry about the spines the trick is to loop over each
141  //layer in turn. We determine the layer based on the z coordinate
142  //of the first node in each element.
144 
145  //Loop over all the elements
146  unsigned n_element = this->nelement();
147  for(unsigned e=0;e<n_element;e++)
148  {
149  //If the element is on the lowest layer
150  if(std::abs(finite_element_pt(e)->node_pt(0)->x(2)) < 1.0e-15)
151  {
152  //Find the number of 1d nodes
153  unsigned n_p = finite_element_pt(e)->nnode_1d();
154  //Loop over the lowest layer
155  for(unsigned n=0;n<(n_p*n_p);n++)
156  {
157  //Get pointer to the node
158  SpineNode* nod_pt = element_node_pt(e,n);
159  //If the node has no spine, create one
160  if(nod_pt->spine_pt() == 0)
161  {
162  //Create a new spine of length 2
163  Spine* new_spine_pt = new Spine(2.0);
164  //Add it to the mesh
165  Spine_pt.push_back(new_spine_pt);
166  nod_pt->spine_pt() = new_spine_pt;
167  //The fraction is zeo
168  nod_pt->fraction() = 0.0;
169  //Pointer to the mesh the implements the update
170  nod_pt->spine_mesh_pt() = this;
171  }
172 
173  //Loop up the spine and set the other nodes in the element
174  for(unsigned m=1;m<n_p;m++)
175  {
176  SpineNode* nod2_pt = element_node_pt(e,(n_p*n_p)*m + n);
177  nod2_pt->spine_pt() = nod_pt->spine_pt();
178  nod2_pt->fraction() = nod2_pt->x(2)/2.0;
179  nod2_pt->spine_mesh_pt() = this;
180  }
181  }
182  }
183  }
184 
185  double layer_width = 2.0/(double)n_layer;
187 
188  //Loop over the remaining layers
189  for(unsigned l=1;l<n_layer;l++)
190  {
191  double boundary = layer_width*l;
192  //Treat the second layer
193  for(unsigned e=0;e<n_element;e++)
194  {
195  //If the element is on the second layer
196  if(std::abs(finite_element_pt(e)->node_pt(0)->x(2)-boundary) < 1.0e-15)
197  {
198  //If on the last layer
199  if(l==n_layer-1)
200  {
201  //We can build the interface elements at the max
202  //of the element (face 3)
204  = new INTERFACE_ELEMENT(finite_element_pt(e),3);
205 
206  //push it back onto the stack
207  Element_pt.push_back(interface_element_pt);
208 
209  //Add it to the stack of interface elements
211  }
212 
213  //Find the number of 1d nodes
214  unsigned n_p = finite_element_pt(e)->nnode_1d();
215  //Loop over the lowest layer
216  for(unsigned n=0;n<(n_p*n_p);n++)
217  {
218  //Get pointer to the spine of the nodes
220 
221  //Loop up the spine and set the other nodes in the element
222  for(unsigned m=1;m<n_p;m++)
223  {
224  SpineNode* nod_pt = element_node_pt(e,(n_p*n_p)*m + n);
225  nod_pt->spine_pt() = spine_pt;
226  nod_pt->fraction() = nod_pt->x(2)/2.0;
227  nod_pt->spine_mesh_pt() = this;
228  }
229  }
230 
231  if(l==n_layer-1)
232  {
233  //Is the interface adjacent to the wall
234  unsigned n_p = interface_element_pt->nnode_1d();
235  //Which boundary
236  std::vector<int> adjacent(4,true);
237  for(unsigned n=0;n<n_p;n++)
238  {
239  //Bottom
240  adjacent[0] &=
242  //Right
243  adjacent[1] &=
244  interface_element_pt->node_pt(n*n_p + n_p-1)->is_on_boundary(3);
245  //Top
246  adjacent[2] &=
247  interface_element_pt->node_pt(n_p*(n_p-1) + n)->is_on_boundary(3);
248  //Left
249  adjacent[3] &=
251  }
252 
253 
254  //Now if we have a match make the element
256  if(adjacent[0])
257  {
259  = dynamic_cast<INTERFACE_ELEMENT*>(interface_element_pt)
260  ->make_bounding_element(-2);
261  }
262  else if(adjacent[1])
263  {
265  = dynamic_cast<INTERFACE_ELEMENT*>(interface_element_pt)
266  ->make_bounding_element(1);
267  }
268  else if(adjacent[2])
269  {
271  = dynamic_cast<INTERFACE_ELEMENT*>(interface_element_pt)
272  ->make_bounding_element(2);
273  }
274  else if(adjacent[3])
275  {
277  = dynamic_cast<INTERFACE_ELEMENT*>(interface_element_pt)
278  ->make_bounding_element(-1);
279 
280  }
281 
283  {
286  dynamic_cast<FluidInterfaceBoundingElement*>
287  (interface_edge_element_pt)->wall_unit_normal_fct_pt()
289  //Set the contact angle
290  dynamic_cast<FluidInterfaceBoundingElement*>
292  set_contact_angle(&Global_Physical_Variables::Angle);
293  //and pass the capillary number
294  dynamic_cast<FluidInterfaceBoundingElement*>
295  (interface_edge_element_pt)->ca_pt() =
297  }
298  } //End of final layer stuff
299  }
300  }
301  }
302 
303  /* //Treat the third layer
304  for(unsigned e=0;e<n_element;e++)
305  {
306  //If the element is on the third layer
307  if(std::abs(finite_element_pt(e)->node_pt(0)->x(2)-1.0) < 1.0e-15)
308  {
309  //Find the number of 1d nodes
310  unsigned n_p = finite_element_pt(e)->nnode_1d();
311  //Loop over the lowest layer
312  for(unsigned n=0;n<(n_p*n_p);n++)
313  {
314  //Get pointer to the spine of the nodes
315  Spine* spine_pt = element_node_pt(e,n)->spine_pt();
316 
317  //Loop up the spine and set the other nodes in the element
318  for(unsigned m=1;m<n_p;m++)
319  {
320  SpineNode* nod_pt = element_node_pt(e,(n_p*n_p)*m + n);
321  nod_pt->spine_pt() = spine_pt;
322  nod_pt->fraction() = nod_pt->x(2)/2.0;
323  nod_pt->spine_mesh_pt() = this;
324  }
325  }
326  }
327  }*/
328 
329  /* //Treat the final layer
330  for(unsigned e=0;e<n_element;e++)
331  {
332  //If the element is on the fourth layer
333  if(std::abs(finite_element_pt(e)->node_pt(0)->x(2)-1.5) < 1.0e-15)
334  {
335 
336  //We can build the interface elements at the max
337  //of the element
338  FiniteElement *interface_element_pt
339  = new INTERFACE_ELEMENT(finite_element_pt(e),2,1);
340 
341  //push it back onto the stack
342  Element_pt.push_back(interface_element_pt);
343 
344  //Add it to the stack of interface elements
345  Interface_element_pt.push_back(interface_element_pt);
346 
347  //Find the number of 1d nodes
348  unsigned n_p = finite_element_pt(e)->nnode_1d();
349  //Loop over the lowest layer
350  for(unsigned n=0;n<(n_p*n_p);n++)
351  {
352  //Get pointer to the spine of the nodes
353  Spine* spine_pt = element_node_pt(e,n)->spine_pt();
354 
355  //Loop up the spine and set the other nodes in the element
356  for(unsigned m=1;m<n_p;m++)
357  {
358  SpineNode* nod_pt = element_node_pt(e,(n_p*n_p)*m + n);
359  nod_pt->spine_pt() = spine_pt;
360  nod_pt->fraction() = nod_pt->x(2)/2.0;
361  nod_pt->spine_mesh_pt() = this;
362  }
363  }
364  }
365  } */
366 
367  }
AnnoyingScalar abs(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:135
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
Array< double, 1, 3 > e(1./3., 0.5, 2.)
FiniteElement *& interface_element_pt(const unsigned long &i)
Access functions for pointers to interface elements.
Definition: free_surface_rotation.cc:95
Vector< FiniteElement * > Interface_element_pt
Vector of pointers to interface elements.
Definition: free_surface_rotation.cc:86
FiniteElement *& interface_edge_element_pt(const unsigned long &i)
Access functions for pointers to interface elements.
Definition: free_surface_rotation.cc:102
Vector< GeneralisedElement * > Bulk_element_pt
Vector of pointers to element in the fluid layer.
Definition: free_surface_rotation.cc:83
Vector< FiniteElement * > Interface_edge_element_pt
Vector of pointers to interface elements.
Definition: free_surface_rotation.cc:89
Definition: elements.h:1313
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
Definition: elements.h:2175
virtual unsigned nnode_1d() const
Definition: elements.h:2218
Definition: interface_elements.h:54
FiniteElement * finite_element_pt(const unsigned &e) const
Definition: mesh.h:473
Vector< GeneralisedElement * > Element_pt
Vector of pointers to generalised elements.
Definition: mesh.h:186
unsigned long nelement() const
Return number of elements in the mesh.
Definition: mesh.h:590
double & x(const unsigned &i)
Return the i-th nodal coordinate.
Definition: nodes.h:1060
virtual bool is_on_boundary() const
Definition: nodes.h:1373
Definition: quarter_tube_mesh.template.h:65
GeomObject *& wall_pt()
Access function to GeomObject representing wall.
Definition: quarter_tube_mesh.template.h:86
Definition: quarter_tube_mesh.template.h:162
Definition: spines.h:613
Vector< Spine * > Spine_pt
A Spine mesh contains a Vector of pointers to spines.
Definition: spines.h:616
SpineNode * node_pt(const unsigned long &n)
Return a pointer to the n-th global SpineNode.
Definition: spines.h:648
Spine *& spine_pt(const unsigned long &i)
Return the i-th spine in the mesh.
Definition: spines.h:623
SpineNode * element_node_pt(const unsigned long &e, const unsigned &n)
Definition: spines.h:669
Definition: spines.h:328
SpineMesh *& spine_mesh_pt()
Definition: spines.h:391
Spine *& spine_pt()
Access function to spine.
Definition: spines.h:372
double & fraction()
Set reference to fraction along spine.
Definition: spines.h:378
Definition: spines.h:64
void refine_uniformly()
Refine mesh uniformly.
Definition: refineable_mesh.h:434
int * m
Definition: level2_cplx_impl.h:294
double Angle
The contact angle.
Definition: marangoni_convection_box.cc:564
double Ca
Capillary number.
Definition: fibre.cc:61
void normal(const Vector< double > &x, Vector< double > &normal)
Definition: free_surface_rotation.cc:65
list x
Definition: plotDoE.py:28

References abs(), Global_Physical_Variables::Angle, Global_Physical_Variables::Ca, e(), oomph::SpineNode::fraction(), oomph::Node::is_on_boundary(), m, n, oomph::FiniteElement::nnode_1d(), oomph::FiniteElement::node_pt(), WallFunction::normal(), oomph::SpineNode::spine_mesh_pt(), oomph::SpineNode::spine_pt(), plotDoE::x, and oomph::Node::x().

◆ AxialSpineQuarterTubeMesh() [2/2]

template<class ELEMENT , class INTERFACE_ELEMENT >
AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::AxialSpineQuarterTubeMesh ( GeomObject wall_pt,
const Vector< double > &  xi_lo,
const double fract_mid,
const Vector< double > &  xi_hi,
const unsigned nlayer,
TimeStepper time_stepper_pt = &Mesh::Default_TimeStepper 
)
inline

Constructor.

141  :
142  QuarterTubeMesh<ELEMENT>(wall_pt,xi_lo,fract_mid,xi_hi,
143  nlayer,time_stepper_pt),
144 
145  RefineableQuarterTubeMesh<ELEMENT>(wall_pt,xi_lo,fract_mid,xi_hi,
146  nlayer,time_stepper_pt),
147  SpineMesh()
148  {
149  //Perform a singleuniform refinement
150  this->refine_uniformly();
151  //this->refine_uniformly();
152 
153  //There are actually four layers
154  unsigned n_layer=2;
155 
156  //Now worry about the spines the trick is to loop over each
157  //layer in turn. We determine the layer based on the z coordinate
158  //of the first node in each element.
160 
161  //Loop over all the elements
162  unsigned n_element = this->nelement();
163  for(unsigned e=0;e<n_element;e++)
164  {
165  //If the element is on the lowest layer
166  if(std::abs(finite_element_pt(e)->node_pt(0)->x(2)) < 1.0e-15)
167  {
168  //Find the number of 1d nodes
169  unsigned n_p = finite_element_pt(e)->nnode_1d();
170  //Loop over the lowest layer
171  for(unsigned n=0;n<(n_p*n_p);n++)
172  {
173  //Get pointer to the node
174  SpineNode* nod_pt = element_node_pt(e,n);
175  //If the node has no spine, create one
176  if(nod_pt->spine_pt() == 0)
177  {
178  //Create a new spine of length 1
179  Spine* new_spine_pt = new Spine(1.0);
180  //Add it to the mesh
181  Spine_pt.push_back(new_spine_pt);
182  nod_pt->spine_pt() = new_spine_pt;
183  //The fraction is zeo
184  nod_pt->fraction() = 0.0;
185  //Pointer to the mesh the implements the update
186  nod_pt->spine_mesh_pt() = this;
187  }
188 
189  //Loop up the spine and set the other nodes in the element
190  for(unsigned m=1;m<n_p;m++)
191  {
192  SpineNode* nod2_pt = element_node_pt(e,(n_p*n_p)*m + n);
193  nod2_pt->spine_pt() = nod_pt->spine_pt();
194  nod2_pt->fraction() = nod2_pt->x(2);
195  nod2_pt->spine_mesh_pt() = this;
196  }
197  }
198  }
199  }
200 
201  double layer_width = 1.0/(double)n_layer;
203 
204  //Loop over the remaining layers
205  for(unsigned l=1;l<n_layer;l++)
206  {
207  double boundary = layer_width*l;
208  //Treat the second layer
209  for(unsigned e=0;e<n_element;e++)
210  {
211  //If the element is on the second layer
212  if(std::abs(finite_element_pt(e)->node_pt(0)->x(2)-boundary) < 1.0e-15)
213  {
214  //If on the last layer
215  if(l==n_layer-1)
216  {
217  //We can build the interface elements at the max
218  //of the element (face 3)
220  = new INTERFACE_ELEMENT(finite_element_pt(e),3);
221 
222  //push it back onto the stack
223  Element_pt.push_back(interface_element_pt);
224 
225  //Add it to the stack of interface elements
227  }
228 
229  //Find the number of 1d nodes
230  unsigned n_p = finite_element_pt(e)->nnode_1d();
231  //Loop over the lowest layer
232  for(unsigned n=0;n<(n_p*n_p);n++)
233  {
234  //Get pointer to the spine of the nodes
236 
237  //Loop up the spine and set the other nodes in the element
238  for(unsigned m=1;m<n_p;m++)
239  {
240  SpineNode* nod_pt = element_node_pt(e,(n_p*n_p)*m + n);
241  nod_pt->spine_pt() = spine_pt;
242  nod_pt->fraction() = nod_pt->x(2);
243  nod_pt->spine_mesh_pt() = this;
244  }
245  }
246 
247  if(l==n_layer-1)
248  {
249  //Is the interface adjacent to the wall
250  unsigned n_p = interface_element_pt->nnode_1d();
251  //Which boundary
252  std::vector<int> adjacent(4,true);
253  for(unsigned n=0;n<n_p;n++)
254  {
255  //Bottom
256  adjacent[0] &=
258  //Right
259  adjacent[1] &=
260  interface_element_pt->node_pt(n*n_p + n_p-1)->is_on_boundary(3);
261  //Top
262  adjacent[2] &=
263  interface_element_pt->node_pt(n_p*(n_p-1) + n)->is_on_boundary(3);
264  //Left
265  adjacent[3] &=
267  }
268 
269 
270  //Now if we have a match make the element
272  if(adjacent[0])
273  {
275  = dynamic_cast<INTERFACE_ELEMENT*>(interface_element_pt)
276  ->make_bounding_element(-2);
277  }
278  else if(adjacent[1])
279  {
281  = dynamic_cast<INTERFACE_ELEMENT*>(interface_element_pt)
282  ->make_bounding_element(1);
283  }
284  else if(adjacent[2])
285  {
287  = dynamic_cast<INTERFACE_ELEMENT*>(interface_element_pt)
288  ->make_bounding_element(2);
289  }
290  else if(adjacent[3])
291  {
293  = dynamic_cast<INTERFACE_ELEMENT*>(interface_element_pt)
294  ->make_bounding_element(-1);
295 
296  }
297 
299  {
302  dynamic_cast<FluidInterfaceBoundingElement*>
303  (interface_edge_element_pt)->wall_unit_normal_fct_pt()
305 
306  //Set the contact angle
307  dynamic_cast<FluidInterfaceBoundingElement*>
309  set_contact_angle(&Global_Physical_Variables::Angle);
310 
311  //Set the capillary number
312  dynamic_cast<FluidInterfaceBoundingElement*>
315  }
316  } //End of final layer stuff
317  }
318  }
319  }
320  }

References abs(), Global_Physical_Variables::Angle, Global_Physical_Variables::Ca, e(), oomph::SpineNode::fraction(), oomph::Node::is_on_boundary(), m, n, oomph::FiniteElement::nnode_1d(), oomph::FiniteElement::node_pt(), WallFunction::normal(), oomph::SpineNode::spine_mesh_pt(), oomph::SpineNode::spine_pt(), plotDoE::x, and oomph::Node::x().

Member Function Documentation

◆ bulk_element_pt() [1/4]

template<class ELEMENT , class INTERFACE_ELEMENT >
Vector<GeneralisedElement*>& AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::bulk_element_pt ( )
inline

◆ bulk_element_pt() [2/4]

template<class ELEMENT , class INTERFACE_ELEMENT >
Vector<GeneralisedElement*>& AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::bulk_element_pt ( )
inline
125  {return Bulk_element_pt;}

◆ bulk_element_pt() [3/4]

template<class ELEMENT , class INTERFACE_ELEMENT >
GeneralisedElement* & AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::bulk_element_pt ( const unsigned long &  i)
inline

Access functions for pointers to elements in bulk.

114  {return Bulk_element_pt[i];}
int i
Definition: BiCGSTAB_step_by_step.cpp:9

References i.

◆ bulk_element_pt() [4/4]

template<class ELEMENT , class INTERFACE_ELEMENT >
GeneralisedElement* & AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::bulk_element_pt ( const unsigned long &  i)
inline

Access functions for pointers to elements in bulk.

129  {return Bulk_element_pt[i];}

References i.

◆ interface_edge_element_pt() [1/2]

template<class ELEMENT , class INTERFACE_ELEMENT >
FiniteElement* & AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::interface_edge_element_pt ( const unsigned long &  i)
inline

Access functions for pointers to interface elements.

103  {return Interface_edge_element_pt[i];}

References i.

◆ interface_edge_element_pt() [2/2]

template<class ELEMENT , class INTERFACE_ELEMENT >
FiniteElement* & AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::interface_edge_element_pt ( const unsigned long &  i)
inline

Access functions for pointers to interface elements.

118  {return Interface_edge_element_pt[i];}

References i.

◆ interface_element_pt() [1/2]

template<class ELEMENT , class INTERFACE_ELEMENT >
FiniteElement* & AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::interface_element_pt ( const unsigned long &  i)
inline

Access functions for pointers to interface elements.

96  {return Interface_element_pt[i];}

References i.

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

◆ interface_element_pt() [2/2]

template<class ELEMENT , class INTERFACE_ELEMENT >
FiniteElement* & AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::interface_element_pt ( const unsigned long &  i)
inline

Access functions for pointers to interface elements.

111  {return Interface_element_pt[i];}

References i.

◆ nbulk() [1/2]

template<class ELEMENT , class INTERFACE_ELEMENT >
unsigned long AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::nbulk ( ) const
inline

Number of elements in bulk.

117 {return Bulk_element_pt.size();}

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

◆ nbulk() [2/2]

template<class ELEMENT , class INTERFACE_ELEMENT >
unsigned long AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::nbulk ( ) const
inline

Number of elements in bulk.

132 {return Bulk_element_pt.size();}

◆ ninterface_edge_element() [1/2]

template<class ELEMENT , class INTERFACE_ELEMENT >
unsigned long AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::ninterface_edge_element ( ) const
inline

Number of elements on interface.

107  {return Interface_edge_element_pt.size();}

◆ ninterface_edge_element() [2/2]

template<class ELEMENT , class INTERFACE_ELEMENT >
unsigned long AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::ninterface_edge_element ( ) const
inline

Number of elements on interface.

122  {return Interface_edge_element_pt.size();}

◆ ninterface_element() [1/2]

template<class ELEMENT , class INTERFACE_ELEMENT >
unsigned long AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::ninterface_element ( ) const
inline

Number of elements on interface.

99 {return Interface_element_pt.size();}

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

◆ ninterface_element() [2/2]

template<class ELEMENT , class INTERFACE_ELEMENT >
unsigned long AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::ninterface_element ( ) const
inline

Number of elements on interface.

114 {return Interface_element_pt.size();}

◆ spine_node_update() [1/2]

template<class ELEMENT , class INTERFACE_ELEMENT >
virtual void AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::spine_node_update ( SpineNode spine_node_pt)
inlinevirtual

Update nodal positions in response to spine changes.

Implements oomph::SpineMesh.

372  {
373  //Get fraction along the spine
374  double W = spine_node_pt->fraction();
375  //Get spine height
376  double H = spine_node_pt->h();
377  //Set the value of z
378  spine_node_pt->x(2) = this->Xi_lo[0] + W*H;
379  }
MatrixXf H
Definition: HessenbergDecomposition_matrixH.cpp:4
Vector< double > Xi_lo
Lower limits for the coordinates along the wall.
Definition: quarter_tube_mesh.template.h:127
double & h()
Access function to spine height.
Definition: spines.h:397
@ W
Definition: quadtree.h:63

References oomph::SpineNode::fraction(), H, oomph::SpineNode::h(), oomph::QuadTreeNames::W, and oomph::Node::x().

◆ spine_node_update() [2/2]

template<class ELEMENT , class INTERFACE_ELEMENT >
virtual void AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::spine_node_update ( SpineNode spine_node_pt)
inlinevirtual

Update nodal positions in response to spine changes.

Implements oomph::SpineMesh.

325  {
326  //Get fraction along the spine
327  double W = spine_node_pt->fraction();
328  //Get spine height
329  double H = spine_node_pt->h();
330  //Set the value of z
331  spine_node_pt->x(2) = this->Xi_lo[0] + W*H;
332  }

References oomph::SpineNode::fraction(), H, oomph::SpineNode::h(), oomph::QuadTreeNames::W, and oomph::Node::x().

Member Data Documentation

◆ Bulk_element_pt

template<class ELEMENT , class INTERFACE_ELEMENT >
Vector< GeneralisedElement * > AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::Bulk_element_pt
private

Vector of pointers to element in the fluid layer.

◆ Interface_edge_element_pt

template<class ELEMENT , class INTERFACE_ELEMENT >
Vector< FiniteElement * > AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::Interface_edge_element_pt
private

Vector of pointers to interface elements.

◆ Interface_element_pt

template<class ELEMENT , class INTERFACE_ELEMENT >
Vector< FiniteElement * > AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::Interface_element_pt
private

Vector of pointers to interface elements.


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