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>
Public Member Functions | |
TubeDomain (GeomObject *volume_geom_object_pt, const Vector< double > ¢reline_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 to ; 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 &)=delete | |
Broken copy constructor. More... | |
void | operator= (const TubeDomain &)=delete |
Broken assignment operator. More... | |
~TubeDomain () | |
Destructor: Empty; cleanup done in base class. 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 &)=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... | |
MacroElement * | macro_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... | |
virtual void | macro_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 i_direct (e.g. N/S/W/E in 2D) at continuous time, t. 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 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 |
Storage for the fraction of the radius at which the central box should be located corresponding to the chosen values of theta. More... | |
unsigned | Nlayer |
Number of axial layers. More... | |
GeomObject * | Volume_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... | |
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 69 of file tube_domain.h.
|
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 to ; 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 79 of file tube_domain.h.
References i, and oomph::Domain::Macro_element_pt.
|
delete |
Broken copy constructor.
|
inline |
Destructor: Empty; cleanup done in base class.
Definition at line 108 of file tube_domain.h.
|
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 143 of file tube_domain.h.
Referenced by macro_element_boundary().
|
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 167 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, s, t, Theta_positions, oomph::OcTreeNames::U, and Volume_pt.
|
delete |
Broken assignment operator.
|
private |
Storage for the limits of the centreline coordinate.
Definition at line 122 of file tube_domain.h.
Referenced by macro_element_boundary().
|
private |
Number of axial layers.
Definition at line 134 of file tube_domain.h.
Referenced by macro_element_boundary().
|
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 131 of file tube_domain.h.
Referenced by macro_element_boundary().
|
private |
Storage for the dividing lines on the boundary starting from the lower left and proceeding anticlockwise to the upper left.
Definition at line 127 of file tube_domain.h.
Referenced by macro_element_boundary().
|
private |
Pointer to geometric object that represents the domain.
Definition at line 137 of file tube_domain.h.
Referenced by macro_element_boundary().