public class TetElement extends FemElement3d
FemElement.ElementClassModelComponent.FilePathSaveType, ModelComponent.NavpanelVisibilitymyPropssetScannedNodesInPostscan, writeNodeRefsByNumberenforceUniqueCompositeNames, enforceUniqueNames, myNumber, NULL_OBJ, useCompactPathNamesCOPY_REFERENCES, REST_POSITIONTRANSPARENT, TWO_DIMENSIONAL| Constructor and Description |
|---|
TetElement() |
TetElement(FemNode3d[] nodes)
Creates a new TetraHedral element from four nodes.
|
TetElement(FemNode3d p0,
FemNode3d p1,
FemNode3d p2,
FemNode3d p3)
Creates a new TetraHedral element from four nodes.
|
| Modifier and Type | Method and Description |
|---|---|
double |
computeAspectRatio()
Computes the aspect ratio for this tet, based on its rest position, as
defined by docs.salome-platform.org/latest/gui/SMESH/aspect_ratio_3d.html.
|
double |
computeRestVolumes()
Computes the rest volume associated with this element and stores the
result in the
myRestVolume field. |
static double |
computeVolume(FemNode3d[] nodes)
Computes the volume of the tetrahedron formed by the first four nodes of
nodes, where the first three nodes are arranged clockwise about a
single face, and clockwise is with respect to the face's outward normal. |
static double |
computeVolume(FemNode3d n0,
FemNode3d n1,
FemNode3d n2,
FemNode3d n3)
Computes the volume of the tetrahedron formed by four nodes.
|
static double |
computeVolume(Point3d p0,
Point3d p1,
Point3d p2,
Point3d p3) |
double |
computeVolumes()
Computes the volume associated with this element and stores the result in
the
myVolume field. |
boolean |
coordsAreInside(Vector3d coords)
Queries whether or not a set of natural coordinates are inside this
element.
|
void |
getAreaWeightedNormals(Vector3d[] anormals)
Compute the area-weighted normals for this tetrahedron.
|
double |
getConditionNum() |
void |
getdNds(Vector3d dNds,
int i,
Vector3d coords) |
int[] |
getEdgeIndices() |
int[] |
getFaceIndices() |
double |
getIncompDerivative(Vector3d tmp1,
Vector3d tmp2) |
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).
|
boolean |
getMarkerCoordinates(VectorNd coords,
Vector3d ncoords,
Point3d pos,
boolean checkInside) |
double |
getN(int i,
Vector3d coords) |
MatrixNd |
getNodalExtrapolationMatrix()
Returns the nodal extrapolation matrix for this element.
|
double[] |
getNodeCoords() |
double[] |
getNodeMassWeights() |
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) |
boolean |
isInside(Point3d pnt)
Tests whether or not a point is inside an element.
|
static boolean |
isInside(Point3d pnt,
Point3d p0,
Point3d p1,
Point3d p2,
Point3d p3) |
boolean |
isInverted()
Returns true if this element has been marked as inverted by the FEM code.
|
int |
numIntegrationPoints()
Returns the number of integration points actually used by this element
(not including the warping point, if any).
|
void |
render(Renderer renderer,
RenderProps props,
int flags) |
void |
renderWidget(Renderer renderer,
double size,
RenderProps props) |
void |
setNodes(FemNode3d p0,
FemNode3d p1,
FemNode3d p2,
FemNode3d p3)
Sets the nodes of a TetraHedral element.
|
computeJacobian, computeLocalPosition, copy, 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, getNaturalCoordinates, getNaturalCoordinates, getNaturalCoordinatesGSS, getNodalAveragingMatrix, 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, integrationPointsMapToNodes, invalidateMassIfNecessary, isDuplicatable, 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 TetElement()
public TetElement(FemNode3d p0, FemNode3d p1, FemNode3d p2, FemNode3d p3)
public TetElement(FemNode3d[] nodes)
public double[] getNodeMassWeights()
getNodeMassWeights in class FemElement3dBasepublic int[] getInverseNodeOrdering()
FemElement3dBasegetInverseNodeOrdering in class FemElement3dBasepublic 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 double getConditionNum()
public boolean isInverted()
FemElementisInverted in class FemElementpublic void setNodes(FemNode3d p0, FemNode3d p1, FemNode3d p2, FemNode3d p3)
public 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[] 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 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 double[] getNodeCoords()
getNodeCoords in class FemElement3dBasepublic int[] getEdgeIndices()
getEdgeIndices in class FemElement3dBasepublic int[] getFaceIndices()
getFaceIndices in class FemElement3dBasepublic int[] getTriangulatedFaceIndices()
getTriangulatedFaceIndices in class FemElement3dBasepublic void render(Renderer renderer, RenderProps props, int flags)
render in class FemElementpublic void renderWidget(Renderer renderer, double size, RenderProps props)
renderWidget in class FemElement3dBasepublic 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 FemElement3dpublic static double computeVolume(FemNode3d n0, FemNode3d n1, FemNode3d n2, FemNode3d n3)
computeVolume(FemNode3d[]) with the nodes broken out as
separate arguments.n0 - 1st FEM noden1 - 2nd FEM noden2 - 3rd FEM noden3 - 4th FEM nodepublic static double computeVolume(FemNode3d[] nodes)
nodes, where the first three nodes are arranged clockwise about a
single face, and clockwise is with respect to the face's outward normal.
This method can be used when creating TetElements to make sure that the
defining nodes are specified in the proper order. If they are not
specified in the correct order the volume will be negative.nodes - nodes defining the tetrahedronpublic 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 FemElement3dpublic void getAreaWeightedNormals(Vector3d[] anormals)
anormals - returns the area-weight normalspublic boolean getMarkerCoordinates(VectorNd coords, Vector3d ncoords, Point3d pos, boolean checkInside)
getMarkerCoordinates in class FemElement3dBasepublic boolean isInside(Point3d pnt)
FemElement3dBaseisInside in class FemElement3dBasepnt - point to check if is insidepublic static boolean isInside(Point3d pnt, Point3d p0, Point3d p1, Point3d p2, Point3d p3)
public double computeAspectRatio()