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

Base class for MacroElement s that are used during mesh refinement in domains with curvlinear and/or time-dependent boundaries; see the description of the Domain class for more details. More...

#include <macro_element.h>

+ Inheritance diagram for oomph::MacroElement:

Public Member Functions

 MacroElement (Domain *domain_pt, const unsigned &macro_element_number)
 Constructor: Pass pointer to Domain and the number of the MacroElement within that Domain. More...
 
 MacroElement ()
 Default constructor (empty and broken) More...
 
 MacroElement (const MacroElement &dummy)=delete
 Broken copy constructor. More...
 
void operator= (const MacroElement &)=delete
 Broken assignment operator. More...
 
virtual ~MacroElement ()
 Empty destructor. More...
 
void output (std::ostream &outfile, const int &nplot)
 Plot: x,y (or x,y,z) at current time in tecplot format. More...
 
virtual void output (const unsigned &t, std::ostream &outfile, const unsigned &nplot)=0
 Plot: x,y (or x,y,z) in tecplot format at time level t (t=0: current; t>0: previous) More...
 
void macro_map (const Vector< double > &s, Vector< double > &r)
 The mapping from local to global coordinates at the current time : r(s) More...
 
virtual void macro_map (const unsigned &t, const Vector< double > &s, Vector< double > &r)=0
 The time-dependent mapping from local to global coordinates: r(t,s). t is the discrete timelevel: t=0: current time; t>0: previous timestep. More...
 
virtual void macro_map (const double &t, const Vector< double > &s, Vector< double > &r)
 Get global position r(s) at continuous time value, t. More...
 
virtual void output_macro_element_boundaries (std::ostream &outfile, const unsigned &nplot)=0
 Output all macro element boundaries as tecplot zones. More...
 
virtual void assemble_macro_to_eulerian_jacobian (const unsigned &t, const Vector< double > &s, DenseMatrix< double > &jacobian)
 the jacobian of the mapping from the macro coordinates to the global coordinates More...
 
virtual void assemble_macro_to_eulerian_jacobian2 (const unsigned &t, const Vector< double > &s, DenseMatrix< double > &jacobian2)
 Assembles the second derivative jacobian of the mapping from the macro coordinates to the global coordinates. More...
 
void assemble_macro_to_eulerian_jacobian (const Vector< double > &s, DenseMatrix< double > &jacobian)
 Assembles the jacobian of the mapping from the macro coordinates to the global coordinates. More...
 
void assemble_macro_to_eulerian_jacobian2 (const Vector< double > &s, DenseMatrix< double > &jacobian2)
 Assembles the second derivative jacobian of the mapping from the macro coordinates to the global coordinates. More...
 
unsigned & macro_element_number ()
 Access function to the Macro_element_number. More...
 
Domain *& domain_pt ()
 Access function to the Domain_pt. More...
 

Protected Attributes

DomainDomain_pt
 Pointer to domain. More...
 
unsigned Macro_element_number
 What is the number of the current macro element within its domain. More...
 

Detailed Description

Base class for MacroElement s that are used during mesh refinement in domains with curvlinear and/or time-dependent boundaries; see the description of the Domain class for more details.

A macro element provides a parametrisation of a sub-domain by providing a mapping between a set of local coordinates $ {\bf S} $ and global coordinates $ {\bf r} ({\bf S}) $ . This must be implemented in the function

void macro_map(const Vector< double > &s, Vector< double > &r)
The mapping from local to global coordinates at the current time : r(s)

The time-dependent version of the macro map returns the mapping from local to global coordinates: $ {\bf r} (t,{\bf S}) $ where t is the discrete timelevel: t=0: current time; t>0: previous timestep.

The MacroElement s establish the current (and previous) domain shape via member function pointers to the Domain 's

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

member function.

Definition at line 72 of file macro_element.h.

Constructor & Destructor Documentation

◆ MacroElement() [1/3]

oomph::MacroElement::MacroElement ( Domain domain_pt,
const unsigned &  macro_element_number 
)
inline

Constructor: Pass pointer to Domain and the number of the MacroElement within that Domain.

Definition at line 77 of file macro_element.h.

References oomph::LeakCheckNames::MacroElement_build.

◆ MacroElement() [2/3]

oomph::MacroElement::MacroElement ( )
inline

Default constructor (empty and broken)

Definition at line 86 of file macro_element.h.

◆ MacroElement() [3/3]

oomph::MacroElement::MacroElement ( const MacroElement dummy)
delete

Broken copy constructor.

◆ ~MacroElement()

virtual oomph::MacroElement::~MacroElement ( )
inlinevirtual

Empty destructor.

Definition at line 101 of file macro_element.h.

References oomph::LeakCheckNames::MacroElement_build.

