|
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