public class MFreeMuscleModel extends MFreeModel3d implements AuxiliaryMaterial, ExcitationComponent
FemModel.ElementFilter, FemModel.IncompMethod, FemModel.Ranging, FemModel.SurfaceRender
ExcitationComponent.CombinationRule
ModelComponent.NavpanelVisibility
MechSystem.ConstraintInfo, MechSystem.FrictionInfo
Collidable.DefaultCollidable
CompositeComponent.NavpanelDisplay
Modifier and Type | Field and Description |
---|---|
static PropertyList |
myProps |
abortOnInvertedElems, checkTangentStability, DEFAULT_HARD_INCOMP, DEFAULT_SOFT_INCOMP, defaultColorMap
myParametricsInSystemMatrix
DEFAULT_NAVPANEL_DISPLAY
enforceUniqueCompositeNames, enforceUniqueNames, myNumber, NULL_OBJ, useCompactPathNames
ARTICULATED, SIMULATING
COMPUTE_CONTACTS, UPDATE_CONTACTS
Default, Deformable, RigidBody, Self
COPY_REFERENCES
TRANSLUCENT, TWO_DIMENSIONAL
Constructor and Description |
---|
MFreeMuscleModel() |
MFreeMuscleModel(java.lang.String name) |
Modifier and Type | Method and Description |
---|---|
static void |
addBundleControls(ControlPanel panel,
MFreeMuscleModel muscle) |
static void |
addControls(ControlPanel controlPanel,
FemModel femModel,
ModelComponent topModel) |
void |
addExcitationSource(ExcitationComponent ex)
Adds a new excitation source to this Excitable, with an assumed gain of
1.
|
void |
addExcitationSource(ExcitationComponent ex,
double gain)
Adds a new excitation source to this Excitable with a specified gain.
|
MFreeMuscleBundle |
addFiberMeshBundle(double rad,
PolylineMesh mesh) |
void |
addMuscleBundle(MFreeMuscleBundle bundle) |
void |
addMuscleExciter(MuscleExciter mex) |
void |
addPosJacobian(SparseNumberedBlockMatrix M,
double s)
Scales the components of the position Jacobian associated with this force
effector and adds it to the supplied solve matrix M.
|
void |
addSolveBlocks(SparseNumberedBlockMatrix S)
Adds any needed blocks to a solve matrix in order to accomodate the
Jacobian terms associated with this force effector.
|
void |
addVelJacobian(SparseNumberedBlockMatrix M,
double s)
Scales the components of the velocity Jacobian associated with this force
effector and adds it to the supplied solve matrix M.
|
void |
applyForces(double t)
Adds forces to the components affected by this force effector at a
particular time.
|
void |
clearMuscleBundles() |
static boolean |
computeAverageFiberDirection(Vector3d dir,
Point3d pos,
double rad,
PolylineMesh mesh) |
void |
computeStress(SymmetricMatrix3d sigma,
SolidDeformation def,
IntegrationPoint3d pt,
IntegrationData3d dt,
FemMaterial baseMat) |
void |
computeTangent(Matrix6d D,
SymmetricMatrix3d stress,
SolidDeformation def,
IntegrationPoint3d pt,
IntegrationData3d dt,
FemMaterial baseMat) |
static MuscleMaterial |
createDefaultMuscleMaterial() |
MuscleMaterial |
createMuscleMaterial() |
VectorNd |
getActivations() |
void |
getActivations(VectorNd a,
int idx) |
PropertyList |
getAllPropertyInfo()
Returns a list giving static information about all properties exported by
this object.
|
ExcitationComponent.CombinationRule |
getCombinationRule()
Return the combination rule for excitations.
|
double |
getDefaultActivationWeight()
Returns the default weight that should be used when this excitation
component is being used for inverse actuation control.
|
double |
getDirectionRenderLen() |
PropertyMode |
getDirectionRenderLenMode() |
MFreeMuscleBundle.DirectionRenderType |
getDirectionRenderType() |
PropertyMode |
getDirectionRenderTypeMode() |
double |
getExcitation()
Returns the primary excitation for this component.
|
java.awt.Color |
getExcitationColor() |
PropertyMode |
getExcitationColorMode() |
double |
getExcitationGain(ExcitationComponent ex)
Gets the gain for an excitation source in this component.
|
RenderProps |
getFiberRenderProps() |
double |
getMaxColoredExcitation() |
PropertyMode |
getMaxColoredExcitationMode() |
RenderableComponentList<MFreeMuscleBundle> |
getMuscleBundles() |
ComponentList<MuscleExciter> |
getMuscleExciters() |
MuscleMaterial |
getMuscleMaterial() |
double |
getNetExcitation()
Returns the net excitation for this Excitable.
|
void |
getSoftReferences(java.util.List<ModelComponent> refs)
Appends all soft references for this component to a list.
|
boolean |
hasSymmetricTangent() |
boolean |
isInvertible() |
void |
notifyActivationsSet() |
int |
numActivations()
preliminary methods for inverse solver
|
void |
prerender(RenderList list)
Prepare for rendering, and potentially add itself to a list to be drawn
by a GLRenderer.
|
void |
recursivelyInitialize(double t,
int level) |
boolean |
removeExcitationSource(ExcitationComponent ex)
Removes an excitation source from this Excitable.
|
boolean |
removeMuscleBundle(MFreeMuscleBundle bundle) |
boolean |
removeMuscleExciter(MuscleExciter mex) |
void |
render(GLRenderer renderer,
int flags)
Render this object using Open GL via the JOGL.
|
void |
scaleDistance(double s)
Scales all distance coordinates.
|
void |
scaleMass(double s)
Scales all mass units.
|
void |
setActivations(VectorNd a) |
void |
setActivations(VectorNd a,
int idx) |
void |
setBundlesActive(boolean active) |
void |
setCombinationRule(ExcitationComponent.CombinationRule rule)
Sets the rule for combining excitations.
|
void |
setDefaultValues()
Sets the attributes of this component to their default values.
|
void |
setDirectionRenderLen(double size) |
void |
setDirectionRenderLenMode(PropertyMode mode) |
void |
setDirectionRenderType(MFreeMuscleBundle.DirectionRenderType type) |
void |
setDirectionRenderTypeMode(PropertyMode mode) |
void |
setExcitation(double a)
Sets the primary excitation for this component.
|
void |
setExcitationColor(java.awt.Color color) |
void |
setExcitationColorMode(PropertyMode mode) |
boolean |
setExcitationGain(ExcitationComponent ex,
double gain)
Sets the gain for an excitation source in this component.
|
void |
setFiberRenderProps(RenderProps props) |
void |
setMaxColoredExcitation(double excitation) |
void |
setMaxColoredExcitationMode(PropertyMode mode) |
void |
setMuscleMaterial(MuscleMaterial mat) |
void |
transformGeometry(AffineTransform3dBase X)
Applies an affine transformation to the geometry of this object.
|
void |
transformGeometry(AffineTransform3dBase X,
TransformableGeometry topObject,
int flags)
Applies an affine transformation to the geometry of this object.
|
void |
updateReferences(boolean undo,
java.util.Deque<java.lang.Object> undoInfo)
May be called by the system if any of the soft references for
this component are removed from the the component hierarchy.
|
addBilateralConstraints, addElement, addElements, addMaterialBundle, addMesh, addNode, addNodes, addNumberedElement, addNumberedNode, advance, checkInversion, checkVelocityStability, clearElements, clearMaterialBundles, clearMeshes, componentChanged, computeConsistentMassMatrix, computeConsistentMassMatrixEntry, computeShapeMatrix, createCollisionData, createDefaultColorMap, dispose, getAuxStateComponents, getBilateralImpulses, getBilateralInfo, getBilateralSizes, getByNumber, getCollidables, getColorMap, getColorMapMode, getCopyReferences, getElement, getElementBVTree, getElementByNumber, getElements, getElementWidgetSize, getElementWidgetSizeMode, getEnergy, getHardIncompMethod, getJacobianType, getMaterialBundles, getMesh, getMeshComponent, getMeshes, getNode, getNodeBVTree, getNodeNeighbors, getNodes, getSelection, getSoftIncompMethod, initialize, integrate, integrateMass, integrateVolume, invalidateRestData, invalidateStressAndStiffness, invalidateSurfaceMesh, isCollidable, isDuplicatable, numSurfaceMeshes, recursivelyFinalizeAdvance, removeElement, removeMaterialBundle, removeMesh, removeNode, resetRestPosition, setBilateralImpulses, setColorMap, setColorMapMode, setComputeNodalStrain, setComputeNodalStress, setElementWidgetSize, setElementWidgetSizeMode, setIncompressible, setMaterial, setSoftIncompMethod, setSurfaceRendering, updateAllRestVolumes, updateAllVolumes, updateBounds, updateConstraints, updateJacobians, updateNodeMasses, updateSlavePos, updateStressAndStiffness, updateVolume, zeroImpulses
addFrictionConstraints, addMarker, addMarker, addUnilateralConstraints, attachments, attachPoint, clear, copy, createDefaultMaterial, detachAllNodes, detachPoint, forcesNeedUpdating, getAttachments, getCharacteristicSize, getCollidables, getConstrainers, getDensity, getDensityMode, getDynamicComponents, getForceEffectors, getGravity, getGravityMode, getImplicitIterations, getImplicitPrecision, getIntegrator, getMass, getMaterial, getMatrixSolver, getNodeMass, getNumInverted, getParticleDamping, getRestVolume, getSlaveObjectComponents, getStiffnessDamping, getStressPlotRange, getStressPlotRangeMode, getStressPlotRanging, getStressPlotRangingMode, getSurfaceRendering, getSurfaceRenderingMode, getToleranceType, getUnilateralImpulses, getUnilateralInfo, getUnilateralSizes, getVolume, hasState, isProfile, markers, maxFrictionConstraintSets, numElements, numNodes, propertyChanged, removeMarker, resetStressPlotRange, setBounds, setDensity, setDensityMode, setGravity, setGravity, setGravityMode, setImplicitIterations, setImplicitPrecision, setIntegrator, setLinearMaterial, setMatrixSolver, setMaxStepSize, setParticleDamping, setProfile, setStiffnessDamping, setStressPlotRange, setStressPlotRangeMode, setStressPlotRanging, setStressPlotRangingMode, setSurfaceRenderingMode, setToleranceType, setUnilateralImpulses, updateRestVolume, updateSlaveVel, validateMatrixSolver, zeroExternalForces
addActivePosImpulse, addAttachmentJacobian, addAttachmentSolveBlocks, addGeneralSolveBlocks, addPosJacobian, addVelJacobian, applyAttachmentForces, buildMassMatrix, buildSolveMatrix, createState, createVelocityJacobian, getActiveForces, getActivePosDerivative, getActivePosState, getActivePosStateSize, getActiveStiffness, getActiveVelState, getActiveVelState, getActiveVelStateSize, getAttachmentConstraints, getAttachmentDerivatives, getAuxState, getBilateralConstraints, getBilateralConstraintSizes, getBilateralImpulses, getBilateralInfo, getDefaultStabilization, getDynamicsEnabled, getFrictionConstraints, getInitialState, getInverseMassMatrix, getMassMatrix, getNumBilateralImpulses, getNumUnilateralImpulses, getParametricForces, getParametricPosState, getParametricPosStateSize, getParametricPosTarget, getParametricVelState, getParametricVelStateSize, getParametricVelTarget, getPenetrationLimit, getSolveMatrixType, getSolver, getStabilization, getState, getStructureVersion, getUnilateralConstraints, getUnilateralConstraintSizes, getUnilateralImpulses, getUnilateralInfo, getUpdateForcesAtStepEnd, hasParameterizedType, numActiveComponents, numAttachedComponents, numParametricComponents, preadvance, printActiveStiffness, reduceVelocityJacobian, setActiveForces, setActivePosState, setActiveVelState, setAuxState, setBilateralImpulses, setDefaultStabilization, setDynamicsEnabled, setParametricForces, setParametricPosState, setParametricVelState, setPenetrationLimit, setStabilization, setState, setUnilateralImpulses, setUpdateForcesAtStepEnd, updateAttachmentPos, updateAttachmentVel, updateConstraints, updateForces, updatePosState, updateVelState, writeBilateralConstraintMatrix, writeMassMatrix, writeStiffnessMatrix
createRenderProps, getRenderHints, getRenderProps, isSelectable, numSelectionQueriesNeeded, setRenderProps
copy, getInitialState, getMaxStepSize, hierarchyContainsReferences, setInitialState
add, add, addAll, addComponents, addFixed, addNumbered, clone, contains, contains, containsAll, ensureCapacity, findComponent, get, get, getChildren, getNavpanelDisplay, getNumberLimit, getShortName, getTypeParameter, hasChildren, indexOf, isEmpty, iterator, nextComponentNumber, numComponents, postscan, remove, remove, removeAll, removeAll, removeComponents, retainAll, scan, setNavpanelDisplay, setNumberingStartAtOne, setShortName, size, toArray, toArray, updateNameMap
checkFlag, checkName, checkNameUniqueness, clearFlag, connectToHierarchy, createTempFlag, disconnectFromHierarchy, getGrandParent, getHardReferences, getName, getNameRange, getNavpanelVisibility, getNavpanelVisibility, getNumber, getParent, getProperty, isFixed, isMarked, isSelected, isWritable, makeValidName, makeValidName, notifyParentOfChange, printReferences, recursivelyContained, recursivelyContains, removeTempFlag, setFixed, setFlag, setMarked, setName, setNavpanelVisibility, setNavpanelVisibility, setNumber, setParent, setSelected, write
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
connectToHierarchy, disconnectFromHierarchy, getHardReferences, getName, getNavpanelVisibility, getNumber, getParent, hasState, isFixed, isMarked, isSelected, notifyParentOfChange, postscan, scan, setFixed, setMarked, setName, setNumber, setParent, setSelected
getProperty
getChildren, hasChildren
isWritable, write
initialize
getAttachments, getConstrainers, getDynamicComponents, getForceEffectors, getSlaveObjectComponents
getMaxStepSize, preadvance
createState, getInitialState, getState, setState
addActivePosImpulse, addPosJacobian, addVelJacobian, buildMassMatrix, buildSolveMatrix, getActiveForces, getActivePosDerivative, getActivePosState, getActivePosStateSize, getActiveVelState, getActiveVelStateSize, getBilateralConstraints, getBilateralImpulses, getBilateralInfo, getFrictionConstraints, getInverseMassMatrix, getMassMatrix, getParametricForces, getParametricPosState, getParametricPosStateSize, getParametricPosTarget, getParametricVelState, getParametricVelStateSize, getParametricVelTarget, getSolveMatrixType, getStructureVersion, getUnilateralConstraints, getUnilateralImpulses, getUnilateralInfo, maxFrictionConstraintSets, numActiveComponents, numParametricComponents, setActiveForces, setActivePosState, setActiveVelState, setBilateralImpulses, setParametricForces, setParametricPosState, setParametricVelState, setUnilateralImpulses, updateConstraints, updateForces
getMass
copy
getName
public static PropertyList myProps
public MFreeMuscleModel()
public MFreeMuscleModel(java.lang.String name)
public PropertyList getAllPropertyInfo()
HasProperties
getAllPropertyInfo
in interface HasProperties
getAllPropertyInfo
in class MFreeModel3d
public java.awt.Color getExcitationColor()
public void setExcitationColor(java.awt.Color color)
public PropertyMode getExcitationColorMode()
public void setExcitationColorMode(PropertyMode mode)
public double getMaxColoredExcitation()
public void setMaxColoredExcitation(double excitation)
public PropertyMode getMaxColoredExcitationMode()
public void setMaxColoredExcitationMode(PropertyMode mode)
public double getExcitation()
getExcitation
in interface ExcitationComponent
public void setExcitation(double a)
setExcitation
in interface ExcitationComponent
a
- excitation valuepublic void setCombinationRule(ExcitationComponent.CombinationRule rule)
setCombinationRule
in interface ExcitationComponent
rule
- rule for combining excitationspublic ExcitationComponent.CombinationRule getCombinationRule()
getCombinationRule
in interface ExcitationComponent
public void addExcitationSource(ExcitationComponent ex)
addExcitationSource
in interface ExcitationComponent
ex
- excitatation source to be addedpublic void addExcitationSource(ExcitationComponent ex, double gain)
addExcitationSource
in interface ExcitationComponent
ex
- excitatation source to be addedgain
- gain for the sourcepublic boolean removeExcitationSource(ExcitationComponent ex)
removeExcitationSource
in interface ExcitationComponent
ex
- excitatation source to be removedpublic double getExcitationGain(ExcitationComponent ex)
getExcitationGain
in interface ExcitationComponent
ex
- excitatation source whose gain is to be queriedpublic boolean setExcitationGain(ExcitationComponent ex, double gain)
setExcitationGain
in interface ExcitationComponent
ex
- excitatation source whose gain is to be modifiedgain
- new gain for the sourcepublic double getNetExcitation()
getNetExcitation
in interface ExcitationComponent
public void getSoftReferences(java.util.List<ModelComponent> refs)
updateReferences()
method will
be called to update its internal reference information.getSoftReferences
in interface ModelComponent
getSoftReferences
in class ModelComponentBase
refs
- list to which soft references are appendedpublic void updateReferences(boolean undo, java.util.Deque<java.lang.Object> undoInfo)
undo
equal to false
,
this component should then examine its soft references and
use ComponentUtils.isConnected()
to determine which of them have been disconnected from the hierarchy.
Disconnected references should be removed, and sufficient information
should be appended to undoInfo
to allow this update
to be undone if this method is called later with undo
equal to true
. When undoing an update, the undo
information should be removed from the front of undoInfo
.updateReferences
in interface ModelComponent
updateReferences
in class ModelComponentBase
undo
- if true
, indicates that the most
recent reference update should be undone, using the supplied
undo information.undoInfo
- if undo
is false
, should be used
to store information allowing the reference update to be undone.
Otherwise, if undo
is true
, then this
supplied information to undo the most recent update.public double getDefaultActivationWeight()
getDefaultActivationWeight
in interface ExcitationComponent
public void setDefaultValues()
ModelComponentBase
public void setDirectionRenderLen(double size)
public double getDirectionRenderLen()
public void setDirectionRenderLenMode(PropertyMode mode)
public PropertyMode getDirectionRenderLenMode()
public void setFiberRenderProps(RenderProps props)
public RenderProps getFiberRenderProps()
public void setDirectionRenderType(MFreeMuscleBundle.DirectionRenderType type)
public MFreeMuscleBundle.DirectionRenderType getDirectionRenderType()
public void setDirectionRenderTypeMode(PropertyMode mode)
public PropertyMode getDirectionRenderTypeMode()
public static MuscleMaterial createDefaultMuscleMaterial()
public MuscleMaterial getMuscleMaterial()
public MuscleMaterial createMuscleMaterial()
public boolean isInvertible()
isInvertible
in interface AuxiliaryMaterial
public void setMuscleMaterial(MuscleMaterial mat)
public void addMuscleBundle(MFreeMuscleBundle bundle)
public boolean removeMuscleBundle(MFreeMuscleBundle bundle)
public void clearMuscleBundles()
public RenderableComponentList<MFreeMuscleBundle> getMuscleBundles()
public void addMuscleExciter(MuscleExciter mex)
public boolean removeMuscleExciter(MuscleExciter mex)
public ComponentList<MuscleExciter> getMuscleExciters()
public void scaleDistance(double s)
ScalableUnits
scaleDistance
in interface ScalableUnits
scaleDistance
in class MFreeModel3d
s
- scaling factorpublic void scaleMass(double s)
ScalableUnits
scaleMass
in interface ScalableUnits
scaleMass
in class FemModel
s
- scaling factorpublic void applyForces(double t)
ForceEffector
applyForces
in interface ForceEffector
applyForces
in class FemModel
t
- time (seconds)public void addPosJacobian(SparseNumberedBlockMatrix M, double s)
ForceEffector
M is guaranteed to be the same matrix supplied in the most recent call to
addSolveBlocks
, and so implementations may choose
to cache the relevant matrix blocks from that call, instead of retrieving
them directly from M.
addPosJacobian
in interface ForceEffector
addPosJacobian
in class MFreeModel3d
M
- solve matrix to which scaled position Jacobian is to be addeds
- scaling factor for position Jacobianpublic void addVelJacobian(SparseNumberedBlockMatrix M, double s)
ForceEffector
M is guaranteed to be the same matrix supplied in the most recent call to
addSolveBlocks
, and so implementations may choose
to cache the relevant matrix blocks from that call, instead of retrieving
them directly from M.
addVelJacobian
in interface ForceEffector
addVelJacobian
in class MFreeModel3d
M
- solve matrix to which scaled velocity Jacobian is to be addeds
- scaling factor for velocity Jacobianpublic void addSolveBlocks(SparseNumberedBlockMatrix S)
ForceEffector
getSolveIndex
) for all dynamic or attached components affected by this
force effector.addSolveBlocks
in interface ForceEffector
addSolveBlocks
in class MFreeModel3d
S
- solve matrix to which blocks should be addedpublic void recursivelyInitialize(double t, int level)
recursivelyInitialize
in interface MechSystemModel
recursivelyInitialize
in class MFreeModel3d
public static void addControls(ControlPanel controlPanel, FemModel femModel, ModelComponent topModel)
public static void addBundleControls(ControlPanel panel, MFreeMuscleModel muscle)
public int numActivations()
MechSystemBase
public VectorNd getActivations()
public void getActivations(VectorNd a, int idx)
public void setActivations(VectorNd a)
public void setActivations(VectorNd a, int idx)
public void notifyActivationsSet()
public boolean hasSymmetricTangent()
hasSymmetricTangent
in interface AuxiliaryMaterial
public void computeTangent(Matrix6d D, SymmetricMatrix3d stress, SolidDeformation def, IntegrationPoint3d pt, IntegrationData3d dt, FemMaterial baseMat)
computeTangent
in interface AuxiliaryMaterial
public void computeStress(SymmetricMatrix3d sigma, SolidDeformation def, IntegrationPoint3d pt, IntegrationData3d dt, FemMaterial baseMat)
computeStress
in interface AuxiliaryMaterial
public void transformGeometry(AffineTransform3dBase X)
TransformableGeometry
transformGeometry (X, this, 0);
transformGeometry
in interface TransformableGeometry
transformGeometry
in class MFreeModel3d
X
- affine transformationpublic void transformGeometry(AffineTransform3dBase X, TransformableGeometry topObject, int flags)
TransformableGeometry
topComponent
should be the component for which the method
was initially invoked. The variable flags
provides
information about the context in which the transformation is
being applied. At present, the available flags are
TransformableGeometry.SIMULATING
and TransformableGeometry.ARTICULATED
.transformGeometry
in interface TransformableGeometry
transformGeometry
in class MFreeModel3d
X
- affine transformationtopObject
- component on which the method was initially invokedflags
- provides information about the context in which the
transformation is being applied.public static boolean computeAverageFiberDirection(Vector3d dir, Point3d pos, double rad, PolylineMesh mesh)
public void setBundlesActive(boolean active)
public MFreeMuscleBundle addFiberMeshBundle(double rad, PolylineMesh mesh)
public void prerender(RenderList list)
GLRenderable
prerender
in interface GLRenderable
prerender
in class MFreeModel3d
public void render(GLRenderer renderer, int flags)
GLRenderable
render
in interface GLRenderable
render
in class MFreeModel3d
renderer
- renderer object which is used to perform the rendering. Provides pointers
to GL and GLU, along with helper functions.flags
- supplies flags that may be used to control different
aspects of the rendering. Flags are defined in GLRenderer
and currently include
GLRenderer.SELECTED
,
GLRenderer.VERTEX_COLORING
,
GLRenderer.HSV_COLOR_INTERPOLATION
,
GLRenderer.SORT_FACES
, and
GLRenderer.CLEAR_MESH_DISPLAY_LISTS
.