public abstract class FemElement3d extends FemElement3dBase
FemElement.ElementClass
ModelComponent.NavpanelVisibility
myProps
setScannedNodesInPostscan, writeNodeRefsByNumber
enforceUniqueCompositeNames, enforceUniqueNames, myNumber, NULL_OBJ, useCompactPathNames
COPY_REFERENCES, REST_POSITION
TRANSPARENT, TWO_DIMENSIONAL
Constructor and Description |
---|
FemElement3d() |
Modifier and Type | Method and Description |
---|---|
void |
computeJacobian(Matrix3d J,
Vector3d ncoords) |
void |
computeLocalPosition(Vector3d pnt,
Vector3d ncoords)
Compute position within element based on natural coordinates
|
double |
computeRestVolumes()
Computes the rest volume associated with this element and stores the
result in the
myRestVolume field. |
double |
computeVolumes()
Computes the volume associated with this element and stores the result in
the
myVolume field. |
FemElement3d |
copy(int flags,
java.util.Map<ModelComponent,ModelComponent> copyMap)
Create a copy of this component.
|
static FemElement3d |
createElement(FemNode3d[] nodes) |
static FemElement3d |
createElement(FemNode3d[] nodes,
boolean flipped) |
double |
getH(int i,
Vector3d coords)
Returns the value of the pressure shape function.
|
MatrixBlock[] |
getIncompressConstraints()
Returns an array of MatrixBlocks to be used as constraints to make the
element incompressible.
|
int |
getIncompressIndex() |
double[] |
getLagrangePressures()
Lagrange pressures array for use with incompressibility
|
Matrix |
getPressureWeightMatrix()
Returns the pressure weight matrix for this element.
|
double[] |
getRestVolumes()
Returns the partial rest volumes.
|
double[] |
getVolumes()
Returns the partial volumes.
|
int |
numPressureVals()
Returns the number of pressure variables associated with this element.
|
void |
scaleDistance(double s)
Scales all distance coordinates.
|
void |
setIncompressIndex(int idx) |
addConsistentGravity, addConsistentMass, advanceState, clearRotationData, computeConsistentMass, computeCovariance, computeDirectedRenderSize, computeGravityWeights, computeRenderCoordsAndGradient, connectToHierarchy, containsEdge, containsFace, containsFace, containsNode, coordsAreInside, createFrameAttachment, createIntegrationPoints, createPointAttachment, disconnectFromHierarchy, getAllIntegrationPoints, getAllPropertyInfo, getCopyReferences, getDeformation, getDeformation, getdNds, getEdgeIndices, getElementClass, getElementWidgetSize, getElementWidgetSizeMode, getFaceIndices, getFaces, getFemModel, getFrame, getIntegrationCoords, getIntegrationData, getIntegrationPoints, getIntegrationShapeMatrix, getInvB, getInvB, getMarkerCoordinates, getN, getNaturalCoordinates, getNaturalCoordinates, getNaturalCoordinatesGSS, getNodalAveragingMatrix, getNodalExtrapolationMatrix, getNodeCoords, getNodeCoords, getNodeMassWeights, getNodeNeighbors, getNodes, getNumFaces, getRotation, getRotation, getState, getStiffnessWarper, getTriangulatedFaceIndices, getWarpingData, getWarpingPoint, invalidateRestData, invalidateRotationData, isInside, isInvertedAtRest, notifyStateVersionChanged, numAllIntegrationPoints, numIntegrationPoints, renderWidget, requiresAdvance, setElementWidgetSize, setElementWidgetSizeMode, setFrame, setNodes, setState, setStiffnessWarper, triangulateFace
addAugmentingMaterial, 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, integrationPointsMapToNodes, invalidateMassIfNecessary, isDuplicatable, isInverted, isLinear, isMassExplicit, materialsAreInvertible, numAugmentingMaterials, numAuxiliaryMaterials, numberString, numNodes, numPoints, prerender, propertyChanged, removeAugmentingMaterial, removeAuxiliaryMaterial, render, render, scaleMass, setDensity, setDensityMode, setExplicitMass, setIndex, setInverted, setMass, setMaterial, setPlasticDeformation, unsetExplicitMass, updateBounds, updateRestVolumeAndMass
getRenderHints, getRenderProps, isSelectable, isVisible, numSelectionQueriesNeeded, setRenderProps, setVisible, updateRenderProps
checkFlag, 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, write
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getHardReferences, getName, getNavpanelVisibility, getNumber, getParent, getSoftReferences, hasState, isFixed, isMarked, isSelected, notifyParentOfChange, scan, setFixed, setMarked, setName, setNumber, setParent, setSelected, setWritable, updateReferences
getProperty
getChildren, hasChildren
postscan
isWritable, write
getAuxVarDerivative, getAuxVarState, numAuxVars, setAuxVarState
public double computeVolumes()
myVolume
field.
The method should return the minimum Jacobian determinant ratio (det(J)/det(J0)) over all integration points. A negative value indicates that the element is "inverted" at one or more integration points.
Partial volumes are also computed, and stored in the myVolumes
field. If the number of pressure values is 1, then there is only one
partial volume which is equal to the overall volume.
The base implementation of this method used quadrature.Individual elements can override this with a more efficient method if needed.
computeVolumes
in class FemElement
public double[] getVolumes()
public double computeRestVolumes()
myRestVolume
field.
The method should return the minimum Jacobian determinant (det(J0)) over all integration points. A negative value indicates that the element is "inverted" in its rest position at one or more integration points.
Partial rest volumes are also computed, and stored in the myRestVolumes
field. If the number of pressure values is 1, then there
is only one partial rest volume which is equal to the overall rest
volume.
The base implementation of this method used quadrature. Individual elements can override this with a more efficient method if needed.
computeRestVolumes
in class FemElement
public double[] getRestVolumes()
public int getIncompressIndex()
public void setIncompressIndex(int idx)
public int numPressureVals()
public double getH(int i, Vector3d coords)
i
- index of the pressure variable; should be less
than the value returned by numPressureVals()
coords
- coordinates at which the shape function should
be evaluated.public Matrix getPressureWeightMatrix()
By default, this method returns a pressure weight matrix for the case where there is only one pressure value. Such matrices always have a single value of 1. Elements with a larger number of pressure values should override this method to return a pressure weight matrix appropriate for that element.
public MatrixBlock[] getIncompressConstraints()
There is one block for each node, with each of size 3 x m, where m is
the number of pressure degrees-of-freedom (returned by
numPressureVals()
.
public void computeLocalPosition(Vector3d pnt, Vector3d ncoords)
computeLocalPosition
in class FemElement3dBase
pnt
- position within elementncoords
- natural coordinatespublic void computeJacobian(Matrix3d J, Vector3d ncoords)
computeJacobian
in class FemElement3dBase
public double[] getLagrangePressures()
public void scaleDistance(double s)
ScalableUnits
scaleDistance
in interface ScalableUnits
scaleDistance
in class FemElement
s
- scaling factorpublic FemElement3d 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 FemElement3dBase
flags
- flags to control the copyingcopyMap
- map to possible existing instances of referenced
componentspublic static FemElement3d createElement(FemNode3d[] nodes)
public static FemElement3d createElement(FemNode3d[] nodes, boolean flipped)