Public Member Functions | Private Attributes | List of all members
oomph::RectangleWithHoleAndAnnularRegionDomain Class Reference

Rectangular domain with circular whole DRAIG: This looks like a redefinition of the RectangleWithHoleAndAnnularRegionDomain in src/meshes but it creates 8 macro-elements instead of 4 macro-elements and creates an annular region around the cylinder. It's probably a good idea to rename this class to avoid ambiguity and a name clash... More...

#include <rectangle_with_moving_cylinder_mesh.template.h>

+ Inheritance diagram for oomph::RectangleWithHoleAndAnnularRegionDomain:

Public Member Functions

 RectangleWithHoleAndAnnularRegionDomain (GeomObject *cylinder_pt, const double &annular_region_radius, const double &length)
 Constructor. Pass pointer to geometric object that represents the cylinder, the length of the (square) domain. The GeomObject must be parametrised such that $\zeta \in [0,2\pi]$ sweeps around the circumference in anticlockwise direction. More...
 
 ~RectangleWithHoleAndAnnularRegionDomain ()
 Destructor: Empty; macro elements are deleted in base class destructor. More...
 
void project_point_on_cylinder_to_annular_boundary (const unsigned &time, const Vector< double > &xi, Vector< double > &r)
 Helper function that, given the Lagrangian coordinate, xi, (associated with a point on the cylinder), returns the corresponding point on the outer boundary of the annular region (where the inner boundary is prescribed by the boundary of the cylinder) More...
 
void project_point_on_cylinder_to_annular_boundary (const double &time, const Vector< double > &xi, Vector< double > &r)
 Helper function that, given the Lagrangian coordinate, xi, (associated with a point on the cylinder), returns the corresponding point on the outer boundary of the annular region (where the inner boundary is prescribed by the boundary of the cylinder) More...
 
void linear_interpolate (const Vector< double > &left, const Vector< double > &right, const double &s, Vector< double > &f)
 Helper function to interpolate linearly between the "right" and "left" points; $ s \in [-1,1] $. More...
 
void macro_element_boundary (const double &time, const unsigned &m, const unsigned &direction, const Vector< double > &s, Vector< double > &f)
 Parametrisation of macro element boundaries: f(s) is the position vector to macro-element m's boundary in the specified direction [N/S/E/W] at the specified discrete time level (time=0: present; time>0: previous) More...
 
void macro_element_boundary (const unsigned &time, const unsigned &m, const unsigned &direction, const Vector< double > &s, Vector< double > &f)
 Parametrisation of macro element boundaries: f(s) is the position vector to macro-element m's boundary in the specified direction [N/S/E/W] at the specified discrete time level (time=0: present; time>0: previous) More...
 
- Public Member Functions inherited from oomph::Domain
 Domain ()
 Constructor. More...
 
 Domain (const Domain &)=delete
 Broken copy constructor. More...
 
void operator= (const Domain &)=delete
 Broken assignment operator. More...
 
