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

Tube as a domain. The entire domain must be defined by a GeomObject with the following convention: zeta[0] is the coordinate along the centreline, zeta[1] is the theta coordinate around the tube wall and zeta[2] is the radial coordinate. The outer boundary must lie at zeta[2] = 1. More...

#include <tube_domain.h>

+ Inheritance diagram for oomph::TubeDomain:

Public Member Functions

 TubeDomain (GeomObject *volume_geom_object_pt, const Vector< double > &centreline_limits, const Vector< double > &theta_positions, const Vector< double > &radius_box, const unsigned &nlayer)
 Constructor: Pass geometric object; start and end limit of the centreline coordinate; the theta locations marking the division between the elements of the outer ring, labelled from the lower left to the upper left in order, theta should be in the range $-\pi$ to $\pi$; the corresponding fractions of the radius at which the central box is to be placed; and the number of layers in the domain. More...
 
 TubeDomain (const TubeDomain &)
 Broken copy constructor. More...
 
void operator= (const TubeDomain &)
 Broken assignment operator. More...
 
 ~TubeDomain ()
 Destructor: Kill all macro elements. More...
 
void macro_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 i_direct (L/R/D/U/B/F) at time level t (t=0: present; t>0: previous): f(s). More...
 
- Public Member Functions inherited from oomph::Domain
 Domain ()
 Constructor. More...
 
 Domain (const Domain &)
 Broken copy constructor. More...
 
void operator= (const Domain &)
 Broken assignment operator. More...
 
virtual ~Domain ()
 Virtual destructor: Empty. 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...
 
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...
 
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 Member Functions

void lin_interpolate (const Vector< double > &low, const Vector< double > &high, const double &s, Vector< double > &f)
 A very little linear interpolation helper. Interpolate from the low point to the high point using the coordinate s which is assumed to run from -1 to 1. More...
 

Private Attributes

Vector< double > Centreline_limits
 Storage for the limits of the centreline coordinate. More...
 
Vector< double > Theta_positions
 Storage for the dividing lines on the boundary starting from the lower left and proceeding anticlockwise to the upper left. More...
 
Vector< double > Radius_box
 
unsigned Nlayer
 Number of axial layers. More...
 
GeomObjectVolume_pt
 Pointer to geometric object that represents the domain. More...
 

Additional Inherited Members

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

Detailed Description

Tube as a domain. The entire domain must be defined by a GeomObject with the following convention: zeta[0] is the coordinate along the centreline, zeta[1] is the theta coordinate around the tube wall and zeta[2] is the radial coordinate. The outer boundary must lie at zeta[2] = 1.

The domain is parametrised by five macro elements (a central box surrounded by four curved elements) in each of the nlayer slices. The labelling of the macro elements is as follows with the zeta[0] coordinate coming out of the page.


|\ /| | \ Macro / | | 3 Element 3 2 | | \ / | | -------------—/ | | | | | | 4 | Macro | | | | Element 0 | 2 | | | | | | --------------— | | / \ | | 0 Macro 1 | | / Element 1 \ | | / | |/----------------------—|

Definition at line 74 of file tube_domain.h.

Constructor & Destructor Documentation

oomph::TubeDomain::TubeDomain ( GeomObject volume_geom_object_pt,
const Vector< double > &  centreline_limits,
const Vector< double > &  theta_positions,
const Vector< double > &  radius_box,
const unsigned &  nlayer 
)
inline

Constructor: Pass geometric object; start and end limit of the centreline coordinate; the theta locations marking the division between the elements of the outer ring, labelled from the lower left to the upper left in order, theta should be in the range $-\pi$ to $\pi$; the corresponding fractions of the radius at which the central box is to be placed; and the number of layers in the domain.

Definition at line 86 of file tube_domain.h.

References i, and oomph::Domain::Macro_element_pt.

oomph::TubeDomain::TubeDomain ( const TubeDomain )
inline

Broken copy constructor.

Definition at line 107 of file tube_domain.h.

References oomph::BrokenCopy::broken_copy().

oomph::TubeDomain::~TubeDomain ( )
inline

Destructor: Kill all macro elements.

Definition at line 120 of file tube_domain.h.

References i, oomph::Domain::Macro_element_pt, and Nlayer.

Member Function Documentation

void oomph::TubeDomain::lin_interpolate ( const Vector< double > &  low,
const Vector< double > &  high,
const double &  s,
Vector< double > &  f 
)
inlineprivate

A very little linear interpolation helper. Interpolate from the low point to the high point using the coordinate s which is assumed to run from -1 to 1.

Definition at line 163 of file tube_domain.h.

References i.

Referenced by macro_element_boundary().

void oomph::TubeDomain::macro_element_boundary ( const unsigned &  t,
const unsigned &  i_macro,
const unsigned &  i_direct,
const Vector< double > &  s,
Vector< double > &  f 
)
virtual

Vector representation of the i_macro-th macro element boundary i_direct (L/R/D/U/B/F) at time level t (t=0: present; t>0: previous): f(s).

Vector representation of the imacro-th macro element boundary idirect (L/R/D/U/B/F) at time level t (t=0: present; t>0: previous): f(s)

Implements oomph::Domain.

Definition at line 190 of file tube_domain.h.

References oomph::OcTreeNames::B, Centreline_limits, oomph::OcTreeNames::D, oomph::OcTreeNames::F, i, oomph::BinaryTreeNames::L, lin_interpolate(), Nlayer, oomph::MathematicalConstants::Pi, oomph::GeomObject::position(), oomph::BinaryTreeNames::R, Radius_box, Theta_positions, oomph::OcTreeNames::U, and Volume_pt.

void oomph::TubeDomain::operator= ( const TubeDomain )
inline

Broken assignment operator.

Definition at line 113 of file tube_domain.h.

References oomph::BrokenCopy::broken_assign().

Member Data Documentation

Vector<double> oomph::TubeDomain::Centreline_limits
private

Storage for the limits of the centreline coordinate.

Definition at line 142 of file tube_domain.h.

Referenced by macro_element_boundary().

unsigned oomph::TubeDomain::Nlayer
private

Number of axial layers.

Definition at line 154 of file tube_domain.h.

Referenced by macro_element_boundary(), and ~TubeDomain().

Vector<double> oomph::TubeDomain::Radius_box
private

Storage for the fraction of the radius at which the central box should be located corresponding to the chosen values of theta.

Definition at line 151 of file tube_domain.h.

Referenced by macro_element_boundary().

Vector<double> oomph::TubeDomain::Theta_positions
private

Storage for the dividing lines on the boundary starting from the lower left and proceeding anticlockwise to the upper left.

Definition at line 147 of file tube_domain.h.

Referenced by macro_element_boundary().

GeomObject* oomph::TubeDomain::Volume_pt
private

Pointer to geometric object that represents the domain.

Definition at line 157 of file tube_domain.h.

Referenced by macro_element_boundary().


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