Simbody  3.6
ForceSubsystemGuts.h
Go to the documentation of this file.
1 #ifndef SimTK_SIMBODY_FORCE_SUBSYSTEM_GUTS_H
2 #define SimTK_SIMBODY_FORCE_SUBSYSTEM_GUTS_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) 2005-12 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 
31 #include "SimTKcommon.h"
32 
35 
36 namespace SimTK {
37 
40 public:
41  Guts(const String& name, const String& version)
42  : Subsystem::Guts(name,version)
43  {
44  }
45 
46  // Make sure the virtual destructor in Subsystem::Guts remains
47  // virtual in this intermediate class.
48  virtual ~Guts() { }
49 
50  // All the other Subsystem::Guts virtuals remain unresolved.
51 
52  // Return the MultibodySystem which owns this ForceSubsystem.
54  return MultibodySystem::downcast(getSystem());
55  }
56 
59  virtual Real calcPotentialEnergy(const State& state) const = 0;
60 
62 };
63 
64 // typedef ForceSubsystem::Guts ForceSubsystemRep;
65 
66 } // namespace SimTK
67 
68 #endif // SimTK_SIMBODY_FORCE_SUBSYSTEM_GUTS_H
SimTK::State
This object is intended to contain all state information for a SimTK::System, except topological info...
Definition: State.h:280
SimTK::Subsystem
A Subsystem is expected to be part of a larger System and to have interdependencies with other subsys...
Definition: Subsystem.h:55
SimTK::ForceSubsystem::Guts::Guts
Guts(const String &name, const String &version)
Definition: ForceSubsystemGuts.h:41
SimTK::Subsystem::Guts::getSystem
const System & getSystem() const
Definition: SubsystemGuts.h:302
SimTK::ForceSubsystem::Guts::SimTK_DOWNCAST
SimTK_DOWNCAST(ForceSubsystem::Guts, Subsystem::Guts)
SimTK
This is a System that represents the dynamics of a particle moving along a smooth surface.
Definition: Assembler.h:37
SimTK::ForceSubsystem::Guts::getMultibodySystem
const MultibodySystem & getMultibodySystem() const
Definition: ForceSubsystemGuts.h:53
MultibodySystem.h
SimTK::Subsystem::Guts
The abstract parent of all Subsystem implementation classes.
Definition: SubsystemGuts.h:47
SimTK::ForceSubsystem::Guts::~Guts
virtual ~Guts()
Destructor is virtual to permit cleanup of derived classes.
Definition: ForceSubsystemGuts.h:48
SimTKcommon.h
SimTK::MultibodySystem
The job of the MultibodySystem class is to coordinate the activities of various subsystems which can ...
Definition: MultibodySystem.h:48
SimTK::ForceSubsystem::Guts::calcPotentialEnergy
virtual Real calcPotentialEnergy(const State &state) const =0
Get this subsystem's contribution to the potential energy.
SimTK::Real
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:606
SimTK::String
SimTK::String is a plug-compatible std::string replacement (plus some additional functionality) inten...
Definition: String.h:62
SimTK::ForceSubsystem::Guts
Public declaration of internals for ForceSubsystem extension.
Definition: ForceSubsystemGuts.h:39
common.h