All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
MBSim::ContactKinematicsPlatePolynomialFrustum Class Reference

class for contact kinematics between convex frustum and an plate More...

#include <plate_polynomialfrustum.h>

Inheritance diagram for MBSim::ContactKinematicsPlatePolynomialFrustum:
MBSim::ContactKinematics fmatvec::Atom

Public Member Functions

void assignContours (const std::vector< Contour * > &contour)
 treats ordering of contours More...
 
virtual void updateg (double &g, std::vector< ContourFrame * > &cFrame, int index=0)
 compute normal distance, possible contact point positions and orientation (cf. contact.cc) More...
 
virtual void updatewb (fmatvec::Vec &wb, double g, std::vector< ContourFrame * > &cFrame)
 compute acceleration in terms of contour parameters for event driven integration More...
 
void setGridSizeY (int gridSizeY_)
 
void setGridSizeZ (int gridSizeZ_)
 
- Public Member Functions inherited from MBSim::ContactKinematics
 ContactKinematics ()
 constructor
 
virtual ~ContactKinematics ()
 destructor
 
void assignContours (Contour *contour1, Contour *contour2)
 treats ordering of contours More...
 
int getNumberOfPotentialContactPoints () const
 
virtual ContactKinematicsgetContactKinematics (int i=0) const
 
virtual void setSearchAllContactPoints (bool searchAllCP_=true)
 
virtual void setInitialGuess (const fmatvec::VecV &zeta0_)
 
- Public Member Functions inherited from fmatvec::Atom
Atomoperator= (const Atom &)
 
void setMessageStreamActive (MsgType type, bool active)
 
void getMessageStream (MsgType type, std::shared_ptr< bool > &a, std::shared_ptr< std::ostream > &s)
 
void adoptMessageStreams (const Atom *src=NULL)
 
std::ostream & msg (MsgType type)
 
bool msgAct (MsgType type)
 

Protected Member Functions

void setFrustumOrienationKinematics (const double &x, const double &phi, std::vector< ContourFrame * > &cFrame)
 set the values for the contact kinematics for the frustum due to the given x and phi
 
bool cpLocationInPlate (double &g, std::vector< ContourFrame * > &cFrame)
 check if there is a contact point within the plate between the frustum and the plate More...
 
bool gridContact (double &g, std::vector< ContourFrame * > &cFrame)
 if the unique contact point cannot be found a grid is walked through and a weighted sum results in the contact point More...
 
bool cornerContact (double &g, std::vector< ContourFrame * > &cFrame)
 checks if there is a contact point at one of the corner points More...
 
bool edgeContact (double &g, std::vector< ContourFrame * > &cFrame)
 checks if there is a contact on one edge of the plate More...
 
fmatvec::Vec3 computeContourPointFrustum (const double &x, const fmatvec::Vec3 &n)
 computes the point on the contour of the frustum due to the height-coordinate x and the normal in world coordinates More...
 
fmatvec::Vec3 computeContourPoint (const double &x, const fmatvec::Vec3 &n)
 computes the point on the contour of the frustum due to the height-coordinate x and the normal in world coordinates More...
 
int checkPossibleContactPoint (const double &x, const fmatvec::Vec3 &n)
 check if frustum point identified by coordinate x is possible contact point More...
 
double distance2Plate (const fmatvec::Vec3 &point)
 compute distance between given point and plate More...
 
void updateGrid ()
 updates the grid for the discrete contact point approximation
 
- Protected Member Functions inherited from fmatvec::Atom
 Atom (const Atom &src)
 

Protected Attributes

int iplate
 contour index of plate (in cpData)
 
int ifrustum
 contour index of frustum (in cpData)
 
Plateplate
 pointer to the contour class for the plate
 
PolynomialFrustumfrustum
 pointer to the contour class for the polynomial frustum
 
double signh
 sign of height-direction
 
int gridSizeY
 grid size in y-direction for the search with grid points
 
int gridSizeZ
 grid size in z-direction for the search with grid points
 
double x1
 save last value to use it again as starting value for equation 1
 
double x2
 save last value to use it again as starting value for equation 2
 
fmatvec::Vec3 cornerPoints [4]
 array of the four corner points of the plate in the frame of the frustum
 
std::vector< std::vector
< fmatvec::Vec3 > > 
gridPoints
 saves the points for the contact point computation
 
MBSim::projectPointAlongNormalfuncProjectAlongNormal
 function for intersection point
 
MBSim::MultiDimensionalNewtonMethod newtonProjectAlongNormal
 newton method for solving the edge contact
 
MBSim::projectPointAlongNormalJacobianjacobianProjectAlongNormal
 Jacobian for newton method.
 
GlobalResidualCriteriaFunction criteriaProjectAlongNormal
 criteria for newton method
 
MBSim::StandardDampingFunction dampingProjectAlongNormal
 damping function for newton method
 
edgePolyFrustumfuncEdge
 function for intersection point
 
MBSim::MultiDimensionalNewtonMethod newtonEdge
 newton method for solving the edge contact
 
MBSim::NumericalNewtonJacobianFunction jacobianEdge
 Jacobian for newton method.
 
edgePolyFrustumCriteria criteriaEdge
 criteria for newton method
 
MBSim::StandardDampingFunction dampingEdge
 damping function for newton method
 
int ilast
 index of last edge contact
 
fmatvec::Vec xi
 last position of edge contact
 
fmatvec::Vec2 zeta
 
- Protected Attributes inherited from MBSim::ContactKinematics
int numberOfPotentialContactPoints
 number of potential contact points
 

Additional Inherited Members

- Public Types inherited from fmatvec::Atom
enum  MsgType
 
- Static Public Member Functions inherited from fmatvec::Atom
static void setCurrentMessageStream (MsgType type, const std::shared_ptr< bool > &a=std::make_shared< bool >(true), const std::shared_ptr< std::ostream > &s=std::make_shared< std::ostream >(std::cout.rdbuf()))
 
static std::ostream & msgStatic (MsgType type)
 
static bool msgActStatic (MsgType type)
 

Detailed Description

class for contact kinematics between convex frustum and an plate

Author
Kilian Grundl, Tingting Sun
Date
09.10.2012

Member Function Documentation

void MBSim::ContactKinematicsPlatePolynomialFrustum::assignContours ( const std::vector< Contour * > &  contour)
virtual

treats ordering of contours

Parameters
contourvector

Implements MBSim::ContactKinematics.

int MBSim::ContactKinematicsPlatePolynomialFrustum::checkPossibleContactPoint ( const double &  x,
const fmatvec::Vec3 &  n 
)
protected

check if frustum point identified by coordinate x is possible contact point

Parameters
xheight-coordinate of possible contact point
nnormal vector of the plate
Vec3 MBSim::ContactKinematicsPlatePolynomialFrustum::computeContourPoint ( const double &  x,
const fmatvec::Vec3 &  n 
)
protected

computes the point on the contour of the frustum due to the height-coordinate x and the normal in world coordinates

Parameters
xheight coordinate
nnormal of the frustum
Returns
contour point in world coordinates of the contour point on the frustum
Vec3 MBSim::ContactKinematicsPlatePolynomialFrustum::computeContourPointFrustum ( const double &  x,
const fmatvec::Vec3 &  n 
)
protected

computes the point on the contour of the frustum due to the height-coordinate x and the normal in world coordinates

Parameters
xheight coordinate
nnormal of the frustum
Returns
contour point in frustum coordinates of the contour point on the frustum
bool MBSim::ContactKinematicsPlatePolynomialFrustum::cornerContact ( double &  g,
std::vector< ContourFrame * > &  cFrame 
)
protected

checks if there is a contact point at one of the corner points

Returns
true (if) or false (if there is no contact at one of the corner points)
bool MBSim::ContactKinematicsPlatePolynomialFrustum::cpLocationInPlate ( double &  g,
std::vector< ContourFrame * > &  cFrame 
)
protected

check if there is a contact point within the plate between the frustum and the plate

Returns
true (if) or false (if there is no contact within the plate)

If there is contact the position and the cpData information is setted right away

double MBSim::ContactKinematicsPlatePolynomialFrustum::distance2Plate ( const fmatvec::Vec3 &  point)
protected

compute distance between given point and plate

Parameters
pointGiven point in world coordinates
bool MBSim::ContactKinematicsPlatePolynomialFrustum::edgeContact ( double &  g,
std::vector< ContourFrame * > &  cFrame 
)
protected

checks if there is a contact on one edge of the plate

Returns
true (if) or false (if there is no contact at one of the corner points)
Todo:
: unefficient and only finding (one) intersection point –> There should always be two intersection points and then using the middle or something
bool MBSim::ContactKinematicsPlatePolynomialFrustum::gridContact ( double &  g,
std::vector< ContourFrame * > &  cFrame 
)
protected

if the unique contact point cannot be found a grid is walked through and a weighted sum results in the contact point

Returns
true (if) or false (if there is no contact at one of the corner points)
void MBSim::ContactKinematicsPlatePolynomialFrustum::updateg ( double &  g,
std::vector< ContourFrame * > &  cFrame,
int  index = 0 
)
virtual

compute normal distance, possible contact point positions and orientation (cf. contact.cc)

Parameters
ttime
gnormal distance
cFramecontour point Frame
indexindex of the contact point that should be updated

Implements MBSim::ContactKinematics.

virtual void MBSim::ContactKinematicsPlatePolynomialFrustum::updatewb ( fmatvec::Vec wb,
double  g,
std::vector< ContourFrame * > &  cFrame 
)
inlinevirtual

compute acceleration in terms of contour parameters for event driven integration

Parameters
ttime
wbacceleration in terms of contour parameters
gnormal distance
cFramecontact point parametrisation

Implements MBSim::ContactKinematics.


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

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML