FEDEM Solver
R8.0
Source code of the dynamics solver
|
Various tensor transformation utilities. More...
Functions | |
double | vonMises (int N, const double *S) |
Returns the von Mises value of a symmetric stress/strain tensor. More... | |
double | vonMises (double s11, double s22, double s12) |
Returns the von Mises value of a 2D stress/strain tensor. More... | |
double | vonMises (double s11, double s22, double s33, double s12, double s13, double s23) |
Returns the von Mises value of a 3D stress/strain tensor. More... | |
int | principalDirs (int N, const double *S, double *pVals, double *pDirs) |
Calculates the principal directions and values of a tensor. More... | |
int | principalDirs (const double *S, double *pVal, double *p1Dir, double *p2Dir) |
Calculates the principal directions and values of a 2D tensor. More... | |
int | principalDirs (const double *S, double *pVal, double *p1Dir, double *p2Dir, double *p3Dir) |
Calculates the principal directions and values of a 3D tensor. More... | |
bool | principalValues (int N, const double *S, double *P) |
Calculates the principal values of a tensor. More... | |
bool | principalVals2D (double s11, double s22, double s12, double *pVal) |
Calculates the principal values of a 2D tensor. More... | |
bool | principalVals3D (double s11, double s22, double s33, double s12, double s13, double s23, double *pVal) |
Calculates the principal values of a 3D tensor. More... | |
bool | principalValues (double s11, double s22, double s12, double &p1, double &p2) |
bool | principalValues (double s11, double s22, double s33, double s12, double s13, double s23, double &p1, double &p2, double &p3) |
double | maxShearValue (double pMax, double pMin) |
Returns the maximum shear value. More... | |
void | maxShearDir (int N, const double *pMaxDir, const double *pMinDir, double *maxShearDir) |
Returns the direction of maximum shear. More... | |
void | rotate2D (const double *inTensor, const double *rotMx, double *outTensor) |
Coordinate transformation for a 2D tensor. More... | |
void | rotate (const double *inTensor, const double *eX, const double *eY, double *outTensor) |
Coordinate transformation for a 2D tensor. More... | |
void | rotate3D (const double *inTensor, const double *rotMx, double *outTensor) |
Coordinate transformation for a 3D tensor. More... | |
void | rotate (const double *inTensor, const double *eX, const double *eY, const double *eZ, double *outTensor) |
Coordinate transformation for a 3D tensor. More... | |
void | from2Dto3D (const double *tensor2D, double *tensor3D) |
Plain 2D-to-3D tensor conversion. More... | |
void | from3Dto2D (const double *tensor3D, double *tensor2D) |
Plain 3D-to-2D tensor conversion. More... | |
Various tensor transformation utilities.
void FFaTensorTransforms::from2Dto3D | ( | const double * | S2D, |
double * | S3D | ||
) |
Plain 2D-to-3D tensor conversion.
Padding with zeros to fit the 3D tensor.
void FFaTensorTransforms::from3Dto2D | ( | const double * | S3D, |
double * | S2D | ||
) |
Plain 3D-to-2D tensor conversion.
Just cutting off whats needed to fit the 2D tensor.
void FFaTensorTransforms::maxShearDir | ( | int | N, |
const double * | pMaxDir, | ||
const double * | pMinDir, | ||
double * | maxShearDir | ||
) |
Returns the direction of maximum shear.
[in] | N | Vector dimension (1, 2 or 3) |
[in] | pMaxDir | Direction of the max principal value |
[in] | pMinDir | Direction of the min principal value |
[out] | maxShearDir | Direction of the max shear value, this is 45 degrees on the max and min directions pointing from min to max |
double FFaTensorTransforms::maxShearValue | ( | double | pMax, |
double | pMin | ||
) |
Returns the maximum shear value.
[in] | pMax | Max principal value |
[in] | pMin | Min principal value |
int FFaTensorTransforms::principalDirs | ( | const double * | S, |
double * | pVal, | ||
double * | p1Dir, | ||
double * | p2Dir | ||
) |
Calculates the principal directions and values of a 2D tensor.
[in] | S | Tensor values, {s11, s22, s12} |
[out] | pVal | Principal values, {pMax,pMin} |
[out] | p1Dir | Direction vector for the first principal value |
[out] | p2Dir | Direction vector for the second principal value |
int FFaTensorTransforms::principalDirs | ( | const double * | S, |
double * | pVal, | ||
double * | p1Dir, | ||
double * | p2Dir, | ||
double * | p3Dir | ||
) |
Calculates the principal directions and values of a 3D tensor.
[in] | S | Tensor values, {s11, s22, s33, s12, s13, s23} |
[out] | pVal | Principal values, {pMax,pMid,pMin} |
[out] | p1Dir | Direction vector for the first principal value |
[out] | p2Dir | Direction vector for the second principal value |
[out] | p3Dir | Direction vector for the third principal value |
int FFaTensorTransforms::principalDirs | ( | int | N, |
const double * | S, | ||
double * | pVal, | ||
double * | pDir | ||
) |
Calculates the principal directions and values of a tensor.
[in] | N | Tensor dimension (1, 2 or 3) |
[in] | S | Tensor values, upper triangle of the symmetric tensor |
[out] | pVal | Principal values in descending order, i.e., {P1,P2,P3} |
[out] | pDir | Associated principal direction vectors, e.g., in 3D:
|
The tensor values are assumed laid out as follows
This function uses the LAPACK eigenvalue solver DSYEV.
bool FFaTensorTransforms::principalVals2D | ( | double | s11, |
double | s22, | ||
double | s12, | ||
double * | pVal | ||
) |
Calculates the principal values of a 2D tensor.
bool FFaTensorTransforms::principalVals3D | ( | double | s11, |
double | s22, | ||
double | s33, | ||
double | s12, | ||
double | s13, | ||
double | s23, | ||
double * | pVal | ||
) |
Calculates the principal values of a 3D tensor.
|
inline |
|
inline |
bool FFaTensorTransforms::principalValues | ( | int | N, |
const double * | S, | ||
double * | P | ||
) |
Calculates the principal values of a tensor.
[in] | N | Tensor dimension (1, 2 or 3) |
[in] | S | Tensor values, upper triangle of the symmetric tensor |
[out] | P | Principal values in descending order, i.e., {P1,P2,P3} |
The tensor values are assumed laid out as follows
void FFaTensorTransforms::rotate | ( | const double * | S, |
const double * | eX, | ||
const double * | eY, | ||
const double * | eZ, | ||
double * | S_transformed | ||
) |
Coordinate transformation for a 3D tensor.
[in] | S | Symmetric input tensor, S = {s11, s22, s33, s12, s13, s23} |
[in] | eX | Unit X-direction vector |
[in] | eY | Unit Y-direction vector |
[in] | eZ | Unit Z-direction vector |
[out] | S_transformed | The transformed tensor |
void FFaTensorTransforms::rotate | ( | const double * | S, |
const double * | eX, | ||
const double * | eY, | ||
double * | S_transformed | ||
) |
Coordinate transformation for a 2D tensor.
[in] | S | Symmetric input tensor, S = {s11, s22, s12} |
[in] | eX | Unit X-direction vector |
[in] | eY | Unit Y-direction vector |
[out] | S_transformed | The transformed tensor |
void FFaTensorTransforms::rotate2D | ( | const double * | inTensor, |
const double * | rotMx, | ||
double * | outTensor | ||
) |
Coordinate transformation for a 2D tensor.
[in] | inTensor | Symmetric input tensor, {s11, s22, s12} |
[in] | rotMx | Transformation matrix, [eX, eY] |
[out] | outTensor | The transformed tensor |
void FFaTensorTransforms::rotate3D | ( | const double * | inTensor, |
const double * | rotMx, | ||
double * | outTensor | ||
) |
Coordinate transformation for a 3D tensor.
[in] | inTensor | Symmetric input tensor, {s11, s22, s33, s12, s13, s23} |
[in] | rotMx | Transformation matrix, [eX, eY, eZ] |
[out] | outTensor | The transformed tensor |
double FFaTensorTransforms::vonMises | ( | double | s11, |
double | s22, | ||
double | s12 | ||
) |
Returns the von Mises value of a 2D stress/strain tensor.
double FFaTensorTransforms::vonMises | ( | double | s11, |
double | s22, | ||
double | s33, | ||
double | s12, | ||
double | s13, | ||
double | s23 | ||
) |
Returns the von Mises value of a 3D stress/strain tensor.
double FFaTensorTransforms::vonMises | ( | int | N, |
const double * | S | ||
) |
Returns the von Mises value of a symmetric stress/strain tensor.
[in] | N | Tensor dimension (1, 2 or 3) |
[in] | S | Tensor values, upper triangle of the symmetric tensor |
The tensor values are assumed laid out as follows