KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
Public Types | Static Public Member Functions | List of all members
Kratos::EICR Class Reference

EICR Element Independent CoRotational formulation. More...

#include <EICR.hpp>

Collaboration diagram for Kratos::EICR:

Public Types

typedef double RealType
 
typedef BoundedMatrix< RealType, 3, 3 > TransformationMatrixType
 
typedef array_1d< RealType, 3 > Vector3Type
 
typedef std::vector< Vector3TypeVector3ContainerType
 
typedef Vector VectorType
 
typedef Matrix MatrixType
 
typedef Quaternion< RealTypeQuaternionType
 
typedef SolidMechanicsMathUtilities< doubleMathUtilsType
 
typedef double RealType
 
typedef BoundedMatrix< RealType, 3, 3 > BoundedMatrixType3x3
 
typedef array_1d< RealType, 3 > Vector3Type
 
typedef std::vector< Vector3TypeVector3ContainerType
 
typedef Vector VectorType
 
typedef Matrix MatrixType
 
typedef std::size_t SizeType
 

Static Public Member Functions

template<class TVec , class TMat >
static void Spin (const TVec &V, TMat &S)
 
template<class TVec , class TMat >
static void Spin_AtRow (const TVec &V, TMat &S, size_t row_index)
 
template<class TVec , class TMat >
static void Spin_AtRow (const TVec &V, TMat &S, size_t vector_index, size_t matrix_row_index)
 
template<class TVec , class TMat >
static void Spin (const TVec &V, TMat &S, double mult)
 
template<class TVec , class TMat >
static void Spin_AtRow (const TVec &V, TMat &S, double mult, size_t row_index)
 
template<class TVec , class TMat >
static void Spin_AtRow (const TVec &V, TMat &S, double mult, size_t vector_index, size_t matrix_row_index)
 
static MatrixType Compute_Pt (size_t num_nodes)
 
static MatrixType Compute_S (const Vector3ContainerType &nodes)
 
static MatrixType Compute_H (const VectorType &displacements)
 
static MatrixType Compute_L (const VectorType &displacements, const VectorType &forces, const MatrixType &H)
 
template<class TVec , class TMat >
static void Spin (const TVec &rV, TMat &rS)
 
template<class TVec , class TMat >
static void Spin_AtRow (const TVec &rV, TMat &rS, const SizeType RowIndex)
 
template<class TVec , class TMat >
static void Spin_AtRow (const TVec &rV, TMat &rS, const SizeType VectorIndex, const SizeType MatrixRowIndex)
 
template<class TVec , class TMat >
static void Spin (const TVec &rV, TMat &rS, double Multiplier)
 
template<class TVec , class TMat >
static void Spin_AtRow (const TVec &rV, TMat &rS, const double Multiplier, const SizeType RowIndex)
 
template<class TVec , class TMat >
static void Spin_AtRow (const TVec &rV, TMat &rS, const double Multiplier, const SizeType VectorIndex, const SizeType MatrixRowIndex)
 
static MatrixType Compute_Pt (const SizeType NumNodes)
 
static MatrixType Compute_S (const Vector3ContainerType &rNodes)
 
static MatrixType Compute_H (const VectorType &rDisplacements)
 
static MatrixType Compute_L (const VectorType &rDisplacements, const VectorType &rForces, const MatrixType &rH)
 

Detailed Description

EICR Element Independent CoRotational formulation.

E.I.C.R. is a utility class containing static methods related to the Element Independent Corotational Formulation. This class implements methods that do not depend on the element type, and so they can be used by any implementation of a corotational coordinate transformation.

Member Typedef Documentation

◆ BoundedMatrixType3x3

◆ MathUtilsType

◆ MatrixType [1/2]

◆ MatrixType [2/2]

◆ QuaternionType

◆ RealType [1/2]

◆ RealType [2/2]

◆ SizeType

typedef std::size_t Kratos::EICR::SizeType

◆ TransformationMatrixType

◆ Vector3ContainerType [1/2]

◆ Vector3ContainerType [2/2]

◆ Vector3Type [1/2]

◆ Vector3Type [2/2]

◆ VectorType [1/2]

◆ VectorType [2/2]

Member Function Documentation

◆ Compute_H() [1/2]

static MatrixType Kratos::EICR::Compute_H ( const VectorType displacements)
inlinestatic

Computes the Axial Vector Jacobian. The output is a square matrix of size displacements.size() (which is num_nodes * 6). Note that 6 Degrees Of Freedom are assumed for each node.

Parameters
displacementsthe vector of nodal displacements and rotations in the local corotational coordinate system. (assumed size = num_nodes*6)
Returns
the H matrix

◆ Compute_H() [2/2]

static MatrixType Kratos::EICR::Compute_H ( const VectorType rDisplacements)
inlinestatic

Computes the Axial Vector Jacobian. The output is a square matrix of size rDisplacements.size() (which is num_nodes * 6). Note that 6 Degrees Of Freedom are assumed for each node.

Parameters
rDisplacementsthe vector of nodal displacements and rotations in the local corotational coordinate system. (assumed size = num_nodes*6)
Returns
the H matrix

◆ Compute_L() [1/2]

