oomph::EllipticalTube Class Reference

#include <geom_objects.h>

+ Inheritance diagram for oomph::EllipticalTube:

Public Member Functions

 EllipticalTube (const double &a, const double &b)
 Constructor: Specify radius. More...
 
 EllipticalTube (const EllipticalTube &node)=delete
 Broken copy constructor. More...
 
void operator= (const EllipticalTube &)=delete
 Broken assignment operator. More...
 
doublea ()
 Access function to x-half axis. More...
 
doubleb ()
 Access function to y-half axis. More...
 
void position (const Vector< double > &zeta, Vector< double > &r) const
 Position vector. More...
 
void position (const unsigned &t, const Vector< double > &zeta, Vector< double > &r) const
 Position vector (dummy unsteady version returns steady version) More...
 
virtual unsigned ngeom_data () const
 How many items of Data does the shape of the object depend on? More...
 
void d2position (const Vector< double > &zeta, RankThreeTensor< double > &ddrdzeta) const
 Position Vector and 1st and 2nd derivs w.r.t. zeta. More...
 
void d2position (const Vector< double > &zeta, Vector< double > &r, DenseMatrix< double > &drdzeta, RankThreeTensor< double > &ddrdzeta) const
 Position Vector and 1st and 2nd derivs w.r.t. zeta. More...
 
- Public Member Functions inherited from oomph::GeomObject
 GeomObject ()
 Default constructor. More...
 
 GeomObject (const unsigned &ndim)
 
 GeomObject (const unsigned &nlagrangian, const unsigned &ndim)
 
 GeomObject (const unsigned &nlagrangian, const unsigned &ndim, TimeStepper *time_stepper_pt)
 
 GeomObject (const GeomObject &dummy)=delete
 Broken copy constructor. More...
 
void operator= (const GeomObject &)=delete
 Broken assignment operator. More...
 
virtual ~GeomObject ()
 (Empty) destructor More...
 
unsigned nlagrangian () const
 Access function to # of Lagrangian coordinates. More...
 
unsigned ndim () const
 Access function to # of Eulerian coordinates. More...
 
void set_nlagrangian_and_ndim (const unsigned &n_lagrangian, const unsigned &n_dim)
 Set # of Lagrangian and Eulerian coordinates. More...
 
TimeStepper *& time_stepper_pt ()
 
TimeSteppertime_stepper_pt () const
 
virtual Datageom_data_pt (const unsigned &j)
 
virtual void position (const double &t, const Vector< double > &zeta, Vector< double > &r) const
 
virtual void dposition_dt (const Vector< double > &zeta, const unsigned &j, Vector< double > &drdt)
 
virtual void dposition (const Vector< double > &zeta, DenseMatrix< double > &drdzeta) const
 
virtual void locate_zeta (const Vector< double > &zeta, GeomObject *&sub_geom_object_pt, Vector< double > &s, const bool &use_coordinate_as_initial_guess=false)
 
virtual void interpolated_zeta (const Vector< double > &s, Vector< double > &zeta) const
 

Private Attributes

double A
 x-half axis More...
 
double B
 x-half axis More...
 

Additional Inherited Members

- Protected Attributes inherited from oomph::GeomObject
unsigned NLagrangian
 Number of Lagrangian (intrinsic) coordinates. More...
 
unsigned Ndim
 Number of Eulerian coordinates. More...
 
TimeStepperGeom_object_time_stepper_pt
 

Detailed Description

//////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// Elliptical tube with half axes a and b.

\[ {\bf r} = ( a \cos(\zeta_1), b \sin(zeta_1), \zeta_0)^T \]

Constructor & Destructor Documentation

◆ EllipticalTube() [1/2]

oomph::EllipticalTube::EllipticalTube ( const double a,
const double b 
)
inline

Constructor: Specify radius.

1135  : GeomObject(2, 3), A(a), B(b)
1136  {
1137  }
double B
x-half axis
Definition: geom_objects.h:1238
double & a()
Access function to x-half axis.
Definition: geom_objects.h:1146
double A
x-half axis
Definition: geom_objects.h:1235
double & b()
Access function to y-half axis.
Definition: geom_objects.h:1152
GeomObject()
Default constructor.
Definition: geom_objects.h:104

◆ EllipticalTube() [2/2]

oomph::EllipticalTube::EllipticalTube ( const EllipticalTube node)
delete

Broken copy constructor.

Member Function Documentation

◆ a()

double& oomph::EllipticalTube::a ( )
inline

Access function to x-half axis.

1147  {
1148  return A;
1149  }

References A.

◆ b()

double& oomph::EllipticalTube::b ( )
inline

Access function to y-half axis.

1153  {
1154  return B;
1155  }

References B.

◆ d2position() [1/2]

void oomph::EllipticalTube::d2position ( const Vector< double > &  zeta,
RankThreeTensor< double > &  ddrdzeta 
) const
inlinevirtual

Position Vector and 1st and 2nd derivs w.r.t. zeta.

Reimplemented from oomph::GeomObject.

