Simbody  3.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CableSpring.h
Go to the documentation of this file.
1 #ifndef SimTK_SIMBODY_CABLE_SPRING_H_
2 #define SimTK_SIMBODY_CABLE_SPRING_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) 2012-13 Stanford University and the Authors. *
13  * Authors: Michael Sherman *
14  * Contributors: *
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"
29 #include "simbody/internal/Force.h"
31 
37 namespace SimTK {
38 
91 public:
92 
116  const CablePath& path,
117  Real defaultStiffness,
118  Real defaultSlackLength,
119  Real defaultDissipationCoef);
120 
123 
124 
125 //------------------------------------------------------------------------------
146 CableSpring& setDefaultStiffness(Real stiffness);
152 CableSpring& setDefaultSlackLength(Real slackLength);
158 CableSpring& setDefaultDissipationCoef(Real dissipation);
159 
162 Real getDefaultStiffness() const;
165 Real getDefaultSlackLength() const;
169 Real getDefaultDissipationCoef() const;
174 //------------------------------------------------------------------------------
199 const CableSpring& setStiffness(State& state,
200  Real stiffness) const;
208 const CableSpring& setSlackLength(State& state,
209  Real slackLength) const;
217 const CableSpring& setDissipationCoef(State& state,
218  Real dissipationCoef) const;
219 
225 Real getStiffness(const State& state) const;
231 Real getSlackLength(const State& state) const;
239 Real getDissipationCoef(const State& state) const;
244 //------------------------------------------------------------------------------
262 Real getLength(const State& state) const;
267 //------------------------------------------------------------------------------
286 Real getLengthDot(const State& state) const;
287 
292 //------------------------------------------------------------------------------
311 Real getTension(const State& state) const;
316 //------------------------------------------------------------------------------
330 Real getPotentialEnergy(const State& state) const;
331 
342 Real getPowerDissipation(const State& state) const;
343 
356 Real getDissipatedEnergy(const State& state) const;
357 
370 void setDissipatedEnergy(State& state, Real energy) const;
379 const CablePath& getCablePath() const; // Don't show this in Doxygen.
383 class Impl;
385  (CableSpring, CableSpring::Impl, Force);
387 };
388 
389 } // namespace SimTK
390 
391 #endif // SimTK_SIMBODY_CABLE_SPRING_H_
This is the base class from which all Force element handle classes derive.
Definition: Force.h:50
This file declares the CablePath and CableObstacle classes.
Every Simbody header and source file should include this header before any other Simbody header...
This is the handle class for the hidden State implementation.
Definition: State.h:264
Includes internal headers providing declarations for the basic SimTK Core classes, including Simmatrix.
#define SimTK_INSERT_DERIVED_HANDLE_DECLARATIONS(DERIVED, DERIVED_IMPL, PARENT)
Definition: PrivateImplementation.h:343
CableSpring()
Default constructor creates an empty handle.
Definition: CableSpring.h:122
This is a concrete subsystem which can apply arbitrary forces to a MultibodySystem.
Definition: GeneralForceSubsystem.h:47
#define SimTK_SIMBODY_EXPORT
Definition: Simbody/include/simbody/internal/common.h:72
This force element implements a passive elastic element (like a rubber band) that follows a frictionl...
Definition: CableSpring.h:90
This class represents the path of a frictionless cable from an origin point fixed to a body...
Definition: CablePath.h:92