PolyFEM
|
#include <svd.hpp>
Public Member Functions | |
AutoFlipSVD (void) | |
AutoFlipSVD (const MatrixType &mtr, unsigned int computationOptions=0) | |
template<int dim = MatrixType::RowsAtCompileTime> | |
std::enable_if< dim==3, AutoFlipSVD< MatrixType > >::type & | compute (const MatrixType &mtr, unsigned int computationOptions) |
template<int dim = MatrixType::RowsAtCompileTime> | |
std::enable_if< dim==2, AutoFlipSVD< MatrixType > >::type & | compute (const MatrixType &mtr, unsigned int computationOptions) |
void | set (const Eigen::Matrix3d &U, const Eigen::Vector3d &Sigma, const Eigen::Matrix3d &V) |
const Eigen::JacobiSVD< MatrixType >::SingularValuesType & | singularValues (void) const |
const MatrixType & | matrixU (void) const |
const MatrixType & | matrixV (void) const |
void | setIdentity (void) |
Protected Member Functions | |
void | flip2d (const MatrixType &mtr, unsigned int computationOptions) |
template<int dim> | |
void | computeCofactorMtr (const Eigen::Matrix< double, dim, dim > &F, Eigen::Matrix< double, dim, dim > &A) |
void | fastEigenvalues (const Eigen::Matrix3d &A_Sym, Eigen::Vector3d &lambda) |
void | fastEigenvectors (const Eigen::Matrix3d &A_Sym, const Eigen::Vector3d &lambda, Eigen::Matrix3d &V) |
void | fastSolveEigenproblem (const Eigen::Matrix3d &A_Sym, Eigen::Vector3d &lambda, Eigen::Matrix3d &V) |
void | fastSVD3d (const Eigen::Matrix3d &A, Eigen::Matrix3d &U, Eigen::Vector3d &singular_values, Eigen::Matrix3d &V) |
void | fastComputeSingularValues3d (const Eigen::Matrix3d &A, Eigen::Vector3d &singular_values) |
Protected Attributes | |
bool | flipped_U |
bool | flipped_V |
bool | flipped_sigma |
Eigen::JacobiSVD< MatrixType >::SingularValuesType | singularValues_flipped |
MatrixType | matrixU_flipped |
MatrixType | matrixV_flipped |
|
inline |
|
inline |
Definition at line 23 of file svd.hpp.
References polyfem::utils::AutoFlipSVD< MatrixType >::compute().
|
inline |
Definition at line 31 of file svd.hpp.
References polyfem::utils::AutoFlipSVD< MatrixType >::fastComputeSingularValues3d(), polyfem::utils::AutoFlipSVD< MatrixType >::fastSVD3d(), polyfem::utils::AutoFlipSVD< MatrixType >::flipped_sigma, polyfem::utils::AutoFlipSVD< MatrixType >::flipped_U, polyfem::utils::AutoFlipSVD< MatrixType >::flipped_V, polyfem::utils::AutoFlipSVD< MatrixType >::matrixU_flipped, polyfem::utils::AutoFlipSVD< MatrixType >::matrixV_flipped, JIXIE::singularValueDecomposition(), and polyfem::utils::AutoFlipSVD< MatrixType >::singularValues_flipped.
Referenced by polyfem::utils::AutoFlipSVD< MatrixType >::AutoFlipSVD().
|
inline |
Definition at line 51 of file svd.hpp.
References polyfem::utils::AutoFlipSVD< MatrixType >::flip2d(), polyfem::utils::AutoFlipSVD< MatrixType >::flipped_sigma, polyfem::utils::AutoFlipSVD< MatrixType >::flipped_U, polyfem::utils::AutoFlipSVD< MatrixType >::flipped_V, polyfem::utils::AutoFlipSVD< MatrixType >::matrixU_flipped, polyfem::utils::AutoFlipSVD< MatrixType >::matrixV_flipped, JIXIE::singularValueDecomposition(), and polyfem::utils::AutoFlipSVD< MatrixType >::singularValues_flipped.
|
inlineprotected |
Definition at line 125 of file svd.hpp.
References polyfem::F.
|
inlineprotected |
Definition at line 300 of file svd.hpp.
References polyfem::utils::AutoFlipSVD< MatrixType >::fastEigenvalues(), and polyfem::utils::singular_values().
Referenced by polyfem::utils::AutoFlipSVD< MatrixType >::compute().
|
inlineprotected |
Definition at line 153 of file svd.hpp.
Referenced by polyfem::utils::AutoFlipSVD< MatrixType >::fastComputeSingularValues3d(), and polyfem::utils::AutoFlipSVD< MatrixType >::fastSolveEigenproblem().
|
inlineprotected |
Definition at line 185 of file svd.hpp.
References V.
Referenced by polyfem::utils::AutoFlipSVD< MatrixType >::fastSolveEigenproblem().
|
inlineprotected |
Definition at line 248 of file svd.hpp.
References polyfem::utils::AutoFlipSVD< MatrixType >::fastEigenvalues(), polyfem::utils::AutoFlipSVD< MatrixType >::fastEigenvectors(), and V.
Referenced by polyfem::utils::AutoFlipSVD< MatrixType >::fastSVD3d().
|
inlineprotected |
Definition at line 257 of file svd.hpp.
References polyfem::utils::AutoFlipSVD< MatrixType >::fastSolveEigenproblem(), polyfem::utils::singular_values(), and V.
Referenced by polyfem::utils::AutoFlipSVD< MatrixType >::compute().
|
inlineprotected |
!! this flip algorithm is only valid in 2D
Definition at line 76 of file svd.hpp.
References polyfem::utils::determinant(), polyfem::utils::AutoFlipSVD< MatrixType >::flipped_sigma, polyfem::utils::AutoFlipSVD< MatrixType >::flipped_U, polyfem::utils::AutoFlipSVD< MatrixType >::flipped_V, polyfem::utils::AutoFlipSVD< MatrixType >::matrixU_flipped, polyfem::utils::AutoFlipSVD< MatrixType >::matrixV_flipped, polyfem::utils::AutoFlipSVD< MatrixType >::singularValues(), and polyfem::utils::AutoFlipSVD< MatrixType >::singularValues_flipped.
Referenced by polyfem::utils::AutoFlipSVD< MatrixType >::compute().
|
inline |
Definition at line 326 of file svd.hpp.
References polyfem::utils::AutoFlipSVD< MatrixType >::flipped_U, and polyfem::utils::AutoFlipSVD< MatrixType >::matrixU_flipped.
Referenced by polyfem::assembler::FixedCorotational::compute_dstress_dmu_dlambda(), polyfem::assembler::FixedCorotational::compute_stiffness_from_def_grad(), and polyfem::assembler::FixedCorotational::compute_stress_from_def_grad().
|
inline |
Definition at line 335 of file svd.hpp.
References polyfem::utils::AutoFlipSVD< MatrixType >::flipped_V, and polyfem::utils::AutoFlipSVD< MatrixType >::matrixV_flipped.
Referenced by polyfem::assembler::FixedCorotational::compute_dstress_dmu_dlambda(), polyfem::assembler::FixedCorotational::compute_stiffness_from_def_grad(), and polyfem::assembler::FixedCorotational::compute_stress_from_def_grad().
|
inline |
Definition at line 67 of file svd.hpp.
References polyfem::utils::AutoFlipSVD< MatrixType >::flipped_sigma, polyfem::utils::AutoFlipSVD< MatrixType >::flipped_U, polyfem::utils::AutoFlipSVD< MatrixType >::flipped_V, polyfem::utils::AutoFlipSVD< MatrixType >::matrixU_flipped, polyfem::utils::AutoFlipSVD< MatrixType >::matrixV_flipped, polyfem::utils::AutoFlipSVD< MatrixType >::singularValues_flipped, and V.
|
inline |
Definition at line 345 of file svd.hpp.
References polyfem::utils::AutoFlipSVD< MatrixType >::flipped_sigma, polyfem::utils::AutoFlipSVD< MatrixType >::flipped_U, polyfem::utils::AutoFlipSVD< MatrixType >::flipped_V, polyfem::utils::AutoFlipSVD< MatrixType >::matrixU_flipped, polyfem::utils::AutoFlipSVD< MatrixType >::matrixV_flipped, and polyfem::utils::AutoFlipSVD< MatrixType >::singularValues_flipped.
|
inline |
Definition at line 317 of file svd.hpp.
References polyfem::utils::AutoFlipSVD< MatrixType >::flipped_sigma, and polyfem::utils::AutoFlipSVD< MatrixType >::singularValues_flipped.
Referenced by polyfem::assembler::FixedCorotational::compute_dstress_dmu_dlambda(), polyfem::assembler::FixedCorotational::compute_stiffness_from_def_grad(), polyfem::assembler::FixedCorotational::compute_stress_from_def_grad(), polyfem::utils::AutoFlipSVD< MatrixType >::flip2d(), and polyfem::utils::singular_values().
|
protected |
Definition at line 16 of file svd.hpp.
Referenced by polyfem::utils::AutoFlipSVD< MatrixType >::compute(), polyfem::utils::AutoFlipSVD< MatrixType >::flip2d(), polyfem::utils::AutoFlipSVD< MatrixType >::set(), polyfem::utils::AutoFlipSVD< MatrixType >::setIdentity(), and polyfem::utils::AutoFlipSVD< MatrixType >::singularValues().
|
protected |
Definition at line 16 of file svd.hpp.
Referenced by polyfem::utils::AutoFlipSVD< MatrixType >::compute(), polyfem::utils::AutoFlipSVD< MatrixType >::flip2d(), polyfem::utils::AutoFlipSVD< MatrixType >::matrixU(), polyfem::utils::AutoFlipSVD< MatrixType >::set(), and polyfem::utils::AutoFlipSVD< MatrixType >::setIdentity().
|
protected |
Definition at line 16 of file svd.hpp.
Referenced by polyfem::utils::AutoFlipSVD< MatrixType >::compute(), polyfem::utils::AutoFlipSVD< MatrixType >::flip2d(), polyfem::utils::AutoFlipSVD< MatrixType >::matrixV(), polyfem::utils::AutoFlipSVD< MatrixType >::set(), and polyfem::utils::AutoFlipSVD< MatrixType >::setIdentity().
|
protected |
Definition at line 19 of file svd.hpp.
Referenced by polyfem::utils::AutoFlipSVD< MatrixType >::compute(), polyfem::utils::AutoFlipSVD< MatrixType >::flip2d(), polyfem::utils::AutoFlipSVD< MatrixType >::matrixU(), polyfem::utils::AutoFlipSVD< MatrixType >::set(), and polyfem::utils::AutoFlipSVD< MatrixType >::setIdentity().
|
protected |
Definition at line 19 of file svd.hpp.
Referenced by polyfem::utils::AutoFlipSVD< MatrixType >::compute(), polyfem::utils::AutoFlipSVD< MatrixType >::flip2d(), polyfem::utils::AutoFlipSVD< MatrixType >::matrixV(), polyfem::utils::AutoFlipSVD< MatrixType >::set(), and polyfem::utils::AutoFlipSVD< MatrixType >::setIdentity().
|
protected |
Definition at line 18 of file svd.hpp.
Referenced by polyfem::utils::AutoFlipSVD< MatrixType >::compute(), polyfem::utils::AutoFlipSVD< MatrixType >::flip2d(), polyfem::utils::AutoFlipSVD< MatrixType >::set(), polyfem::utils::AutoFlipSVD< MatrixType >::setIdentity(), and polyfem::utils::AutoFlipSVD< MatrixType >::singularValues().