oomph::Penetrator Class Referenceabstract

#include <contact_elements.h>

+ Inheritance diagram for oomph::Penetrator:

Public Member Functions

 Penetrator ()
 Constructor. More...
 
virtual ~Penetrator ()
 Destructor. More...
 
virtual void penetration (const Vector< double > &x, const Vector< double > &n, double &d, bool &intersection) const =0
 
virtual void output (std::ostream &outfile, const unsigned &nplot) const =0
 Output coordinates of penetrator at nplot plot points. More...
 
virtual Vector< doublerigid_body_displacement () const
 
virtual Vector< std::pair< Data *, unsigned > > equilibrium_data ()
 
virtual void surface_coordinate (const Vector< double > &x, Vector< double > &zeta) const
 

Detailed Description

///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// Base class for penetrator. Must be able to compute the penetration with another body, based on the position vector, x, to, and the outer unit normal, n, on that other body.

Constructor & Destructor Documentation

◆ Penetrator()

oomph::Penetrator::Penetrator ( )
inline

Constructor.

158 {};

◆ ~Penetrator()

virtual oomph::Penetrator::~Penetrator ( )
inlinevirtual

Destructor.

161 {};

Member Function Documentation

◆ equilibrium_data()

virtual Vector<std::pair<Data*,unsigned> > oomph::Penetrator::equilibrium_data ( )
inlinevirtual

Vector of pairs identifying values (via a pair of pointer to Data object and index within it) that correspond to the Data values that are determined by the horizontal/vertical/... equilibrium of force equations. Empty by default, indicating that the penetrator is in a prescribed position (i.e. a position that is not determined as part of the solution!)

Reimplemented in CircularPenetratorElement, CircularPenetratorElement, and HeatedCircularPenetratorElement.

196  {
197  Vector<std::pair<Data*,unsigned> > dummy;
198  return dummy;
199  }

Referenced by oomph::SurfaceContactElementBase< ELEMENT >::set_penetrator_pt().

◆ output()

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

◆ penetration()

virtual void oomph::Penetrator::penetration ( const Vector< double > &  x,
const Vector< double > &  n,
double d,
bool intersection 
) const
pure virtual

Get penetration for given point x with outer unit normal n. Should return the negative distance along outer unit normal to the
closest point on the penetrator, so that minus values imply no penetration and positive ones imply penetration. If the ray from the unit normal never crosses the penetrator,set intersection to false In this case, d can be set to anything, as it should be ignored anway. Returning a bool moves the problem of deciding what to do with non-intersection to each individual method

Implemented in CircularPenetratorElement, CircularPenetratorElement, HeatedCircularPenetratorElement, and oomph::CircularPenetrator.

Referenced by oomph::SurfaceContactElementBase< ELEMENT >::penetration().

◆ rigid_body_displacement()

virtual Vector<double> oomph::Penetrator::rigid_body_displacement ( ) const
inlinevirtual

Get rigid body displacement of reference point in penetrator. Broken virtual, so you don't really have to imlement this...

Reimplemented in HeatedCircularPenetratorElement, and oomph::CircularPenetrator.

182  {
183  throw OomphLibError(
184  "This is a broken virtual function. Please implement/overload. ",
187  }
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

◆ surface_coordinate()

virtual void oomph::Penetrator::surface_coordinate ( const Vector< double > &  x,
Vector< double > &  zeta 
) const
inlinevirtual

Get surface coordinate along penetrator for given point x; implies some sort of "projection"-type relation between point x and the parametrisation of the surface (e.g. polar angle).

Reimplemented in HeatedCircularPenetratorElement, and oomph::CircularPenetrator.

207  {
208  throw OomphLibError(
209  "This is a broken virtual function. Please implement/overload. ",
212  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.


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