public class PointFem3dAttachment extends PointAttachment
ModelComponent.NavpanelVisibility
useNewConnect
enforceUniqueCompositeNames, enforceUniqueNames, myNumber, myProps, NULL_OBJ, useCompactPathNames
COPY_REFERENCES
Constructor and Description |
---|
PointFem3dAttachment() |
PointFem3dAttachment(Point pnt) |
PointFem3dAttachment(Point pnt,
FemModel3d fem) |
PointFem3dAttachment(Point pnt,
FemNode[] nodes,
double[] coords) |
Modifier and Type | Method and Description |
---|---|
void |
addMassToMasters() |
int |
addTargetJacobian(SparseBlockMatrix J,
int bi) |
void |
applyForces() |
void |
computeNodeCoordinates() |
PointFem3dAttachment |
copy(int flags,
java.util.Map<ModelComponent,ModelComponent> copyMap)
Create a copy of this component.
|
static PointFem3dAttachment |
create(Point pnt,
FemElement3dBase elem,
Point3d loc,
double reduceTol)
Create an attachment that connects a point to a FemElement
within a specified element.
|
double |
getCoordinate(int idx) |
VectorNd |
getCoordinates() |
void |
getCurrentPos(Vector3d pos)
Returns the current position of the attached point, in world coordinates.
|
void |
getCurrentVel(Vector3d vel) |
boolean |
getDerivative(double[] buf,
int idx) |
FemElement |
getElement() |
MatrixBlock |
getGT(int idx)
Returns the transpose of the constraint matrix G associated
with the idx-th master component.
|
void |
getHardReferences(java.util.List<ModelComponent> refs)
Appends all hard references for this component to a list.
|
FemNode[] |
getNodes() |
void |
getRestPosition(Point3d pos) |
void |
mulSubGT(double[] ybuf,
int yoff,
double[] xbuf,
int xoff,
int idx)
Computes
|
void |
mulSubGTM(MatrixBlock D,
MatrixBlock M,
int idx)
Computes
|
void |
mulSubMG(MatrixBlock D,
MatrixBlock M,
int idx)
Computes
|
boolean |
setFromElement(Point3d pos,
FemElement elem) |
boolean |
setFromElement(Point3d pos,
FemElement elem,
double reduceTol) |
void |
setFromFem(Point3d pos,
FemModel3d fem) |
boolean |
setFromFem(Point3d pos,
FemModel3d fem,
boolean project) |
void |
setFromNodes(java.util.Collection<? extends FemNode> nodes,
VectorNd weights) |
void |
setFromNodes(FemNode[] nodes,
double[] weights) |
boolean |
setFromNodes(Point3d pos,
java.util.Collection<? extends FemNode> nodes) |
boolean |
setFromNodes(Point3d pos,
FemNode[] nodes) |
void |
updateAttachment()
Update attachment to reflect changes in the slave state.
|
void |
updatePosStates() |
void |
updateVelStates() |
void |
writeItems(java.io.PrintWriter pw,
NumberFormat fmt,
CompositeComponent ancestor) |
getCopyReferences, getMasters, getPoint, getSlave, invalidateMasters, isDuplicatable, numMasters
addBackRefs, addBackRefs, addBackRefsIfConnected, addNewlyConnectedBackRefs, clone, connectToHierarchy, disconnectFromHierarchy, oneMasterActive, removeBackRefs, removeBackRefs, removeBackRefsIfConnected, removeNewlyDisconnectedBackRefs, setSlaveAffectsStiffness, slaveAffectsStiffness
checkFlag, checkName, checkNameUniqueness, clearFlag, createTempFlag, getAllPropertyInfo, getChildren, getGrandParent, getName, getNameRange, getNavpanelVisibility, getNavpanelVisibility, getNumber, getParent, getProperty, getSoftReferences, hasChildren, hasState, isFixed, isMarked, isScanning, isSelected, isWritable, makeValidName, makeValidName, notifyParentOfChange, postscan, printReferences, recursivelyContained, recursivelyContains, removeTempFlag, scan, setFixed, setFlag, setMarked, setName, setNavpanelVisibility, setNavpanelVisibility, setNumber, setParent, setScanning, setSelected, updateReferences, write
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
connectToHierarchy, disconnectFromHierarchy, getName, getNavpanelVisibility, getNumber, getParent, getSoftReferences, hasState, isFixed, isMarked, isSelected, notifyParentOfChange, scan, setFixed, setMarked, setName, setNumber, setParent, setSelected, updateReferences
getAllPropertyInfo, getProperty
getChildren, hasChildren
postscan
isWritable, write
public PointFem3dAttachment()
public PointFem3dAttachment(Point pnt)
public PointFem3dAttachment(Point pnt, FemModel3d fem)
public FemElement getElement()
public void setFromNodes(java.util.Collection<? extends FemNode> nodes, VectorNd weights)
public boolean setFromNodes(Point3d pos, java.util.Collection<? extends FemNode> nodes)
public void setFromNodes(FemNode[] nodes, double[] weights)
public boolean setFromElement(Point3d pos, FemElement elem)
public boolean setFromElement(Point3d pos, FemElement elem, double reduceTol)
public void setFromFem(Point3d pos, FemModel3d fem)
public boolean setFromFem(Point3d pos, FemModel3d fem, boolean project)
public VectorNd getCoordinates()
public double getCoordinate(int idx)
public void updatePosStates()
updatePosStates
in interface DynamicAttachment
updatePosStates
in class DynamicAttachmentBase
public void getCurrentPos(Vector3d pos)
PointAttachment
getCurrentPos
in class PointAttachment
pos
- used to return current point positionpublic void getCurrentVel(Vector3d vel)
public void updateVelStates()
updateVelStates
in interface DynamicAttachment
updateVelStates
in class DynamicAttachmentBase
public void updateAttachment()
updateAttachment
in interface DynamicAttachment
updateAttachment
in class DynamicAttachmentBase
public void applyForces()
applyForces
in interface DynamicAttachment
applyForces
in class PointAttachment
public void getRestPosition(Point3d pos)
public void mulSubGTM(MatrixBlock D, MatrixBlock M, int idx)
DynamicAttachmentBase
T D -= G Mwhere D and M are matrices associated with master and slave components, respectively, and G is the constraint matrix for the attachment.
mulSubGTM
in interface DynamicAttachment
mulSubGTM
in class DynamicAttachmentBase
D
- dependent matrix associated with a master componentM
- matrix associated with a slave componentpublic void mulSubMG(MatrixBlock D, MatrixBlock M, int idx)
DynamicAttachmentBase
D -= M Gwhere D and M are matrices associated with master and slave components, respectively, and G is the constraint matrix for the attachment.
mulSubMG
in interface DynamicAttachment
mulSubMG
in class DynamicAttachmentBase
D
- dependent matrix associated with a master componentM
- matrix associated with a slave componentpublic MatrixBlock getGT(int idx)
DynamicAttachmentBase
getGT
in interface DynamicAttachment
getGT
in class DynamicAttachmentBase
idx
- index of the master componentpublic void mulSubGT(double[] ybuf, int yoff, double[] xbuf, int xoff, int idx)
DynamicAttachmentBase
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.
mulSubGT
in interface DynamicAttachment
mulSubGT
in class DynamicAttachmentBase
ybuf
- buffer into which to store resultyoff
- offset into ybufxbuf
- buffer containing right hand side vectorxoff
- offset into xbufidx
- master component indexpublic void writeItems(java.io.PrintWriter pw, NumberFormat fmt, CompositeComponent ancestor) throws java.io.IOException
writeItems
in class PointAttachment
java.io.IOException
public int addTargetJacobian(SparseBlockMatrix J, int bi)
addTargetJacobian
in class PointAttachment
public void computeNodeCoordinates()
public static PointFem3dAttachment create(Point pnt, FemElement3dBase elem, Point3d loc, double reduceTol)
pnt
- Point to be attachedelem
- FemElement3d to attach the point toloc
- point location with respect to the element. If null
,
will be assumed to be pnt.getPosition().reduceTol
- try to reduce the number of attached nodes by
removing those whose coordinate values are less then this number.
A value of zero ensures no reduction. If reduction is desired,
a value around 1e-5 is reasonable.public void addMassToMasters()
addMassToMasters
in interface DynamicAttachment
addMassToMasters
in class DynamicAttachmentBase
public boolean getDerivative(double[] buf, int idx)
getDerivative
in interface DynamicAttachment
getDerivative
in class DynamicAttachmentBase
public FemNode[] getNodes()
public void getHardReferences(java.util.List<ModelComponent> refs)
ModelComponentBase
getHardReferences
in interface ModelComponent
getHardReferences
in class DynamicAttachmentBase
refs
- list to which hard references are appendedpublic PointFem3dAttachment 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 DynamicAttachmentComp
copy
in interface CopyableComponent
copy
in class PointAttachment
flags
- flags to control the copyingcopyMap
- map to possible existing instances of referenced
components