Class for computation of properties based on an elasticity tensor.
More...
#include <elastic_tensor.h>
|
| ElasticTensor (Eigen::Ref< const Mat6 > c_voigt) |
|
double | youngs_modulus_angular (AngularDirection) const |
|
double | youngs_modulus (CartesianDirection) const |
|
double | linear_compressibility_angular (AngularDirection) const |
|
double | linear_compressibility (CartesianDirection) const |
|
double | shear_modulus_angular (AngularDirection, double angle) const |
|
double | shear_modulus (CartesianDirection, double angle) const |
|
double | shear_modulus (CartesianDirection, CartesianDirection) const |
|
std::pair< double, double > | shear_modulus_minmax (CartesianDirection) const |
|
double | poisson_ratio_angular (AngularDirection, double angle) const |
|
double | poisson_ratio (CartesianDirection, double angle) const |
|
double | poisson_ratio (CartesianDirection, CartesianDirection) const |
|
std::pair< double, double > | poisson_ratio_minmax (CartesianDirection) const |
|
double | average_poisson_ratio_direction (CartesianDirection, int num_samples=360) const |
|
double | reduced_youngs_modulus (CartesianDirection, int num_samples=360) const |
|
double | average_bulk_modulus (AveragingScheme avg=AveragingScheme::Hill) const |
|
double | average_shear_modulus (AveragingScheme avg=AveragingScheme::Hill) const |
|
double | average_youngs_modulus (AveragingScheme avg=AveragingScheme::Hill) const |
|
double | average_poisson_ratio (AveragingScheme avg=AveragingScheme::Hill) const |
|
double | transverse_acoustic_velocity (double bulk_modulus_gpa, double shear_modulus_gpa, double density_g_cm3) const |
| Calculate the transverse (shear) acoustic velocity.
|
|
double | longitudinal_acoustic_velocity (double bulk_modulus_gpa, double shear_modulus_gpa, double density_g_cm3) const |
| Calculate the longitudinal (compressional) acoustic velocity.
|
|
const Mat6 & | voigt_s () const |
|
const Mat6 & | voigt_c () const |
|
Mat6 | voigt_rotation_matrix (const Mat3 &rotation) const |
| Get the 6x6 rotation matrix in order to rotate the Voigt representations of the tensors.
|
|
Mat6 | rotate_voigt_stiffness (const Mat3 &rotation) const |
| Rotate the elastic tensor using a 3x3 rotation matrix.
|
|
Mat6 | rotate_voigt_compliance (const Mat3 &rotation) const |
| Rotate the compliance tensor using a 3x3 rotation matrix.
|
|
double | component (int i, int j, int k, int l) const |
|
double & | component (int i, int j, int k, int l) |
|
Vec6 | eigenvalues () const |
|
double * | data () |
|
double const * | data () const |
|
Class for computation of properties based on an elasticity tensor.
This implementation would not have been possible without the ELATE[1] software, https://progs.coudert.name/elate which heavily inspired it and was wonderful as a refereence implementation for the various properties.
[1] Gaillac et al. https://doi.org/10.1088/0953-8984/28/27/275201
◆ AngularDirection
◆ CartesianDirection
◆ AveragingScheme
Enumerator |
---|
Voigt | |
Reuss | |
Hill | |
Numerical | |
◆ ElasticTensor()
occ::core::ElasticTensor::ElasticTensor |
( |
Eigen::Ref< const Mat6 > |
c_voigt | ) |
|
|
explicit |
◆ average_bulk_modulus()
◆ average_poisson_ratio()
◆ average_poisson_ratio_direction()
double occ::core::ElasticTensor::average_poisson_ratio_direction |
( |
CartesianDirection |
, |
|
|
int |
num_samples = 360 |
|
) |
| const |
◆ average_shear_modulus()
◆ average_youngs_modulus()
◆ component() [1/2]
double & occ::core::ElasticTensor::component |
( |
int |
i, |
|
|
int |
j, |
|
|
int |
k, |
|
|
int |
l |
|
) |
| |
◆ component() [2/2]
double occ::core::ElasticTensor::component |
( |
int |
i, |
|
|
int |
j, |
|
|
int |
k, |
|
|
int |
l |
|
) |
| const |
◆ data() [1/2]
double * occ::core::ElasticTensor::data |
( |
| ) |
|
|
inline |
◆ data() [2/2]
double const * occ::core::ElasticTensor::data |
( |
| ) |
const |
|
inline |
◆ eigenvalues()
Vec6 occ::core::ElasticTensor::eigenvalues |
( |
| ) |
const |
◆ linear_compressibility()
◆ linear_compressibility_angular()
double occ::core::ElasticTensor::linear_compressibility_angular |
( |
AngularDirection |
| ) |
const |
◆ longitudinal_acoustic_velocity()
double occ::core::ElasticTensor::longitudinal_acoustic_velocity |
( |
double |
bulk_modulus_gpa, |
|
|
double |
shear_modulus_gpa, |
|
|
double |
density_g_cm3 |
|
) |
| const |
Calculate the longitudinal (compressional) acoustic velocity.
- Parameters
-
bulk_modulus_gpa | Bulk modulus in GPa |
shear_modulus_gpa | Shear modulus in GPa |
density_g_cm3 | Density in g/cm³ |
- Returns
- Longitudinal acoustic velocity in m/s
Calculates V_p = sqrt((4G + 3K)/(3ρ)) where G is the shear modulus, K is the bulk modulus, and ρ is the density. This represents the velocity of compressional waves propagating through the material.
◆ poisson_ratio() [1/2]
◆ poisson_ratio() [2/2]
double occ::core::ElasticTensor::poisson_ratio |
( |
CartesianDirection |
, |
|
|
double |
angle |
|
) |
| const |
◆ poisson_ratio_angular()
double occ::core::ElasticTensor::poisson_ratio_angular |
( |
AngularDirection |
, |
|
|
double |
angle |
|
) |
| const |
◆ poisson_ratio_minmax()
std::pair< double, double > occ::core::ElasticTensor::poisson_ratio_minmax |
( |
CartesianDirection |
| ) |
const |
◆ reduced_youngs_modulus()
double occ::core::ElasticTensor::reduced_youngs_modulus |
( |
CartesianDirection |
, |
|
|
int |
num_samples = 360 |
|
) |
| const |
◆ rotate_voigt_compliance()
Mat6 occ::core::ElasticTensor::rotate_voigt_compliance |
( |
const Mat3 & |
rotation | ) |
const |
Rotate the compliance tensor using a 3x3 rotation matrix.
- Parameters
-
rotation | 3x3 rotation matrix R |
- Returns
- Rotated 6x6 compliance tensor in Voigt notation (S' = T @ S @ T^T)
◆ rotate_voigt_stiffness()
Mat6 occ::core::ElasticTensor::rotate_voigt_stiffness |
( |
const Mat3 & |
rotation | ) |
const |
Rotate the elastic tensor using a 3x3 rotation matrix.
- Parameters
-
rotation | 3x3 rotation matrix R |
- Returns
- Rotated 6x6 stiffness tensor in Voigt notation (C' = T @ C @ T^T)
◆ shear_modulus() [1/2]
◆ shear_modulus() [2/2]
double occ::core::ElasticTensor::shear_modulus |
( |
CartesianDirection |
, |
|
|
double |
angle |
|
) |
| const |
◆ shear_modulus_angular()
double occ::core::ElasticTensor::shear_modulus_angular |
( |
AngularDirection |
, |
|
|
double |
angle |
|
) |
| const |
◆ shear_modulus_minmax()
std::pair< double, double > occ::core::ElasticTensor::shear_modulus_minmax |
( |
CartesianDirection |
| ) |
const |
◆ transverse_acoustic_velocity()
double occ::core::ElasticTensor::transverse_acoustic_velocity |
( |
double |
bulk_modulus_gpa, |
|
|
double |
shear_modulus_gpa, |
|
|
double |
density_g_cm3 |
|
) |
| const |
Calculate the transverse (shear) acoustic velocity.
- Parameters
-
bulk_modulus_gpa | Bulk modulus in GPa (not used in calculation, included for API consistency) |
shear_modulus_gpa | Shear modulus in GPa |
density_g_cm3 | Density in g/cm³ |
- Returns
- Transverse acoustic velocity in m/s
Calculates V_s = sqrt(G/ρ) where G is the shear modulus and ρ is the density. This represents the velocity of shear waves propagating through the material.
◆ voigt_c()
const Mat6 & occ::core::ElasticTensor::voigt_c |
( |
| ) |
const |
◆ voigt_rotation_matrix()
Mat6 occ::core::ElasticTensor::voigt_rotation_matrix |
( |
const Mat3 & |
rotation | ) |
const |
Get the 6x6 rotation matrix in order to rotate the Voigt representations of the tensors.
- Parameters
-
rotation | 3x3 rotation matrix R |
- Returns
- 6x6 rotation matrix Tto be used as (C' = T @ C @ T^T)
◆ voigt_s()
const Mat6 & occ::core::ElasticTensor::voigt_s |
( |
| ) |
const |
◆ youngs_modulus()
◆ youngs_modulus_angular()
double occ::core::ElasticTensor::youngs_modulus_angular |
( |
AngularDirection |
| ) |
const |
The documentation for this class was generated from the following file: