oomph::jh_mesh< ELEMENT > Class Template Reference

My fluid mesh (with traction elements) More...

#include <jh_includes.h>

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

Public Member Functions

PolarNavierStokesTractionElement< ELEMENT > * inlet_traction_elt_pt (unsigned e)
 Return pointer to inlet traction element e. More...
 
unsigned inlet_traction_elt_length ()
 Return length of inlet traction element vector. More...
 
PolarNavierStokesTractionElement< ELEMENT > * outlet_traction_elt_pt (unsigned e)
 Return pointer to outlet traction element e. More...
 
unsigned outlet_traction_elt_length ()
 Return length of outlet traction element vector. More...
 
FluxConstraintflux_constraint_elt_pt ()
 Return pointer to Flux Cosntraint Element. More...
 
PolarStressIntegralElement< ELEMENT > * lower_stress_integral_elt_pt (unsigned long e)
 Return pointer to shear integral element. More...
 
unsigned lower_stress_integral_elt_length ()
 Return length of lower stress integral element vector. More...
 
PolarStressIntegralElement< ELEMENT > * upper_stress_integral_elt_pt (unsigned long e)
 Return pointer to shear integral element. More...
 
unsigned upper_stress_integral_elt_length ()
 Return length of upper stress integral element vector. More...
 
 jh_mesh (const unsigned int &nx, const unsigned int &ny)
 
void make_traction_elements (const bool &outlet)
 
void make_flux_element ()
 
void make_shear_elements ()
 
void remove_traction_elements ()
 
void remove_shear_elements ()
 
void assign_fluid_element_vector ()
 
- Public Member Functions inherited from oomph::Refineable_r_mesh< ELEMENT >
ELEMENT * fluid_elt_pt (unsigned e)
 Return pointer to fluid element e. More...
 
unsigned fluid_elt_length ()
 Return length of fluid element vector. More...
 
Vector< GeneralisedElement * > fluid_elt_vector ()
 Return pointer to vector of all Fluid elements. More...
 
 Refineable_r_mesh (const unsigned int &nx, const unsigned int &ny)
 