static MatrixType Kratos::EICR::Compute_L ( const VectorType displacements,
const VectorType forces,
const MatrixType H 
)
inlinestatic

Computes the Spin derivative of (Axial Vector Jacobian)^T contracted with the nodal moment vector. The output is a square matrix of size displacements.size() (which is num_nodes * 6). Note that 6 Degrees Of Freedom are assumed for each node.

Parameters
displacementsthe vector of nodal displacements and rotations in the local corotational coordinate system. (assumed size = num_nodes*6)
forcesthe vector of nodal forces and moments in the local corotational coordinate system. (assumed size = num_nodes*6)
Hthe Axial Vector Jacobian Matrix computed with a previous call to EICR::Compute_H(displacements)
Returns
the L matrix

◆ Compute_L() [2/2]

static MatrixType Kratos::EICR::Compute_L ( const VectorType rDisplacements,
const VectorType rForces,
const MatrixType rH 
)
inlinestatic

Computes the Spin derivative of (Axial Vector Jacobian)^T contracted with the nodal moment vector. The output is a square matrix of size rDisplacements.size() (which is num_nodes * 6). Note that 6 Degrees Of Freedom are assumed for each node.

Parameters
rDisplacementsthe vector of nodal displacements and rotations in the local corotational coordinate system. (assumed size = num_nodes*6)
rForcesthe vector of nodal forces and moments in the local corotational coordinate system. (assumed size = num_nodes*6)
rHthe Axial Vector Jacobian Matrix computed with a previous call to EICR::Compute_H(rDisplacements)
Returns
the L matrix

◆ Compute_Pt() [1/2]

static MatrixType Kratos::EICR::Compute_Pt ( const SizeType  NumNodes)
inlinestatic

Computes the Translational Projector Matrix. The output is a square matrix of size NumNodes*6. Note that 6 Degrees Of Freedom are assumed for each node.

Parameters
NumNodesthe number of nodes
Returns
the Translational Projector Matrix

◆ Compute_Pt() [2/2]

static MatrixType Kratos::EICR::Compute_Pt ( size_t  num_nodes)
inlinestatic

Computes the Translational Projector Matrix. The output is a square matrix of size num_nodes*6. Note that 6 Degrees Of Freedom are assumed for each node.

Parameters
num_nodesthe number of nodes
Returns
the Translational Projector Matrix

◆ Compute_S() [1/2]

static MatrixType Kratos::EICR::Compute_S ( const Vector3ContainerType nodes)
inlinestatic

Computes the Spin Lever Matrix. The output is a rectangular matrix of 3 columns and nodes.size()*6 rows. Note that 6 Degrees Of Freedom are assumed for each node.

Parameters
nodesthe input nodes
Returns
the Spin Lever Matrix

◆ Compute_S() [2/2]

static MatrixType Kratos::EICR::Compute_S ( const Vector3ContainerType rNodes)
inlinestatic

Computes the Spin Lever Matrix. The output is a rectangular matrix of 3 columns and rNodes.size()*6 rows. Note that 6 Degrees Of Freedom are assumed for each node.

Parameters
rNodesthe input nodes
Returns
the Spin Lever Matrix

◆ Spin() [1/4]

template<class TVec , class TMat >
static void Kratos::EICR::Spin ( const TVec &  rV,
TMat &  rS 
)
inlinestatic

Computes the Spin of the input vector rV, and saves the result into the output matrix rS. Note: no check is made on the size of the input-output arguments.

Parameters
rVthe input vector (assumed size: >= 3)
rSthe output matrix (assumed size: >= 3x3)

◆ Spin() [2/4]

template<class TVec , class TMat >
static void Kratos::EICR::Spin ( const TVec &  rV,
TMat &  rS,
double  Multiplier 
)
inlinestatic

Computes the Spin of the input vector rV, and saves the result into the output matrix rS. This version uses a multiplier for the output values. Note: no check is made on the size of the input-output arguments.

Parameters
rVthe input vector (assumed size: >= 3)
rSthe output matrix (assumed size: >= 3x3)
Multiplierthe multiplier for the output values

◆ Spin() [3/4]

template<class TVec , class TMat >
static void Kratos::EICR::Spin ( const TVec &  V,
TMat &  S 
)
inlinestatic

Computes the Spin of the input vector V, and saves the result into the output matrix S. Note: no check is made on the size of the input-output arguments.

Parameters
Vthe input vector (assumed size: >= 3)
Sthe output matrix (assumed size: >= 3x3)

◆ Spin() [4/4]

template<class TVec , class TMat >
static void Kratos::EICR::Spin ( const TVec &  V,
TMat &  S,
double  mult 
)
inlinestatic

Computes the Spin of the input vector V, and saves the result into the output matrix S. This version uses a multiplier for the output values. Note: no check is made on the size of the input-output arguments.

Parameters
Vthe input vector (assumed size: >= 3)
Sthe output matrix (assumed size: >= 3x3)
multthe multiplier for the output values

◆ Spin_AtRow() [1/8]

template<class TVec , class TMat >
static void Kratos::EICR::Spin_AtRow ( const TVec &  rV,
TMat &  rS,
const double  Multiplier,
const SizeType  RowIndex 
)
inlinestatic

