Public Member Functions | Protected Attributes | List of all members
oomph::Domain Class Referenceabstract

Base class for Domains with curvilinear and/or time-dependent boundaries. Domain boundaries are typically represented by GeomObject s and the Domain itself is decomposed into a number of MacroElement s as shown in this 2D example: More...

#include <domain.h>

+ Inheritance diagram for oomph::Domain:

Public Member Functions

 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 unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)=0
 Vector representation of the i_macro-th macro element boundary i_direct (e.g. N/S/W/E in 2D) at time level t (t=0: present; t>0: previous): f(s) 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...
 

Protected Attributes

Vector< MacroElement * > Macro_element_pt
 Vector of pointers to macro elements. More...
 

Detailed Description

Base class for Domains with curvilinear and/or time-dependent boundaries. Domain boundaries are typically represented by GeomObject s and the Domain itself is decomposed into a number of MacroElement s as shown in this 2D example:

Any instantiation of a specific Domain needs to implement the pure virtual member function

virtual void macro_element_boundary(const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)=0
Vector representation of the i_macro-th macro element boundary i_direct (e.g. N/S/W/E in 2D) at time ...

which returns a Vector representation of each of the MacroElement s' boundaries, parametrised by the coordinate(s) along this boundary. For instance, in the above example, the eastern boundary of MacroElement 1 is given by the appropriate fraction of the curvilinear boundary; its northern boundary (which coincides with the southern boundary of MacroElement 2) is given by the straight line emanating from the curvilinear boundary, etc. The MacroElement s obtain their boundary positions via member function pointers to Domain::macro_element_boundary(...).

Definition at line 66 of file domain.h.

Constructor & Destructor Documentation

◆ Domain() [1/2]

oomph::Domain::Domain ( )
inline

Constructor.

Definition at line 70 of file domain.h.

References Macro_element_pt.

◆ Domain() [2/2]

oomph::Domain::Domain ( const Domain )
delete

Broken copy constructor.

◆ ~Domain()

virtual oomph::Domain::~Domain ( )
inlinevirtual

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.

Definition at line 87 of file domain.h.

References i, and Macro_element_pt.

Member Function Documentation

◆ d2macro_element_boundary() [1/3]

virtual void oomph::Domain::d2macro_element_boundary ( const double &  t,
const unsigned &  i_macro,
const unsigned &  i_direct,
const Vector< double > &  s,
Vector< double > &  f 
)
inlinevirtual

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.

Definition at line 273 of file domain.h.

◆ d2macro_element_boundary() [2/3]

void oomph::Domain::d2macro_element_boundary ( const unsigned &  i_macro,
const unsigned &  i_direct,
const Vector< double > &  s,
Vector< double > &  f 
)
inline

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).

Definition at line 288 of file domain.h.

References d2macro_element_boundary(), s, and t.

◆ d2macro_element_boundary() [3/3]

virtual void oomph::Domain::d2macro_element_boundary ( const unsigned &  t,
const unsigned &  i_macro,
const unsigned &  i_direct,
const Vector< double > &  s,
Vector< double > &  f 
)
inlinevirtual

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.

Reimplemented in oomph::TopologicallyRectangularDomain.

Definition at line 258 of file domain.h.

Referenced by oomph::QMacroElement< 2 >::assemble_macro_to_eulerian_jacobian2(), and d2macro_element_boundary().

◆ dmacro_element_boundary() [1/3]

virtual void oomph::Domain::dmacro_element_boundary ( const double &  t,
const unsigned &  i_macro,
const unsigned &  i_direct,
const Vector< double > &  s,
Vector< double > &  f 
)
inlinevirtual

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.

Definition at line 228 of file domain.h.

◆ dmacro_element_boundary() [2/3]

void oomph::Domain::dmacro_element_boundary ( const unsigned &  i_macro,
const unsigned &  i_direct,
const Vector< double > &  s,
Vector< double > &  f 
)
inline

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).

Definition at line 244 of file domain.h.

References dmacro_element_boundary(), s, and t.

◆ dmacro_element_boundary() [3/3]

virtual void oomph::Domain::dmacro_element_boundary ( const unsigned &  t,
const unsigned &  i_macro,
const unsigned &  i_direct,
const Vector< double > &  s,
Vector< double > &  f 
)
inlinevirtual

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.

Reimplemented in oomph::TopologicallyRectangularDomain.

Definition at line 212 of file domain.h.

