artisynth.core.femmodels
Class PyramidElement

java.lang.Object
  extended by artisynth.core.modelbase.ModelComponentBase
      extended by artisynth.core.modelbase.RenderableComponentBase
          extended by artisynth.core.femmodels.FemElement
              extended by artisynth.core.femmodels.FemElement3d
                  extended by artisynth.core.femmodels.PyramidElement
All Implemented Interfaces:
CopyableComponent, ModelComponent, RenderableComponent, PropertyChangeListener, ScalableUnits, java.lang.Cloneable, Boundable, HasProperties, HierarchyNode, GLRenderable, GLSelectable, HasRenderProps, Renderable, Scannable

public class PyramidElement
extends FemElement3d


Nested Class Summary
 
Nested classes/interfaces inherited from interface artisynth.core.modelbase.ModelComponent
ModelComponent.NavpanelVisibility
 
Field Summary
 
Fields inherited from class artisynth.core.femmodels.FemElement3d
myProps
 
Fields inherited from class artisynth.core.modelbase.ModelComponentBase
enforceUniqueCompositeNames, enforceUniqueNames, myNumber, NULL_OBJ, useCompactPathNames
 
Fields inherited from interface artisynth.core.modelbase.CopyableComponent
COPY_REFERENCES
 
Fields inherited from interface maspack.render.GLRenderable
TRANSLUCENT, TWO_DIMENSIONAL
 
Constructor Summary
PyramidElement()
           
PyramidElement(FemNode3d[] nodes)
           
PyramidElement(FemNode3d n1, FemNode3d n2, FemNode3d n3, FemNode3d n4, FemNode3d n5)
          Creates a PyramidElement from five nodes.
 
Method Summary
 boolean coordsAreInside(Vector3d coords)
           
static PyramidElement[] createCubeTesselation(FemNode3d p0, FemNode3d p1, FemNode3d p2, FemNode3d p3, FemNode3d p4, FemNode3d p5, FemNode3d p6, FemNode3d p7, int apexNode)
          Create a tesselation for a cubic configuration of nodes, using a 3 pyramids.
 void getdNds(Vector3d dNds, int i, Vector3d coords)
           
 int[] getEdgeIndices()
           
 int[] getFaceIndices()
           
 double[] getIntegrationCoords()
           
 IntegrationPoint3d[] getIntegrationPoints()
           
 double getN(int i, Vector3d coords)
           
 double[] getNodalExtrapolationMatrix()
           
 double[] getNodeCoords()
           
 IntegrationPoint3d getWarpingPoint()
           
 boolean integrationPointsMapToNodes()
          Returns true if 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.
 int numIntegrationPoints()
           
 void renderWidget(GLRenderer renderer, double size, RenderProps props)
           
 
Methods inherited from class artisynth.core.femmodels.FemElement3d
addAuxiliaryMaterial, addNodeForce, addNodeForce0, addNodeForce0, addNodeStiffness, addNodeStiffness, clearState, computeCentroid, computeCovariance, computeDirectedRenderSize, computeGravityWeights, computePressures, computeRenderCoordsAndGradient, computeRestVolumes, computeVolumes, computeWarping, computeWarping, connectToHierarchy, copy, createElement, createElement, createIntegrationPoints, disconnectFromHierarchy, getAllPropertyInfo, getAuxiliaryMaterials, getCopyReferences, getElementWidgetSize, getElementWidgetSizeMode, getFrame, getH, getIncompressConstraints, getIncompressIndex, getIntegrationData, getMarkerCoordinates, getNaturalCoordinates, getNaturalCoordinatesRobust, getNodeCoords, getNodes, getNumEdges, getNumFaces, getPoint, getPressureWeightMatrix, getTriFaces, getWarpingData, hasEdge, hasFace, hasFace, invalidateRestData, isInvertedAtRest, materialsAreInvertible, numAuxiliaryMaterials, numPoints, numPressureVals, removeAuxiliaryMaterial, render, render, renderEdges, renderWidget, renderWidget, renderWidgetEdges, renderWidgetEdges, scaleDistance, setElementWidgetSize, setElementWidgetSizeMode, setFrame, setIncompressIndex, triangulateFace, updateBounds, updateWarpingStiffness
 
Methods inherited from class artisynth.core.femmodels.FemElement
containsNode, createRenderProps, getDensity, getDensityMode, getEffectiveMaterial, getHardReferences, getIndex, getLocalNodeIndex, getMass, getMaterial, getRestVolume, getSelection, getVolume, hasActiveNodes, hasControllableNodes, isDuplicatable, isInverted, numberString, numNodes, prerender, propertyChanged, scaleMass, setDensity, setDensityMode, setIndex, setInverted, setMass, setMaterial, updateNodeMasses
 
