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;
 
#define SimTK_ERRCHK2_ALWAYS(cond, whereChecked, fmt, a1, a2)
Definition: ExceptionMacros.h:289
 
#define SimTK_ERRCHK1_ALWAYS(cond, whereChecked, fmt, a1)
Definition: ExceptionMacros.h:285
 
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 Study attempts to find a configuration (set of joint coordinates q) of a Simbody MultibodySystem...
Definition: Assembler.h:148
 
Define an assembly condition consisting of a scalar goal and/or a related set of assembly error equat...
Definition: AssemblyCondition.h:44
 
AssemblyCondition(const String &name)
Base class constructor just takes the assembly condition name and saves it.
Definition: AssemblyCondition.h:49
 
virtual ~AssemblyCondition()
Destructor is virtual for use by derived classes.
Definition: AssemblyCondition.h:53
 
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
 
void initializeAssembler() const
Call this method before doing anything that logically requires the Assembler, or at least this Assemb...
Definition: AssemblyCondition.h:188
 
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
 
void uninitializeAssembler() const
Call this when modifying any parameter of the concrete AssemblyCondition that would require reinitial...
Definition: AssemblyCondition.h:197
 
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
 
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
 
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
 
virtual void uninitializeCondition() const
This is called whenever the containing Assembler is uninitialized in case this assembly condition has...
Definition: AssemblyCondition.h:65
 
const SimbodyMatterSubsystem & getMatterSubsystem() const
Ask the assembler for the MultibodySystem with which it is associated and extract the SimbodyMatterSu...
Definition: AssemblyCondition.h:183
 
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
 
AssemblyConditionIndex getAssemblyConditionIndex() const
Return the AssemblyConditionIndex of this concrete AssemblyCondition within the Assembler that has ad...
Definition: AssemblyCondition.h:157
 
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
 
const char * getName() const
Return the name assigned to this AssemblyCondition on construction.
Definition: AssemblyCondition.h:144
 
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
 
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
 
const MultibodySystem & getMultibodySystem() const
Ask the assembler for the MultibodySystem with which it is associated.
Definition: AssemblyCondition.h:179
 
bool isInAssembler() const
Test whether this AssemblyCondition has already been adopted by an Assembler.
Definition: AssemblyCondition.h:148
 
ScalarNormSq normSqr() const
This is the scalar Frobenius norm, and its square.
Definition: MatrixBase.h:722
 
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.
 
This subsystem contains the bodies ("matter") in the multibody system, the mobilizers (joints) that d...
Definition: SimbodyMatterSubsystem.h:133
 
This object is intended to contain all state information for a SimTK::System, except topological info...
Definition: State.h:280
 
SimTK::String is a plug-compatible std::string replacement (plus some additional functionality) inten...
Definition: String.h:65
 
int size() const
Definition: VectorBase.h:396
 
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
 
ELEM max(const VectorBase< ELEM > &v)
Definition: VectorMath.h:251
 
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