Cellelements

CellElements are a mixture of classical finite elements and cells of the MPM: They work (and deform) like Elements, but the quadrature points are material points (MaterialPointBase). To this end, they provide an interface to get the number and locations of the material points, and the material point type, following a specific quadrature rule and order.

class edelweissmeshfree.cellelements.base.cellelement.CellElementBase(cellElType, cellElNumber, nodes, quadratureType, quadratureOrder)[source]

MPM cells in EdelweissMPM should be derived from this base class in order to follow the general interface.

EdelweissMPM expects the layout of the internal and external load vectors, P, PExt, (and the stiffness) to be of the form

[ node 1 - dofs field 1,
  node 1 - dofs field 2,
  node 1 - ... ,
  node 1 - dofs field n,
  node 2 - dofs field 1,
  ... ,
  node N - dofs field n].
Parameters:
  • cellType – A string identifying the requested element formulation.

  • cellNumber – A unique integer label used for all kinds of purposes.

  • nodes (list[Node]) – The list of Nodes assigned to this cell.

  • cellElType (str)

  • cellElNumber (int)

  • quadratureType (str)

  • quadratureOrder (int)

Attributes:
assignedMaterialPoints

The shape of the element in Ensight Gold notation.

cellNumber

The unique number of this cell

dofIndicesPermutation

The permutation pattern for the residual vector and the stiffness matrix to aggregate all entries in order to resemble the defined fields nodewise.

ensightType

The shape of the element in Ensight Gold notation.

fields

The list of fields per grid nodes.

nDof

The total number of degrees of freedom this cell has

nMaterialPoints

The unique number of this cell

nNodes

The list of nodes this cell holds

Methods

acceptLastState()

Accept the last state of the CellElement.

assignMaterialPoints(materialPoints)

Assign a list of material points which are currently residing within the cell.

computeBodyLoad(loadType, load, P, K, ...)

Compute bulk loads (body loads) for given time based for all assigned MaterialPoints.

computeDistributedLoad(loadType, surfaceID, ...)

Compute distributed (surface) a for given time based for a specific assigned material point.

computeMaterialPointKernels(dU, P, K, ...)

Evaluate the kernel residual and stiffness for given time based for all assigned MaterialPoints.

getBoundingBox()

Get the bounding box min.

getCoordinatesAtCenter()

Compute the underlying MarmotElement centroid coordinates.

getInterpolationVector(coordinate)

Get the interpolation vector for a given global coordinate.

getRequestedMaterialPointCoordinates()

Get the list of the requested material point coordinates.

getRequestedMaterialPointType()

Get the type of the requested material point.

getRequestedMaterialPointVolumes()

Get the list of the requested material point volumes.

getVIJContributionSize()

Return the number of entries this entity contributes to the VIJ (COO) system matrix.

initializeVIJContribution(idcs, I_, J_, offset)

Fill the global I and J index arrays for this constraint's VIJ contribution.

interpolateSolutionContributionToMaterialPoints(dU)

Interpolate field solutions to the assigned MaterialPoints.

isCoordinateInCell(coordinate)

Check if a given coordinate is located within this cell.

abstractmethod acceptLastState()[source]

Accept the last state of the CellElement.

This method is called after a time step has been accepted.

abstractmethod getRequestedMaterialPointCoordinates()[source]

Get the list of the requested material point coordinates.

Returns:

The material point coordinates.

Return type:

np.ndarray

abstractmethod getRequestedMaterialPointType()[source]

Get the type of the requested material point.

Returns:

The material point type.

Return type:

type

abstractmethod getRequestedMaterialPointVolumes()[source]

Get the list of the requested material point volumes.

Returns:

The material point volumes.

Return type:

np.ndarray

abstract property nMaterialPoints: int

The unique number of this cell

MarmotCellElement class

class edelweissmeshfree.cellelements.marmotcellelement.marmotcellelement.MarmotCellElementWrapper

This cell as a wrapper for MarmotCellElements. This class is not intended to be used directly, but to be subclassed by the actual cell element classes, such as LagrangianMarkerCellElement.

For the documentation of MarmotCellElements, please refer to Marmot.

Parameters:
  • cellElementType – The Marmot element which should be represented, e.g., CPE4.

  • cellElementNumber – The (unique) label of this CellElement.

  • nodes – The list of nodes for this CellElement.

  • quadratureType – The type of quadrature to be used.

  • quadratureOrder – The order of the quadrature to be used.

Attributes:
assignedMaterialPoints
cellNumber
cellType
dofIndicesPermutation
elNumber
ensightType
fields
nDof
nMaterialPoints
nNodes
nodes

Methods

computeMaterialPointKernels(dUc, Pc, Kc, ...)

Evaluate residual and stiffness for given time, field, and field increment.

getRequestedMaterialPointCoordinates()

Get the coordinates of the material points in the cell.

getRequestedMaterialPointType()

Get the type of the material points in the cell.

getRequestedMaterialPointVolumes()

Get the volumes of the material points in the cell.

getVIJContributionSize()

Return the number of entries this entity contributes to the VIJ (COO) system matrix.

initializeVIJContribution(idcs, I_, J_, offset)

Initialize the I and J arrays for the VIJ (COO) system matrix assembly.

acceptLastState

assignMaterialPoints

computeBodyLoad

computeConsistentInertia

computeDistributedLoad

computeLumpedInertia

getBoundingBox

getInterpolationVector

interpolateFieldsToMaterialPoints

isCoordinateInCell

getRequestedMaterialPointCoordinates()

Get the coordinates of the material points in the cell.

getRequestedMaterialPointType()

Get the type of the material points in the cell.

getRequestedMaterialPointVolumes()

Get the volumes of the material points in the cell.

LagrangianMarmotCellElement class

class edelweissmeshfree.cellelements.marmotcellelement.lagrangianmarmotcellelement.LagrangianMarmotCellElementWrapper

This class is a wrapper for Lagrangian MarmotCellElements. It is used to create a MarmotCellElement from a list of nodes and to store the nodes of the cell element. It also provides a method to update the material points of the cell element.

Attributes:
assignedMaterialPoints
cellNumber
cellType
dofIndicesPermutation
elNumber
ensightType
fields
nDof
nMaterialPoints
nNodes
nodes

Methods

computeMaterialPointKernels(dUc, Pc, Kc, ...)

Evaluate residual and stiffness for given time, field, and field increment.

getRequestedMaterialPointCoordinates()

Get the coordinates of the material points in the cell.

getRequestedMaterialPointType()

Get the type of the material points in the cell.

getRequestedMaterialPointVolumes()

Get the volumes of the material points in the cell.

getVIJContributionSize()

Return the number of entries this entity contributes to the VIJ (COO) system matrix.

initializeVIJContribution(idcs, I_, J_, offset)

Initialize the I and J arrays for the VIJ (COO) system matrix assembly.

acceptLastState

assignMaterialPoints

computeBodyLoad

computeConsistentInertia

computeDistributedLoad

computeLumpedInertia

getBoundingBox

getInterpolationVector

interpolateFieldsToMaterialPoints

isCoordinateInCell