# Element::Hex8¶

Element definition to numerically interpolate and integrate.

Note

This function evaluates the shape function gradients upon construction, they are not recomputed upon evaluation. To evaluate them with respect to updated coordinates (e.g. to do updated Lagrange), use “.update_x(…)” to update the nodal coordinates and re-evaluate the shape function gradients and integration volumes.

Note

By default integration is done using Gauss points. To use a different scheme one has to supply the position (in isoparametric coordinates) and weight of the integration points (their number is inferred from the input).

Note

Most functions take the output as the last input-argument, as to write directly to a pre-allocated array, avoiding their re-allocation. All these functions have a wrapper that does the allocation for you (and thus returns the output rather than taking it as input). All function of this kind are indicated here with a *

Update the nodal coordinates (elemvec: [nelem, nne, ndim]).

Number of elements.

Number of nodes per element.

Number of dimensions.

Number of integration points.

(Current) Shape function gradient (w.r.t. real coordinates): [nelem, nip, nne, ndim]

(Current) Volume of each integration point (qscalar: [nelem, nip]). An overload is available to get the same result as a tensor per integration point (qtensor: [nelem, nip, tdim, tdim]) with all tensor-components having the same value.

Implementation of or in index notation Implementation of or in index notation Implementation of Implementation of Note that the output is an “elemmat”, which has shape [nelem, nne*ndim, nne*ndim]. This implies that all dimensions are the same.

Implementation of: or in index notation Implementation of: or in index notation Note that the output is an “elemmat”, which has shape [nelem, nne*ndim, nne*ndim].

## Element::Hex8::Gauss¶

Integration points according to exact integration using Gauss points.

### Element::Hex8::Gauss::nip()¶

Returns the number of integration points.

### Element::Hex8::Gauss::xi()¶

Returns the position of the integration points in isoparametric coordinates [nip, ndim] (with ndim = 3).

### Element::Hex8::Gauss::w()¶

Returns the weights of the integration points [nip].

## Element::Hex8::Nodal¶

Integration points that coincide with the nodes (equally weight). This scheme can for example be used to obtain a diagonal mass matrix.

### Element::Hex8::Nodal::nip()¶

Returns the number of integration points.

### Element::Hex8::Nodal::xi()¶

Returns the position of the integration points in isoparametric coordinates [nip, ndim] (with ndim = 3).

### Element::Hex8::Nodal::w()¶

Returns the weights of the integration points [nip].