xc
Public Types | Static Public Member Functions | List of all members

EICR Element Independent CoRotational formulation. More...

#include <ASDEICR.h>

Public Types

typedef std::size_t size_t
 
typedef ASDVector3< double > Vector3Type
 
typedef std::vector< Vector3TypeNodeContainerType
 
typedef Vector VectorType
 
typedef Matrix MatrixType
 
typedef ASDQuaternion< double > QuaternionType
 

Static Public Member Functions

template<class TVec , class TMat >
static void Spin (const TVec &V, TMat &S)
 Computes the Spin of the input vector V, and saves the result into the output matrix S. More...
 
template<class TVec , class TMat >
static void Spin_AtRow (const TVec &V, TMat &S, size_t row_index)
 Computes the Spin of the input vector V, and saves the result into the output matrix S, at the specified row index. More...
 
template<class TVec , class TMat >
static void Spin_AtRow (const TVec &V, TMat &S, size_t vector_index, size_t matrix_row_index)
 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. More...
 
template<class TVec , class TMat >
static void Spin (const TVec &V, TMat &S, double mult)
 Computes the Spin of the input vector V, and saves the result into the output matrix S. More...
 
template<class TVec , class TMat >
static void Spin_AtRow (const TVec &V, TMat &S, double mult, size_t row_index)
 Computes the Spin of the input vector V, and saves the result into the output matrix S, at the specified row index. More...
 
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)
 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. More...
 
static void SetZero (size_t n, size_t m, MatrixType &I)
 Sets the input matrix to the zero matrix of requested size. More...
 
static void SetIdentity (size_t n, MatrixType &I, double value=1.0)
 Sets the input matrix to the identity of requested size. More...
 
static void GetBlock (const VectorType &A, size_t begin, size_t end, VectorType &B)
 Copies the block [begin:end[ from A to B. More...
 
static void GetBlock (const MatrixType &A, size_t begin, size_t end, MatrixType &B)
 Copies the block [begin:end[ from A to B. More...
 
static void SetBlock (MatrixType &A, size_t begin, size_t end, const MatrixType &B)
 Copies the block [begin:end[ from B to A. More...
 
static void OuterProd (const VectorType &A, const VectorType &B, MatrixType &C)
 computes the outer product A x B, in C. More...
 
static void Compute_Pt (size_t num_nodes, MatrixType &P)
 Computes the Translational Projector Matrix. More...
 
static void Compute_S (const NodeContainerType &nodes, MatrixType &S)
 Computes the Spin Lever Matrix. More...
 
static void Compute_H (const VectorType &displacements, MatrixType &H)
 Computes the Axial Vector Jacobian. More...
 
static void Compute_L (const VectorType &displacements, const VectorType &forces, const MatrixType &H, MatrixType &L)
 Computes the Spin derivative of (Axial Vector Jacobian)^T contracted with the nodal moment vector. More...
 

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 Function Documentation

◆ Compute_H()

static void XC::EICR::Compute_H ( const VectorType displacements,
MatrixType H 
)
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_L()

static void XC::EICR::Compute_L ( const VectorType displacements,
const VectorType forces,
const MatrixType H,
MatrixType L 
)
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_Pt()

static void XC::EICR::Compute_Pt ( size_t  num_nodes,
MatrixType P 
)
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
Pthe Translational Projector Matrix

◆ Compute_S()

static void XC::EICR::Compute_S ( const NodeContainerType &  nodes,
MatrixType S 
)
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
Sthe Spin Lever Matrix

◆ GetBlock() [1/2]

static void XC::EICR::GetBlock ( const VectorType A,
size_t  begin,
size_t  end,
VectorType B 
)
inlinestatic

Copies the block [begin:end[ from A to B.

B size must be end-begin. Note: no size check is made!

Parameters
Athe first vector
beginthe first index
endthe last+1 index
Bthe second vector

◆ GetBlock() [2/2]

static void XC::EICR::GetBlock ( const MatrixType A,
size_t  begin,
size_t  end,
MatrixType B 
)
inlinestatic

Copies the block [begin:end[ from A to B.

B size must be end-begin. Note: no size check is made!

Parameters
Athe first matrix
beginthe first index
endthe last+1 index
Bthe second matrix

◆ OuterProd()

void XC::EICR::OuterProd ( const VectorType A,
const VectorType B,
MatrixType C 
)
static

computes the outer product A x B, in C.

Note: no size check is made!

Parameters
Athe first vector
Bthe second vector
Cthe output matrix

◆ SetBlock()

static void XC::EICR::SetBlock ( MatrixType A,
size_t  begin,
size_t  end,
const MatrixType B 
)
inlinestatic

Copies the block [begin:end[ from B to A.

B size must be end-begin. Note: no size check is made!

Parameters
Athe first vector
beginthe first index
endthe last+1 index
Bthe second vector

◆ SetIdentity()

static void XC::EICR::SetIdentity ( size_t  n,
MatrixType I,
double  value = 1.0 
)
inlinestatic

Sets the input matrix to the identity of requested size.

Resize is done if necessary

Parameters
nthe number of rows and columns
Ithe input/output matrix
value(optional, default = 1) the value on the diagonal terms

◆ SetZero()

void XC::EICR::SetZero ( size_t  n,
size_t  m,
MatrixType I 
)
static

Sets the input matrix to the zero matrix of requested size.

Resize is done if necessary

Parameters
nthe number of rows
nthe number of columns
Ithe input/output matrix

◆ Spin() [1/2]

template<class TVec , class TMat >
static void XC::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() [2/2]

template<class TVec , class TMat >
static void XC::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/4]

template<class TVec , class TMat >
static void XC::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() [2/4]

template<class TVec , class TMat >
static void XC::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

◆ Spin_AtRow() [3/4]

template<class TVec , class TMat >
static void XC::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() [4/4]

template<class TVec , class TMat >
static void XC::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

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