occ
Loading...
Searching...
No Matches
occ::core::ElasticTensor Class Reference

Class for computation of properties based on an elasticity tensor. More...

#include <elastic_tensor.h>

Public Types

enum class  AveragingScheme { Voigt , Reuss , Hill , Numerical }
 
using AngularDirection = Eigen::Ref< const Eigen::Vector< double, 2 > >
 
using CartesianDirection = Eigen::Ref< const Eigen::Vector< double, 3 > >
 

Public Member Functions

 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_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
 
const Mat6voigt_s () const
 
const Mat6voigt_c () const
 
double component (int i, int j, int k, int l) const
 
double & component (int i, int j, int k, int l)
 
double * data ()
 
double const * data () const
 

Detailed Description

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

Member Typedef Documentation

◆ AngularDirection

using occ::core::ElasticTensor::AngularDirection = Eigen::Ref<const Eigen::Vector<double, 2> >

◆ CartesianDirection

using occ::core::ElasticTensor::CartesianDirection = Eigen::Ref<const Eigen::Vector<double, 3> >

Member Enumeration Documentation

◆ AveragingScheme

Enumerator
Voigt 
Reuss 
Hill 
Numerical 

Constructor & Destructor Documentation

◆ ElasticTensor()

occ::core::ElasticTensor::ElasticTensor ( Eigen::Ref< const Mat6 c_voigt)
explicit

Member Function Documentation

◆ average_bulk_modulus()

double occ::core::ElasticTensor::average_bulk_modulus ( AveragingScheme  avg = AveragingScheme::Hill) const

◆ average_poisson_ratio()

double occ::core::ElasticTensor::average_poisson_ratio ( AveragingScheme  avg = AveragingScheme::Hill) const

◆ average_shear_modulus()

double occ::core::ElasticTensor::average_shear_modulus ( AveragingScheme  avg = AveragingScheme::Hill) const

◆ average_youngs_modulus()

double occ::core::ElasticTensor::average_youngs_modulus ( AveragingScheme  avg = AveragingScheme::Hill) const

◆ 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

◆ linear_compressibility()

double occ::core::ElasticTensor::linear_compressibility ( CartesianDirection  ) const

◆ linear_compressibility_angular()

double occ::core::ElasticTensor::linear_compressibility_angular ( AngularDirection  ) const

◆ poisson_ratio() [1/2]

double occ::core::ElasticTensor::poisson_ratio ( CartesianDirection  ,
CartesianDirection   
) const

◆ 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

◆ shear_modulus() [1/2]

double occ::core::ElasticTensor::shear_modulus ( CartesianDirection  ,
CartesianDirection   
) const

◆ 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

◆ voigt_c()

const Mat6 & occ::core::ElasticTensor::voigt_c ( ) const

◆ voigt_s()

const Mat6 & occ::core::ElasticTensor::voigt_s ( ) const

◆ youngs_modulus()

double occ::core::ElasticTensor::youngs_modulus ( CartesianDirection  ) const

◆ youngs_modulus_angular()

double occ::core::ElasticTensor::youngs_modulus_angular ( AngularDirection  ) const

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