mbsim 4.0.0 MBSim Kernel

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:
[legend]

## Public Member Functions

void | assignContours (const std::vector< Contour * > &contour) override
| treats ordering of contours More...
void | updateg (SingleContact &contact, int i=0) override
| compute contact kinematics for a single contact More...
void | setGridSizeY (int gridSizeY_)
void | setGridSizeZ (int gridSizeZ_)
Public Member Functions inherited from MBSim::ContactKinematics
| ContactKinematics (int maxNumContacts_=1)
| constructor
| ~ContactKinematics () override=default
| destructor
virtual void | calcisSize ()
void | setisInd (int ind)
int | getisSize ()
virtual void | updateInternalStateRef (fmatvec::Vec &curisParent, fmatvec::Vec &nextisParent)
virtual void | search ()
virtual void | updateg (std::vector< SingleContact > &contact)
| compute contact kinematics for all contacts More...
virtual void | updatewb (std::vector< SingleContact > &contact)
| compute contact kinematics on acceleration level for all contacts More...
virtual void | updatewb (SingleContact &contact, int i=0)
| compute contact kinematics on acceleration level for a single contact More...
void | assignContours (Contour *contour1, Contour *contour2)
| treats ordering of contours More...
int | getMaximumNumberOfContacts () const
void | setGlobalSearch (bool gS_=true)
void | setInitialGlobalSearch (bool iGS_=true)
virtual void | setInitialGuess (const fmatvec::MatV &zeta0_)
| set initial guess for root-finding
void | setTolerance (double tol_)
| set tolerance for root-finding
void | setMaximumNumberOfContacts (int maxNumContacts_)
| set maximum number of contacts

## Protected Member Functions

void | setFrustumOrienationKinematics (const double &x, const double &phi, SingleContact &contact)
| set the values for the contact kinematics for the frustum due to the given x and phi
bool | cpLocationInPlate (SingleContact &contact)
| check if there is a contact point within the plate between the frustum and the plate More...
bool | gridContact (SingleContact &contact)
| 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 (SingleContact &contact)
| checks if there is a contact point at one of the corner points More...
bool | edgeContact (SingleContact &contact)
| 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 Attributes

int | iplate {-1}
| contour index of plate (in cpData)
int | ifrustum {-1}
| contour index of frustum (in cpData)
Plate * | plate {nullptr}
| pointer to the contour class for the plate
PolynomialFrustum * | frustum {nullptr}
| pointer to the contour class for the polynomial frustum
double | signh {1.}
| sign of height-direction
int | gridSizeY {5}
| grid size in y-direction for the search with grid points
int | gridSizeZ {5}
| grid size in z-direction for the search with grid points
double | x1 {-1}
| save last value to use it again as starting value for equation 1
double | x2 {-1}
| 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::projectPointAlongNormal * | funcProjectAlongNormal {nullptr}
| function for intersection point
MBSim::MultiDimensionalNewtonMethod | newtonProjectAlongNormal
| newton method for solving the edge contact
MBSim::projectPointAlongNormalJacobian * | jacobianProjectAlongNormal {nullptr}
| Jacobian for newton method.
GlobalResidualCriteriaFunction | criteriaProjectAlongNormal
| criteria for newton method
MBSim::StandardDampingFunction | dampingProjectAlongNormal
| damping function for newton method
edgePolyFrustum * | funcEdge {nullptr}
| 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 {-1}
| index of last edge contact
fmatvec::Vec | xi
| last position of edge contact
fmatvec::Vec2 | zeta
Protected Attributes inherited from MBSim::ContactKinematics
double | tol {1e-10}
| tolerance for root-finding
int | maxNumContacts {1}
| maximum number of contacts
fmatvec::Vec | curis
fmatvec::Vec | nextis
int | isInd { 0 }
int | isSize { 0 }
std::vector< Contour * > | contour
bool | gS {false}
bool | iGS {false}

## Additional Inherited Members

Static Public Member Functions inherited from MBSim::ContactKinematics
static std::vector< double > | searchPossibleContactPoints (Function< double(double)> *func, double eta, const std::vector< double > &nodes, double tol)
static std::vector< double > | searchPossibleContactPoints (Function< fmatvec::Vec(fmatvec::Vec)> *func, int i, fmatvec::Vec &zeta, const std::vector< double > &nodes, double tol)

## Detailed Description

class for contact kinematics between convex frustum and an plate

Author
  Kilian Grundl, Tingting Sun

Date
  09.10.2012

## Member Function Documentation

## ◆ assignContours()

void MBSim::ContactKinematicsPlatePolynomialFrustum::assignContours | ( | const std::vector< Contour * > & | contour_ | ) |

override virtual

treats ordering of contours

Parameters

  contour | vector

Reimplemented from MBSim::ContactKinematics.

## ◆ checkPossibleContactPoint()

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

  x | height-coordinate of possible contact point
  n | normal vector of the plate

## ◆ computeContourPoint()

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

  x | height coordinate
  n | normal of the frustum

Returns
  contour point in world coordinates of the contour point on the frustum

## ◆ computeContourPointFrustum()

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

  x | height coordinate
  n | normal of the frustum

Returns
  contour point in frustum coordinates of the contour point on the frustum

## ◆ cornerContact()

bool MBSim::ContactKinematicsPlatePolynomialFrustum::cornerContact | ( | SingleContact & | contact | ) |

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)

## ◆ cpLocationInPlate()

bool MBSim::ContactKinematicsPlatePolynomialFrustum::cpLocationInPlate | ( | SingleContact & | contact | ) |

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

## ◆ distance2Plate()

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

protected

compute distance between given point and plate

Parameters

  point | Given point in world coordinates

## ◆ edgeContact()

bool MBSim::ContactKinematicsPlatePolynomialFrustum::edgeContact | ( | SingleContact & | contact | ) |

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

## ◆ gridContact()

bool MBSim::ContactKinematicsPlatePolynomialFrustum::gridContact | ( | SingleContact & | contact | ) |

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)

## ◆ updateg()

void MBSim::ContactKinematicsPlatePolynomialFrustum::updateg | ( | SingleContact & | contact,
|  | int | i = `0`
| ) |  |

override virtual

compute contact kinematics for a single contact

Parameters

  conctact | single contact
  i | index of the contact that should be updated

Reimplemented from MBSim::ContactKinematics.

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

- /mbsim-env/mbsim/kernel/mbsim/contact_kinematics/plate_polynomialfrustum.h
- /mbsim-env/mbsim/kernel/mbsim/contact_kinematics/plate_polynomialfrustum.cc