public abstract class DynamicAttachment extends ModelComponentBase
q_a = f (q_m)Differentiating means that the attached component velocity u_a is a linear function of the master velocities u_m:
u_a = -G (u_m)where G = -(d f)/(d q_m) is the "constraint matrix".
ModelComponent.NavpanelVisibility
enforceUniqueCompositeNames, enforceUniqueNames, myNumber, myProps, NULL_OBJ, useCompactPathNames
Constructor and Description |
---|
DynamicAttachment() |
Modifier and Type | Method and Description |
---|---|
void |
addAttachmentJacobian(SparseBlockMatrix S,
VectorNd f,
boolean[] reduced)
Reduces the system matrix to account for this attachment.
|
void |
addBackRefs()
Every master component should contain a back reference to each
attachment that references it.
|
abstract void |
addMassToMasters() |
void |
addSolveBlocks(SparseNumberedBlockMatrix S,
boolean[] reduced) |
abstract void |
applyForces() |
java.lang.Object |
clone() |
void |
connectToHierarchy()
Update the attachment position state whenever we connect to the parent
(i.e., plug in to the hierarchy).
|
static boolean |
containsLoop(DynamicAttachment a,
DynamicComponent slave,
java.util.HashMap<DynamicComponent,DynamicAttachment> map) |
static boolean |
containsLoops(java.util.List<DynamicAttachment> list) |
boolean |
containsMaster(DynamicComponent comp) |
DynamicAttachment |
copy(int flags,
java.util.Map<ModelComponent,ModelComponent> copyMap) |
static java.util.ArrayList<DynamicAttachment> |
createOrderedList(java.util.List<DynamicAttachment> list)
Orders a list of (possibly interdependent) attachments so that the
masters of any given attachment do not depend on any attachments further
along the list.
|
void |
disconnectFromHierarchy()
Update the attachment position state whenever we connect to the parent
(i.e., plug in to the hierarchy).
|
abstract boolean |
getDerivative(double[] buf,
int idx) |
void |
getHardReferences(java.util.List<ModelComponent> refs)
Appends all hard references for this component to a list.
|
abstract DynamicComponent[] |
getMasters() |
abstract DynamicComponent |
getSlave()
Returns the slave DynamicMechComponent associated with this attachment.
|
abstract int |
getSlaveSolveIndex()
Returns the block index within the system solve matrix of the
slave DynamicMechComponent associated with this attachment.
|
abstract void |
invalidateMasters() |
int |
numMasters() |
boolean |
oneMasterActive() |
void |
reduceConstraints(SparseBlockMatrix GT,
VectorNd dg)
Reduces a sparse column matrix (such as the transpose of a constraint
matrix) to account for this attachment.
|
void |
reduceMass(SparseBlockMatrix M,
VectorNd f) |
void |
reduceRowMatrix(SparseBlockMatrix G)
Reduces a sparse row matrix (such as a constraint
matrix) to account for this attachment.
|
void |
removeBackRefs()
Removes the back reference to this attachment's slave component
from each of the master component.
|
abstract void |
updateAttachment()
Update attachment to reflect changes in the slave state.
|
abstract void |
updatePosStates() |
abstract void |
updateVelStates() |
checkFlag, checkName, checkNameUniqueness, clearFlag, createTempFlag, getAllPropertyInfo, getChildren, getGrandParent, getName, getNameRange, getNavpanelVisibility, getNavpanelVisibility, getNumber, getParent, getProperty, getSoftReferences, hasChildren, hasState, isConnectedToHierarchy, isFixed, isMarked, isSelected, isWritable, makeValidName, makeValidName, notifyParentOfChange, postscan, printReferences, recursivelyContained, recursivelyContains, removeTempFlag, scan, setFixed, setFlag, setMarked, setName, setNavpanelVisibility, setNavpanelVisibility, setNumber, setParent, setSelected, updateReferences, write
public abstract DynamicComponent[] getMasters()
public int numMasters()
public abstract void invalidateMasters()
public boolean containsMaster(DynamicComponent comp)
public boolean oneMasterActive()
public void addBackRefs()
public void removeBackRefs()
public abstract DynamicComponent getSlave()
null
.public abstract int getSlaveSolveIndex()
getSlave()
),
this method returns -1.public abstract void updatePosStates()
public abstract void updateVelStates()
public abstract void updateAttachment()
public abstract void applyForces()
public void reduceConstraints(SparseBlockMatrix GT, VectorNd dg)
GT = P GTwhere
T [ I -Gka ] P = [ ] [ 0 0 ]and Gka is the constraint matrix for this attachment.
public void reduceRowMatrix(SparseBlockMatrix G)
T G = G Pwhere
T [ I -Gka ] P = [ ] [ 0 0 ]and Gka is the constraint matrix for this attachment.
At present, this method requires the matrix G to be vertically linked.
public abstract void addMassToMasters()
public void reduceMass(SparseBlockMatrix M, VectorNd f)
public void addSolveBlocks(SparseNumberedBlockMatrix S, boolean[] reduced)
public void addAttachmentJacobian(SparseBlockMatrix S, VectorNd f, boolean[] reduced)
T M = P M Pwhere
T [ I -Gka ] P = [ ] [ 0 0 ]and Gka is the constraint matrix for this attachment.
public abstract boolean getDerivative(double[] buf, int idx)
public static boolean containsLoops(java.util.List<DynamicAttachment> list)
public static boolean containsLoop(DynamicAttachment a, DynamicComponent slave, java.util.HashMap<DynamicComponent,DynamicAttachment> map)
public static java.util.ArrayList<DynamicAttachment> createOrderedList(java.util.List<DynamicAttachment> list)
public void getHardReferences(java.util.List<ModelComponent> refs)
ModelComponentBase
getHardReferences
in interface ModelComponent
getHardReferences
in class ModelComponentBase
refs
- list to which hard references are appendedpublic void connectToHierarchy()
connectToHierarchy
in interface ModelComponent
connectToHierarchy
in class ModelComponentBase
public void disconnectFromHierarchy()
disconnectFromHierarchy
in interface ModelComponent
disconnectFromHierarchy
in class ModelComponentBase
public java.lang.Object clone() throws java.lang.CloneNotSupportedException
clone
in class ModelComponentBase
java.lang.CloneNotSupportedException
public DynamicAttachment copy(int flags, java.util.Map<ModelComponent,ModelComponent> copyMap)
copy
in class ModelComponentBase