Simbody  3.5
Force_Thermostat.h
Go to the documentation of this file.
1 #ifndef SimTK_SIMBODY_FORCE_THERMOSTAT_H_
2 #define SimTK_SIMBODY_FORCE_THERMOSTAT_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) 2009-12 Stanford University and the Authors. *
13  * Authors: Michael Sherman *
14  * Contributors: Christopher Bruns *
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 
33 #include "SimTKcommon.h"
34 #include "simbody/internal/Force.h"
35 
36 namespace SimTK {
37 
132 public:
137  const SimbodyMatterSubsystem& matter,
138  Real boltzmannsConstant,
139  Real bathTemperature,
140  Real relaxationTime,
141  int numExcludedDofs = 6);
142 
143 
146 
151  Thermostat& excludeMobilizedBody(MobilizedBodyIndex);
152 
155  Thermostat& setDefaultNumChains(int numChains);
156 
160  Thermostat& setDefaultBathTemperature(Real bathTemperature);
161 
163  Thermostat& setDefaultRelaxationTime(Real relaxationTime);
164 
169  Thermostat& setDefaultNumExcludedDofs(int numExcludedDofs);
170 
174  int getDefaultNumChains() const;
178  Real getDefaultBathTemperature() const;
181  Real getDefaultRelaxationTime() const;
186  int getDefaultNumExcludedDofs() const;
187 
190  Real getBoltzmannsConstant() const;
191 
195  const Thermostat& setNumChains(State&, int numChains) const;
201  const Thermostat& setBathTemperature(State&, Real Tb) const;
206  const Thermostat& setRelaxationTime(State&, Real t) const;
211  const Thermostat& setNumExcludedDofs(State&, int numExcludedDofs) const;
212 
216  int getNumChains(const State&) const;
221  Real getBathTemperature(const State&) const;
224  Real getRelaxationTime(const State&) const;
229  int getNumExcludedDofs(const State&) const;
230 
235  int getNumThermalDofs(const State&) const;
236 
240  Real getCurrentTemperature(const State&) const;
241 
243  void initializeChainState(State&) const;
247  void setChainState(State&, const Vector&) const;
248 
252  Vector getChainState(const State&) const;
253 
257  Real calcBathEnergy(const State& state) const;
258 
261  Real getExternalPower(const State& state) const;
262 
265  Real getExternalWork(const State& state) const;
266 
269  void setExternalWork(State& state, Real work) const;
270 
274  void initializeSystemToBathTemperature(State&) const;
275 
281  void setSystemToTemperature(State&, Real T) const;
282 
283  // Don't show this in Doxygen.
287 };
288 
289 } // namespace SimTK
290 
291 
292 #endif // SimTK_SIMBODY_FORCE_THERMOSTAT_H_
This is the base class from which all Force element handle classes derive.
Definition: Force.h:50
This is a feedback-controlled force that uses Nose'-Hoover chains to maintain a particular temperatur...
Definition: Force_Thermostat.h:131
This is for arrays indexed by mobilized body number within a subsystem (typically the SimbodyMatterSu...
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
Apache License January AND DISTRIBUTION Definitions License shall mean the terms and conditions for and distribution as defined by Sections through of this document Licensor shall mean the copyright owner or entity authorized by the copyright owner that is granting the License Legal Entity shall mean the union of the acting entity and all other entities that control are controlled by or are under common control with that entity For the purposes of this definition control direct or to cause the direction or management of such whether by contract or including but not limited to software source documentation and configuration files Object form shall mean any form resulting from mechanical transformation or translation of a Source including but not limited to compiled object generated and conversions to other media types Work shall mean the work of whether in Source or Object made available under the as indicated by a copyright notice that is included in or attached to the work(an example is provided in the Appendix below)."Derivative Works"shall mean any work
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:593
This object is intended to contain all state information for a SimTK::System, except topological info...
Definition: State.h:276
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
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
Thermostat()
Default constructor creates an empty handle.
Definition: Force_Thermostat.h:145
This subsystem contains the bodies ("matter") in the multibody system, the mobilizers (joints) that d...
Definition: SimbodyMatterSubsystem.h:133