Simbody  3.8
SmoothSphereHalfSpaceForce.h
Go to the documentation of this file.
1 #ifndef SimTK_SIMBODY_SMOOTH_SPHERE_HALFSPACE_FORCE_H_
2 #define SimTK_SIMBODY_SMOOTH_SPHERE_HALFSPACE_FORCE_H_
3 
4 /* -------------------------------------------------------------------------- *
5  * Simbody(tm) *
6  * -------------------------------------------------------------------------- *
7  * This is part of the SimTK biosimulation toolkit originating from *
8  * Simbios, the NIH National Center for Physics-Based Simulation of *
9  * Biological Structures at Stanford, funded under the NIH Roadmap for *
10  * Medical Research, grant U54 GM072970. See https://simtk.org/home/simbody. *
11  * *
12  * Portions copyright (c) 2008-19 Stanford University and the Authors. *
13  * Authors: Antoine Falisse, Gil Serrancoli *
14  * Contributors: Peter Eastman *
15  * *
16  * Licensed under the Apache License, Version 2.0 (the "License"); you may *
17  * not use this file except in compliance with the License. You may obtain a *
18  * copy of the License at http://www.apache.org/licenses/LICENSE-2.0. *
19  * *
20  * Unless required by applicable law or agreed to in writing, software *
21  * distributed under the License is distributed on an "AS IS" BASIS, *
22  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
23  * See the License for the specific language governing permissions and *
24  * limitations under the License. *
25  * -------------------------------------------------------------------------- */
26 
27 #include "SimTKcommon.h"
28 
30 #include "simbody/internal/Force.h"
31 
32 namespace SimTK {
33 
34 class SmoothSphereHalfSpaceForceImpl;
35 
150 public:
168  void setParameters(Real stiffness, Real dissipation, Real staticFriction,
169  Real dynamicFriction, Real viscousFriction, Real transitionVelocity,
170  Real cf, Real bd, Real bv);
173  void setStiffness(Real stiffness);
175  void setDissipation(Real dissipation);
177  void setStaticFriction(Real staticFriction);
179  void setDynamicFriction(Real dynamicFriction);
181  void setViscousFriction(Real viscousFriction);
183  void setTransitionVelocity(Real transitionVelocity);
198  void setContactSphereLocationInBody(Vec3 locationSphere);
204  void setContactHalfSpaceFrame(Transform halfSpaceFrame);
216  SmoothSphereHalfSpaceForceImpl, Force);
217 };
218 
219 } // namespace SimTK
220 
221 #endif // SimTK_SIMBODY_SMOOTH_SPHERE_HALFSPACE_FORCE_H_
Includes internal headers providing declarations for the basic SimTK Core classes,...
Every Simbody header and source file should include this header before any other Simbody header.
#define SimTK_SIMBODY_EXPORT
Definition: Simbody/include/simbody/internal/common.h:68
This is the base class from which all Force element handle classes derive.
Definition: Force.h:50
This is a concrete subsystem which can apply arbitrary forces to a MultibodySystem.
Definition: GeneralForceSubsystem.h:47
A MobilizedBody is Simbody's fundamental body-and-joint object used to parameterize a system's motion...
Definition: MobilizedBody.h:169
This class models the forces generated by simple point contacts between a sphere and a half space.
Definition: SmoothSphereHalfSpaceForce.h:149
void setTransitionVelocity(Real transitionVelocity)
Set the transition velocity, default is 0.01 (m/s).
void setViscousFriction(Real viscousFriction)
Set the coefficient of viscous friction, default is 0.
void setContactSphereRadius(Real radius)
Set the radius of the contact sphere.
void setStaticFriction(Real staticFriction)
Set the coefficient of static friction, default is 0.
SmoothSphereHalfSpaceForce(GeneralForceSubsystem &forces)
Create a smooth sphere to half space Hunt-Crossley contact model.
Vec3 getContactSphereLocationInBody()
Get the location of the contact sphere in the body frame.
void setStiffness(Real stiffness)
Set the stiffness constant (i.e., plain strain modulus), default is 1 (N/m^2).
void setContactSphereBody(MobilizedBody bodyInput1)
Set the MobilizedBody to which the contact sphere is attached.
void setHuntCrossleySmoothing(Real bv)
Set the parameter that determines the smoothness of the transition of the tanh used to smooth the Hun...
void setContactHalfSpaceFrame(Transform halfSpaceFrame)
Set the transform of the contact half space in the body frame.
Transform getContactHalfSpaceTransform()
Get the transform of the contact half space.
void setContactHalfSpaceBody(MobilizedBody bodyInput2)
Set the MobilizedBody to which the contact half space is attached.
SimTK_INSERT_DERIVED_HANDLE_DECLARATIONS(SmoothSphereHalfSpaceForce, SmoothSphereHalfSpaceForceImpl, Force)
void setContactSphereLocationInBody(Vec3 locationSphere)
Set the location of the contact sphere in the body frame.
void setHertzSmoothing(Real bd)
Set the parameter that determines the smoothness of the transition of the tanh used to smooth the Her...
void setDissipation(Real dissipation)
Set the dissipation coefficient, default is 0 (s/m).
void setParameters(Real stiffness, Real dissipation, Real staticFriction, Real dynamicFriction, Real viscousFriction, Real transitionVelocity, Real cf, Real bd, Real bv)
Set the contact material parameters.
void setConstantContactForce(Real cf)
Set the constant that enforces non-null derivatives, default is 1e-5.
Real getContactSphereRadius()
Get the radius of the contact sphere.
void setDynamicFriction(Real dynamicFriction)
Set the coefficient of dynamic friction, default is 0.
MobilizedBody getBodySphere()
Get the MobilizedBody to which the contact sphere is attached.
MobilizedBody getBodyHalfSpace()
Get the MobilizedBody to which the contact half space is attached.
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
SimTK_Real Real
This is the default compiled-in floating point type for SimTK, either float or double.
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:607