public class HexElement extends FemElement3d
FemElement.ElementClassModelComponent.FilePathSaveType, ModelComponent.NavpanelVisibility| Modifier and Type | Field and Description |
|---|---|
static double[] |
INTEGRATION_COORDS_GAUSS_27 |
static double[] |
INTEGRATION_COORDS_GAUSS_64 |
static double[] |
INTEGRATION_COORDS_GAUSS_8 |
static double[] |
INTEGRATION_COORDS_LOBATTO_27 |
static double[] |
INTEGRATION_COORDS_LOBATTO_64 |
static double[] |
INTEGRATION_COORDS_LOBATTO_8 |
static MatrixNd |
NODAL_EXTRAPOLATION_27 |
static MatrixNd |
NODAL_EXTRAPOLATION_64 |
static MatrixNd |
NODAL_EXTRAPOLATION_8 |
myPropssetScannedNodesInPostscan, writeNodeRefsByNumberenforceUniqueCompositeNames, enforceUniqueNames, myNumber, NULL_OBJ, useCompactPathNamesCOPY_REFERENCES, REST_POSITIONTRANSPARENT, TWO_DIMENSIONAL| Constructor and Description |
|---|
HexElement() |
HexElement(FemNode3d[] nodes) |
HexElement(FemNode3d n0,
FemNode3d n1,
FemNode3d n2,
FemNode3d n3,
FemNode3d n4,
FemNode3d n5,
FemNode3d n6,
FemNode3d n7)
Creates a HexElement from eight nodes.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addTetElement(TetElement e) |
void |
clearTetElements() |
static double |
computeVolume(FemNode3d[] nodes)
Computes the volume of the hexahedron formed by the first eight nodes of
nodes. |
static double |
computeVolume(FemNode3d n0,
FemNode3d n1,
FemNode3d n2,
FemNode3d n3,
FemNode3d n4,
FemNode3d n5,
FemNode3d n6,
FemNode3d n7)
Computes the volume of a hexahedron formed by eight nodes.
|
boolean |
coordsAreInside(Vector3d coords)
Queries whether or not a set of natural coordinates are inside this
element.
|
HexElement |
copy(int flags,
java.util.Map<ModelComponent,ModelComponent> copyMap)
Create a copy of this component.
|
static double[] |
createHexIntegrationCoords(double[] locs,
double[] wgts)
Computes hexahedral integration coordinates using a tensor product
of the supplied 1D quadrature rule.
|
IntegrationPoint3d[] |
getDefaultIntegrationPoints() |
void |
getdNds(Vector3d dNds,
int i,
Vector3d coords) |
int[] |
getEdgeIndices() |
int[] |
getFaceIndices() |
HexElement[] |
getFaceNeighbors() |
double[] |
getIntegrationCoords()
Returns the natural coordinates and weights for the default integration
points associated with this element.
|
IntegrationPoint3d[] |
getIntegrationPoints()
Returns the integration points associated with this element, not
including the warping point (see
FemElement3dBase.getWarpingPoint()). |
int[] |
getInverseNodeOrdering()
Returns a node index reordering that inverts the element volume ( or
flips its orientation for shell elements).
|
double |
getN(int i,
Vector3d coords) |
MatrixNd |
getNodalAveragingMatrix()
Returns the nodal averaging matrix for this element, used for
extrapolating values from the integration points to the element nodes for
purposes of computing average nodal values.
|
MatrixNd |
getNodalExtrapolationMatrix()
Returns the nodal extrapolation matrix for this element.
|
double[] |
getNodeCoords() |
double[] |
getNodeMassWeights() |
int |
getParity() |
FaceNodes3d[] |
getQuadFaces() |
TetElement |
getTetElement(int i) |
int[] |
getTriangulatedFaceIndices() |
IntegrationPoint3d |
getWarpingPoint()
Returns the special warping integration point which is located at
the center of the element and is used for computing stiffness warping and
other specialized applications.
|
boolean |
hasEdge(FemNode3d n0,
FemNode3d n1) |
boolean |
hasFace(FemNode3d n0,
FemNode3d n1,
FemNode3d n2,
FemNode3d n3) |
boolean |
integrationPointsMapToNodes()
Queries whether there is a one-to-one mapping between integration points
and nodes.
|
boolean |
isInside(Point3d pnt)
Tests whether or not a point is inside an element.
|
static boolean |
mapICoordsToNodes(double[] coords) |
static boolean |
mapIPointsToNodes(IntegrationPoint3d[] ipnts,
MatrixNd nodalInterp,
FemNode3d[] nodes) |
int |
numIntegrationPoints()
Returns the number of integration points actually used by this element
(not including the warping point, if any).
|
int |
numTetElements() |
boolean |
removeTetElement(TetElement e) |
void |
render(Renderer renderer,
RenderProps props,
int flags) |
void |
renderWidget(Renderer renderer,
double size,
RenderProps props) |
void |
setFaceNeighbors(HexElement[] nbrs) |
void |
setIntegrationPoints(IntegrationPoint3d[] ipnts,
MatrixNd nodalExtrapMat) |
void |
setIntegrationPoints(IntegrationPoint3d[] ipnts,
MatrixNd nodalExtrapMat,
boolean mapToNodes) |
int |
setNeighborParities()
Rescursively sets the partities of a nodes neighbors, starting with this
element, so as to try and obtain conforming tesselation.
|
static void |
setNodalAveragingMatrix(MatrixNd NX) |
static void |
setParities(java.util.List<HexElement> hexes) |
void |
setParity(int parity) |
TetElement[] |
tesselate(int parity) |
computeJacobian, computeLocalPosition, computeRestVolumes, computeVolumes, createElement, createElement, getH, getIncompressConstraints, getIncompressIndex, getLagrangePressures, getPressureWeightMatrix, getRestVolumes, getVolumes, numPressureVals, scaleDistance, setIncompressIndexaddConsistentGravity, addConsistentMass, advanceState, clearRotationData, computeConsistentMass, computeCovariance, computeDirectedRenderSize, computeGravityWeights, computeRenderCoordsAndGradient, connectToHierarchy, containsEdge, containsFace, containsFace, containsNode, createFrameAttachment, createIntegrationPoints, createPointAttachment, disconnectFromHierarchy, getAllIntegrationPoints, getAllPropertyInfo, getCopyReferences, getDeformation, getDeformation, getElementClass, getElementWidgetSize, getElementWidgetSizeMode, getFaces, getFemModel, getFrame, getIntegrationData, getIntegrationShapeMatrix, getInvB, getInvB, getMarkerCoordinates, getNaturalCoordinates, getNaturalCoordinates, getNaturalCoordinatesGSS, getNodeCoords, getNodeNeighbors, getNodes, getNumFaces, getRotation, getRotation, getState, getStiffnessWarper, getWarpingData, invalidateRestData, invalidateRotationData, isInvertedAtRest, notifyStateVersionChanged, numAllIntegrationPoints, requiresAdvance, setElementWidgetSize, setElementWidgetSizeMode, setFrame, setNodes, setState, setStiffnessWarper, triangulateFaceaddAugmentingMaterial, addAuxiliaryMaterial, computeCentroid, containsNode, createRenderProps, defaultRenderPropsAreNull, getAugmentingMaterials, getAuxiliaryMaterials, getDensity, getDensityMode, getEffectiveMaterial, getHardReferences, getIndex, getLocalNodeIndex, getMass, getMaterial, getPlasticDeformation, getPoint, getRestVolume, getSelection, getStateVersion, getStrainEnergy, getVolume, hasActiveNodes, hasControllableNodes, hasState, integrationPointsInterpolateToNodes, invalidateMassIfNecessary, isDuplicatable, isInverted, isLinear, isMassExplicit, materialsAreInvertible, numAugmentingMaterials, numAuxiliaryMaterials, numberString, numNodes, numPoints, prerender, propertyChanged, removeAugmentingMaterial, removeAuxiliaryMaterial, render, scaleMass, setDensity, setDensityMode, setExplicitMass, setIndex, setInverted, setMass, setMaterial, setPlasticDeformation, unsetExplicitMass, updateBounds, updateRestVolumeAndMassgetRenderHints, getRenderProps, isSelectable, isVisible, numSelectionQueriesNeeded, setRenderProps, setVisible, updateRenderPropscheckFlag, checkName, checkNameUniqueness, clearFlag, clone, createTempFlag, 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, updateReferences, writeequals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetHardReferences, getName, getNavpanelVisibility, getNumber, getParent, getSoftReferences, hasState, isFixed, isMarked, isSelected, notifyParentOfChange, scan, setFixed, setMarked, setName, setNumber, setParent, setSelected, setWritable, updateReferencesgetPropertygetChildren, hasChildrenpostscanisWritable, writegetAuxVarDerivative, getAuxVarState, numAuxVars, setAuxVarStatepublic static final double[] INTEGRATION_COORDS_GAUSS_8
public static final double[] INTEGRATION_COORDS_GAUSS_27
public static final double[] INTEGRATION_COORDS_GAUSS_64
public static final double[] INTEGRATION_COORDS_LOBATTO_8
public static final double[] INTEGRATION_COORDS_LOBATTO_27
public static final double[] INTEGRATION_COORDS_LOBATTO_64
public static final MatrixNd NODAL_EXTRAPOLATION_8
public static final MatrixNd NODAL_EXTRAPOLATION_27
public static final MatrixNd NODAL_EXTRAPOLATION_64
public HexElement()
public HexElement(FemNode3d n0, FemNode3d n1, FemNode3d n2, FemNode3d n3, FemNode3d n4, FemNode3d n5, FemNode3d n6, FemNode3d n7)
public HexElement(FemNode3d[] nodes)
public boolean integrationPointsMapToNodes()
integrationPointsMapToNodes in class FemElementtrue if there is a one-to-one mapping between
integration points and nodespublic IntegrationPoint3d[] getDefaultIntegrationPoints()
public void setIntegrationPoints(IntegrationPoint3d[] ipnts, MatrixNd nodalExtrapMat)
public void setIntegrationPoints(IntegrationPoint3d[] ipnts, MatrixNd nodalExtrapMat, boolean mapToNodes)
public IntegrationPoint3d[] getIntegrationPoints()
FemElement3dBaseFemElement3dBase.getWarpingPoint()). In
some cases, such as with membrane elements, only the first n
points of these points are actaully used, where n is the number
returned by FemElement3dBase.numIntegrationPoints().getIntegrationPoints in class FemElement3dBasepublic IntegrationPoint3d getWarpingPoint()
FemElement3dBasegetWarpingPoint in class FemElement3dBasepublic boolean coordsAreInside(Vector3d coords)
FemElement3dBasecoordsAreInside in class FemElement3dBasetrue if ncoords are inside this element.public int numIntegrationPoints()
FemElement3dBaseFemElement3dBase.getIntegrationPoints(), but in some cases (such as shell elements being
used as membrane elements), it will be less.numIntegrationPoints in class FemElement3dBasepublic double[] getNodeMassWeights()
getNodeMassWeights in class FemElement3dBasepublic int[] getInverseNodeOrdering()
FemElement3dBasegetInverseNodeOrdering in class FemElement3dBasepublic double[] getIntegrationCoords()
FemElement3dBase4*num, where num is the number of
coordinates, and the information for each coordinate consists of a
4-tuple giving the three natural coordinates followed by the weight.getIntegrationCoords in class FemElement3dBasepublic double[] getNodeCoords()
getNodeCoords in class FemElement3dBasepublic static void setNodalAveragingMatrix(MatrixNd NX)
public MatrixNd getNodalAveragingMatrix()
FemElement3dBaseFemElement3dBase.getNodalExtrapolationMatrix().
However, since the purpose of this matrix is for computing nodal
averages, simpler matrices can sometimes be used, such as an identity or
permutation matrix that assigns the value at each node to that of a
specific integration point. Element subclasses may override this method
to supply such simplified matrices.getNodalAveragingMatrix in class FemElement3dBasepublic MatrixNd getNodalExtrapolationMatrix()
FemElement3dBaseFemElement3dBase.getIntegrationShapeMatrix().getNodalExtrapolationMatrix in class FemElement3dBasepublic double getN(int i,
Vector3d coords)
getN in class FemElement3dBasepublic void getdNds(Vector3d dNds, int i, Vector3d coords)
getdNds in class FemElement3dBasepublic int[] getEdgeIndices()
getEdgeIndices in class FemElement3dBasepublic int[] getFaceIndices()
getFaceIndices in class FemElement3dBasepublic int[] getTriangulatedFaceIndices()
getTriangulatedFaceIndices in class FemElement3dBasepublic int getParity()
public void setParity(int parity)
public void setFaceNeighbors(HexElement[] nbrs)
public HexElement[] getFaceNeighbors()
public void addTetElement(TetElement e)
public boolean removeTetElement(TetElement e)
public void clearTetElements()
public int numTetElements()
public TetElement getTetElement(int i)
public TetElement[] tesselate(int parity)
public void render(Renderer renderer, RenderProps props, int flags)
render in class FemElementpublic void renderWidget(Renderer renderer, double size, RenderProps props)
renderWidget in class FemElement3dBasepublic static double computeVolume(FemNode3d[] nodes)
nodes. An inverted hexahedron will give an negative volume.nodes - nodes defining the hexahedronpublic static double computeVolume(FemNode3d n0, FemNode3d n1, FemNode3d n2, FemNode3d n3, FemNode3d n4, FemNode3d n5, FemNode3d n6, FemNode3d n7)
n0 - first hex noden1 - second hex noden2 - third hex noden3 - fourth hex noden4 - fifth hex noden5 - sixth hex noden6 - seventh hex noden7 - eighth hex nodepublic boolean isInside(Point3d pnt)
isInside in class FemElement3dBasepnt - point to check if is insidepublic FaceNodes3d[] getQuadFaces()
public int setNeighborParities()
public static void setParities(java.util.List<HexElement> hexes)
public HexElement 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 FemElement3dflags - flags to control the copyingcopyMap - map to possible existing instances of referenced
componentspublic static double[] createHexIntegrationCoords(double[] locs,
double[] wgts)
locs - 1D locations in [-1 1]wgts - associated weightspublic static boolean mapIPointsToNodes(IntegrationPoint3d[] ipnts, MatrixNd nodalInterp, FemNode3d[] nodes)
public static boolean mapICoordsToNodes(double[] coords)