Referenced by oomph::QMacroElement< 2 >::assemble_macro_to_eulerian_jacobian(), oomph::QMacroElement< 2 >::assemble_macro_to_eulerian_jacobian2(), and dmacro_element_boundary().

◆ macro_element_boundary() [1/3]

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

Vector representation of the i_macro-th macro element boundary i_direct (e.g. N/S/W/E in 2D) at continuous time, t.

Reimplemented in oomph::RectangleWithHoleAndAnnularRegionDomain.

Definition at line 160 of file domain.h.

◆ macro_element_boundary() [2/3]

void oomph::Domain::macro_element_boundary ( const unsigned &  i_macro,
const unsigned &  i_direct,
const Vector< double > &  s,
Vector< double > &  f 
)
inline

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).

Definition at line 175 of file domain.h.

References macro_element_boundary(), s, and t.

◆ macro_element_boundary() [3/3]

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

◆ macro_element_pt()

MacroElement* oomph::Domain::macro_element_pt ( const unsigned &  i)
inline

Access to i-th macro element.

Definition at line 116 of file domain.h.

References i, and Macro_element_pt.

Referenced by oomph::ChannelWithLeafletMesh< ELEMENT >::ChannelWithLeafletMesh(), oomph::CollapsibleChannelMesh< ELEMENT >::CollapsibleChannelMesh(), oomph::Multi_domain_functions::construct_new_external_halo_master_node_helper(), oomph::Missing_masters_functions::construct_new_external_halo_master_node_helper(), oomph::Multi_domain_functions::create_external_halo_elements(), oomph::EighthSphereMesh< ELEMENT >::EighthSphereMesh(), oomph::ElasticRefineableQuarterPipeMesh< ELEMENT >::ElasticRefineableQuarterPipeMesh(), oomph::FullCircleMesh< ELEMENT >::FullCircleMesh(), oomph::ExtrudedDomain::macro_element_boundary(), output_macro_element_boundaries(), oomph::QuarterCircleSectorMesh< ELEMENT >::QuarterCircleSectorMesh(), oomph::QuarterPipeMesh< ELEMENT >::QuarterPipeMesh(), oomph::QuarterTubeMesh< ELEMENT >::QuarterTubeMesh(), oomph::RectangleWithHoleMesh< ELEMENT >::RectangleWithHoleMesh(), oomph::RefineableEighthSphereMesh< ELEMENT >::RefineableEighthSphereMesh(), oomph::RefineableFullCircleMesh< ELEMENT >::RefineableFullCircleMesh(), oomph::RefineableQuarterTubeMesh< ELEMENT >::RefineableQuarterTubeMesh(), oomph::RefineableRectangleWithHoleAndAnnularRegionMesh< ELEMENT >::RefineableRectangleWithHoleAndAnnularRegionMesh(), oomph::RefineableRectangleWithHoleMesh< ELEMENT >::RefineableRectangleWithHoleMesh(), oomph::RefineableTubeMesh< ELEMENT >::RefineableTubeMesh(), oomph::RefineableTwoDAnnularMesh< ELEMENT >::RefineableTwoDAnnularMesh(), and oomph::TubeMesh< ELEMENT >::TubeMesh().

◆ nmacro_element()

unsigned oomph::Domain::nmacro_element ( )
inline

◆ operator=()

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

Broken assignment operator.

◆ output() [1/2]

void oomph::Domain::output ( const std::string &  filename,
const unsigned &  nplot 
)
inline

Output macro elements.

Definition at line 129 of file domain.h.

◆ output() [2/2]

void oomph::Domain::output ( std::ostream &  outfile,
const unsigned &  nplot 
)
inline

Output macro elements.

Definition at line 138 of file domain.h.

References Macro_element_pt.

◆ output_macro_element_boundaries() [1/2]

void oomph::Domain::output_macro_element_boundaries ( const std::string &  filename,
const unsigned &  nplot 
)
inline

Output all macro element boundaries as tecplot zones.

Definition at line 187 of file domain.h.

◆ output_macro_element_boundaries() [2/2]

void oomph::Domain::output_macro_element_boundaries ( std::ostream &  outfile,
const unsigned &  nplot 
)
inline

Output all macro element boundaries as tecplot zones.

Definition at line 197 of file domain.h.

References i, macro_element_pt(), nmacro_element(), and oomph::MacroElement::output_macro_element_boundaries().

Member Data Documentation

◆ Macro_element_pt

Vector<MacroElement*> oomph::Domain::Macro_element_pt
protected

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