- Public Member Functions inherited from oomph::RectangularQuadMesh< ELEMENT >
 RectangularQuadMesh (const unsigned &nx, const unsigned &ny, const double &lx, const double &ly, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 
 RectangularQuadMesh (const unsigned &nx, const unsigned &ny, const double &xmin, const double &xmax, const double &ymin, const double &ymax, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 
 RectangularQuadMesh (const unsigned &nx, const unsigned &ny, const double &lx, const double &ly, const bool &periodic_in_x, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 
 RectangularQuadMesh (const unsigned &nx, const unsigned &ny, const double &xmin, const double &xmax, const double &ymin, const double &ymax, const bool &periodic_in_x, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 
const unsignednx () const
 Return number of elements in x direction. More...
 
const unsignedny () const
 Return number of elements in y direction. More...
 
const double x_min () const
 Return the minimum value of x coordinate. More...
 
const double x_max () const
 Return the maximum value of x coordinate. More...
 
const double y_min () const
 Return the minimum value of y coordinate. More...
 
const double y_max () const
 Return the maximum value of y coordinate. More...
 
virtual void element_reorder ()
 
virtual double x_spacing_function (unsigned xelement, unsigned xnode, unsigned yelement, unsigned ynode)
 
virtual double y_spacing_function (unsigned xelement, unsigned xnode, unsigned yelement, unsigned ynode)
 
- 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::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 node_update (const bool &update_all_solid_nodes=false)
 
virtual void reorder_nodes (const bool &use_old_ordering=true)
 
virtual void get_node_reordering (Vector< Node * > &reordering, const bool &use_old_ordering=true) const
 
template<class BULK_ELEMENT , template< class > class FACE_ELEMENT>
void build_face_mesh (const unsigned &b, Mesh *const &face_mesh_pt)
 
unsigned self_test ()
 Self-test: Check elements and nodes. Return 0 for OK. More...
 
void max_and_min_element_size (double &max_size, double &min_size)
 
double total_size ()
 
void check_inverted_elements (bool &mesh_has_inverted_elements, std::ofstream &inverted_element_file)
 
void check_inverted_elements (bool &mesh_has_inverted_elements)
 
unsigned check_for_repeated_nodes (const double &epsilon=1.0e-12)
 
Vector< Node * > prune_dead_nodes ()
 
unsigned nboundary () const
 Return number of boundaries. More...
 
unsigned long nboundary_node (const unsigned &ibound) const
 Return number of nodes on a particular boundary. More...
 
FiniteElementboundary_element_pt (const unsigned &b, const unsigned &e) const
 Return pointer to e-th finite element on boundary b. More...
 
Nodeget_some_non_boundary_node () const
 
unsigned nboundary_element (const unsigned &b) const
 Return number of finite elements that are adjacent to boundary b. More...
 
int face_index_at_boundary (const unsigned &b, const unsigned &e) const
 
virtual void dump (std::ofstream &dump_file, const bool &use_old_ordering=true) const
 Dump the data in the mesh into a file for restart. More...
 
void dump (const std::string &dump_file_name, const bool &use_old_ordering=true) const
 Dump the data in the mesh into a file for restart. More...
 
virtual void read (std::ifstream &restart_file)
 Read solution from restart file. More...
 
void output_paraview (std::ofstream &file_out, const unsigned &nplot) const
 
void output_fct_paraview (std::ofstream &file_out, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt) const
 
void output_fct_paraview (std::ofstream &file_out, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt) const
 
void output (std::ostream &outfile)
 Output for all elements. More...
 
void output (std::ostream &outfile, const unsigned &n_plot)
 Output at f(n_plot) points in each element. More...
 
void output (FILE *file_pt)
 Output for all elements (C-style output) More...
 
void output (FILE *file_pt, const unsigned &nplot)
 Output at f(n_plot) points in each element (C-style output) More...
 
void output (const std::string &output_filename)
 Output for all elements. More...
 
void output (const std::string &output_filename, const unsigned &n_plot)
 Output at f(n_plot) points in each element. More...
 
void output_fct (std::ostream &outfile, const unsigned &n_plot, FiniteElement::SteadyExactSolutionFctPt)
 Output a given Vector function at f(n_plot) points in each element. More...
 
void output_fct (std::ostream &outfile, const unsigned &n_plot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt)
 
void output_boundaries (std::ostream &outfile)
 Output the nodes on the boundaries (into separate tecplot zones) More...
 
void output_boundaries (const std::string &output_filename)
 
void assign_initial_values_impulsive ()
 Assign initial values for an impulsive start. More...
 
void shift_time_values ()
 
void calculate_predictions ()
 
void set_nodal_and_elemental_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 
virtual void set_mesh_level_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 
void set_consistent_pinned_values_for_continuation (ContinuationStorageScheme *const &continuation_stepper_pt)
 Set consistent values for pinned data in continuation. More...
 
bool does_pointer_correspond_to_mesh_data (double *const &parameter_pt)
 Does the double pointer correspond to any mesh data. More...
 
void set_nodal_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 Set the timestepper associated with the nodal data in the mesh. More...
 
void set_elemental_internal_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 
virtual void compute_norm (double &norm)
 
virtual void compute_norm (Vector< double > &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 
virtual void compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 
virtual void compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 Returns the norm of the error and that of the exact solution. More...
 
virtual void compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm)
 
bool is_mesh_distributed () const
 Boolean to indicate if Mesh has been distributed. More...
 
OomphCommunicatorcommunicator_pt () const
 
void delete_all_external_storage ()
 Wipe the storage for all externally-based elements. More...
 
- 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...
 

Protected Attributes

Vector< PolarNavierStokesTractionElement< ELEMENT > * > Inlet_traction_elt_pt
 
Vector< PolarNavierStokesTractionElement< ELEMENT > * > Outlet_traction_elt_pt
 
FluxConstraintFlux_constraint_pt
 Generalised element to determine my mass flux (always 1) More...
 
Vector< PolarStressIntegralElement< ELEMENT > * > Lower_stress_integral_elt_pt
 
Vector< PolarStressIntegralElement< ELEMENT > * > Upper_stress_integral_elt_pt
 
- Protected Attributes inherited from oomph::Refineable_r_mesh< ELEMENT >
Vector< GeneralisedElement * > Fluid_elt_pt
 
- Protected Attributes inherited from oomph::RectangularQuadMesh< ELEMENT >
unsigned Nx
 Nx: number of elements in x-direction. More...
 
unsigned Ny
 Ny: number of elements in y-direction. More...
 
unsigned Np
 Np: number of (linear) points in the element. More...
 
double Xmin
 Minimum value of x coordinate. More...
 
double Xmax
 Maximum value of x coordinate. More...
 
double Ymin
 Minimum value of y coordinate. More...
 
double Ymax
 Maximum value of y coordinate. More...
 
bool Xperiodic
 
- 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
 

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::RectangularQuadMesh< ELEMENT >
void build_mesh (TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Generic mesh construction function: contains all the hard work. More...
 
 RectangularQuadMesh (const unsigned &nx, const unsigned &ny, const double &xmin, const double &xmax, const double &ymin, const double &ymax, const bool &periodic_in_x, const bool &build, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 
- 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...
 

Detailed Description

template<class ELEMENT>
class oomph::jh_mesh< ELEMENT >

My fluid mesh (with traction elements)

Constructor & Destructor Documentation

◆ jh_mesh()

template<class ELEMENT >
oomph::jh_mesh< ELEMENT >::jh_mesh ( const unsigned int nx,
const unsigned int ny 
)
inline

Constructor, which "builds" the mesh. The arguments are the number of elements in each direction.

161  :
162  Refineable_r_mesh<ELEMENT>(nx,ny)
163  {
164  //Now bolt on traction stuff
165 
166  //Assign fluid elements to vector
168 
169  //Attach traction elements where needed
173 
174  //Attach shear integral elements
176 
177  }
const unsigned & ny() const
Return number of elements in y direction.
Definition: rectangular_quadmesh.template.h:231
const unsigned & nx() const
Return number of elements in x direction.
Definition: rectangular_quadmesh.template.h:224
void make_shear_elements()
Definition: jh_includes.h:223
void assign_fluid_element_vector()
Definition: jh_includes.h:312
void make_traction_elements(const bool &outlet)
Definition: jh_includes.h:180
void make_flux_element()
Definition: jh_includes.h:215
bool outlet_traction
Definition: jeffery_hamel.cc:82
bool inlet_traction
Definition: jeffery_hamel.cc:79

References oomph::jh_mesh< ELEMENT >::assign_fluid_element_vector(), Global_Physical_Variables::inlet_traction, oomph::jh_mesh< ELEMENT >::make_flux_element(), oomph::jh_mesh< ELEMENT >::make_shear_elements(), oomph::jh_mesh< ELEMENT >::make_traction_elements(), and Global_Physical_Variables::outlet_traction.

Member Function Documentation

◆ assign_fluid_element_vector()

template<class ELEMENT >
void oomph::jh_mesh< ELEMENT >::assign_fluid_element_vector ( )
inline
313  {
314  unsigned check=inlet_traction_elt_length();
316 
317  this->Fluid_elt_pt.clear();
318 
319  if(check!=0)
320  {
321  std::cout << "Warning, attempting to assemble fluid element vector ";
322  std::cout << "whilst traction elements are attached to the mesh" << std::endl;
323  }
324  else
325  {
326  unsigned n_elt = this->Element_pt.size();
327  for(unsigned e=0;e<n_elt;e++)
328  {
329  this->Fluid_elt_pt.push_back(this->Element_pt[e]);
330  }
331  }
332  }//End of assign_fluid_element_vector
Array< double, 1, 3 > e(1./3., 0.5, 2.)
Vector< GeneralisedElement * > Element_pt
Vector of pointers to generalised elements.
Definition: mesh.h:186
Vector< GeneralisedElement * > Fluid_elt_pt
Definition: refineable_r_mesh.h:41
unsigned inlet_traction_elt_length()
Return length of inlet traction element vector.
Definition: jh_includes.h:137
unsigned outlet_traction_elt_length()
Return length of outlet traction element vector.
Definition: jh_includes.h:142
void check(bool b, bool ref)
Definition: fastmath.cpp:12

References check(), e(), oomph::Mesh::Element_pt, oomph::Refineable_r_mesh< ELEMENT >::Fluid_elt_pt, oomph::jh_mesh< ELEMENT >::inlet_traction_elt_length(), and oomph::jh_mesh< ELEMENT >::outlet_traction_elt_length().

Referenced by oomph::jh_mesh< ELEMENT >::jh_mesh().

◆ flux_constraint_elt_pt()

template<class ELEMENT >
FluxConstraint* oomph::jh_mesh< ELEMENT >::flux_constraint_elt_pt ( )
inline

Return pointer to Flux Cosntraint Element.

146  {return Flux_constraint_pt;}
FluxConstraint * Flux_constraint_pt
Generalised element to determine my mass flux (always 1)
Definition: jh_includes.h:124

References oomph::jh_mesh< ELEMENT >::Flux_constraint_pt.

◆ inlet_traction_elt_length()

template<class ELEMENT >
unsigned oomph::jh_mesh< ELEMENT >::inlet_traction_elt_length ( )
inline

Return length of inlet traction element vector.

137 {return Inlet_traction_elt_pt.size();}
Vector< PolarNavierStokesTractionElement< ELEMENT > * > Inlet_traction_elt_pt
Definition: jh_includes.h:121

References oomph::jh_mesh< ELEMENT >::Inlet_traction_elt_pt.

Referenced by oomph::jh_mesh< ELEMENT >::assign_fluid_element_vector(), and oomph::jh_mesh< ELEMENT >::remove_traction_elements().

◆ inlet_traction_elt_pt()

template<class ELEMENT >
PolarNavierStokesTractionElement<ELEMENT>* oomph::jh_mesh< ELEMENT >::inlet_traction_elt_pt ( unsigned  e)
inline

Return pointer to inlet traction element e.

135  {return Inlet_traction_elt_pt[e];}

References e(), and oomph::jh_mesh< ELEMENT >::Inlet_traction_elt_pt.

◆ lower_stress_integral_elt_length()

template<class ELEMENT >
unsigned oomph::jh_mesh< ELEMENT >::lower_stress_integral_elt_length ( )
inline

Return length of lower stress integral element vector.

152 {return Lower_stress_integral_elt_pt.size();}
Vector< PolarStressIntegralElement< ELEMENT > * > Lower_stress_integral_elt_pt
Definition: jh_includes.h:126

References oomph::jh_mesh< ELEMENT >::Lower_stress_integral_elt_pt.

Referenced by oomph::jh_mesh< ELEMENT >::remove_shear_elements().

◆ lower_stress_integral_elt_pt()

template<class ELEMENT >
PolarStressIntegralElement<ELEMENT>* oomph::jh_mesh< ELEMENT >::lower_stress_integral_elt_pt ( unsigned long  e)
inline

Return pointer to shear integral element.

References e(), and oomph::jh_mesh< ELEMENT >::Lower_stress_integral_elt_pt.

◆ make_flux_element()

template<class ELEMENT >
void oomph::jh_mesh< ELEMENT >::make_flux_element ( )
inline
216  {
218  //Push it back onto the Element_pt Vector
219  this->Element_pt.push_back(Flux_constraint_pt);
220  }
Generalised element used to set the pressure gradient.
Definition: elastic_bretherton.cc:1180

References oomph::Mesh::Element_pt, and oomph::jh_mesh< ELEMENT >::Flux_constraint_pt.

Referenced by oomph::jh_mesh< ELEMENT >::jh_mesh().

◆ make_shear_elements()

template<class ELEMENT >
void oomph::jh_mesh< ELEMENT >::make_shear_elements ( )
inline
224  {
225  //loop over boundaries
226  for(unsigned ibound=0;ibound<4;ibound+=2)
227  {
228  int index;
229  if(ibound==0) index=-2;
230  else index=2;
231 
232  unsigned num_elt = this->nboundary_element(ibound);
233 
234  //Loop over the number of elements along boundary
235  for(unsigned ielt=0;ielt<num_elt;ielt++)
236  {
237  //Element on lower boundary
238  PolarStressIntegralElement<ELEMENT> *surface_element_pt =
239  new PolarStressIntegralElement<ELEMENT>
240  (this->boundary_element_pt(ibound,ielt),index);
241 
242  //Push it back onto the appropriate vector
243  if(ibound==0)
244  this->Lower_stress_integral_elt_pt.push_back(surface_element_pt);
245  else this->Upper_stress_integral_elt_pt.push_back(surface_element_pt);
246 
247  }//End of loop over elements
248 
249  }//End of loop over boundaries
250 
251  std::cout << std::endl << "Shear elements attached to mesh" << std::endl << std::endl;
252 
253  }//End of make shear elements
unsigned nboundary_element(const unsigned &b) const
Return number of finite elements that are adjacent to boundary b.
Definition: mesh.h:878
FiniteElement * boundary_element_pt(const unsigned &b, const unsigned &e) const
Return pointer to e-th finite element on boundary b.
Definition: mesh.h:840
Vector< PolarStressIntegralElement< ELEMENT > * > Upper_stress_integral_elt_pt
Definition: jh_includes.h:127

References oomph::Mesh::boundary_element_pt(), and oomph::Mesh::nboundary_element().

Referenced by oomph::jh_mesh< ELEMENT >::jh_mesh().

◆ make_traction_elements()

template<class ELEMENT >
void oomph::jh_mesh< ELEMENT >::make_traction_elements ( const bool outlet)
inline
181  {
182  //Specify inlet/outlet specific quantities
183  unsigned ibound; int index; double eta;
184  if(outlet) {ibound=1;index=1;eta=Global_Physical_Variables::eta_outlet; }
185  else {ibound=3;index=-1;eta=Global_Physical_Variables::eta_inlet; }
186 
187  unsigned num_elt = this->nboundary_element(ibound);
188 
189  //Loop over the number of elements on the boundary
190  for(unsigned ielt=0;ielt<num_elt;ielt++)
191  {
192  PolarNavierStokesTractionElement<ELEMENT> *surface_element_pt =
193  new PolarNavierStokesTractionElement<ELEMENT>
194  (this->boundary_element_pt(ibound,ielt),index);
195  //Push it back onto the Element_pt Vector
196  this->Element_pt.push_back(surface_element_pt);
197 
198  if(outlet) { this->Outlet_traction_elt_pt.push_back(surface_element_pt); }
199  else { this->Inlet_traction_elt_pt.push_back(surface_element_pt); }
200 
201  //Any other information to pass:
202  surface_element_pt->set_eta(eta);
203  surface_element_pt->traction_fct_pt() =
205  surface_element_pt->set_boundary(index);
206  surface_element_pt->alpha_pt() = &Global_Physical_Variables::Alpha;
207 
208  }//End of loop over elements
209 
210  std::cout << std::endl << "Traction elements attached to mesh" << std::endl << std::endl;
211 
212  }//End of make traction elements
Vector< PolarNavierStokesTractionElement< ELEMENT > * > Outlet_traction_elt_pt
Definition: jh_includes.h:122
double eta_inlet
Definition: jeffery_hamel.cc:80
double Alpha
Scaling factor for wall thickness (to be used in an exercise)
Definition: unsteady_ring.cc:73
void traction_function(const double &time, const Vector< double > &x, Vector< double > &traction)
Unused (but assigned) function to specify tractions.
Definition: jeffery_hamel.cc:96
double eta_outlet
Definition: jeffery_hamel.cc:83
double eta
Definition: foeppl_von_karman/circular_disk/circular_disk.cc:45

References Global_Physical_Variables::Alpha, oomph::PolarNavierStokesTractionElement< ELEMENT >::alpha_pt(), oomph::Mesh::boundary_element_pt(), oomph::Mesh::Element_pt, TestSoln::eta, Global_Physical_Variables::eta_inlet, Global_Physical_Variables::eta_outlet, oomph::Mesh::nboundary_element(), oomph::PolarNavierStokesTractionElement< ELEMENT >::set_boundary(), oomph::PolarNavierStokesTractionElement< ELEMENT >::set_eta(), oomph::PolarNavierStokesTractionElement< ELEMENT >::traction_fct_pt, and Global_Physical_Variables::traction_function().

Referenced by oomph::jh_mesh< ELEMENT >::jh_mesh().

◆ outlet_traction_elt_length()

template<class ELEMENT >
unsigned oomph::jh_mesh< ELEMENT >::outlet_traction_elt_length ( )
inline

◆ outlet_traction_elt_pt()

template<class ELEMENT >
PolarNavierStokesTractionElement<ELEMENT>* oomph::jh_mesh< ELEMENT >::outlet_traction_elt_pt ( unsigned  e)
inline

Return pointer to outlet traction element e.

140  {return Outlet_traction_elt_pt[e];}

References e(), and oomph::jh_mesh< ELEMENT >::Outlet_traction_elt_pt.

◆ remove_shear_elements()

template<class ELEMENT >
void oomph::jh_mesh< ELEMENT >::remove_shear_elements ( )
inline
285  {
286  //Find the number of shear elements
287  unsigned Nshear_lower = this->lower_stress_integral_elt_length();
288  unsigned Nshear_upper = this->upper_stress_integral_elt_length();
289 
290  //So delete and remove shear elements
291  for(unsigned e=0;e<Nshear_lower;e++)
292  {
293  delete this->Lower_stress_integral_elt_pt.back();
294  this->Lower_stress_integral_elt_pt.pop_back();
295  }
296  //So delete and remove shear elements
297  for(unsigned e=0;e<Nshear_upper;e++)
298  {
299  delete this->Upper_stress_integral_elt_pt.back();
300  this->Upper_stress_integral_elt_pt.pop_back();
301  }
302 
303  //Now clear the vectors of pointers to traction elements
306 
307  std::cout << std::endl << "Shear elements removed from mesh" << std::endl << std::endl;
308 
309  }//End of remove_shear_elements
unsigned upper_stress_integral_elt_length()
Return length of upper stress integral element vector.
Definition: jh_includes.h:157
unsigned lower_stress_integral_elt_length()
Return length of lower stress integral element vector.
Definition: jh_includes.h:152

References e(), oomph::jh_mesh< ELEMENT >::lower_stress_integral_elt_length(), oomph::jh_mesh< ELEMENT >::Lower_stress_integral_elt_pt, oomph::jh_mesh< ELEMENT >::upper_stress_integral_elt_length(), and oomph::jh_mesh< ELEMENT >::Upper_stress_integral_elt_pt.

◆ remove_traction_elements()

template<class ELEMENT >
void oomph::jh_mesh< ELEMENT >::remove_traction_elements ( )
inline
257  {
258  //Find the number of traction elements
259  unsigned Ntraction = this->inlet_traction_elt_length();
260  Ntraction += this->outlet_traction_elt_length();
261 
262  //If we have traction elements at both ends then we have
263  //one extra element to remove (the flux constraint element)
265  {Ntraction+=1; this->Flux_constraint_pt=0;}
266 
267  //The traction elements are ALWAYS? stored at the end
268  //So delete and remove them
269  for(unsigned e=0;e<Ntraction;e++)
270  {
271  delete this->Element_pt.back();
272  this->Element_pt.pop_back();
273  }
274 
275  //Now clear the vectors of pointers to traction elements
276  Inlet_traction_elt_pt.clear();
277  Outlet_traction_elt_pt.clear();
278 
279  std::cout << std::endl << "Traction elements removed from mesh" << std::endl << std::endl;
280 
281  }//End of remove_traction_elements

References e(), oomph::Mesh::Element_pt, Global_Physical_Variables::inlet_traction, oomph::jh_mesh< ELEMENT >::inlet_traction_elt_length(), Global_Physical_Variables::outlet_traction, oomph::jh_mesh< ELEMENT >::outlet_traction_elt_length(), and oomph::jh_mesh< ELEMENT >::Outlet_traction_elt_pt.

◆ upper_stress_integral_elt_length()

template<class ELEMENT >
unsigned oomph::jh_mesh< ELEMENT >::upper_stress_integral_elt_length ( )
inline

Return length of upper stress integral element vector.

157 {return Upper_stress_integral_elt_pt.size();}

References oomph::jh_mesh< ELEMENT >::Upper_stress_integral_elt_pt.

Referenced by oomph::jh_mesh< ELEMENT >::remove_shear_elements().

◆ upper_stress_integral_elt_pt()

template<class ELEMENT >
PolarStressIntegralElement<ELEMENT>* oomph::jh_mesh< ELEMENT >::upper_stress_integral_elt_pt ( unsigned long  e)
inline

Return pointer to shear integral element.

References e(), and oomph::jh_mesh< ELEMENT >::Upper_stress_integral_elt_pt.

Member Data Documentation

◆ Flux_constraint_pt

template<class ELEMENT >
FluxConstraint* oomph::jh_mesh< ELEMENT >::Flux_constraint_pt
protected

Generalised element to determine my mass flux (always 1)

Referenced by oomph::jh_mesh< ELEMENT >::flux_constraint_elt_pt(), and oomph::jh_mesh< ELEMENT >::make_flux_element().

◆ Inlet_traction_elt_pt

template<class ELEMENT >
Vector<PolarNavierStokesTractionElement<ELEMENT>*> oomph::jh_mesh< ELEMENT >::Inlet_traction_elt_pt
protected

◆ Lower_stress_integral_elt_pt

◆ Outlet_traction_elt_pt

◆ Upper_stress_integral_elt_pt


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