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>
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... | |
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 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... | |
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
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(...)
.
|
inline |
|
delete |
Broken copy constructor.
|
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.
|
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().
|
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().
|
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.
|
pure virtual |
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)
Implemented in oomph::RectangleWithHoleAndAnnularRegionDomain, oomph::RectangleWithHoleDomain, oomph::CylinderWithFlagDomain, oomph::ExtrudedDomain, oomph::CollapsibleChannelDomain, oomph::ChannelWithLeafletDomain, oomph::EighthSphereDomain, oomph::FishDomain, oomph::TubeDomain, oomph::TopologicallyRectangularDomain, oomph::QuarterTubeDomain, oomph::QuarterPipeDomain, oomph::QuarterCircleSectorDomain, oomph::FullCircleDomain, oomph::AnnularDomain, and oomph::WarpedCubeDomain.
Referenced by oomph::QMacroElement< 2 >::assemble_macro_to_eulerian_jacobian(), oomph::QMacroElement< 2 >::assemble_macro_to_eulerian_jacobian2(), macro_element_boundary(), oomph::ExtrudedDomain::macro_element_boundary(), oomph::QMacroElement< 2 >::macro_map(), oomph::QMacroElement< 3 >::macro_map(), oomph::QMacroElement< 2 >::output_macro_element_boundaries(), and oomph::QMacroElement< 3 >::output_macro_element_boundaries().
|
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().
|
inline |
Number of macro elements in domain.
Definition at line 123 of file domain.h.
References Macro_element_pt.
Referenced by oomph::ExtrudedCubeMeshFromQuadMesh< ELEMENT >::build_mesh(), oomph::ExtrudedDomain::ExtrudedDomain(), oomph::ExtrudedDomain::macro_element_boundary(), output_macro_element_boundaries(), oomph::RectangleWithHoleAndAnnularRegionMesh< ELEMENT >::RectangleWithHoleAndAnnularRegionMesh(), oomph::RectangleWithHoleMesh< ELEMENT >::RectangleWithHoleMesh(), and oomph::RefineableRectangleWithHoleAndAnnularRegionMesh< ELEMENT >::RefineableRectangleWithHoleAndAnnularRegionMesh().
|
delete |
Broken assignment operator.
|
inline |
|
inline |
|
inline |
|
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().
|
protected |
Vector of pointers to macro elements.
Definition at line 301 of file domain.h.
Referenced by oomph::AnnularDomain::AnnularDomain(), oomph::ChannelWithLeafletDomain::ChannelWithLeafletDomain(), oomph::CollapsibleChannelDomain::CollapsibleChannelDomain(), oomph::CylinderWithFlagDomain::CylinderWithFlagDomain(), Domain(), oomph::EighthSphereDomain::EighthSphereDomain(), oomph::ExtrudedDomain::ExtrudedDomain(), oomph::FishDomain::FishDomain(), oomph::FullCircleDomain::FullCircleDomain(), macro_element_pt(), oomph::ExtrudedDomain::macro_element_pt(), nmacro_element(), oomph::ExtrudedDomain::nmacro_element(), output(), oomph::QuarterCircleSectorDomain::QuarterCircleSectorDomain(), oomph::QuarterPipeDomain::QuarterPipeDomain(), oomph::QuarterTubeDomain::QuarterTubeDomain(), oomph::RectangleWithHoleAndAnnularRegionDomain::RectangleWithHoleAndAnnularRegionDomain(), oomph::RectangleWithHoleDomain::RectangleWithHoleDomain(), oomph::TopologicallyRectangularDomain::TopologicallyRectangularDomain(), oomph::TubeDomain::TubeDomain(), oomph::WarpedCubeDomain::WarpedCubeDomain(), and ~Domain().