oomph::RefineableAlgebraicCylinderWithFlagMesh< ELEMENT > Class Template Reference

Refineable version of AlgebraicCylinderWithFlagMesh. More...

#include <cylinder_with_flag_mesh.template.h>

+ Inheritance diagram for oomph::RefineableAlgebraicCylinderWithFlagMesh< ELEMENT >:

Public Member Functions

 RefineableAlgebraicCylinderWithFlagMesh (Circle *cylinder_pt, GeomObject *top_flag_pt, GeomObject *bottom_flag_pt, GeomObject *tip_flag_pt, const double &length, const double &height, const double &flag_length, const double &flag_height, const double &centre_x, const double &centre_y, const double &a, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 
void update_node_update (AlgebraicNode *&node_pt)
 Update the node update functions. More...
 
- Public Member Functions inherited from oomph::RefineableQuadMesh< ELEMENT >
 RefineableQuadMesh ()
 Constructor: Setup static quadtree data. More...
 
 RefineableQuadMesh (const RefineableQuadMesh &dummy)=delete
 Broken copy constructor. More...
 
virtual ~RefineableQuadMesh ()
 Broken assignment operator. More...
 
virtual void setup_tree_forest ()
 
void setup_quadtree_forest ()
 
- 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::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...
 
virtual void read (std::ifstream &restart_file)
 Read solution from restart file. More...
 
void output_paraview (std::ofstream &file_out, const unsigned &nplot) const
 
void output_fct_paraview (std::ofstream &file_out, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt) const
 
void output_fct_paraview (std::ofstream &file_out, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt) const
 
void output (std::ostream &outfile)
 Output for all elements. More...
 
void output (std::ostream &outfile, const unsigned &n_plot)
 Output at f(n_plot) points in each element. More...
 
void output (FILE *file_pt)
 Output for all elements (C-style output) More...
 
void output (FILE *file_pt, const unsigned &nplot)
 Output at f(n_plot) points in each element (C-style output) More...
 
void output (const std::string &output_filename)
 Output for all elements. More...
 
void output (const std::string &output_filename, const unsigned &n_plot)
 Output at f(n_plot) points in each element. More...
 
void output_fct (std::ostream &outfile, const unsigned &n_plot, FiniteElement::SteadyExactSolutionFctPt)
 Output a given Vector function at f(n_plot) points in each element. More...
 
void output_fct (std::ostream &outfile, const unsigned &n_plot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt)
 
void output_boundaries (std::ostream &outfile)
 Output the nodes on the boundaries (into separate tecplot zones) More...
 
void output_boundaries (const std::string &output_filename)
 
void assign_initial_values_impulsive ()
 Assign initial values for an impulsive start. More...
 
void shift_time_values ()
 
void calculate_predictions ()
 
void set_nodal_and_elemental_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 
virtual void set_mesh_level_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 
void set_consistent_pinned_values_for_continuation (ContinuationStorageScheme *const &continuation_stepper_pt)
 Set consistent values for pinned data in continuation. More...
 
bool does_pointer_correspond_to_mesh_data (double *const &parameter_pt)
 Does the double pointer correspond to any mesh data. More...
 
void set_nodal_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 Set the timestepper associated with the nodal data in the mesh. More...
 
void set_elemental_internal_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 
virtual void compute_norm (double &norm)
 
virtual void compute_norm (Vector< double > &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 
virtual void compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 
virtual void compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 Returns the norm of the error and that of the exact solution. More...
 
virtual void compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm)
 
bool is_mesh_distributed () const
 Boolean to indicate if Mesh has been distributed. More...
 
OomphCommunicatorcommunicator_pt () const
 
void delete_all_external_storage ()
 Wipe the storage for all externally-based elements. More...
 
- Public Member Functions inherited from oomph::QuadMeshBase
 QuadMeshBase ()
 Constructor (empty) More...
 
 QuadMeshBase (const QuadMeshBase &node)=delete
 Broken copy constructor. More...
 
void operator= (const QuadMeshBase &)=delete
 Broken assignment operator. More...
 
virtual ~QuadMeshBase ()
 Destructor (empty) More...
 
void setup_boundary_element_info ()
 
void setup_boundary_element_info (std::ostream &outfile)
 
- Public Member Functions inherited from oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >
 AlgebraicCylinderWithFlagMesh (Circle *cylinder_pt, GeomObject *top_flag_pt, GeomObject *bottom_flag_pt, GeomObject *tip_flag_pt, const double &length, const double &height, const double &flag_length, const double &flag_height, const double &centre_x, const double &centre_y, const double &a, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 
virtual ~AlgebraicCylinderWithFlagMesh ()
 Destructor: empty. More...
 
void set_bottom_flag_pt (GeomObject *bottom_flag_pt)
 
void set_top_flag_pt (GeomObject *top_flag_pt)
 
void set_tip_flag_pt (GeomObject *tip_flag_pt)
 
GeomObjectbottom_flag_pt () const
 
GeomObjecttop_flag_pt () const
 
GeomObjecttip_flag_pt () const
 
void algebraic_node_update (const unsigned &t, AlgebraicNode *&node_pt)
 The algebraic node update function. More...
 
- Public Member Functions inherited from oomph::AlgebraicMesh
 AlgebraicMesh ()
 
 AlgebraicMesh (const AlgebraicMesh &)=delete
 Broken copy constructor. More...
 
 ~AlgebraicMesh ()
 Broken assignment operator. More...
 
AlgebraicNodenode_pt (const unsigned long &n)
 Return a pointer to the n-th global AlgebraicNode. More...
 
void node_update (const bool &update_all_solid_nodes=false)
 
unsigned self_test ()
 Self test: check consistentency of multiple node updates. More...
 
void add_geom_object_list_pt (GeomObject *geom_object_pt)
 
unsigned ngeom_object_list_pt ()
 Return number of geometric objects associated with AlgebraicMesh. More...
 
GeomObjectgeom_object_list_pt (const unsigned &i)
 Access function to the ith GeomObject. More...
 
- Public Member Functions inherited from oomph::CylinderWithFlagMesh< ELEMENT >
 CylinderWithFlagMesh (Circle *cylinder_pt, GeomObject *top_flag_pt, GeomObject *bottom_flag_pt, GeomObject *tip_flag_pt, const double &length, const double &height, const double &flag_length, const double &flag_height, const double &centre_x, const double &centre_y, const double &a, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 
virtual ~CylinderWithFlagMesh ()
 Destructor: Kill the domain. More...
 
CylinderWithFlagDomaindomain_pt ()
 Access function to the domain. 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::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 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::AlgebraicCylinderWithFlagMesh< ELEMENT >
void setup_algebraic_node_update ()
 Function to setup the algebraic node update. More...
 
void node_update_I (const unsigned &t, AlgebraicNode *&node_pt)
 Helper function. More...
 
void node_update_II (const unsigned &t, AlgebraicNode *&node_pt)
 Helper function. More...
 
void node_update_III (const unsigned &t, AlgebraicNode *&node_pt)
 Helper function. More...
 
void node_update_IV (const unsigned &t, AlgebraicNode *&node_pt)
 Helper function. More...
 
void node_update_V (const unsigned &t, AlgebraicNode *&node_pt)
 Helper function. More...
 
void node_update_VI (const unsigned &t, AlgebraicNode *&node_pt)
 Helper function. More...
 
void node_update_VII (const unsigned &t, AlgebraicNode *&node_pt)
 Helper function. More...
 
void node_update_VIII (const unsigned &t, AlgebraicNode *&node_pt)
 Helper function. More...
 
void node_update_IX (const unsigned &t, AlgebraicNode *&node_pt)
 Helper function. More...
 
- 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::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::AlgebraicCylinderWithFlagMesh< ELEMENT >
GeomObjectCylinder_pt
 Cylinder. More...
 
GeomObjectTop_flag_pt
 Top flag. More...
 
GeomObjectBottom_flag_pt
 Bottom flag. More...
 
GeomObjectTip_flag_pt
 Tip flag. More...
 
double Length
 Length of the domain. More...
 
double Height
 Height of the domain. More...
 
double Flag_length
 Flag length. More...
 
double Flag_height
 Flag thickness. More...
 
double Centre_x
 x position of the centre of the cylinder More...
 
double Centre_y
 x position of the centre of the cylinder More...
 
double A
 radius of the cylinder More...
 
- Protected Attributes inherited from oomph::CylinderWithFlagMesh< ELEMENT >
CylinderWithFlagDomainDomain_pt
 Pointer to the domain. More...
 

Detailed Description

template<class ELEMENT>
class oomph::RefineableAlgebraicCylinderWithFlagMesh< ELEMENT >

Refineable version of AlgebraicCylinderWithFlagMesh.

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

Constructor & Destructor Documentation

◆ RefineableAlgebraicCylinderWithFlagMesh()

template<class ELEMENT >
oomph::RefineableAlgebraicCylinderWithFlagMesh< ELEMENT >::RefineableAlgebraicCylinderWithFlagMesh ( Circle cylinder_pt,
GeomObject top_flag_pt,
GeomObject bottom_flag_pt,
GeomObject tip_flag_pt,
const double length,
const double height,
const double flag_length,
const double flag_height,
const double centre_x,
const double centre_y,
const double a,
TimeStepper time_stepper_pt = &Mesh::Default_TimeStepper 
)
inline

Constructor: Pass the pointers to the GeomObjects that parametrise the cylinder, the three edges of the flag, the length and height of the domain, the length and height of the flag, the coordinates of the centre of the cylinder and its radius. Timestepper defaults to Steady default timestepper.

374  : CylinderWithFlagMesh<ELEMENT>(cylinder_pt,
375  top_flag_pt,
377  tip_flag_pt,
378  length,
379  height,
380  flag_length,
381  flag_height,
382  centre_x,
383  centre_y,
384  a,
385  time_stepper_pt),
386  AlgebraicCylinderWithFlagMesh<ELEMENT>(cylinder_pt,
387  top_flag_pt,
389  tip_flag_pt,
390  length,
391  height,
392  flag_length,
393  flag_height,
394  centre_x,
395  centre_y,
396  a,
397  time_stepper_pt)
398  {
399  // Build quadtree forest
400  this->setup_quadtree_forest();
401  }
GeomObject * top_flag_pt() const
Definition: cylinder_with_flag_mesh.template.h:254
GeomObject * bottom_flag_pt() const
Definition: cylinder_with_flag_mesh.template.h:246
GeomObject * tip_flag_pt() const
Definition: cylinder_with_flag_mesh.template.h:261
void setup_quadtree_forest()
Definition: refineable_quad_mesh.h:88
const Scalar * a
Definition: level2_cplx_impl.h:32
double height(const double &x)
Height of domain.
Definition: simple_spine_channel.cc:429

References oomph::RefineableQuadMesh< ELEMENT >::setup_quadtree_forest().

Member Function Documentation

◆ update_node_update()

template<class ELEMENT >
void oomph::RefineableAlgebraicCylinderWithFlagMesh< ELEMENT >::update_node_update ( AlgebraicNode *&  node_pt)
virtual

Update the node update functions.

Update the node update data for specified node following any mesh adapation

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

Reimplemented from oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >.

1885  {
1886  // Extract ID
1887  unsigned id = node_pt->node_update_fct_id();
1888 
1889 
1890  if (id == 8)
1891  {
1892  // Extract geometric objects for update by copy construction
1893  Vector<GeomObject*> geom_object_pt(node_pt->vector_geom_object_pt());
1894 
1895  // Extract reference values for node update by copy construction
1896  Vector<double> ref_value(node_pt->vector_ref_value());
1897 
1898  // Get zeta coordinate of reference point
1899  Vector<double> zeta_ref_flag(1);
1900  zeta_ref_flag[0] = ref_value[2];
1901 
1902  // Get the sub-geomobject and the local coordinate containing the
1903  // reference point
1904  Vector<double> s(1);
1905  GeomObject* geom_obj_pt;
1906  this->Top_flag_pt->locate_zeta(zeta_ref_flag, geom_obj_pt, s);
1907 
1908 
1909  // Update the pointer to the (sub-)GeomObject within which the
1910  // reference point is located.
1911  geom_object_pt[0] = geom_obj_pt;
1912 
1913  // Update second reference value: Reference local coordinate
1914  // in flag sub-element
1915  ref_value[3] = s[0];
1916 
1917 
1918  // Get zeta coordinate of point at end of macro element
1919  Vector<double> zeta_end_flag(1);
1920  zeta_end_flag[0] = ref_value[4];
1921 
1922  // Get the sub-geomobject and the local coordinate containing the
1923  // point at the end of the macro element
1924  this->Top_flag_pt->locate_zeta(zeta_end_flag, geom_obj_pt, s);
1925 
1926 
1927  // Update the pointer to the (sub-)GeomObject within which the
1928  // point at the end of the macro element is located
1929  geom_object_pt[1] = geom_obj_pt;
1930 
1931  // Update second reference value: Reference local coordinate
1932  // in flag sub-element
1933  ref_value[5] = s[0];
1934 
1935  // Kill the existing node update info
1937 
1938  // Setup algebraic update for node: Pass update information
1939  node_pt->add_node_update_info(8, // id
1940  this, // mesh
1941  geom_object_pt, // vector of geom objects
1942  ref_value); // vector of ref. values
1943  }
1944  else if (id == 9)
1945  {
1946  // Extract geometric objects for update by copy construction
1947  Vector<GeomObject*> geom_object_pt(node_pt->vector_geom_object_pt());
1948 
1949  // Extract reference values for node update by copy construction
1950  Vector<double> ref_value(node_pt->vector_ref_value());
1951 
1952  // Get zeta coordinate of reference point
1953  Vector<double> zeta_ref_flag(1);
1954  zeta_ref_flag[0] = ref_value[2];
1955 
1956  // Get the sub-geomobject and the local coordinate containing the
1957  // reference point
1958  Vector<double> s(1);
1959  GeomObject* geom_obj_pt;
1960  this->Bottom_flag_pt->locate_zeta(zeta_ref_flag, geom_obj_pt, s);
1961 
1962  // Update the pointer to the (sub-)GeomObject within which the
1963  // reference point is located.
1964  geom_object_pt[0] = geom_obj_pt;
1965 
1966  // Update second reference value: Reference local coordinate
1967  // in flag sub-element
1968  ref_value[3] = s[0];
1969 
1970 
1971  // Get zeta coordinate of point at end of macro element
1972  Vector<double> zeta_end_flag(1);
1973  zeta_end_flag[0] = ref_value[4];
1974 
1975  // Get the sub-geomobject and the local coordinate containing the
1976  // point at the end of the macro element
1977  this->Bottom_flag_pt->locate_zeta(zeta_end_flag, geom_obj_pt, s);
1978 
1979  // Update the pointer to the (sub-)GeomObject within which the
1980  // point at the end of the macro element is located
1981  geom_object_pt[1] = geom_obj_pt;
1982 
1983  // Update second reference value: Reference local coordinate
1984  // in flag sub-element
1985  ref_value[5] = s[0];
1986 
1987  // Kill the existing node update info
1989 
1990  // Setup algebraic update for node: Pass update information
1991  node_pt->add_node_update_info(9, // id
1992  this, // mesh
1993  geom_object_pt, // vector of geom objects
1994  ref_value); // vector of ref. values
1995  }
1996 
1997 
1998  if ((id == 1) || (id == 6))
1999  {
2000  // Extract reference values for node update by copy construction
2001  Vector<double> ref_value(node_pt->vector_ref_value());
2002 
2003  // Get zeta coordinate on flag
2004  Vector<double> zeta_flag(1);
2005  zeta_flag[0] = ref_value[2];
2006 
2007  // Get the sub-geomobject and the local coordinate
2008  Vector<double> s(1);
2009  GeomObject* geom_obj_pt;
2010  this->Top_flag_pt->locate_zeta(zeta_flag, geom_obj_pt, s);
2011 
2012  // Extract geometric objects for update by copy construction
2013  Vector<GeomObject*> geom_object_pt(node_pt->vector_geom_object_pt());
2014 
2015  // Update the pointer to the (sub-)GeomObject within which the
2016  // reference point is located. (If the flag is simple GeomObject
2017  // this is the same as Leaflet_pt; if it's a compound GeomObject
2018  // this points to the sub-object)
2019  geom_object_pt[0] = geom_obj_pt;
2020 
2021  // Update second reference value: Reference local coordinate
2022  // in flag sub-element
2023  ref_value[3] = s[0];
2024 
2025  if (id == 1)
2026  {
2027  // Kill the existing node update info
2029 
2030  // Setup algebraic update for node: Pass update information
2031  node_pt->add_node_update_info(1, // id
2032  this, // mesh
2033  geom_object_pt, // vector of geom objects
2034  ref_value); // vector of ref. values
2035  }
2036  else if (id == 6)
2037  {
2038  // Kill the existing node update info
2040 
2041  // Setup algebraic update for node: Pass update information
2042  node_pt->add_node_update_info(6, // id
2043  this, // mesh
2044  geom_object_pt, // vector of geom objects
2045  ref_value); // vector of ref. values
2046  }
2047  }
2048 
2049 
2050  if ((id == 2) || (id == 7))
2051  {
2052  // Extract reference values for node update by copy construction
2053  Vector<double> ref_value(node_pt->vector_ref_value());
2054 
2055  // Get zeta coordinate on flag
2056  Vector<double> zeta_flag(1);
2057  zeta_flag[0] = ref_value[2];
2058 
2059  // Get the sub-geomobject and the local coordinate
2060  Vector<double> s(1);
2061  GeomObject* geom_obj_pt;
2062  this->Bottom_flag_pt->locate_zeta(zeta_flag, geom_obj_pt, s);
2063 
2064  // Extract geometric objects for update by copy construction
2065  Vector<GeomObject*> geom_object_pt(node_pt->vector_geom_object_pt());
2066 
2067  // Update the pointer to the (sub-)GeomObject within which the
2068  // reference point is located. (If the flag is simple GeomObject
2069  // this is the same as Leaflet_pt; if it's a compound GeomObject
2070  // this points to the sub-object)
2071  geom_object_pt[0] = geom_obj_pt;
2072 
2073  // Update second reference value: Reference local coordinate
2074  // in flag sub-element
2075  ref_value[3] = s[0];
2076 
2077  if (id == 2)
2078  {
2079  // Kill the existing node update info
2081 
2082  // Setup algebraic update for node: Pass update information
2083  node_pt->add_node_update_info(2, // id
2084  this, // mesh
2085  geom_object_pt, // vector of geom objects
2086  ref_value); // vector of ref. values
2087  }
2088  else if (id == 7)
2089  {
2090  // Kill the existing node update info
2092 
2093  // Setup algebraic update for node: Pass update information
2094  node_pt->add_node_update_info(7, // id
2095  this, // mesh
2096  geom_object_pt, // vector of geom objects
2097  ref_value); // vector of ref. values
2098  }
2099  }
2100 
2101  if ((id == 3) || (id == 4) || (id == 5))
2102  {
2103  // Extract reference values for node update by copy construction
2104  Vector<double> ref_value(node_pt->vector_ref_value());
2105 
2106  // Get zeta coordinate on flag
2107  Vector<double> zeta_flag(1);
2108  if (id == 3)
2109  {
2110  zeta_flag[0] = ref_value[2];
2111  }
2112  else if (id == 4)
2113  {
2114  zeta_flag[0] = this->Flag_height / 2.;
2115  }
2116  else if (id == 5)
2117  {
2118  zeta_flag[0] = -this->Flag_height / 2.;
2119  }
2120 
2121  // Get the sub-geomobject and the local coordinate
2122  Vector<double> s(1);
2123  GeomObject* geom_obj_pt;
2124  this->Tip_flag_pt->locate_zeta(zeta_flag, geom_obj_pt, s);
2125 
2126  // Extract geometric objects for update by copy construction
2127  Vector<GeomObject*> geom_object_pt(node_pt->vector_geom_object_pt());
2128 
2129  // Update the pointer to the (sub-)GeomObject within which the
2130  // reference point is located. (If the flag is simple GeomObject
2131  // this is the same as Leaflet_pt; if it's a compound GeomObject
2132  // this points to the sub-object)
2133  geom_object_pt[0] = geom_obj_pt;
2134 
2135 
2136  if (id == 3)
2137  {
2138  // Update second reference value: Reference local coordinate
2139  // in flag sub-element
2140  ref_value[3] = s[0];
2141 
2142  // Kill the existing node update info
2144 
2145  // Setup algebraic update for node: Pass update information
2146  node_pt->add_node_update_info(3, // id
2147  this, // mesh
2148  geom_object_pt, // vector of geom objects
2149  ref_value); // vector of ref. values
2150  }
2151  else if (id == 4)
2152  {
2153  // Update second reference value: Reference local coordinate
2154  // in flag sub-element
2155  ref_value[2] = s[0];
2156 
2157  // Kill the existing node update info
2159 
2160  // Setup algebraic update for node: Pass update information
2161  node_pt->add_node_update_info(4, // id
2162  this, // mesh
2163  geom_object_pt, // vector of geom objects
2164  ref_value); // vector of ref. values
2165  }
2166  else if (id == 5)
2167  {
2168  // Update second reference value: Reference local coordinate
2169  // in flag sub-element
2170  ref_value[2] = s[0];
2171 
2172  // Kill the existing node update info
2174 
2175  // Setup algebraic update for node: Pass update information
2176  node_pt->add_node_update_info(5, // id
2177  this, // mesh
2178  geom_object_pt, // vector of geom objects
2179  ref_value); // vector of ref. values
2180  }
2181  }
2182  }
GeomObject * Top_flag_pt
Top flag.
Definition: cylinder_with_flag_mesh.template.h:312
double Flag_height
Flag thickness.
Definition: cylinder_with_flag_mesh.template.h:330
GeomObject * Bottom_flag_pt
Bottom flag.
Definition: cylinder_with_flag_mesh.template.h:315
GeomObject * Tip_flag_pt
Tip flag.
Definition: cylinder_with_flag_mesh.template.h:318
AlgebraicNode * node_pt(const unsigned long &n)
Return a pointer to the n-th global AlgebraicNode.
Definition: algebraic_elements.h:620
int node_update_fct_id()
Default (usually first if there are multiple ones) node update fct id.
Definition: algebraic_elements.h:146
void kill_node_update_info(const int &id=0)
Definition: algebraic_elements.h:365
Vector< GeomObject * > & vector_geom_object_pt(const int &id)
Definition: algebraic_elements.h:200
void add_node_update_info(const int &id, AlgebraicMesh *mesh_pt, const Vector< GeomObject * > &geom_object_pt, const Vector< double > &ref_value, const bool &called_from_constructor=false)
Definition: algebraic_elements.h:280
Vector< double > & vector_ref_value()
Definition: algebraic_elements.h:251
virtual void locate_zeta(const Vector< double > &zeta, GeomObject *&sub_geom_object_pt, Vector< double > &s, const bool &use_coordinate_as_initial_guess=false)
Definition: geom_objects.h:381
RealScalar s
Definition: level1_cplx_impl.h:130

References oomph::AlgebraicNode::add_node_update_info(), Flag_definition::Bottom_flag_pt, oomph::AlgebraicNode::kill_node_update_info(), oomph::GeomObject::locate_zeta(), oomph::AlgebraicNode::node_update_fct_id(), s, Flag_definition::Tip_flag_pt, Flag_definition::Top_flag_pt, oomph::AlgebraicNode::vector_geom_object_pt(), and oomph::AlgebraicNode::vector_ref_value().


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