All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
point_polynomialfrustum.h
1 /* Copyright (C) 2004-2012 MBSim Development Team
2  *
3  * This library is free software; you can redistribute it and/or
4  * modify it under the terms of the GNU Lesser General Public
5  * License as published by the Free Software Foundation; either
6  * version 2.1 of the License, or (at your option) any later version.
7  *
8  * This library is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  * Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public
14  * License along with this library; if not, write to the Free Software
15  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16  *
17  * Contact: martin.o.foerg@googlemail.com
18  */
19 
20 #ifndef POINT_POLYNOMIALFRUSTUM_H_
21 #define POINT_POLYNOMIALFRUSTUM_H_
22 
23 #include "contact_kinematics.h"
24 
25 #include <mbsim/contours/polynomial_frustum.h>
26 #include <mbsim/contours/point.h>
27 #include <mbsim/numerics/nonlinear_algebra/multi_dimensional_newton_method.h>
28 
29 namespace MBSim {
30 
34  class projectPointAlongNormal : public Function<fmatvec::Vec(fmatvec::Vec)> {
35  public:
37 
38  virtual ~projectPointAlongNormal();
39 
40  void setUpSystemParamters(const fmatvec::Vec3 & referencePoint, const double & phi);
41 
42  fmatvec::Vec operator()(const fmatvec::Vec &x);
43 
44  protected:
49 
53  fmatvec::Vec3 referencePoint;
54 
58  double phi;
59  };
60 
65  public:
67 
69 
70  void setUpSystemParamters(const fmatvec::Vec3 & referencePoint, const double & phi);
71 
72  fmatvec::SqrMat operator()(const fmatvec::Vec &x);
73 
74  protected:
79 
83  fmatvec::Vec3 referencePoint;
84 
88  double phi;
89  };
90 
91 
99  public:
102 
103  /* INHERITED INTERFACE OF CONTACTKINEAMTICS */
104  void assignContours(const std::vector<Contour*> &contour);
105  virtual void updateg(double& g, std::vector<ContourFrame*> &cFrame, int index = 0);
106  virtual void updatewb(fmatvec::Vec& wb, double g, std::vector<ContourFrame*> &cFrame) {
107  throw MBSimError("(ContactKinematicsPointPolynomialFrustum::updatewb): not implemented!");
108  }
109 
110  protected:
114  int ipoint;
115 
119  int ifrustum;
120 
125 
130 
134  double signh;
135 
140 
145 
150 
155 
160 
161  };
162 
163 } /* namespace MBSim */
164 #endif /* POINT_POLYNOMIALFRUSTUM_H_ */
This criteria function class applies the infinity norm globally on the complete vector and compares i...
Definition: criteria_functions.h:170
Newton method for multidimensional root finding.
Definition: multi_dimensional_newton_method.h:41
fmatvec::Vec3 referencePoint
point that should be projected
Definition: point_polynomialfrustum.h:53
MBSim::projectPointAlongNormal * funcProjectAlongNormal
function for intersection point
Definition: point_polynomialfrustum.h:139
double signh
sign of h-direction of frustum
Definition: point_polynomialfrustum.h:134
class for contact kinematics between convex frustum and an plate
Definition: point_polynomialfrustum.h:98
Point * point
pointer to the contour class for the plate
Definition: point_polynomialfrustum.h:124
base class for square Jacobians used for the newton method
Definition: newton_method_jacobian_functions.h:31
virtual void updatewb(fmatvec::Vec &wb, double g, std::vector< ContourFrame * > &cFrame)
compute acceleration in terms of contour parameters for event driven integration
Definition: point_polynomialfrustum.h:106
int ifrustum
contour index of frustum (in cpData)
Definition: point_polynomialfrustum.h:119
fmatvec::Vec3 referencePoint
point that should be projected
Definition: point_polynomialfrustum.h:83
Frustum contour with a polynomial radius over height course.
Definition: polynomial_frustum.h:38
PolynomialFrustum * frustum
pointer to the contour class for the polynomial frustum
Definition: point_polynomialfrustum.h:129
MBSim::StandardDampingFunction dampingProjectAlongNormal
damping function for newton method
Definition: point_polynomialfrustum.h:159
MBSim::projectPointAlongNormalJacobian * jacobianProjectAlongNormal
Jacobian for newton method.
Definition: point_polynomialfrustum.h:149
PolynomialFrustum * frustum
constant pointer to the frustum
Definition: point_polynomialfrustum.h:78
function that is zero for a height-coordinate of the polynomial frustum on which the normal on that p...
Definition: point_polynomialfrustum.h:34
void assignContours(const std::vector< Contour * > &contour)
treats ordering of contours
Definition: point_polynomialfrustum.cc:103
GlobalResidualCriteriaFunction criteriaProjectAlongNormal
criteria for newton method
Definition: point_polynomialfrustum.h:154
the Jacobian function for the projectAlongNormal Function
Definition: point_polynomialfrustum.h:64
Definition: planar_contour.h:31
PolynomialFrustum * frustum
constant pointer to the frustum
Definition: point_polynomialfrustum.h:48
int ipoint
contour index of plate (in cpData)
Definition: point_polynomialfrustum.h:114
MBSim::MultiDimensionalNewtonMethod newtonProjectAlongNormal
newton method for solving the edge contact
Definition: point_polynomialfrustum.h:144
basic error class for mbsim
Definition: mbsim_event.h:38
Definition: damping_functions.h:64
basic class for contact kinematical calculations
Definition: contact_kinematics.h:39
most primitive contour: the point (no extention)
Definition: point.h:35
double phi
azimuathal position where it all happens
Definition: point_polynomialfrustum.h:88
double phi
azimuathal position where it all happens
Definition: point_polynomialfrustum.h:58
virtual void updateg(double &g, std::vector< ContourFrame * > &cFrame, int index=0)
compute normal distance, possible contact point positions and orientation (cf. contact.cc)
Definition: point_polynomialfrustum.cc:128

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML