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

Fish shaped domain, represented by four MacroElements. Shape is parametrised by GeomObject that represents the fish's back. More...

#include <fish_domain.h>

+ Inheritance diagram for oomph::FishDomain:

Public Member Functions

 FishDomain (GeomObject *back_pt, const double &xi_nose, const double &xi_tail)
 Constructor: Pass pointer to GeomObject that represents the (upper) curved boundary of the fish's body, and the start and end values of the Lagrangian coordinates along the GeomObject. More...
 
 FishDomain (const FishDomain &)=delete
 Broken copy constructor. More...
 
void operator= (const FishDomain &)=delete
 Broken assignment operator. More...
 
virtual ~FishDomain ()
 Destructor for FishDomain: Empty; cleanup done in base class. More...
 
double & x_fin ()
 x-position of fin tip More...
 
double & y_fin ()
 y-position of fin tip More...
 
double & x_mouth ()
 x-position of mouth More...
 
double & xi_nose ()
 Start coordinate on wall (near nose) More...
 
double & xi_tail ()
 End coordinate on wall (near tail) More...
 
void macro_element_boundary (const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &zeta, Vector< double > &r)
 Vector representation of the i_macro-th macro element boundary i_direct (N/S/W/E) at the discrete time level t (t=0: present; t>0: previous): $ {\bf r}({\bf zeta}) $ Note that the local coordinate zeta is a 1D Vector rather than a scalar – this is unavoidable because this function implements the pure virtual function in the Domain base class. 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...
 
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 r_upper_body_N (const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
 Boundary of upper body macro element zeta $ \in [-1,1] $. More...
 
void r_upper_body_W (const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
 Boundary of upper body macro element zeta $ \in [-1,1] $. More...
 
void r_upper_body_S (const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
 Boundary of upper body macro element zeta $ \in [-1,1] $. More...
 
void r_upper_body_E (const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
 Boundary of upper body macro element zeta $ \in [-1,1] $. More...
 
void r_upper_fin_N (const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
 Boundary of upper fin macro element zeta $ \in [-1,1] $. More...
 
void r_upper_fin_W (const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
 Boundary of upper fin macro element zeta $ \in [-1,1] $. More...
 
void r_upper_fin_S (const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
 Boundary of upper fin macro element zeta $ \in [-1,1] $. More...
 
void r_upper_fin_E (const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
 Boundary of upper fin macro element zeta $ \in [-1,1] $. More...
 
void r_lower_body_N (const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
 Boundary of lower body macro element zeta $ \in [-1,1] $. More...
 
void r_lower_body_W (const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
 Boundary of lower body macro element zeta $ \in [-1,1] $. More...
 
void r_lower_body_S (const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
 Southern boundary of lower body macro element zeta $\in [-1,1] $. More...
 
void r_lower_body_E (const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
 Boundary of lower body macro element zeta $ \in [-1,1] $. More...
 
void r_lower_fin_N (const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
 Boundary of lower fin macro element zeta $ \in [-1,1] $. More...
 
void r_lower_fin_W (const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
 Boundary of lower fin macro element zeta $ \in [-1,1] $. More...
 
void r_lower_fin_S (const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
 Boundary of lower fin macro element zeta $ \in [-1,1] $. More...
 
void r_lower_fin_E (const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
 Boundary of lower fin macro element zeta $ \in [-1,1] $. More...
 

Private Attributes

double Xi_nose
 "Nose" limit for the (1D) coordinates along the wall More...
 
double Xi_tail
 "Tail" limit for the (1D) coordinates along the wall More...
 
double X_fin
 X coordinate of fin tip. More...
 
double Y_fin
 Y coordinate of fin tip. More...
 
double X_mouth
 X coordinate of corner of mouth. More...
 
GeomObjectBack_pt
 Pointer to the fish's back. More...
 

Additional Inherited Members

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

Detailed Description

Fish shaped domain, represented by four MacroElements. Shape is parametrised by GeomObject that represents the fish's back.

Definition at line 42 of file fish_domain.h.

Constructor & Destructor Documentation

◆ FishDomain() [1/2]

oomph::FishDomain::FishDomain ( GeomObject back_pt,
const double &  xi_nose,
const double &  xi_tail 
)
inline

Constructor: Pass pointer to GeomObject that represents the (upper) curved boundary of the fish's body, and the start and end values of the Lagrangian coordinates along the GeomObject.

Definition at line 48 of file fish_domain.h.

References i, oomph::Domain::Macro_element_pt, X_fin, X_mouth, and Y_fin.

◆ FishDomain() [2/2]

oomph::FishDomain::FishDomain ( const FishDomain )
delete

Broken copy constructor.

◆ ~FishDomain()

virtual oomph::FishDomain::~FishDomain ( )
inlinevirtual

Destructor for FishDomain: Empty; cleanup done in base class.

Definition at line 79 of file fish_domain.h.

Member Function Documentation

◆ macro_element_boundary()

void oomph::FishDomain::macro_element_boundary ( const unsigned &  t,
const unsigned &  imacro,
const unsigned &  idirect,
const Vector< double > &  zeta,
Vector< double > &  r 
)
virtual

Vector representation of the i_macro-th macro element boundary i_direct (N/S/W/E) at the discrete time level t (t=0: present; t>0: previous): $ {\bf r}({\bf zeta}) $ Note that the local coordinate zeta is a 1D Vector rather than a scalar – this is unavoidable because this function implements the pure virtual function in the Domain base class.

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

Vector representation of the imacro-th macro element boundary idirect (N/S/W/E) at time level t (t=0: present; t>0: previous): $ {\bf r}({\bf zeta}) $ Note that the local coordinate zeta is a 1D Vector rather than a scalar – this is unavoidable because this function implements the pure virtual function in the Domain base class.

Implements oomph::Domain.

Definition at line 308 of file fish_domain.h.

References oomph::QuadTreeNames::E, oomph::QuadTreeNames::N, r_lower_body_E(), r_lower_body_N(), r_lower_body_S(), r_lower_body_W(), r_lower_fin_E(), r_lower_fin_N(), r_lower_fin_S(), r_lower_fin_W(), r_upper_body_E(), r_upper_body_N(), r_upper_body_S(), r_upper_body_W(), r_upper_fin_E(), r_upper_fin_N(), r_upper_fin_S(), r_upper_fin_W(), oomph::QuadTreeNames::S, t, and oomph::QuadTreeNames::W.

◆ operator=()

void oomph::FishDomain::operator= ( const FishDomain )
delete

Broken assignment operator.

◆ r_lower_body_E()

void oomph::FishDomain::r_lower_body_E ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  f 
)
inlineprivate

Boundary of lower body macro element zeta $ \in [-1,1] $.

Definition at line 225 of file fish_domain.h.

References r_upper_body_E(), and t.

Referenced by macro_element_boundary().

◆ r_lower_body_N()

void oomph::FishDomain::r_lower_body_N ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  f 
)
inlineprivate

Boundary of lower body macro element zeta $ \in [-1,1] $.

Definition at line 186 of file fish_domain.h.

References r_upper_body_S(), and t.

Referenced by macro_element_boundary().

◆ r_lower_body_S()

void oomph::FishDomain::r_lower_body_S ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  f 
)
inlineprivate

Southern boundary of lower body macro element zeta $\in [-1,1] $.

Definition at line 213 of file fish_domain.h.

References r_upper_body_N(), and t.

Referenced by macro_element_boundary().

◆ r_lower_body_W()

void oomph::FishDomain::r_lower_body_W ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  f 
)
inlineprivate

Boundary of lower body macro element zeta $ \in [-1,1] $.

Definition at line 199 of file fish_domain.h.

References r_upper_body_W(), and t.

Referenced by macro_element_boundary().

◆ r_lower_fin_E()

void oomph::FishDomain::r_lower_fin_E ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  f 
)
inlineprivate

Boundary of lower fin macro element zeta $ \in [-1,1] $.

Definition at line 279 of file fish_domain.h.

References r_upper_fin_E(), and t.

Referenced by macro_element_boundary().

◆ r_lower_fin_N()

void oomph::FishDomain::r_lower_fin_N ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  f 
)
inlineprivate

Boundary of lower fin macro element zeta $ \in [-1,1] $.

Definition at line 240 of file fish_domain.h.

References r_upper_fin_S(), and t.

Referenced by macro_element_boundary().

◆ r_lower_fin_S()

void oomph::FishDomain::r_lower_fin_S ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  f 
)
inlineprivate

Boundary of lower fin macro element zeta $ \in [-1,1] $.

Definition at line 267 of file fish_domain.h.

References r_upper_fin_N(), and t.

Referenced by macro_element_boundary().

◆ r_lower_fin_W()

void oomph::FishDomain::r_lower_fin_W ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  f 
)
inlineprivate

Boundary of lower fin macro element zeta $ \in [-1,1] $.

Definition at line 253 of file fish_domain.h.

References r_upper_fin_W(), and t.

Referenced by macro_element_boundary().

◆ r_upper_body_E()

void oomph::FishDomain::r_upper_body_E ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  f 
)
private

Boundary of upper body macro element zeta $ \in [-1,1] $.

Eastern edge of upper body macro element; $ \zeta \in [-1,1] $.

Definition at line 572 of file fish_domain.h.

References Back_pt, oomph::GeomObject::position(), t, and Xi_tail.

Referenced by macro_element_boundary(), and r_lower_body_E().

◆ r_upper_body_N()

void oomph::FishDomain::r_upper_body_N ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  f 
)
private

Boundary of upper body macro element zeta $ \in [-1,1] $.

Northern edge of upper body macro element; $ \zeta \in [-1,1] $.

Definition at line 555 of file fish_domain.h.

References Back_pt, oomph::GeomObject::position(), t, Xi_nose, and Xi_tail.

Referenced by macro_element_boundary(), and r_lower_body_S().

◆ r_upper_body_S()

void oomph::FishDomain::r_upper_body_S ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  f 
)
private

Boundary of upper body macro element zeta $ \in [-1,1] $.

Southern edge of upper body macro element; $ \zeta \in [-1,1] $.

Definition at line 597 of file fish_domain.h.

References Back_pt, oomph::GeomObject::position(), t, X_mouth, and Xi_tail.

Referenced by macro_element_boundary(), and r_lower_body_N().

◆ r_upper_body_W()

void oomph::FishDomain::r_upper_body_W ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  f 
)
private

Boundary of upper body macro element zeta $ \in [-1,1] $.

Western edge of upper body macro element; $ \zeta \in [-1,1] $.

Definition at line 617 of file fish_domain.h.

References Back_pt, oomph::GeomObject::position(), t, X_mouth, and Xi_nose.

Referenced by macro_element_boundary(), and r_lower_body_W().

◆ r_upper_fin_E()

void oomph::FishDomain::r_upper_fin_E ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  f 
)
private

Boundary of upper fin macro element zeta $ \in [-1,1] $.

Eastern edge of upper fin macro element; $ \zeta \in [-1,1] $.

Definition at line 542 of file fish_domain.h.

References X_fin, and Y_fin.

Referenced by macro_element_boundary(), and r_lower_fin_E().

◆ r_upper_fin_N()

void oomph::FishDomain::r_upper_fin_N ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  f 
)
private

Boundary of upper fin macro element zeta $ \in [-1,1] $.

Northern edge of upper fin macro element; $ \zeta \in [-1,1] $.

Definition at line 480 of file fish_domain.h.

References Back_pt, oomph::GeomObject::position(), t, X_fin, Xi_tail, and Y_fin.

Referenced by macro_element_boundary(), and r_lower_fin_S().

◆ r_upper_fin_S()

void oomph::FishDomain::r_upper_fin_S ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  f 
)
private

Boundary of upper fin macro element zeta $ \in [-1,1] $.

Southern edge of upper fin macro element; $ \zeta \in [-1,1] $.

Definition at line 523 of file fish_domain.h.

References Back_pt, oomph::GeomObject::position(), t, and Xi_tail.

Referenced by macro_element_boundary(), and r_lower_fin_N().

◆ r_upper_fin_W()

void oomph::FishDomain::r_upper_fin_W ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  f 
)
private

Boundary of upper fin macro element zeta $ \in [-1,1] $.

Western edge of upper fin macro element; $ \zeta \in [-1,1] $.

Definition at line 505 of file fish_domain.h.

References Back_pt, oomph::GeomObject::position(), t, and Xi_tail.

Referenced by macro_element_boundary(), and r_lower_fin_W().

◆ x_fin()

double& oomph::FishDomain::x_fin ( )
inline

x-position of fin tip

Definition at line 83 of file fish_domain.h.

References X_fin.

◆ x_mouth()

double& oomph::FishDomain::x_mouth ( )
inline

x-position of mouth

Definition at line 95 of file fish_domain.h.

References X_mouth.

◆ xi_nose()

double& oomph::FishDomain::xi_nose ( )
inline

Start coordinate on wall (near nose)

Definition at line 101 of file fish_domain.h.

References Xi_nose.

Referenced by oomph::AlgebraicFishMesh< ELEMENT >::update_node_update().

◆ xi_tail()

double& oomph::FishDomain::xi_tail ( )
inline

End coordinate on wall (near tail)

Definition at line 107 of file fish_domain.h.

References Xi_tail.

Referenced by oomph::AlgebraicFishMesh< ELEMENT >::update_node_update().

◆ y_fin()

double& oomph::FishDomain::y_fin ( )
inline