Methods inherited from class artisynth.core.modelbase.RenderableComponentBase
getRenderHints, getRenderProps, isSelectable, numSelectionQueriesNeeded, setRenderProps, updateRenderProps
 
Methods inherited from class artisynth.core.modelbase.ModelComponentBase
checkFlag, checkName, checkNameUniqueness, clearFlag, clone, createTempFlag, getChildren, getGrandParent, getName, getNameRange, getNavpanelVisibility, getNavpanelVisibility, getNumber, getParent, getProperty, getSoftReferences, hasChildren, hasState, isFixed, isMarked, isSelected, isWritable, makeValidName, makeValidName, notifyParentOfChange, postscan, printReferences, recursivelyContained, recursivelyContains, removeTempFlag, scan, setFixed, setFlag, setMarked, setName, setNavpanelVisibility, setNavpanelVisibility, setNumber, setParent, setSelected, updateReferences, write
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface artisynth.core.modelbase.ModelComponent
getName, getNavpanelVisibility, getNumber, getParent, getSoftReferences, hasState, isFixed, isMarked, isSelected, notifyParentOfChange, postscan, scan, setFixed, setMarked, setName, setNumber, setParent, setSelected, updateReferences
 
Methods inherited from interface maspack.properties.HasProperties
getProperty
 
Methods inherited from interface maspack.properties.HierarchyNode
getChildren, hasChildren
 
Methods inherited from interface maspack.util.Scannable
isWritable, write
 

Constructor Detail

PyramidElement

public PyramidElement()

PyramidElement

public PyramidElement(FemNode3d n1,
                      FemNode3d n2,
                      FemNode3d n3,
                      FemNode3d n4,
                      FemNode3d n5)
Creates a PyramidElement from five nodes. The first four nodes should describe the bottom face of the element, arranged clockwise about the outward-directed normal. The last node is the top node.


PyramidElement

public PyramidElement(FemNode3d[] nodes)
Method Detail

integrationPointsMapToNodes

public boolean integrationPointsMapToNodes()
Returns true if there is a one-to-one mapping between integration points and nodes. If so, this means that nodal values of quantities such as stress and volume can be adequately approximated by averaging the same quantities from all the associated integration points.

Overrides:
integrationPointsMapToNodes in class FemElement

getIntegrationPoints

public IntegrationPoint3d[] getIntegrationPoints()
Specified by:
getIntegrationPoints in class FemElement3d

getWarpingPoint

public IntegrationPoint3d getWarpingPoint()
Specified by:
getWarpingPoint in class FemElement3d

coordsAreInside

public boolean coordsAreInside(Vector3d coords)
Specified by:
coordsAreInside in class FemElement3d

numIntegrationPoints

public int numIntegrationPoints()
Specified by:
numIntegrationPoints in class FemElement3d

getIntegrationCoords

public double[] getIntegrationCoords()
Specified by:
getIntegrationCoords in class FemElement3d

getNodeCoords

public double[] getNodeCoords()
Specified by:
getNodeCoords in class FemElement3d

getNodalExtrapolationMatrix

public double[] getNodalExtrapolationMatrix()
Specified by:
getNodalExtrapolationMatrix in class FemElement3d

getN

public double getN(int i,
                   Vector3d coords)
Specified by:
getN in class FemElement3d

getdNds

public void getdNds(Vector3d dNds,
                    int i,
                    Vector3d coords)
Specified by:
getdNds in class FemElement3d

createCubeTesselation

public static PyramidElement[] createCubeTesselation(FemNode3d p0,
                                                     FemNode3d p1,
                                                     FemNode3d p2,
                                                     FemNode3d p3,
                                                     FemNode3d p4,
                                                     FemNode3d p5,
                                                     FemNode3d p6,
                                                     FemNode3d p7,
                                                     int apexNode)
Create a tesselation for a cubic configuration of nodes, using a 3 pyramids. The first four particles should define a single counter-clockwise face, while the last four should give the corresponding (clockwise) nodes for the opposite face. The parameter apexNode defines the node where all three pyramid top nodes meet. This corner will be opposite the one where all three quad faces meet.


renderWidget

public void renderWidget(GLRenderer renderer,
                         double size,
                         RenderProps props)
Overrides:
renderWidget in class FemElement3d

getEdgeIndices

public int[] getEdgeIndices()
Specified by:
getEdgeIndices in class FemElement3d

getFaceIndices

public int[] getFaceIndices()
Specified by:
getFaceIndices in class FemElement3d

isInside

public boolean isInside(Point3d pnt)
Description copied from class: FemElement3d
Tests whether or not a point is inside an element.

Overrides:
isInside in class FemElement3d
Parameters:
pnt - point to check if is inside
Returns:
true if point is inside the element