public class PointSkinAttachment extends PointAttachment implements ScalableUnits
The class maintains a list of Connection
objects for each
underlying dynamic component (such as a Frame
or
FemNode3d
) that has a weighted influence on the point's final
value.
Modifier and Type | Class and Description |
---|---|
class |
PointSkinAttachment.BaseConnection |
class |
PointSkinAttachment.Connection
Base class for connections associated with this attachment.
|
class |
PointSkinAttachment.FemDisplacementConnection |
class |
PointSkinAttachment.FrameConnection |
class |
PointSkinAttachment.ParticleConnection |
ModelComponent.NavpanelVisibility
enforceUniqueCompositeNames, enforceUniqueNames, myNumber, myProps, NULL_OBJ, useCompactPathNames
COPY_REFERENCES
Constructor and Description |
---|
PointSkinAttachment()
Creates an empty PointSkinAttachment.
|
PointSkinAttachment(SkinMeshBody skinMesh)
Creates an empty PointSkinAttachment to associated with a specific
skinMesh.
|
Modifier and Type | Method and Description |
---|---|
void |
addBaseConnection(double weight)
Adds a base point connection to this attachment.
|
void |
addFemDisplacementConnection(FemNode3d node,
double weight)
Adds a displacment-based FemNode connection to this attachment.
|
void |
addForce(Vector3d f) |
void |
addFrameConnection(SkinMeshBody.FrameInfo frameInfo,
double weight)
Adds a Frame connection to this attachment.
|
void |
addMassToMaster(MatrixBlock mblk,
MatrixBlock sblk,
int idx) |
void |
addMassToMasters() |
void |
addParticleConnection(Particle particle,
double weight)
Adds an arbitrary particle connection to this attachment.
|
void |
applyForces() |
void |
clearConnections()
Clear the connections used by this attachment.
|
PointSkinAttachment |
copy(int flags,
java.util.Map<ModelComponent,ModelComponent> copyMap)
Create a copy of this component.
|
void |
finalizeConnections()
Should be called after all connections have been added.
|
Point3d |
getBasePosition()
Gets the base position for this attachment.
|
PointSkinAttachment.Connection |
getConnection(int idx)
Gets a specific connection used by this attachent.
|
void |
getCurrentPos(Vector3d pos)
Returns the current position of the attached point, in world coordinates.
|
void |
getCurrentVel(Vector3d vel,
Vector3d dvel) |
boolean |
getDerivative(double[] buf,
int idx) |
DynamicComponent |
getMaster(int idx)
Returns the underlying master component for a connection used by this
attachment.
|
SkinMeshBody |
getSkinMesh()
Returns the SkinMeshBody associated with this attachment.
|
void |
getSoftReferences(java.util.List<ModelComponent> refs)
Appends all soft references for this component to a list.
|
double |
getWeight(int idx)
Returns the weight for a connection used by this attachment.
|
void |
mulSubG(MatrixBlock D,
MatrixBlock B,
int idx)
Computes
|
void |
mulSubGT(double[] ybuf,
int yoff,
double[] xbuf,
int xoff,
int idx)
Computes
|
void |
mulSubGT(MatrixBlock D,
MatrixBlock B,
int idx)
Computes
|
int |
numConnections()
Returns the number of connections (to master components) used by this
attachment.
|
void |
postscan(java.util.Deque<ScanToken> tokens,
CompositeComponent ancestor)
Performs any required post-scanning for this component.
|
void |
scaleBaseWeights(double s,
PointSkinAttachment.Connection[] connections) |
void |
scaleDistance(double s)
Scales all distance coordinates.
|
void |
scaleMass(double s)
Scales all mass units.
|
void |
setBasePosition(Vector3d pos)
Sets the base position for this attachment.
|
void |
setPoint(Point pnt) |
void |
setSkinMesh(SkinMeshBody skinMesh)
Sets the SkinMeshBody associated with this attachment.
|
void |
setWeight(int idx,
double w)
Sets the weight for a connection used by this attachment.
|
void |
trimToSize()
Minimizes the connection storage space.
|
void |
updateAttachment()
Update attachment to reflect changes in the slave state.
|
void |
updatePosStates() |
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.
|
void |
updateVelStates() |
void |
writeItems(java.io.PrintWriter pw,
NumberFormat fmt,
CompositeComponent ancestor) |
addTargetJacobian, getCopyReferences, getMasterBlocks, getMasters, getPoint, getSlave, getSlaveSolveIndex, invalidateMasters, isDuplicatable, numMasters
addAttachmentJacobian, addBackRefs, addSolveBlocks, clone, connectToHierarchy, containsLoop, containsLoops, containsMaster, createOrderedList, disconnectFromHierarchy, getHardReferences, oneMasterActive, reduceConstraints, reduceMass, reduceRowMatrix, removeBackRefs
checkFlag, checkName, checkNameUniqueness, clearFlag, createTempFlag, getAllPropertyInfo, getChildren, getGrandParent, getName, getNameRange, getNavpanelVisibility, getNavpanelVisibility, getNumber, getParent, getProperty, hasChildren, hasState, isConnectedToHierarchy, isFixed, isMarked, isSelected, isWritable, makeValidName, makeValidName, notifyParentOfChange, printReferences, recursivelyContained, recursivelyContains, removeTempFlag, scan, 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, scan, setFixed, setMarked, setName, setNumber, setParent, setSelected
getAllPropertyInfo, getProperty
getChildren, hasChildren
isWritable, write
public PointSkinAttachment()
public PointSkinAttachment(SkinMeshBody skinMesh)
public void setPoint(Point pnt)
public SkinMeshBody getSkinMesh()
public void setSkinMesh(SkinMeshBody skinMesh)
public Point3d getBasePosition()
public void setBasePosition(Vector3d pos)
public int numConnections()
public void clearConnections()
public PointSkinAttachment.Connection getConnection(int idx)
idx
- index of the connection. Must be in the range 0 to
numConnections()
.public double getWeight(int idx)
idx
- index of the connection. Must be in the range 0 to
numConnections()
.public void setWeight(int idx, double w)
idx
- index of the connection. Must be in the range 0 to
numConnections()
.public DynamicComponent getMaster(int idx)
null
is returned.idx
- index of the connection. Must be in the range 0 to
numConnections()
.public void addFrameConnection(SkinMeshBody.FrameInfo frameInfo, double weight)
SkinMeshBody.getFrameBlending()
).frameInfo
- FrameInfo structure within the associated SkinMeshBody.weight
- connection weight.public void addFemDisplacementConnection(FemNode3d node, double weight)
node
- FemNodeweight
- connection weight.public void addBaseConnection(double weight)
getBasePosition()
will be used to compute a
weighted contribution to the point value.weight
- connection weight.public void addParticleConnection(Particle particle, double weight)
particle
- particle associated with the attachment.weight
- connection weight.public void trimToSize()
public void finalizeConnections()
public void getCurrentPos(Vector3d pos)
PointAttachment
getCurrentPos
in class PointAttachment
pos
- used to return current point positionpublic void updatePosStates()
updatePosStates
in class DynamicAttachment
public void updateVelStates()
updateVelStates
in class DynamicAttachment
public void applyForces()
applyForces
in class PointAttachment
public void addForce(Vector3d f)
public void mulSubGT(MatrixBlock D, MatrixBlock B, int idx)
DynamicAttachment
T D -= G Bwhere D and B are matrices associated with master and slave components, respectively, and G is the constraint matrix for the attachment.
D
- dependent matrix associated with a master componentB
- matrix associated with a slave componentpublic void mulSubG(MatrixBlock D, MatrixBlock B, int idx)
DynamicAttachment
D -= B Gwhere D and B are matrices associated with master and slave components, respectively, and G is the constraint matrix for the attachment.
D
- dependent matrix associated with a master componentB
- matrix associated with a slave componentpublic void mulSubGT(double[] ybuf, int yoff, double[] xbuf, int xoff, int idx)
DynamicAttachment
T y -= G xwhere y and x are vectors associated with master and slave components, respectively, and G is the constraint matrix for the attachment.
ybuf
- buffer into which to store resultyoff
- offset into ybufxbuf
- buffer containing right hand side vectorxoff
- offset into xbufidx
- master component indexpublic void updateAttachment()
DynamicAttachment
updateAttachment
in class DynamicAttachment
public void addMassToMasters()
addMassToMasters
in class DynamicAttachment
public void addMassToMaster(MatrixBlock mblk, MatrixBlock sblk, int idx)
public void postscan(java.util.Deque<ScanToken> tokens, CompositeComponent ancestor) throws java.io.IOException
ModelComponent
scan()
method and stored in the token queue.
The most common use of this method is to resolve the paths
of component references, which may not have been created
at the time of the initial scan()
call.postscan
in interface ModelComponent
postscan
in class ModelComponentBase
tokens
- token information that was stored during
scan()
.ancestor
- ancestor component with respect to which
reference component paths are defined.java.io.IOException
- if an error is encountered (such as a reference to a
non-existent component)public void writeItems(java.io.PrintWriter pw, NumberFormat fmt, CompositeComponent ancestor) throws java.io.IOException
writeItems
in class PointAttachment
java.io.IOException
public boolean getDerivative(double[] buf, int idx)
getDerivative
in class DynamicAttachment
public void getSoftReferences(java.util.List<ModelComponent> refs)
ModelComponentBase
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 scaleDistance(double s)
ScalableUnits
scaleDistance
in interface ScalableUnits
s
- scaling factorpublic void scaleMass(double s)
ScalableUnits
scaleMass
in interface ScalableUnits
s
- scaling factorpublic PointSkinAttachment copy(int flags, java.util.Map<ModelComponent,ModelComponent> copyMap)
CopyableComponent
COPY_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 CopyableComponent
copy
in class PointAttachment
flags
- flags to control the copyingcopyMap
- map to possible existing instances of referenced
componentspublic void scaleBaseWeights(double s, PointSkinAttachment.Connection[] connections)
public 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.