y-position of fin tip

Definition at line 89 of file fish_domain.h.

References Y_fin.

Member Data Documentation

◆ Back_pt

GeomObject* oomph::FishDomain::Back_pt
private

Pointer to the fish's back.

Definition at line 142 of file fish_domain.h.

Referenced by r_upper_body_E(), r_upper_body_N(), r_upper_body_S(), r_upper_body_W(), r_upper_fin_N(), r_upper_fin_S(), and r_upper_fin_W().

◆ X_fin

double oomph::FishDomain::X_fin
private

X coordinate of fin tip.

Definition at line 133 of file fish_domain.h.

Referenced by FishDomain(), r_upper_fin_E(), r_upper_fin_N(), and x_fin().

◆ X_mouth

double oomph::FishDomain::X_mouth
private

X coordinate of corner of mouth.

Definition at line 139 of file fish_domain.h.

Referenced by FishDomain(), r_upper_body_S(), r_upper_body_W(), and x_mouth().

◆ Xi_nose

double oomph::FishDomain::Xi_nose
private

"Nose" limit for the (1D) coordinates along the wall

Definition at line 127 of file fish_domain.h.

Referenced by r_upper_body_N(), r_upper_body_W(), and xi_nose().

◆ Xi_tail

double oomph::FishDomain::Xi_tail
private

"Tail" limit for the (1D) coordinates along the wall

Definition at line 130 of file fish_domain.h.

Referenced by r_upper_body_E(), r_upper_body_N(), r_upper_body_S(), r_upper_fin_N(), r_upper_fin_S(), r_upper_fin_W(), and xi_tail().

◆ Y_fin

double oomph::FishDomain::Y_fin
private

Y coordinate of fin tip.

Definition at line 136 of file fish_domain.h.

Referenced by FishDomain(), r_upper_fin_E(), r_upper_fin_N(), and y_fin().


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