|
dynLattice
|
Shape function for 1D line elements in 3D space. More...
#include "Line3D.h"


Public Member Functions | |
| Line3D (const String &name, const Properties &conf, const Properties &props) | |
| Constructs a new Line3D shape object. | |
| idx_t | globalRank () const override |
| Get the global rank (spatial dimension). | |
| idx_t | localRank () const override |
| Get the local rank of the line element. | |
| idx_t | nodeCount () const override |
| Get the number of nodes in the line element. | |
| idx_t | vertexCount () const override |
| Get the number of vertices in the line element. | |
| idx_t | ipointCount () const override |
| Get the number of integration points. | |
| idx_t | shapeFuncCount () const override |
| Get the number of shape functions. | |
| Matrix | getVertexCoords () const override |
| Get the local coordinates of the vertices. | |
| Matrix | getIntegrationScheme () const override |
| Get the integration scheme. | |
| bool | containsLocalPoint (const Vector &u) const override |
| Check whether a local point is inside the element. | |
| void | getIntegrationWeights (const Vector &w, const Matrix &c) const override |
| Compute integration weights for numerical integration. | |
| Matrix | getVertexFunctions () const override |
| Get shape function values at the integration points. | |
| Matrix | getShapeFunctions () const override |
| Get shape function values at the integration points. | |
| void | getGlobalPoint (const Vector &x, const Vector &u, const Matrix &c) const override |
| Transform local coordinates to global coordinates. | |
| void | getShapeGradients (const Matrix &g, const Vector &w, const Matrix &c) const |
| get the gradients of the shape functions at the integration points | |
| void | getRotations (const Cubix &Ri, const Cubix &Rn) const |
| return the rotations at the integration points | |
| void | getXi (const Quadix &Xi, const Vector &w, const Matrix &u, const Matrix &c) const |
| Get the Xi at the integration points. | |
| void | getXi (const Quadix &Xi, const Matrix &grads, const Matrix &phiP) const |
| Xi from precomputed shape gradients and tangent (allocation free) | |
| void | getPsi (const Quadix &Psi, const Vector &w, const Matrix &c) const |
| Get the Psi at the integration points. | |
| void | getPi (const Cubix &Pi, const Cubix &Ri, const Cubix &Rn) const |
| Get the Pi at the integration points. | |
| void | getPi (const Cubix &Pi, const Cubix &Rn) const |
| Get the Pi at the integration points. | |
| void | getRotationGradients (const Cubix &LambdaP, const Vector &w, const Matrix &c, const Cubix &nodeLambda) const |
| Get the rotation gradients at the integration points from the rotations (Crisfield/Jelenic) | |
| void | getRotationsAndGradients (const Cubix &Ri, const Cubix &LambdaP, const Matrix &grads, const Cubix &nodeLambda) const |
| Get the rotations and the rotation gradients at the integration points using one evaluation of the node rotation vectors. | |
| void | evalShapeFunctions (const Vector &h, const Vector &u) const override |
| Evaluate shape functions at given local coordinates. | |
| void | evalShapeGradients (const Vector &h, const Vector &g, const Vector &u) const |
| Evaluate shape functions and their gradients at local coordinates. | |
| void | evalShapeGradGrads (const Vector &h, const Vector &g, const Vector &gg, const Vector &u) const |
| Evaluate shape functions, gradients, and second derivatives. | |
Static Public Attributes | |
| static const String | PROP_NODES = "numPoints" |
| Property name for number of nodes. | |
| static const String | PROP_INT = "intScheme" |
| Property name for integration scheme. | |
| static const String | PROP_LOCAL |
| Property name for local coordinates. | |
| static const idx_t | GLOB_RANK = 3 |
| Global rank (always 3 for 3D space) | |
Protected Attributes | |
| jem::Ref< ParametricLine > | intLine_ |
| internal line element for some standard functions | |
| Matrix | nodePsi_ |
| relative rotation vectors of the nodes, 3 x nodeCount | |
| Matrix | lambdaR_ |
| reference rotation, 3 x 3 | |
| Matrix | ipPsi_ |
| rotation vectors at the integration points, 3 x ipointCount | |
| MatmulChain< double, 2 > | matmul_ |
| matrix products without allocations | |
| Matrix | relRot_ |
| relative rotation, 3 x 3 | |
| Matrix | skewP_ |
| skew symmetric matrix of the tangent, 3 x 3 | |
| Vector | phiIJ_ |
| relative rotation vector between the reference nodes | |
Memo of the last getShapeGradients() call | |
The gradients only depend on the node coordinates, and the same coordinates are requested several times in a row (strains, Xi, rotation gradients of one element). A hit needs bit-identical coordinates, so the results are exactly those of a fresh evaluation. Not thread safe. | |
| bool | gradMemoValid_ = false |
| Matrix | gradMemoCoords_ |
| Matrix | gradMemoGrads_ |
| Vector | gradMemoWeights_ |
Provides shape functions and geometric operations for line elements embedded in 3D space. Supports 2, 3, and 4-node line elements with configurable integration schemes and rotational control functions.
|
explicit |
| [in] | name | Shape instance name for identification |
| [out] | conf | Configuration properties container for output |
| [in] | props | Input properties containing shape parameters |
| jem::IllegalInputException | if unsupported number of nodes is specified |
|
inlineoverride |
| [in] | u | Local coordinate vector |
|
inlineoverride |
| [out] | h | Shape function value vector |
| [in] | u | Local coordinate vector |
|
inline |
| [out] | h | Shape function value vector |
| [out] | g | Shape function gradient vector |
| [out] | gg | Shape function second derivative vector |
| [in] | u | Local coordinate vector |
|
inline |
| [out] | h | Shape function value vector |
| [out] | g | Shape function gradient vector |
| [in] | u | Local coordinate vector |
|
override |
| [out] | x | Global coordinate vector |
| [in] | u | Local coordinate vector |
| [in] | c | Coordinates of the nodes, c(i,j) is the i-th coordinate of the j-th node |
|
inlineoverride |
|
override |
| [out] | w | Integration weights at the integration points |
| [in] | c | Node coordinates matrix, c(i,j) is the i-th coordinate of the j-th node |
| void Line3D::getPi | ( | const Cubix & | Pi, |
| const Cubix & | Ri, | ||
| const Cubix & | Rn | ||
| ) | const |
| [out] | Pi | 6 x 6 Pi(.,.,i) where i are the integration points |
| [out] | Ri | 3 x 3 Ri(.,.,i) rotation at the i-th integration point |
| [in] | Rn | nodal rotations, Rn(.,.,i) is the 3 x 3 rotation matrix at the i-th node |
| void Line3D::getPi | ( | const Cubix & | Pi, |
| const Cubix & | Rn | ||
| ) | const |
| [out] | Pi | 6 x 6 Pi(.,.,i) where i are the integration points |
| [in] | Rn | nodal rotations, Rn(.,.,i) is the 3 x 3 rotation matrix at the i-th node |
| void Line3D::getPsi | ( | const Quadix & | Psi, |
| const Vector & | w, | ||
| const Matrix & | c | ||
| ) | const |
| [out] | Psi | 6 x 9 Psi(.,.,j,i), where j are the nodes and i are the integration points |
| [out] | w | weights of the integration points |
| [in] | c | coordinates of the nodes, c(i,j) is the i-th coordinate of the j-th node |
| void Line3D::getRotationGradients | ( | const Cubix & | LambdaP, |
| const Vector & | w, | ||
| const Matrix & | c, | ||
| const Cubix & | nodeLambda | ||
| ) | const |
| [out] | LambdaP | 3 x 3 curvature at the integration points, LambdaP(.,.,i) is the gradient at the i-th point |
| [out] | w | integration weights |
| [in] | c | coordinates of the nodes, c(i,j) is the i-th coordinate of the j-th node |
| [in] | nodeLambda | nodal rotations, nodeLambda(.,.,i) is the 3 x 3 rotation matrix at the i-th node |
| void Line3D::getRotations | ( | const Cubix & | Ri, |
| const Cubix & | Rn | ||
| ) | const |
| [out] | Ri | 3 x 3 Ri(.,.,i) rotational matrix at the i-th integration point |
| [in] | Rn | nodal rotations, Rn(.,.,i) is the 3 x 3 rotation matrix at the i-th node |
| void Line3D::getRotationsAndGradients | ( | const Cubix & | Ri, |
| const Cubix & | LambdaP, | ||
| const Matrix & | grads, | ||
| const Cubix & | nodeLambda | ||
| ) | const |
| [out] | Ri | 3 x 3 Ri(.,.,i) rotation at the i-th integration point (Pi = diag(Ri, Ri), see getPi) |
| [out] | LambdaP | 3 x 3 curvature at the integration points, LambdaP(.,.,i) is the gradient at the i-th point |
| [in] | grads | shape gradients, shapeFuncCount x ipointCount (see getShapeGradients) |
| [in] | nodeLambda | nodal rotations, nodeLambda(.,.,i) is the 3 x 3 rotation matrix at the i-th node |
|
inlineoverride |
| void Line3D::getShapeGradients | ( | const Matrix & | g, |
| const Vector & | w, | ||
| const Matrix & | c | ||
| ) | const |
| [out] | g | gradient of the shape functions at the integration points g(i,j) i-th shape function at the j-th int point |
| [out] | w | weights of the integration points |
| [in] | c | coordinates of the nodes, c(i,j) is the i-th coordinate of the j-th node |
|
inlineoverride |
|
inlineoverride |
Get the vertex shape function values at the integration points.
| void Line3D::getXi | ( | const Quadix & | Xi, |
| const Matrix & | grads, | ||
| const Matrix & | phiP | ||
| ) | const |
| [out] | Xi | Xi matrices, 6 x 6 x nodeCount x ipointCount |
| [in] | grads | Shape gradients, shapeFuncCount x ipointCount |
| [in] | phiP | Tangent of the deformed line at the integration points, 3 x ipointCount |
| void Line3D::getXi | ( | const Quadix & | Xi, |
| const Vector & | w, | ||
| const Matrix & | u, | ||
| const Matrix & | c | ||
| ) | const |
| [out] | Xi | 6 x 6 Xi(.,.,j,i), where j are the nodes and i are the integration points |
| [out] | w | weights of the integration points |
| [in] | u | displacements of the nodes, u(i,j) is the i-th displacement of the j-th node |
| [in] | c | coordinates of the nodes, c(i,j) is the i-th coordinate of the j-th node |
|
inlineoverride |
|
inlineoverride |
|
inlineoverride |
|
inlineoverride |
|
inlineoverride |
|
inlineoverride |
|
static |
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |
|
protected |
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |
|
static |
|
static |
|
static |
|
mutableprotected |
|
mutableprotected |