Computes the Spin of the input vector rV, and saves the result into the output matrix rS, at the specified row index. This version uses a multiplier for the output values. Note: no check is made on the size of the input-output arguments.

Parameters
rVthe input vector (assumed size: >= 3)
rSthe output matrix (assumed size: >= 3x3)
Multiplierthe multiplier for the output values
RowIndexthe index of the first row in the output matrix where the spin has to be saved

◆ Spin_AtRow() [2/8]

template<class TVec , class TMat >
static void Kratos::EICR::Spin_AtRow ( const TVec &  rV,
TMat &  rS,
const double  Multiplier,
const SizeType  VectorIndex,
const SizeType  MatrixRowIndex 
)
inlinestatic

Computes the Spin of the input vector rV, from the specified index, and saves the result into the output matrix rS, at the specified row index. This version uses a multiplier for the output values. Note: no check is made on the size of the input-output arguments.

Parameters
rVthe input vector (assumed size: >= 3)
rSthe output matrix (assumed size: >= 3x3)
Multiplierthe multiplier for the output values
VectorIndexthe index of the first component of the input vector to be used to compute the spin
MatrixRowIndexthe index of the first row in the output matrix where the spin has to be saved

◆ Spin_AtRow() [3/8]

template<class TVec , class TMat >
static void Kratos::EICR::Spin_AtRow ( const TVec &  rV,
TMat &  rS,
const SizeType  RowIndex 
)
inlinestatic

Computes the Spin of the input vector rV, and saves the result into the output matrix rS, at the specified row index. Note: no check is made on the size of the input-output arguments.

Parameters
rVthe input vector (assumed size: >= 3)
rSthe output matrix (assumed size: >= 3x3)
RowIndexthe index of the first row in the output matrix where the spin has to be saved

◆ Spin_AtRow() [4/8]

template<class TVec , class TMat >
static void Kratos::EICR::Spin_AtRow ( const TVec &  rV,
TMat &  rS,
const SizeType  VectorIndex,
const SizeType  MatrixRowIndex 
)
inlinestatic

Computes the Spin of the input vector rV, from the specified index, and saves the result into the output matrix rS, at the specified row index. Note: no check is made on the size of the input-output arguments.

Parameters
rVthe input vector (assumed size: >= 3)
rSthe output matrix (assumed size: >= 3x3)
VectorIndexthe index of the first component of the input vector to be used to compute the spin
MatrixRowIndexthe index of the first row in the output matrix where the spin has to be saved

◆ Spin_AtRow() [5/8]

template<class TVec , class TMat >
static void Kratos::EICR::Spin_AtRow ( const TVec &  V,
TMat &  S,
double  mult,
size_t  row_index 
)
inlinestatic

Computes the Spin of the input vector V, and saves the result into the output matrix S, at the specified row index. This version uses a multiplier for the output values. Note: no check is made on the size of the input-output arguments.

Parameters
Vthe input vector (assumed size: >= 3)
Sthe output matrix (assumed size: >= 3x3)
multthe multiplier for the output values
row_indexthe index of the first row in the output matrix where the spin has to be saved

◆ Spin_AtRow() [6/8]

template<class TVec , class TMat >
static void Kratos::EICR::Spin_AtRow ( const TVec &  V,
TMat &  S,
double  mult,
size_t  vector_index,
size_t  matrix_row_index 
)
inlinestatic

Computes the Spin of the input vector V, from the specified index, and saves the result into the output matrix S, at the specified row index. This version uses a multiplier for the output values. Note: no check is made on the size of the input-output arguments.

Parameters
Vthe input vector (assumed size: >= 3)
Sthe output matrix (assumed size: >= 3x3)
multthe multiplier for the output values
vector_indexthe index of the first component of the input vector to be used to compute the spin
row_indexthe index of the first row in the output matrix where the spin has to be saved

◆ Spin_AtRow() [7/8]

template<class TVec , class TMat >
static void Kratos::EICR::Spin_AtRow ( const TVec &  V,
TMat &  S,
size_t  row_index 
)
inlinestatic

Computes the Spin of the input vector V, and saves the result into the output matrix S, at the specified row index. Note: no check is made on the size of the input-output arguments.

Parameters
Vthe input vector (assumed size: >= 3)
Sthe output matrix (assumed size: >= 3x3)
row_indexthe index of the first row in the output matrix where the spin has to be saved

◆ Spin_AtRow() [8/8]

template<class TVec , class TMat >
static void Kratos::EICR::Spin_AtRow ( const TVec &  V,
TMat &  S,
size_t  vector_index,
size_t  matrix_row_index 
)
inlinestatic

Computes the Spin of the input vector V, from the specified index, and saves the result into the output matrix S, at the specified row index. Note: no check is made on the size of the input-output arguments.

Parameters
Vthe input vector (assumed size: >= 3)
Sthe output matrix (assumed size: >= 3x3)
vector_indexthe index of the first component of the input vector to be used to compute the spin
row_indexthe index of the first row in the output matrix where the spin has to be saved

The documentation for this class was generated from the following file: