10#include <jem/util/Properties.h>
11#include <jive/Array.h>
12#include <jive/geom/ParametricLine.h>
13#include <jive/geom/Shape.h>
14#include <jive/geom/StdShape.h>
18using jem::util::Properties;
22using jive::geom::ParametricLine;
23using jive::geom::Shape;
57 explicit Line3D(
const String &name,
58 const Properties &conf,
59 const Properties &props);
84 const Matrix &c)
const override;
99 const Matrix &c)
const override;
109 const Matrix &c)
const;
117 const Cubix &Rn)
const;
127 void getXi(
const Quadix &Xi,
130 const Matrix &c)
const;
139 void getPsi(
const Quadix &Psi,
141 const Matrix &c)
const;
149 void getPi(
const Cubix &Pi,
151 const Cubix &Rn)
const;
159 void getPi(
const Cubix &Pi,
160 const Cubix &Rn)
const;
173 const Cubix &nodeLambda)
const;
188 const Matrix &theta)
const;
199 const Vector &u)
const override;
209 const Vector &u)
const;
221 const Vector &u)
const;
230 void getRefRot_(
const Matrix Lambda_r,
231 const Cubix Rn)
const;
240 void getNodeRotVecs_(
const Matrix psi,
241 const Matrix Lambda_r,
242 const Cubix Rn)
const;
288 return intLine_->getIntegrationScheme();
293 return intLine_->containsLocalPoint(u);
298 return intLine_->getVertexFunctions();
302 const Vector &u)
const
304 JEM_ASSERT2(u.size() ==
localRank(),
"internal coordinates do not match the rank");
310 const Vector &u)
const
312 JEM_ASSERT2(u.size() ==
localRank(),
"internal coordinates do not match the rank");
313 Matrix g_dummy(1, g.size());
314 intLine_->getSShape()->evalShapeGradients(h, g_dummy, u);
321 const Vector &u)
const
323 JEM_ASSERT2(u.size() ==
localRank(),
"internal coordinates do not match the rank");
324 Matrix g_dummy(1, g.size());
325 Matrix gg_dummy(1, gg.size());
326 intLine_->getSShape()->evalShapeGradGrads(h, g_dummy, gg_dummy, u);
328 gg = gg_dummy(0, ALL);
333 return intLine_->getShapeFunctions();
Shape function for 1D line elements in 3D space.
Definition Line3D.h:42
idx_t shapeFuncCount() const override
Definition Line3D.h:276
idx_t globalRank() const override
Get the global rank (spatial dimension).
Definition Line3D.h:251
Matrix getVertexCoords() const override
Definition Line3D.h:281
void getPi(const Cubix &Pi, const Cubix &Ri, const Cubix &Rn) const
Get the Pi at the integration points.
Definition Line3D.cpp:202
void evalShapeFunctions(const Vector &h, const Vector &u) const override
Evaluate shape functions at given local coordinates.
Definition Line3D.h:301
void getXi(const Quadix &Xi, const Vector &w, const Matrix &u, const Matrix &c) const
Get the Xi at the integration points.
Definition Line3D.cpp:141
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)
Definition Line3D.cpp:216
Matrix getVertexFunctions() const override
Definition Line3D.h:296
static const String PROP_INT
Property name for integration scheme.
Definition Line3D.h:45
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 getShapeGradients(const Matrix &g, const Vector &w, const Matrix &c) const
get the gradients of the shape functions at the integration points
Definition Line3D.cpp:102
static const String PROP_LOCAL
Property name for local coordinates.
Definition Line3D.h:46
bool containsLocalPoint(const Vector &u) const override
Definition Line3D.h:291
idx_t localRank() const override
Definition Line3D.h:256
idx_t nodeCount() const override
Definition Line3D.h:261
Matrix getIntegrationScheme() const override
Definition Line3D.h:286
void getIntegrationWeights(const Vector &w, const Matrix &c) const override
Compute integration weights for numerical integration.
Definition Line3D.cpp:91
void getPsi(const Quadix &Psi, const Vector &w, const Matrix &c) const
Get the Psi at the integration points.
Definition Line3D.cpp:164
Matrix getShapeFunctions() const override
Definition Line3D.h:331
void evalShapeGradients(const Vector &h, const Vector &g, const Vector &u) const
Evaluate shape functions and their gradients at local coordinates.
Definition Line3D.h:308
void getRotations(const Cubix &Ri, const Cubix &Rn) const
return the rotations at the integration points
Definition Line3D.cpp:117
void getGlobalPoint(const Vector &x, const Vector &u, const Matrix &c) const override
Transform local coordinates to global coordinates.
Definition Line3D.cpp:81
static const String PROP_NODES
Property name for number of nodes.
Definition Line3D.h:44
jem::Ref< ParametricLine > intLine_
internal line element for some standard functions
Definition Line3D.h:245
idx_t vertexCount() const override
Definition Line3D.h:266
static const idx_t GLOB_RANK
Global rank (always 3 for 3D space)
Definition Line3D.h:47
idx_t ipointCount() const override
Definition Line3D.h:271
void evalShapeGradGrads(const Vector &h, const Vector &g, const Vector &gg, const Vector &u) const
Evaluate shape functions, gradients, and second derivatives.
Definition Line3D.h:318
file containing some basic helper functions
Array< double, 4 > Quadix
Definition helpers.h:48