public abstract class FemElement3d extends FemElement3dBase
FemElement.ElementClassModelComponent.FilePathSaveType, ModelComponent.NavpanelVisibilitymyPropssetScannedNodesInPostscan, writeNodeRefsByNumberenforceUniqueCompositeNames, enforceUniqueNames, myNumber, NULL_OBJ, useCompactPathNamesCOPY_REFERENCES, REST_POSITIONTRANSPARENT, 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, getInverseNodeOrdering, 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, 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, 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, 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 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 FemElementpublic 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 FemElementpublic 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 FemElement3dBasepnt - position within elementncoords - natural coordinatespublic void computeJacobian(Matrix3d J, Vector3d ncoords)
computeJacobian in class FemElement3dBasepublic double[] getLagrangePressures()
public void scaleDistance(double s)
ScalableUnitsscaleDistance in interface ScalableUnitsscaleDistance in class FemElements - scaling factorpublic FemElement3d 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 FemElement3dBaseflags - 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)