Simbody  3.8
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 //------------------------------------------------------------------------------
159 
174 //------------------------------------------------------------------------------
200  Real stiffness) const;
209  Real slackLength) const;
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 file declares the CablePath and CableObstacle classes.
#define SimTK_INSERT_DERIVED_HANDLE_DECLARATIONS(DERIVED, DERIVED_IMPL, PARENT)
Definition: PrivateImplementation.h:343
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 class represents the path of a frictionless cable from an origin point fixed to a body,...
Definition: CablePath.h:92
This force element implements a passive elastic element (like a rubber band) that follows a frictionl...
Definition: CableSpring.h:90
Real getLengthDot(const State &state) const
Return the current rate of length change (time derivative of length) of the CablePath that underlies ...
const CableSpring & setDissipationCoef(State &state, Real dissipationCoef) const
Set the dissipation coefficient c that will be used for this cable spring when evaluated using this S...
Real getDefaultSlackLength() const
Return the slack length L0 that will be used by default for this cable spring.
CableSpring & setDefaultDissipationCoef(Real dissipation)
Set the dissipation coefficient c that will be used by default for this cable spring; must be nonnega...
CableSpring(GeneralForceSubsystem &forces, const CablePath &path, Real defaultStiffness, Real defaultSlackLength, Real defaultDissipationCoef)
Create an elastic force element that follows a given CablePath and add it to a GeneralForceSubsystem.
Real getSlackLength(const State &state) const
Return the slack length L0 currently being used for this cable spring by this State.
Real getPowerDissipation(const State &state) const
Obtain the rate at which energy is being dissipated by this cable spring, that is,...
Real getDissipatedEnergy(const State &state) const
Obtain the total amount of energy dissipated by this cable spring since some arbitrary starting point...
CableSpring & setDefaultStiffness(Real stiffness)
Set the stiffness (spring constant) k that will be used by default for this cable spring; must be non...
Real getTension(const State &state) const
Return the current level of tension in the cable spring.
const CablePath & getCablePath() const
Get a reference to the CablePath that is used to determine the routing of this cable spring force ele...
Real getLength(const State &state) const
Return the current length of the CablePath that underlies this cable spring element.
Real getDefaultDissipationCoef() const
Return the dissipation coefficient c that will be used by default for this cable spring.
const CableSpring & setStiffness(State &state, Real stiffness) const
Set the stiffness (spring constant) k that will be used for this cable spring when evaluated using th...
Real getDefaultStiffness() const
Return the stiffnesses k that will be used by default for this cable spring.
CableSpring()
Default constructor creates an empty handle.
Definition: CableSpring.h:122
void setDissipatedEnergy(State &state, Real energy) const
Set the accumulated dissipated energy to an arbitrary value.
Real getStiffness(const State &state) const
Return the stiffness (spring constant) k currently being used for this cable spring by this State.
Real getPotentialEnergy(const State &state) const
Obtain the potential energy stored in this cable spring in the current configuration.
Real getDissipationCoef(const State &state) const
Return the dissipation coefficient c currently being used for this cable spring by this State.
const CableSpring & setSlackLength(State &state, Real slackLength) const
Set the slack length L0 that will be used for this cable spring when evaluated using this State.
CableSpring & setDefaultSlackLength(Real slackLength)
Set the slack length L0 that will be used by default for this cable spring; must be nonnegative.
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
This object is intended to contain all state information for a SimTK::System, except topological info...
Definition: State.h:280
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