1 #ifndef STRAINCONVERTER_HH
2 #define STRAINCONVERTER_HH
41 static Matrix3d
biot(
const Matrix3d &F);
42 static Matrix3d
biot_to_F(
const Matrix3d &B);
45 static Matrix3d
hencky(
const Matrix3d &F);
53 static Matrix3d
disp_grad(
const Matrix3d &F);
63 Matrix3d &eigenvectors,
const Matrix3d &F);
71 std::cerr <<
"WARNING in CASM::StrainConverter you are calling the default constructor" << std::endl;
72 std::cerr <<
"This is going to initialize a \"default\" sop_transf_mat and order_strain" << std::endl;
73 std::cerr <<
"The Green-Lagrange strain metric will be used for the calculation of all deformation metrics" << std::endl;
74 std::cerr <<
"PLEASE USE WITH CAUTION" << std::endl;
88 else if(_MODE ==
BIOT)
113 VectorXd
unroll_E(
const Matrix3d &E)
const;
114 Matrix3d
rollup_E(
const VectorXd &_unrolled_E)
const;
119 VectorXd
sop(Matrix3d &E, Matrix3d &C, Matrix3d &U, Eigen::Vector3d &eigenvalues,
120 Matrix3d &eigenvectors,
const Matrix3d &F)
const;
121 VectorXd
sop(Matrix3d &E, Matrix3d &C, Matrix3d &U, Eigen::Vector3d &eigenvalues,
122 Matrix3d &eigenvectors,
const Matrix3d &F,
STRAIN_METRIC MODE)
const;
127 void set_mode(
const std::string &mode_name);
void set_mode(const std::string &mode_name)
const Eigen::MatrixXd & sop_transf_mat() const
static Matrix3d hencky(const Matrix3d &F)
HENCKY = log(C)/2.
static Matrix3d biot(const Matrix3d &F)
BIOT = (U-I)
static Matrix3d green_lagrange(const Matrix3d &F)
GREEN_LAGRANGE = (C-I)/2.
MetricFuncPtr curr_inv_metric_func
StrainConverter(const STRAIN_METRIC &_MODE, const MatrixXd &_sop_transf_mat, const Array< Array< int > > &_order_strain)
MatrixXd m_sop_transf_mat
Type-safe ID object for communicating and accessing Symmetry representation info. ...
static Matrix3d disp_grad_to_F(const Matrix3d &F)
static Matrix3d strain_metric(const Matrix3d &F, STRAIN_METRIC MODE)
static Matrix3d hencky_to_F(const Matrix3d &H)
HENCKY = log(C)/2.
StrainConverter(const std::string &mode_name)
Matrix3d rollup_E(const VectorXd &_unrolled_E) const
Matrix3d unrolled_strain_metric_to_F(const VectorXd &E) const
VectorXd unroll_E(const Matrix3d &E) const
Unrolls the green-lagrange metric ( or any symmetric metric)
void set_conventional_sop_transf_mat()
SymGroupRepID m_symrep_ID
Matrix3d strain_metric_to_F(const Matrix3d &E) const
SymGroupRepID symrep_ID() const
Array< Array< int > > m_order_strain
static Matrix3d euler_almansi_to_F(const Matrix3d &A)
EULER_ALMANSI = (I-(F F^{T})^(-1))/2.
SymGroup is a collection of symmetry operations that satisfy the group property The symmetry operatio...
static Matrix3d euler_almansi(const Matrix3d &F)
EULER_ALMANSI = (I-(F F^{T})^(-1))/2.
static Matrix3d disp_grad(const Matrix3d &F)
DISP_GRAD = F.
EigenIndex Index
For long integer indexing:
STRAIN_METRIC STRAIN_METRIC_MODE
void set_symmetrized_sop(const SymGroup &pg)
Array< double > m_weight_strain
void set_conventional_order_symmetric()
VectorXd sop(Matrix3d &E, Matrix3d &C, Matrix3d &U, Eigen::Vector3d &eigenvalues, Matrix3d &eigenvectors, const Matrix3d &F) const
StrainConverter(bool override_flag=false)
std::vector< Eigen::MatrixXd > irreducible_wedges(const SymGroup &pg, std::vector< Index > &multiplicities)
void set_conventional_order_unsymmetric()
static Matrix3d metric_tensor(const Matrix3d &F)
static Matrix3d green_lagrange_to_F(const Matrix3d &E)
GREEN_LAGRANGE = 1/2 * (F^{T} F - I)
static Matrix3d biot_to_F(const Matrix3d &B)
BIOT = (U-I)
VectorXd unrolled_strain_metric(const Matrix3d &F) const
static Matrix3d right_stretch_tensor(Matrix3d &C, Eigen::Vector3d &eigenvalues, Matrix3d &eigenvectors, const Matrix3d &F)
std::vector< Eigen::MatrixXd > irreducible_sop_wedges(const SymGroup &pg, std::vector< Index > &multiplicities)
Basic std::vector like container (deprecated)
Matrix3d(* MetricFuncPtr)(const Matrix3d &)
MetricFuncPtr curr_metric_func