Member Function Documentation

◆ assemble_macro_to_eulerian_jacobian() [1/2]

virtual void oomph::MacroElement::assemble_macro_to_eulerian_jacobian ( const unsigned &  t,
const Vector< double > &  s,
DenseMatrix< double > &  jacobian 
)
inlinevirtual

the jacobian of the mapping from the macro coordinates to the global coordinates

Reimplemented in oomph::QMacroElement< 2 >.

Definition at line 170 of file macro_element.h.

Referenced by assemble_macro_to_eulerian_jacobian().

◆ assemble_macro_to_eulerian_jacobian() [2/2]

void oomph::MacroElement::assemble_macro_to_eulerian_jacobian ( const Vector< double > &  s,
DenseMatrix< double > &  jacobian 
)
inline

Assembles the jacobian of the mapping from the macro coordinates to the global coordinates.

Definition at line 205 of file macro_element.h.

References assemble_macro_to_eulerian_jacobian(), s, and t.

◆ assemble_macro_to_eulerian_jacobian2() [1/2]

virtual void oomph::MacroElement::assemble_macro_to_eulerian_jacobian2 ( const unsigned &  t,
const Vector< double > &  s,
DenseMatrix< double > &  jacobian2 
)
inlinevirtual

Assembles the second derivative jacobian of the mapping from the macro coordinates to the global coordinates.

Reimplemented in oomph::QMacroElement< 2 >.

Definition at line 186 of file macro_element.h.

Referenced by assemble_macro_to_eulerian_jacobian2().

◆ assemble_macro_to_eulerian_jacobian2() [2/2]

void oomph::MacroElement::assemble_macro_to_eulerian_jacobian2 ( const Vector< double > &  s,
DenseMatrix< double > &  jacobian2 
)
inline

Assembles the second derivative jacobian of the mapping from the macro coordinates to the global coordinates.

Definition at line 215 of file macro_element.h.

References assemble_macro_to_eulerian_jacobian2(), s, and t.

◆ domain_pt()

Domain*& oomph::MacroElement::domain_pt ( )
inline

Access function to the Domain_pt.

Definition at line 229 of file macro_element.h.

References Domain_pt.

Referenced by oomph::ExtrudedCubeMeshFromQuadMesh< ELEMENT >::build_mesh().

◆ macro_element_number()

unsigned& oomph::MacroElement::macro_element_number ( )
inline

◆ macro_map() [1/3]

virtual void oomph::MacroElement::macro_map ( const double &  t,
const Vector< double > &  s,
Vector< double > &  r 
)
inlinevirtual

Get global position r(s) at continuous time value, t.

Reimplemented in oomph::QMacroElement< 2 >.

Definition at line 143 of file macro_element.h.

◆ macro_map() [2/3]

virtual void oomph::MacroElement::macro_map ( const unsigned &  t,
const Vector< double > &  s,
Vector< double > &  r 
)
pure virtual

The time-dependent mapping from local to global coordinates: r(t,s). t is the discrete timelevel: t=0: current time; t>0: previous timestep.

Implemented in oomph::QMacroElement< 3 >, oomph::QMacroElement< 2 >, and oomph::QExtrudedMacroElement< 3 >.

◆ macro_map() [3/3]

void oomph::MacroElement::macro_map ( const Vector< double > &  s,
Vector< double > &  r 
)
inline

◆ operator=()

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

Broken assignment operator.

◆ output() [1/2]

virtual void oomph::MacroElement::output ( const unsigned &  t,
std::ostream &  outfile,
const unsigned &  nplot 
)
pure virtual

Plot: x,y (or x,y,z) in tecplot format at time level t (t=0: current; t>0: previous)

Implemented in oomph::QMacroElement< 3 >, oomph::QMacroElement< 2 >, and oomph::QExtrudedMacroElement< 3 >.

◆ output() [2/2]

void oomph::MacroElement::output ( std::ostream &  outfile,
const int &  nplot 
)
inline

Plot: x,y (or x,y,z) at current time in tecplot format.

Definition at line 111 of file macro_element.h.

References t.

◆ output_macro_element_boundaries()

virtual void oomph::MacroElement::output_macro_element_boundaries ( std::ostream &  outfile,
const unsigned &  nplot 
)
pure virtual

Output all macro element boundaries as tecplot zones.

Implemented in oomph::QMacroElement< 3 >, oomph::QMacroElement< 2 >, and oomph::QExtrudedMacroElement< 3 >.

Referenced by oomph::Domain::output_macro_element_boundaries().

Member Data Documentation

◆ Domain_pt

Domain* oomph::MacroElement::Domain_pt
protected

◆ Macro_element_number

unsigned oomph::MacroElement::Macro_element_number
protected

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