1 #ifndef SimTK_SIMBODY_ASSEMBLY_CONDITION_H_ 2 #define SimTK_SIMBODY_ASSEMBLY_CONDITION_H_ 50 : name(name), assembler(0) {}
99 const int status = calcErrors(state, err);
103 "The default implementation of getNumErrors() depends on" 104 " calcErrors() but that method was not implemented for assembly" 105 " condition '%s'.", name.c_str());
107 "The default implementation of getNumErrors() uses calcErrors()" 108 " which returned status %d (assembly condition '%s').",
109 status, name.c_str());
119 const int status = calcErrors(state, err);
124 "The default implementation of calcGoal() depends on calcErrors()" 125 " but that method was not implemented for assembly condition '%s'.",
128 "The default implementation of calcGoal() uses calcErrors() which" 129 " returned status %d (assembly condition '%s').",
130 status, name.c_str());
144 const char*
getName()
const {
return name.c_str();}
153 { assert(assembler);
return *assembler;}
158 {
return myAssemblyConditionIndex; }
172 {
return getAssembler().getQIndexOfFreeQ(fx); }
177 {
return getAssembler().getFreeQIndexOfQ(qx); }
180 {
return getAssembler().getMultibodySystem(); }
184 {
return getMultibodySystem().getMatterSubsystem(); }
190 if (isInAssembler()) getAssembler().initialize();
191 else initializeCondition();
199 if (isInAssembler()) getAssembler().uninitialize();
200 else uninitializeCondition();
209 void setAssembler(
const Assembler& assembler, AssemblyConditionIndex acx) {
210 assert(!this->assembler);
211 this->assembler = &assembler;
212 this->myAssemblyConditionIndex = acx;
217 AssemblyConditionIndex myAssemblyConditionIndex;
222 #endif // SimTK_SIMBODY_ASSEMBLY_CONDITION_H_
virtual void uninitializeCondition() const
This is called whenever the containing Assembler is uninitialized in case this assembly condition has...
Definition: AssemblyCondition.h:65
int getNumFreeQs() const
Ask the assembler how many free q's there are; only valid after initialization but does not invoke in...
Definition: AssemblyCondition.h:167
#define SimTK_ERRCHK2_ALWAYS(cond, whereChecked, fmt, a1, a2)
Definition: ExceptionMacros.h:289
virtual int initializeCondition() const
This is called whenever the Assembler is initialized in case this assembly condition wants to do some...
Definition: AssemblyCondition.h:61
Assembler::FreeQIndex getFreeQIndexOfQ(QIndex qx) const
Ask the assembler where to find the free q (if any) that corresponds to a given q in the State; only ...
Definition: AssemblyCondition.h:176
#define SimTK_ERRCHK1_ALWAYS(cond, whereChecked, fmt, a1)
Definition: ExceptionMacros.h:285
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
ScalarNormSq normSqr() const
This is the scalar Frobenius norm, and its square.
Definition: MatrixBase.h:722
virtual int getNumErrors(const State &state) const
Override to supply an efficient method for determining how many errors will be returned by calcErrors...
Definition: AssemblyCondition.h:97
void initializeAssembler() const
Call this method before doing anything that logically requires the Assembler, or at least this Assemb...
Definition: AssemblyCondition.h:188
AssemblyCondition(const String &name)
Base class constructor just takes the assembly condition name and saves it.
Definition: AssemblyCondition.h:49
Every Simbody header and source file should include this header before any other Simbody header...
This Study attempts to find a configuration (set of joint coordinates q) of a Simbody MultibodySystem...
Definition: Assembler.h:148
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
virtual int calcGoal(const State &state, Real &goal) const
Calculate the current contribution (>= 0) of this assembly condition to the goal value that is being ...
Definition: AssemblyCondition.h:117
This object is intended to contain all state information for a SimTK::System, except topological info...
Definition: State.h:280
virtual ~AssemblyCondition()
Destructor is virtual for use by derived classes.
Definition: AssemblyCondition.h:53
const char * getName() const
Return the name assigned to this AssemblyCondition on construction.
Definition: AssemblyCondition.h:144
QIndex getQIndexOfFreeQ(Assembler::FreeQIndex fx) const
Ask the assembler where to find the actual q in the State that corresponds to a given free q; only va...
Definition: AssemblyCondition.h:171
void uninitializeAssembler() const
Call this when modifying any parameter of the concrete AssemblyCondition that would require reinitial...
Definition: AssemblyCondition.h:197
Includes internal headers providing declarations for the basic SimTK Core classes, including Simmatrix.
AssemblyConditionIndex getAssemblyConditionIndex() const
Return the AssemblyConditionIndex of this concrete AssemblyCondition within the Assembler that has ad...
Definition: AssemblyCondition.h:157
const SimbodyMatterSubsystem & getMatterSubsystem() const
Ask the assembler for the MultibodySystem with which it is associated and extract the SimbodyMatterSu...
Definition: AssemblyCondition.h:183
ELEM max(const VectorBase< ELEM > &v)
Definition: VectorMath.h:251
The job of the MultibodySystem class is to coordinate the activities of various subsystems which can ...
Definition: MultibodySystem.h:48
Unique integer type for Subsystem-local q indexing.
SimTK::String is a plug-compatible std::string replacement (plus some additional functionality) inten...
Definition: String.h:62
const MultibodySystem & getMultibodySystem() const
Ask the assembler for the MultibodySystem with which it is associated.
Definition: AssemblyCondition.h:179
virtual int calcErrorJacobian(const State &state, Matrix &jacobian) const
Override to supply an analytic Jacobian for the assembly errors returned by calcErrors().
Definition: AssemblyCondition.h:87
bool isInAssembler() const
Test whether this AssemblyCondition has already been adopted by an Assembler.
Definition: AssemblyCondition.h:148
#define SimTK_SIMBODY_EXPORT
Definition: Simbody/include/simbody/internal/common.h:68
virtual int calcGoalGradient(const State &state, Vector &gradient) const
Override to supply an analytic gradient for this assembly condition's goal.
Definition: AssemblyCondition.h:140
int size() const
Definition: VectorBase.h:396
Define an assembly condition consisting of a scalar goal and/or a related set of assembly error equat...
Definition: AssemblyCondition.h:44
This subsystem contains the bodies ("matter") in the multibody system, the mobilizers (joints) that d...
Definition: SimbodyMatterSubsystem.h:133
virtual int calcErrors(const State &state, Vector &err) const
Calculate the amount by which this assembly condition is violated by the q values in the given state...
Definition: AssemblyCondition.h:75
const Assembler & getAssembler() const
Return the Assembler that has adopted this AssemblyCondition.
Definition: AssemblyCondition.h:152