1183  {
1184  ddrdzeta(0, 0, 0) = 0.0;
1185  ddrdzeta(0, 0, 1) = 0.0;
1186  ddrdzeta(0, 0, 2) = 0.0;
1187 
1188  ddrdzeta(1, 1, 0) = -A * cos(zeta[1]);
1189  ddrdzeta(1, 1, 1) = -B * sin(zeta[1]);
1190  ddrdzeta(1, 1, 2) = 0.0;
1191 
1192  ddrdzeta(0, 1, 0) = ddrdzeta(1, 0, 0) = 0.0;
1193  ddrdzeta(0, 1, 1) = ddrdzeta(1, 0, 1) = 0.0;
1194  ddrdzeta(0, 1, 2) = ddrdzeta(1, 0, 2) = 0.0;
1195  }
AnnoyingScalar cos(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:136
AnnoyingScalar sin(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:137
Matrix< SCALARA, Dynamic, Dynamic, opt_A > A
Definition: bench_gemm.cpp:47
Definition: matrices.h:74
EIGEN_STRONG_INLINE const Eigen::CwiseBinaryOp< Eigen::internal::scalar_zeta_op< typename DerivedX::Scalar >, const DerivedX, const DerivedQ > zeta(const Eigen::ArrayBase< DerivedX > &x, const Eigen::ArrayBase< DerivedQ > &q)
Definition: SpecialFunctionsArrayAPI.h:152

References cos(), sin(), and Eigen::zeta().

◆ d2position() [2/2]

void oomph::EllipticalTube::d2position ( const Vector< double > &  zeta,
Vector< double > &  r,
DenseMatrix< double > &  drdzeta,
RankThreeTensor< double > &  ddrdzeta 
) const
inlinevirtual

Position Vector and 1st and 2nd derivs w.r.t. zeta.

Reimplemented from oomph::GeomObject.

1202  {
1203  // Let's just do a simple tube
1204  r[0] = A * cos(zeta[1]);
1205  r[1] = B * sin(zeta[1]);
1206  r[2] = zeta[0];
1207 
1208  // Do the azetaal derivatives
1209  drdzeta(0, 0) = 0.0;
1210  drdzeta(0, 1) = 0.0;
1211  drdzeta(0, 2) = 1.0;
1212 
1213  // Do the azimuthal derivatives
1214  drdzeta(1, 0) = -A * sin(zeta[1]);
1215  drdzeta(1, 1) = B * cos(zeta[1]);
1216  drdzeta(1, 2) = 0.0;
1217 
1218  // Now let's do the second derivatives
1219  ddrdzeta(0, 0, 0) = 0.0;
1220  ddrdzeta(0, 0, 1) = 0.0;
1221  ddrdzeta(0, 0, 2) = 0.0;
1222 
1223  ddrdzeta(1, 1, 0) = -A * cos(zeta[1]);
1224  ddrdzeta(1, 1, 1) = -B * sin(zeta[1]);
1225  ddrdzeta(1, 1, 2) = 0.0;
1226 
1227  // Mixed derivatives
1228  ddrdzeta(0, 1, 0) = ddrdzeta(1, 0, 0) = 0.0;
1229  ddrdzeta(0, 1, 1) = ddrdzeta(1, 0, 1) = 0.0;
1230  ddrdzeta(0, 1, 2) = ddrdzeta(1, 0, 2) = 0.0;
1231  }
r
Definition: UniformPSDSelfTest.py:20

References cos(), UniformPSDSelfTest::r, sin(), and Eigen::zeta().

◆ ngeom_data()

virtual unsigned oomph::EllipticalTube::ngeom_data ( ) const
inlinevirtual

How many items of Data does the shape of the object depend on?

Reimplemented from oomph::GeomObject.

1176  {
1177  return 0;
1178  }

◆ operator=()

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

Broken assignment operator.

◆ position() [1/2]

void oomph::EllipticalTube::position ( const unsigned t,
const Vector< double > &  zeta,
Vector< double > &  r 
) const
inlinevirtual

Position vector (dummy unsteady version returns steady version)

Reimplemented from oomph::GeomObject.

1170  {
1171  position(zeta, r);
1172  }
void position(const Vector< double > &zeta, Vector< double > &r) const
Position vector.
Definition: geom_objects.h:1158

References position(), UniformPSDSelfTest::r, and Eigen::zeta().

◆ position() [2/2]

void oomph::EllipticalTube::position ( const Vector< double > &  zeta,
Vector< double > &  r 
) const
inlinevirtual

Position vector.

Implements oomph::GeomObject.

1159  {
1160  r[0] = A * cos(zeta[1]);
1161  r[1] = B * sin(zeta[1]);
1162  r[2] = zeta[0];
1163  }

References cos(), UniformPSDSelfTest::r, sin(), and Eigen::zeta().

Referenced by position().

Member Data Documentation

◆ A

double oomph::EllipticalTube::A
private

x-half axis

Referenced by a().

◆ B

double oomph::EllipticalTube::B
private

x-half axis

Referenced by b().


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