public class AxialSpring extends PointSpringBase implements ScalableUnits, CopyableComponent, ForceTargetComponent
ModelComponent.FilePathSaveType, ModelComponent.NavpanelVisibility| Modifier and Type | Field and Description |
|---|---|
static PropertyList |
myProps |
myIgnoreCoriolisInJacobian, useMaterialenforceUniqueCompositeNames, enforceUniqueNames, myNumber, NULL_OBJ, useCompactPathNamesCOPY_REFERENCES, REST_POSITIONTRANSPARENT, TWO_DIMENSIONAL| Constructor and Description |
|---|
AxialSpring() |
AxialSpring(double k,
double d,
double l0) |
AxialSpring(java.lang.String name) |
AxialSpring(java.lang.String name,
double l0) |
AxialSpring(java.lang.String name,
double k,
double d,
double l0) |
| Modifier and Type | Method and Description |
|---|---|
int |
addForcePosJacobian(SparseBlockMatrix J,
double h,
boolean staticOnly,
int bi)
Add a row to the force Jacobian for this force target component.
|
int |
addForceVelJacobian(SparseBlockMatrix J,
double h,
int bi) |
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 M)
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 |
computeForce(Vector3d f)
Computes the force acting on the first point.
|
void |
computeForcePositionJacobian(Matrix3d M)
Computes the force/position Jacobian of this spring.
|
void |
computeForceVelocityJacobian(Matrix3d M)
Computes the force/velocity Jacobian of this spring.
|
ModelComponent |
copy(int flags,
java.util.Map<ModelComponent,ModelComponent> copyMap)
Create a copy of this component.
|
PropertyList |
getAllPropertyInfo()
Returns a list giving static information about all properties exported by
this object.
|
boolean |
getCopyReferences(java.util.List<ModelComponent> refs,
ModelComponent ancestor)
Collects external references which must also be copied in order to
duplicate this component.
|
Vector3d |
getDir() |
Point |
getFirstPoint() |
void |
getForce(VectorNd minf,
boolean staticOnly) |
int |
getForceSize() |
void |
getHardReferences(java.util.List<ModelComponent> refs)
Appends all hard references for this component to a list.
|
int |
getJacobianType()
Returns a code indicating the matrix type that results when the Jacobian
terms of this force effector are added to the solve matrix.
|
double |
getLength() |
double |
getLengthDot() |
Point |
getPoint(int idx)
Returns the
idx-th point in this spring. |
Point |
getSecondPoint() |
int |
indexOfPoint(Point pnt)
Returns the index of a specified point in this spring, or -1 if the
point is not present.
|
boolean |
isDuplicatable()
Returns true if this component can be duplicated.
|
int |
numPoints()
Queries the number of points in this spring.
|
void |
printPointReferences(java.io.PrintWriter pw,
CompositeComponent ancestor) |
void |
render(Renderer renderer,
int flags)
Render this object using the functionality of the supplied
Renderer. |
void |
scaleDistance(double s)
Scales all distance coordinates.
|
void |
scaleMass(double s)
Scales all mass units.
|
void |
setFirstPoint(Point pnt) |
void |
setPoint(int idx,
Point pnt)
Sets a point at a particular index.
|
void |
setPoints(Point p1,
Point p2) |
void |
setPoints(Point p1,
Point p2,
double restLength) |
double |
setRestLengthFromPoints()
Sets the rest length of the spring from the current point locations
|
void |
setSecondPoint(Point pnt) |
void |
updateBounds(Vector3d pmin,
Vector3d pmax)
Update the minimum and maximum points for this object.
|
void |
write(java.io.PrintWriter pw,
NumberFormat fmt,
java.lang.Object ref)
Writes a text description of this element to a PrintWriter.
|
advanceState, computeDFdl, computeDFdl, computeDFdldot, computeDFdldot, computeF, computeF, containsPoint, createDefaultMaterial, createRenderProps, getAuxVarDerivative, getAuxVarState, getEffectiveMaterial, getForceScaling, getMaterial, getMaxForce, getRenderColor, getRenderHints, getRenderProps, getRestLength, getSelection, getState, getStateVersion, hasState, isSelectable, normalizeForceScaling, numAuxVars, numSelectionQueriesNeeded, prerender, requiresAdvance, setAuxVarState, setDamping, setLinearMaterial, setMaterial, setMaxForce, setRenderProps, setRestLength, setState, setStiffnesscheckFlag, checkName, checkNameUniqueness, clearFlag, clone, connectToHierarchy, createTempFlag, disconnectFromHierarchy, getChildren, getGrandParent, getName, getNameRange, getNavpanelVisibility, getNavpanelVisibility, getNumber, getParent, getProperty, getSoftReferences, hasChildren, isFixed, isMarked, isScanning, isSelected, isWritable, makeValidName, makeValidName, notifyParentOfChange, postscan, printReferences, recursivelyContained, recursivelyContains, removeTempFlag, scan, setFixed, setFlag, setMarked, setName, setNavpanelVisibility, setNavpanelVisibility, setNumber, setParent, setScanning, setSelected, setWritable, updateReferencesequals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitconnectToHierarchy, disconnectFromHierarchy, getName, getNavpanelVisibility, getNumber, getParent, getSoftReferences, hasState, isFixed, isMarked, isSelected, notifyParentOfChange, scan, setFixed, setMarked, setName, setNumber, setParent, setSelected, setWritable, updateReferencesgetPropertygetChildren, hasChildrenpostscanisWritablepublic static PropertyList myProps
public AxialSpring()
public AxialSpring(java.lang.String name)
public AxialSpring(java.lang.String name,
double l0)
public AxialSpring(java.lang.String name,
double k,
double d,
double l0)
public AxialSpring(double k,
double d,
double l0)
public PropertyList getAllPropertyInfo()
HasPropertiesgetAllPropertyInfo in interface HasPropertiesgetAllPropertyInfo in class PointSpringBasepublic Point getFirstPoint()
public Point getSecondPoint()
public void setFirstPoint(Point pnt)
public void setSecondPoint(Point pnt)
public int numPoints()
numPoints in class PointSpringBasepublic Point getPoint(int idx)
idx-th point in this spring.getPoint in class PointSpringBaseidx - point indexidx-th pointpublic void setPoint(int idx,
Point pnt)
<
numPoints().setPoint in class PointSpringBaseidx - specifies point positionpnt - replacement pointpublic int indexOfPoint(Point pnt)
indexOfPoint in class PointSpringBasepnt - point whose index is desiredpublic double setRestLengthFromPoints()
PointSpringBasesetRestLengthFromPoints in class PointSpringBasepublic void computeForce(Vector3d f)
f - returns the computed force acting on the first pointpublic void applyForces(double t)
ForceEffectorapplyForces in interface ForceEffectorapplyForces in class Springt - time (seconds)public void printPointReferences(java.io.PrintWriter pw,
CompositeComponent ancestor)
throws java.io.IOException
java.io.IOExceptionpublic void write(java.io.PrintWriter pw,
NumberFormat fmt,
java.lang.Object ref)
throws java.io.IOException
ModelComponentBasescan and complete
enough to allow full reconstruction of the element.write in interface Scannablewrite in class ModelComponentBasepw - stream for writing the elementfmt - numeric formating informationref - optional reference object which can be used for producing references to
other objectsjava.io.IOException - if an I/O error occuredpublic void updateBounds(Vector3d pmin, Vector3d pmax)
IsRenderableupdateBounds in interface IsRenderableupdateBounds in class PointSpringBasepmin - minimum pointpmax - maximum pointpublic void render(Renderer renderer, int flags)
IsRenderableRenderer.render in interface IsRenderablerender in class PointSpringBaserenderer - provides the functionality used to perform the rendering.flags - flags that may be used to control different
aspects of the rendering. Flags are defined in Renderer
and currently include
Renderer.HIGHLIGHT and
Renderer.SORT_FACES.public void scaleDistance(double s)
ScalableUnitsscaleDistance in interface ScalableUnitsscaleDistance in class PointSpringBases - scaling factorpublic void scaleMass(double s)
ScalableUnitsscaleMass in interface ScalableUnitsscaleMass in class PointSpringBases - scaling factorpublic Vector3d getDir()
public double getLength()
getLength in class PointSpringBasepublic double getLengthDot()
getLengthDot in class PointSpringBasepublic void computeForcePositionJacobian(Matrix3d M)
M - matrix in which to return the resultpublic void computeForceVelocityJacobian(Matrix3d M)
M - matrix in which to return the resultpublic void addSolveBlocks(SparseNumberedBlockMatrix M)
ForceEffectorgetSolveIndex) for all dynamic or attached components affected by this
force effector.addSolveBlocks in interface ForceEffectorM - solve matrix to which blocks should be addedpublic 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 ForceEffectorM - 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 ForceEffectorM - solve matrix to which scaled velocity Jacobian is to be addeds - scaling factor for velocity Jacobianpublic int getForceSize()
getForceSize in interface ForceTargetComponentpublic void getForce(VectorNd minf, boolean staticOnly)
getForce in interface ForceTargetComponentpublic int addForcePosJacobian(SparseBlockMatrix J, double h, boolean staticOnly, int bi)
ForceTargetComponentfm = J u
addForcePosJacobian in interface ForceTargetComponentJ - force Jacobianh - current time stepstaticOnly - use only static forcesbi - block row index for the row to be addedpublic int addForceVelJacobian(SparseBlockMatrix J, double h, int bi)
addForceVelJacobian in interface ForceTargetComponentpublic int getJacobianType()
ForceEffectorMatrix.SYMMETRIC or Matrix.POSITIVE_DEFINITE. The former should be set if adding the Jacobian
terms preserves symmetry, and the latter should be set if positive
definiteness if preserved. Both should be set if there is no Jacobian for
this effector (i.e., the Jacobian methods are not implemented). Matrix
types from all the force effectors are logically and-ed together to
determine the type for the entire solve matrix.getJacobianType in interface ForceEffectorpublic boolean isDuplicatable()
true if and only if CopyableComponent.getCopyReferences(java.util.List<artisynth.core.modelbase.ModelComponent>, artisynth.core.modelbase.ModelComponent) returns true.
This method is not currently used. It is intended to provide a faster
way of determining if a component can be duplicated, without having to
use CopyableComponent.getCopyReferences(java.util.List<artisynth.core.modelbase.ModelComponent>, artisynth.core.modelbase.ModelComponent) to build the list of copy references.
isDuplicatable in interface CopyableComponenttrue if this component can be duplicated.public boolean getCopyReferences(java.util.List<ModelComponent> refs, ModelComponent ancestor)
true if and only if CopyableComponent.isDuplicatable() returns
true.getCopyReferences in interface CopyableComponentrefs - list to which references are appendedancestor - root node of the hierarchy from which references are to be excludedpublic ModelComponent copy(int flags, java.util.Map<ModelComponent,ModelComponent> copyMap)
CopyableComponentCOPY_REFERENCES
is set in flags, then any component referenced
by this component should itself be set to a copy. This
should be done first checking copyMap for an
existing copy of the referenced component. If there is no existing
copy, then a copy should be created by calling copy
recursively and adding the new copy to copyMap.copy in interface CopyableComponentcopy in class PointSpringBaseflags - flags to control the copyingcopyMap - map to possible existing instances of referenced
componentspublic void getHardReferences(java.util.List<ModelComponent> refs)
ModelComponentBasegetHardReferences in interface ModelComponentgetHardReferences in class ModelComponentBaserefs - list to which hard references are appended