virtual ~Domain ()
 Destructor: Strictly speaking, whoever creates an object dynamically should be responsible for the cleanup of said object but it makes sense here for the Domain to generically kill any MacroElements left over in the MacroElement container (if it hasn't already been done in the derived class) to avoid memory leaks. More...
 
MacroElementmacro_element_pt (const unsigned &i)
 Access to i-th macro element. More...
 
unsigned nmacro_element ()
 Number of macro elements in domain. More...
 
void output (const std::string &filename, const unsigned &nplot)
 Output macro elements. More...
 
void output (std::ostream &outfile, const unsigned &nplot)
 Output macro elements. More...
 
void macro_element_boundary (const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
 Vector representation of the i_macro-th macro element boundary i_direct (e.g. N/S/W/E in 2D) at current time: f(s). More...
 
void output_macro_element_boundaries (const std::string &filename, const unsigned &nplot)
 Output all macro element boundaries as tecplot zones. More...
 
void output_macro_element_boundaries (std::ostream &outfile, const unsigned &nplot)
 Output all macro element boundaries as tecplot zones. More...
 
virtual void dmacro_element_boundary (const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
 Vector representation of the i_macro-th macro element boundary derivatives i_direct (e.g. N/S/W/E in 2D) at time level t (t=0: present; t>0: previous): f(s). Broken virtual. More...
 
virtual void dmacro_element_boundary (const double &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
 Vector representation of the i_macro-th macro element boundary derivatives i_direct (e.g. N/S/W/E in 2D) at continuous time level t. Broken virtual. More...
 
void dmacro_element_boundary (const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
 Vector representation of the i_macro-th macro element boundary derivatives i_direct (e.g. N/S/W/E in 2D) at current time: f(s). More...
 
virtual void d2macro_element_boundary (const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
 Vector representation of the i_macro-th macro element boundary second derivatives i_direct (e.g. N/S/W/E in 2D) at time level t (t=0: present; t>0: previous): f(s). Broken virtual. More...
 
virtual void d2macro_element_boundary (const double &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
 Vector representation of the i_macro-th macro element boundary seocond derivatives i_direct (e.g. N/S/W/E in 2D) at continuous time level t. Broken virtual. More...
 
void d2macro_element_boundary (const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
 Vector representation of the i_macro-th macro element boundary second derivatives i_direct (e.g. N/S/W/E in 2D) at current time: f(s). More...
 

Private Attributes

Vector< double > Lower_left
 Lower left corner of rectangle. More...
 
Vector< double > Lower_right
 Lower right corner of rectangle. More...
 
Vector< double > Lower_mid_left
 Where the "radial" line from circle meets lower boundary on left. More...
 
Vector< double > Lower_mid_right
 Where the "radial" line from circle meets lower boundary on right. More...
 
Vector< double > Upper_left
 Upper left corner of rectangle. More...
 
Vector< double > Upper_right
 Upper right corner of rectangle. More...
 
Vector< double > Upper_mid_left
 Where the "radial" line from circle meets upper boundary on left. More...
 
Vector< double > Upper_mid_right
 Where the "radial" line from circle meets upper boundary on right. More...
 
GeomObjectCylinder_pt
 Pointer to geometric object that represents the central cylinder. More...
 
double Annular_region_radius
 The radius of the outer boundary of the annular region whose inner boundary is described by Cylinder_pt and outer boundary is a circle with radius lying between half the length of the bounding box and the radius cylinder. More...
 

Additional Inherited Members

- Protected Attributes inherited from oomph::Domain
Vector< MacroElement * > Macro_element_pt
 Vector of pointers to macro elements. More...
 

Detailed Description

Rectangular domain with circular whole DRAIG: This looks like a redefinition of the RectangleWithHoleAndAnnularRegionDomain in src/meshes but it creates 8 macro-elements instead of 4 macro-elements and creates an annular region around the cylinder. It's probably a good idea to rename this class to avoid ambiguity and a name clash...

Definition at line 53 of file rectangle_with_moving_cylinder_mesh.template.h.

Constructor & Destructor Documentation

◆ RectangleWithHoleAndAnnularRegionDomain()

oomph::RectangleWithHoleAndAnnularRegionDomain::RectangleWithHoleAndAnnularRegionDomain ( GeomObject cylinder_pt,
const double &  annular_region_radius,
const double &  length 
)
inline

Constructor. Pass pointer to geometric object that represents the cylinder, the length of the (square) domain. The GeomObject must be parametrised such that $\zeta \in [0,2\pi]$ sweeps around the circumference in anticlockwise direction.

Definition at line 61 of file rectangle_with_moving_cylinder_mesh.template.h.

References i, Lower_left, Lower_mid_left, Lower_mid_right, Lower_right, oomph::Domain::Macro_element_pt, Upper_left, Upper_mid_left, Upper_mid_right, and Upper_right.

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

◆ ~RectangleWithHoleAndAnnularRegionDomain()

oomph::RectangleWithHoleAndAnnularRegionDomain::~RectangleWithHoleAndAnnularRegionDomain ( )
inline

Destructor: Empty; macro elements are deleted in base class destructor.

Definition at line 117 of file rectangle_with_moving_cylinder_mesh.template.h.

Member Function Documentation

◆ linear_interpolate()

void oomph::RectangleWithHoleAndAnnularRegionDomain::linear_interpolate ( const Vector< double > &  left,
const Vector< double > &  right,
const double &  s,
Vector< double > &  f 
)
inline

Helper function to interpolate linearly between the "right" and "left" points; $ s \in [-1,1] $.

Definition at line 139 of file rectangle_with_moving_cylinder_mesh.template.h.

References i, and s.

Referenced by macro_element_boundary().

◆ macro_element_boundary() [1/2]

void oomph::RectangleWithHoleAndAnnularRegionDomain::macro_element_boundary ( const double &  time,
const unsigned &  m,
const unsigned &  direction,
const Vector< double > &  s,
Vector< double > &  f 
)
virtual

Parametrisation of macro element boundaries: f(s) is the position vector to macro-element m's boundary in the specified direction [N/S/E/W] at the specified discrete time level (time=0: present; time>0: previous)

Reimplemented from oomph::Domain.

Definition at line 127 of file rectangle_with_moving_cylinder_mesh.template.cc.

References Cylinder_pt, oomph::QuadTreeNames::E, linear_interpolate(), Lower_mid_left, Lower_mid_right, oomph::QuadTreeNames::N, oomph::GeomObject::position(), project_point_on_cylinder_to_annular_boundary(), s, oomph::QuadTreeNames::S, oomph::Global_string_for_annotation::string(), Upper_mid_left, Upper_mid_right, and oomph::QuadTreeNames::W.

◆ macro_element_boundary() [2/2]

void oomph::RectangleWithHoleAndAnnularRegionDomain::macro_element_boundary ( const unsigned &  time,
const unsigned &  m,
const unsigned &  direction,
const Vector< double > &  s,
Vector< double > &  f 
)
virtual

Parametrisation of macro element boundaries: f(s) is the position vector to macro-element m's boundary in the specified direction [N/S/E/W] at the specified discrete time level (time=0: present; time>0: previous)

Implements oomph::Domain.

Definition at line 517 of file rectangle_with_moving_cylinder_mesh.template.cc.

References Cylinder_pt, oomph::QuadTreeNames::E, linear_interpolate(), Lower_mid_left, Lower_mid_right, oomph::QuadTreeNames::N, oomph::GeomObject::position(), project_point_on_cylinder_to_annular_boundary(), s, oomph::QuadTreeNames::S, Upper_mid_left, Upper_mid_right, and oomph::QuadTreeNames::W.

◆ project_point_on_cylinder_to_annular_boundary() [1/2]

void oomph::RectangleWithHoleAndAnnularRegionDomain::project_point_on_cylinder_to_annular_boundary ( const double &  time,
const Vector< double > &  xi,
Vector< double > &  r 
)

Helper function that, given the Lagrangian coordinate, xi, (associated with a point on the cylinder), returns the corresponding point on the outer boundary of the annular region (where the inner boundary is prescribed by the boundary of the cylinder)

Definition at line 83 of file rectangle_with_moving_cylinder_mesh.template.cc.

References Annular_region_radius, Cylinder_pt, i, and oomph::GeomObject::position().

◆ project_point_on_cylinder_to_annular_boundary() [2/2]

void oomph::RectangleWithHoleAndAnnularRegionDomain::project_point_on_cylinder_to_annular_boundary ( const unsigned &  time,
const Vector< double > &  xi,
Vector< double > &  r 
)

Helper function that, given the Lagrangian coordinate, xi, (associated with a point on the cylinder), returns the corresponding point on the outer boundary of the annular region (where the inner boundary is prescribed by the boundary of the cylinder)

Rectangular domain with circular whole.

Definition at line 38 of file rectangle_with_moving_cylinder_mesh.template.cc.

References Annular_region_radius, Cylinder_pt, i, and oomph::GeomObject::position().

Referenced by macro_element_boundary().

Member Data Documentation

◆ Annular_region_radius

double oomph::RectangleWithHoleAndAnnularRegionDomain::Annular_region_radius
private

The radius of the outer boundary of the annular region whose inner boundary is described by Cylinder_pt and outer boundary is a circle with radius lying between half the length of the bounding box and the radius cylinder.

Definition at line 205 of file rectangle_with_moving_cylinder_mesh.template.h.

Referenced by project_point_on_cylinder_to_annular_boundary().

◆ Cylinder_pt

GeomObject* oomph::RectangleWithHoleAndAnnularRegionDomain::Cylinder_pt
private

Pointer to geometric object that represents the central cylinder.

Definition at line 199 of file rectangle_with_moving_cylinder_mesh.template.h.

Referenced by macro_element_boundary(), and project_point_on_cylinder_to_annular_boundary().

◆ Lower_left

Vector<double> oomph::RectangleWithHoleAndAnnularRegionDomain::Lower_left
private

Lower left corner of rectangle.

Definition at line 175 of file rectangle_with_moving_cylinder_mesh.template.h.

Referenced by RectangleWithHoleAndAnnularRegionDomain().

◆ Lower_mid_left

Vector<double> oomph::RectangleWithHoleAndAnnularRegionDomain::Lower_mid_left
private

Where the "radial" line from circle meets lower boundary on left.

Definition at line 181 of file rectangle_with_moving_cylinder_mesh.template.h.

Referenced by macro_element_boundary(), and RectangleWithHoleAndAnnularRegionDomain().

◆ Lower_mid_right

Vector<double> oomph::RectangleWithHoleAndAnnularRegionDomain::Lower_mid_right
private

Where the "radial" line from circle meets lower boundary on right.

Definition at line 184 of file rectangle_with_moving_cylinder_mesh.template.h.

Referenced by macro_element_boundary(), and RectangleWithHoleAndAnnularRegionDomain().

◆ Lower_right

Vector<double> oomph::RectangleWithHoleAndAnnularRegionDomain::Lower_right
private

Lower right corner of rectangle.

Definition at line 178 of file rectangle_with_moving_cylinder_mesh.template.h.

Referenced by RectangleWithHoleAndAnnularRegionDomain().

◆ Upper_left

Vector<double> oomph::RectangleWithHoleAndAnnularRegionDomain::Upper_left
private

Upper left corner of rectangle.

Definition at line 187 of file rectangle_with_moving_cylinder_mesh.template.h.

Referenced by RectangleWithHoleAndAnnularRegionDomain().

◆ Upper_mid_left

Vector<double> oomph::RectangleWithHoleAndAnnularRegionDomain::Upper_mid_left
private

Where the "radial" line from circle meets upper boundary on left.

Definition at line 193 of file rectangle_with_moving_cylinder_mesh.template.h.

Referenced by macro_element_boundary(), and RectangleWithHoleAndAnnularRegionDomain().

◆ Upper_mid_right

Vector<double> oomph::RectangleWithHoleAndAnnularRegionDomain::Upper_mid_right
private

Where the "radial" line from circle meets upper boundary on right.

Definition at line 196 of file rectangle_with_moving_cylinder_mesh.template.h.

Referenced by macro_element_boundary(), and RectangleWithHoleAndAnnularRegionDomain().

◆ Upper_right

Vector<double> oomph::RectangleWithHoleAndAnnularRegionDomain::Upper_right
private

Upper right corner of rectangle.

Definition at line 190 of file rectangle_with_moving_cylinder_mesh.template.h.

Referenced by RectangleWithHoleAndAnnularRegionDomain().


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