mbsim 4.0.0 MBSim Kernel

Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
MBSim::PolynomialFrustum Class Reference

Frustum contour with a polynomial radius over height course. More...

`#include <polynomial_frustum.h>`

Inheritance diagram for MBSim::PolynomialFrustum:
[legend]

## Public Member Functions

| PolynomialFrustum (const std::string &name, const fmatvec::Vec &param_)
| Constructor. More...
| ~PolynomialFrustum () override=default
| Destructor.
void | init (InitStage stage, const InitConfigSet &config) override
| plots time series header More...
fmatvec::Vec2 | evalZeta (const fmatvec::Vec3 &WrPoint) override
| returns the two lagrange parameters index 0: x, height coordinate of frustum index 1: phi, angle of point
void | setHeight (const double &height_)
| set height of frustum More...
double | getHeight ()
| return height of frustum
double | getHeight () const
| return height of frustum
| BOOST_PARAMETER_MEMBER_FUNCTION ((void), enableOpenMBV, tag,(optional(polynomialPoints,(int), 0)(circularPoints,(int), 25)(diffuseColor,(const fmatvec::Vec3 &), fmatvec::Vec3(std::vector< double >{-1, 1, 1}))(transparency,(double), 0)(pointSize,(double), 0)(lineWidth,(double), 0)))
| enable visualisation More...
void | setColor (const MBSim::RGBColor &color_)
| set color of body
void | setTransparency (const double &transparency_)
| set transparency of body
double | evalValue (const double &x)
| get value at position of 0 derivative
double | evalValue (const double &x) const
| get value at position of 0 derivative
double | evalValueD1 (const double &x)
| get value at position of first derivative
double | evalValueD1 (const double &x) const
| get value at position of first derivative
double | evalValueD2 (const double &x)
| get value at position of second derivative
double | evalValueD2 (const double &x) const
| get value at position of second derivative
double | getXPolyMax ()
| get inner peak value of the polynomial
double | getEnclosingSphereRadius ()
| take the largest one among the distance from ((a+b)/2,0) to (a,f(a)),(b,f(b)) and (x,f(x)) where f(x) achieves maximum at x within[a,b] More...
fmatvec::Vec3 | getEnclosingSphereCenter ()
| return the center of the enclosing sphere
const fmatvec::Vec & | getPolynomialParameters ()
| get coefficient vector of the polynomial
fmatvec::Vec3 | evalKrPS (const fmatvec::Vec2 &zeta) override
| returns the point in local coordinates of the frustum at the position (x, phi)
fmatvec::Vec3 | evalKn (const fmatvec::Vec2 &zeta) override
| returns the normal in local coordinates of the frustum at the position (x, phi)
fmatvec::Vec3 | evalKu (const fmatvec::Vec2 &zeta) override
| returns the tangent in radial direction in local coordinates of the frustum at the position (x, phi)
fmatvec::Vec3 | evalKv (const fmatvec::Vec2 &zeta) override
| returns the tangent in azimuthal direction in local coordinates of the frustum at the point x, phi
fmatvec::Vec3 | evalWn (const fmatvec::Vec2 &zeta) override
| in 2D plane, given a point outside a polynomial curve, search for the closest point on the curve to the point More...
fmatvec::Vec3 | evalWu (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalWv (const fmatvec::Vec2 &zeta) override
Public Member Functions inherited from MBSim::RigidContour
| RigidContour (const std::string &name, Frame *R_=nullptr)
| constructor More...
ContourFrame * | createContourFrame (const std::string &name="P") override
Frame * | getFrame ()
Frame * | getFrameOfReference ()
void | setFrameOfReference (Frame *frame)
void | setFrameOfReference (const std::string &frame)
void | plot () override
| plots time dependent data More...
void | init (InitStage stage, const InitConfigSet &config) override
| plots time series header More...
virtual fmatvec::Vec3 | evalKs (const fmatvec::Vec2 &zeta)
virtual fmatvec::Vec3 | evalKt (const fmatvec::Vec2 &zeta)
virtual fmatvec::Vec3 | evalParDer1Ks (const fmatvec::Vec2 &zeta)
virtual fmatvec::Vec3 | evalParDer2Ks (const fmatvec::Vec2 &zeta)
virtual fmatvec::Vec3 | evalParDer1Kt (const fmatvec::Vec2 &zeta)
virtual fmatvec::Vec3 | evalParDer2Kt (const fmatvec::Vec2 &zeta)
virtual fmatvec::Vec3 | evalParDer1Kn (const fmatvec::Vec2 &zeta)
virtual fmatvec::Vec3 | evalParDer2Kn (const fmatvec::Vec2 &zeta)
virtual fmatvec::Vec3 | evalParDer1Ku (const fmatvec::Vec2 &zeta)
virtual fmatvec::Vec3 | evalParDer2Ku (const fmatvec::Vec2 &zeta)
virtual fmatvec::Vec3 | evalParDer1Kv (const fmatvec::Vec2 &zeta)
virtual fmatvec::Vec3 | evalParDer2Kv (const fmatvec::Vec2 &zeta)
fmatvec::Vec3 | evalPosition (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalWu (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalWv (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalWn (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalParDer1Wn (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalParDer2Wn (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalParDer1Wu (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalParDer2Wu (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalParDer1Wv (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalParDer2Wv (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalWs (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalWt (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalParWvCParEta (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalParWvCParXi (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalParWnPart (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalParWuPart (const fmatvec::Vec2 &zeta) override
fmatvec::Vec3 | evalParWvPart (const fmatvec::Vec2 &zeta) override
ContactKinematics * | findContactPairingWith (const std::type_info &type0, const std::type_info &type1) override
| contact search for RigidContours More...
void | initializeUsingXML (xercesc::DOMElement *element) override
std::shared_ptr< OpenMBV::RigidBody > & | getOpenMBVRigidBody ()
Public Member Functions inherited from MBSim::Contour
| Contour (const std::string &name)
| constructor More...
| ~Contour () override=default
| destructor
const std::vector< double > & | getEtaNodes () const
const std::vector< double > & | getXiNodes () const
void | setEtaNodes (const std::vector< double > &etaNodes_)
void | setXiNodes (const std::vector< double > &xiNodes_)
virtual int | gethSize (int i=0) const
virtual int | gethInd (int i=0) const
virtual void | sethSize (int size, int i=0)
virtual void | sethInd (int ind, int i=0)
virtual fmatvec::Mat3x2 | evalWN (const fmatvec::Vec2 &zeta)
virtual fmatvec::Mat3x2 | evalWR (const fmatvec::Vec2 &zeta)
virtual fmatvec::Mat3x2 | evalWU (const fmatvec::Vec2 &zeta)
virtual fmatvec::Mat3x2 | evalWV (const fmatvec::Vec2 &zeta)
virtual fmatvec::Mat3x2 | evalParWvCParZeta (const fmatvec::Vec2 &zeta)
void | setThickness (double thickness_)
double | getThickness () const
virtual bool | isZetaOutside (const fmatvec::Vec2 &zeta)
void | createPlotGroup () override
| creates the plotGroup for H5-output
Public Member Functions inherited from MBSim::Element
| Element (const std::string &name)
| constructor
| ~Element () override=default
| destructor
void | throwError (const std::string &msg) const
virtual void | setDynamicSystemSolver (DynamicSystemSolver *sys)
| sets the used dynamics system solver to the element More...
virtual void | plotAtSpecialEvent ()
| plots time dependent data at special events More...
const std::string & | getName () const
void | setName (const std::string &str)
void | setPath (const std::string &str)
DynamicSystemSolver * | getDynamicSystemSolver ()
H5::GroupBase * | getPlotGroup ()
virtual H5::GroupBase * | getFramesPlotGroup ()
virtual H5::GroupBase * | getContoursPlotGroup ()
virtual H5::GroupBase * | getGroupsPlotGroup ()
virtual H5::GroupBase * | getObjectsPlotGroup ()
virtual H5::GroupBase * | getLinksPlotGroup ()
virtual H5::GroupBase * | getConstraintsPlotGroup ()
virtual H5::GroupBase * | getObserversPlotGroup ()
bool | getPlotFeature (const PlotFeatureEnum &pf)
virtual void | setPlotFeature (const PlotFeatureEnum &pf, bool value)
| Set a plot feature. More...
void | setPlotFeatureForChildren (const PlotFeatureEnum &pf, bool value)
| Set a plot feature for the children of this object. More...
void | setPlotFeatureRecursive (const PlotFeatureEnum &pf, bool value)
| Set a plot feature for this object and the children of this object. More...
template<class T >
void | setPlotAttribute (const std::string &name, const T &value)
| Set a plot attribute: static data attached as key/value pairs to the plot datasets/groups.
void | setPlotAttribute (const std::string &name)
template<class T >
T * | getByPath (const std::string &path, bool initialCaller=true) const
| Get the object of type T represented by the path path. Do not set any argurment other than path!
std::string | getPath (const Element *relTo=nullptr, std::string sep="/") const
| Return the path of this object. If relativeTo is not NULL return a relative path to relativeTo. Do not set any argurment other than relTo and sep!
virtual Element * | getChildByContainerAndName (const std::string &container, const std::string &name) const
| Get the Element named name in the container named container.
virtual std::shared_ptr< OpenMBV::Group > | getOpenMBVGrp ()
virtual std::shared_ptr< OpenMBV::Group > | getFramesOpenMBVGrp ()
virtual std::shared_ptr< OpenMBV::Group > | getContoursOpenMBVGrp ()
virtual std::shared_ptr< OpenMBV::Group > | getGroupsOpenMBVGrp ()
virtual std::shared_ptr< OpenMBV::Group > | getObjectsOpenMBVGrp ()
virtual std::shared_ptr< OpenMBV::Group > | getLinksOpenMBVGrp ()
virtual std::shared_ptr< OpenMBV::Group > | getConstraintsOpenMBVGrp ()
virtual std::shared_ptr< OpenMBV::Group > | getObserversOpenMBVGrp ()
virtual Element * | getParent ()
virtual const Element * | getParent () const
virtual void | setParent (Element *parent_)
std::vector< Element * > | getDependencies () const
| checks dependency on other elements. More...
void | addDependency (Element *ele)
int | computeLevel ()
| computes the length of the pathes in the graph that represents the dependencies between all elements. More...
virtual void | updatePositions (Frame *frame)
virtual void | updateVelocities (Frame *frame)
virtual void | updateAccelerations (Frame *frame)
virtual void | updateJacobians (Frame *frame, int j=0)
virtual void | updateGyroscopicAccelerations (Frame *frame)
virtual void | resetUpToDate ()
const double & | getTime () const
double | getStepSize () const
const MBXMLUtils::DOMEvalException & | getDOMEvalError () const

## Protected Member Functions

void | updateEnclosingSphere ()
void | createInventorFile ()
| create inventor file for visualisation
void | enableOpenMBV_ (const fmatvec::Vec3 &dc, double tp, int polynomialPoints_, int circularPoints_)
Protected Member Functions inherited from MBSim::Element
void | updatePlotFeatures ()
void | addToPlot (const std::string &name)
void | addToPlot (const std::string &name, int size)
void | addToPlot (const std::string &name, const std::vector< std::string > &iname)
template<class AT >
void | plot (const AT &x)
template<class Type , class AT >
void | plot (const fmatvec::Vector< Type, AT > &x)

## Protected Attributes

fmatvec::Vec | parameters
| vector holding our parameters of the polynom describing the frustum (radius over height) parameters=[a0,a1,a2,...an]
double | height
| height of the frustum
double | sphereRadius
| radius of the enclosing sphere
MBSim::RGBColor | color
| color values for the iv-body
double | transparency
| transparency value for the body
int | polynomialPoints
| grid points in polynomial direction
int | circularPoints
| grid points in polynomial direction
Protected Attributes inherited from MBSim::RigidContour
Frame * | R
| coordinate system of contour
std::shared_ptr< OpenMBV::RigidBody > | openMBVRigidBody
Protected Attributes inherited from MBSim::Contour
int | hSize [2]
| size and index of right hand side for frame JACOBIAN settings
int | hInd [2]
std::vector< double > | etaNodes
std::vector< double > | xiNodes
double | thickness
| thickness of contour
Protected Attributes inherited from MBSim::Element
Element * | parent
std::string | name
| name of element
std::string | path
| The path of this object. Is set during the init stage reorganizeHierarchy. Before this the path is calculated dynamically using getPath() after this stage getPath just returns this value.
MBXMLUtils::DOMEvalException | domEvalError
| Special XML helper variable.
DynamicSystemSolver * | ds
| dynamic system
H5::VectorSerie< double > * | plotVectorSerie
| time series
std::vector< double > | plotVector
| one entry of time series
std::vector< std::string > | plotColumns
| columns of time series
H5::GroupBase * | plotGroup
| associated plot group
std::vector< Element * > | dependency
| vector containing all dependencies.
PlotFeatureMap | plotFeature
| plot feature
PlotFeatureMap | plotFeatureForChildren
std::map< std::string, std::variant< std::monostate, int, double, std::string, std::vector< int >, std::vector< double >, std::vector< std::vector< double > > > > | plotAttribute

## Additional Inherited Members

Public Types inherited from MBSim::Element
enum | InitStage { resolveStringRef =0, preInit, plotting, unknownStage, LASTINITSTAGE }
| The stages of the initialization. More...
Static Protected Attributes inherited from MBSim::Contour
static fmatvec::Vec3 | zero3
static fmatvec::Vec3 | ex
static fmatvec::Vec3 | ey
static fmatvec::Vec3 | ez

## Detailed Description

Frustum contour with a polynomial radius over height course.

Author
  Kilian Grundl, Tingting Sun

Date
  09.10.2012

## Constructor & Destructor Documentation

## ◆ PolynomialFrustum()

MBSim::PolynomialFrustum::PolynomialFrustum | ( | const std::string & | name,
|  | const fmatvec::Vec & | param_
| ) |  |

Constructor.

Parameters

  name | Name of the contour
  param_ |

## Member Function Documentation

## ◆ BOOST_PARAMETER_MEMBER_FUNCTION()

MBSim::PolynomialFrustum::BOOST_PARAMETER_MEMBER_FUNCTION | ( | (void) | ,
|  | enableOpenMBV | ,
|  | tag | ,
|  | (optional(polynomialPoints,(int), 0)(circularPoints,(int), 25)(diffuseColor,(const fmatvec::Vec3 &), fmatvec::Vec3(std::vector< double >{-1, 1, 1}))(transparency,(double), 0)(pointSize,(double), 0)(lineWidth,(double), 0)) |
| ) |  |

inline

enable visualisation

Parameters

  enable | enable or disable openmbv
  polynomialPoints | how fine should the grid be in polynomial direction
  circulaPoints | how fine should the grid be in circular direction

## ◆ evalWn()

Vec3 MBSim::PolynomialFrustum::evalWn | ( | const fmatvec::Vec2 & | zeta | ) |

override virtual

in 2D plane, given a point outside a polynomial curve, search for the closest point on the curve to the point

Parameters

  x_0 | starting point of the polynomial domain
  x_end | end point of the polynomial domain
  P | the given point

Returns
  : a dimension 3 vector, vec[0] storing the dis, vec[1] and vec[2] for the 2D position of the closest point on the curve

Reimplemented from MBSim::Contour.

## ◆ evalWu()

Vec3 MBSim::PolynomialFrustum::evalWu | ( | const fmatvec::Vec2 & | zeta | ) |

override virtual

Returns
  first tangent in world frame

Parameters

  t | time
  cp | contour position

Reimplemented from MBSim::Contour.

## ◆ evalWv()

Vec3 MBSim::PolynomialFrustum::evalWv | ( | const fmatvec::Vec2 & | zeta | ) |

override virtual

Returns
  second tangent in world frame

Parameters

  Lagrangian | position

Reimplemented from MBSim::Contour.

## ◆ getEnclosingSphereRadius()

double MBSim::PolynomialFrustum::getEnclosingSphereRadius | ( |  | ) |

take the largest one among the distance from ((a+b)/2,0) to (a,f(a)),(b,f(b)) and (x,f(x)) where f(x) achieves maximum at x within[a,b]

Returns
  the radius of the circumsphere

## ◆ init()

void MBSim::PolynomialFrustum::init | ( | InitStage | stage,
|  | const InitConfigSet & | config
| ) |  |

override virtual

plots time series header

Parameters

  invocing | parent class

Reimplemented from MBSim::Element.

## ◆ setHeight()

void MBSim::PolynomialFrustum::setHeight | ( | const double & | height_ | ) |

inline

set height of frustum

Parameters

  height | height of the frustum

## ◆ updateEnclosingSphere()

void MBSim::PolynomialFrustum::updateEnclosingSphere | ( |  | ) |

protected

\computes a sphere that totally encloses the frustum

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

- /mbsim-env/mbsim/kernel/mbsim/contours/polynomial_frustum.h
- /mbsim-env/mbsim/kernel/mbsim/contours/polynomial_frustum.cc