dynLattice
Loading...
Searching...
No Matches
Public Member Functions | Static Public Attributes | Protected Attributes | List of all members
Line3D Class Reference

Shape function for 1D line elements in 3D space. More...

#include "Line3D.h"

Inheritance diagram for Line3D:
Inheritance graph
[legend]
Collaboration diagram for Line3D:
Collaboration graph
[legend]

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
 
idx_t nodeCount () const override
 
idx_t vertexCount () const override
 
idx_t ipointCount () const override
 
idx_t shapeFuncCount () const override
 
Matrix getVertexCoords () const override
 
Matrix getIntegrationScheme () const override
 
bool containsLocalPoint (const Vector &u) const override
 
void getIntegrationWeights (const Vector &w, const Matrix &c) const override
 Compute integration weights for numerical integration.
 
Matrix getVertexFunctions () const override
 
Matrix getShapeFunctions () const override
 
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 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 getRotationGradients (const Cubix &LambdaP, const Vector &w, const Cubix &Rn, const Matrix &c, const Matrix &theta) const
 Get the rotation gradients at the integration points from the rotations (Crisfield/Jelenic)
 
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
 

Detailed Description

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.

Supported Elements

Author
Til Gärtner
See also
Line Shapes

Constructor & Destructor Documentation

◆ Line3D()

Line3D::Line3D ( const String &  name,
const Properties &  conf,
const Properties &  props 
)
explicit
Parameters
[in]nameShape instance name for identification
[out]confConfiguration properties container for output
[in]propsInput properties containing shape parameters
Exceptions
jem::IllegalInputExceptionif unsupported number of nodes is specified

Member Function Documentation

◆ containsLocalPoint()

bool Line3D::containsLocalPoint ( const Vector &  u) const
inlineoverride

◆ evalShapeFunctions()

void Line3D::evalShapeFunctions ( const Vector &  h,
const Vector &  u 
) const
inlineoverride
Parameters
[out]hShape function values
[in]uLocal coordinates

◆ evalShapeGradGrads()

void Line3D::evalShapeGradGrads ( const Vector &  h,
const Vector &  g,
const Vector &  gg,
const Vector &  u 
) const
inline
Parameters
[out]hShape function values
[out]gShape function gradients
[out]ggShape function second derivatives
[in]uLocal coordinates

◆ evalShapeGradients()

void Line3D::evalShapeGradients ( const Vector &  h,
const Vector &  g,
const Vector &  u 
) const
inline
Parameters
[out]hShape function values
[out]gShape function gradients
[in]uLocal coordinates

◆ getGlobalPoint()

void Line3D::getGlobalPoint ( const Vector &  x,
const Vector &  u,
const Matrix &  c 
) const
override
Parameters
[out]xGlobal coordinates vector
[in]uLocal coordinates vector
[in]cNode coordinates matrix

◆ getIntegrationScheme()

Matrix Line3D::getIntegrationScheme ( ) const
inlineoverride

◆ getIntegrationWeights()

void Line3D::getIntegrationWeights ( const Vector &  w,
const Matrix &  c 
) const
override
Parameters
[out]wIntegration weights at quadrature points
[in]cNode coordinates matrix

◆ getPi() [1/2]

void Line3D::getPi ( const Cubix &  Pi,
const Cubix &  Ri,
const Cubix &  Rn 
) const
Parameters
[out]PiPi(.,.,i) where i are the integration points
[out]RiRi(.,.,i) rotation at the integration points
[in]Rnrotations at the nodes.

◆ getPi() [2/2]

void Line3D::getPi ( const Cubix &  Pi,
const Cubix &  Rn 
) const
Parameters
[out]PiPi(.,.,i) where i are the integration points
[in]Rnrotations at the nodes.

◆ getPsi()

void Line3D::getPsi ( const Quadix &  Psi,
const Vector &  w,
const Matrix &  c 
) const
Parameters
[out]PsiPsi(.,.,j,i) where j are the nodes and i are the integration points
[out]wweights of the integration points
[in]ccoordinates of the nodes, c(i,j) is the i-th coordinate of the j-th node

◆ getRotationGradients() [1/2]

void Line3D::getRotationGradients ( const Cubix &  LambdaP,
const Vector &  w,
const Cubix &  Rn,
const Matrix &  c,
const Matrix &  theta 
) const
Parameters
[out]LambdaPcurvature at the integration points
[out]wintegration weights
[in]Rninitial rotations at the integration points. Rn(.,.,i) initial rotation at the integration points
[in]ccoordinates of the nodes, c(i,j) is the i-th coordinate of the j-th node
[in]thetarotation at the nodes. theta(.,i) rotational displacement at the nodes

◆ getRotationGradients() [2/2]

void Line3D::getRotationGradients ( const Cubix &  LambdaP,
const Vector &  w,
const Matrix &  c,
const Cubix &  nodeLambda 
) const
Parameters
[out]LambdaPcurvature at the integration points
[out]wintegration weights
[in]ccoordinates of the nodes, c(i,j) is the i-th coordinate of the j-th node
[in]nodeLambdarotation at the nodes.

◆ getRotations()

void Line3D::getRotations ( const Cubix &  Ri,
const Cubix &  Rn 
) const
Parameters
[out]RiRi(.,.,i) rotational matrix at the integration points
[in]Rnrotation at the nodes. Rn(.,i) rotational displacement at the nodes

◆ getShapeFunctions()

Matrix Line3D::getShapeFunctions ( ) const
inlineoverride

◆ getShapeGradients()

void Line3D::getShapeGradients ( const Matrix &  g,
const Vector &  w,
const Matrix &  c 
) const
Parameters
[out]ggradient of the shape functions at the integration points g(i,j) i-th shape function at the j-th int point
[out]wweights of the integration points
[in]ccoordinates of the nodes, c(i,j) is the i-th coordinate of the j-th node

◆ getVertexCoords()

Matrix Line3D::getVertexCoords ( ) const
inlineoverride

◆ getVertexFunctions()

Matrix Line3D::getVertexFunctions ( ) const
inlineoverride

◆ getXi()

void Line3D::getXi ( const Quadix &  Xi,
const Vector &  w,
const Matrix &  u,
const Matrix &  c 
) const
Parameters
[out]XiXi(.,.,j,i) where j are the nodes and i are the integration points
[out]wweights of the integration points
[in]udisplacements of the nodes, c(i,j) is the i-th displacement of the j-th node
[in]ccoordinates of the nodes, c(i,j) is the i-th coordinate of the j-th node

◆ globalRank()

idx_t Line3D::globalRank ( ) const
inlineoverride
Returns
Global rank (always 3 for 3D space)

◆ ipointCount()

idx_t Line3D::ipointCount ( ) const
inlineoverride

◆ localRank()

idx_t Line3D::localRank ( ) const
inlineoverride

◆ nodeCount()

idx_t Line3D::nodeCount ( ) const
inlineoverride

◆ shapeFuncCount()

idx_t Line3D::shapeFuncCount ( ) const
inlineoverride

◆ vertexCount()

idx_t Line3D::vertexCount ( ) const
inlineoverride

Member Data Documentation

◆ GLOB_RANK

const idx_t Line3D::GLOB_RANK = 3
static

◆ intLine_

jem::Ref<ParametricLine> Line3D::intLine_
protected

◆ PROP_INT

const String Line3D::PROP_INT = "intScheme"
static

◆ PROP_LOCAL

const String Line3D::PROP_LOCAL
static

◆ PROP_NODES

const String Line3D::PROP_NODES = "numPoints"
static