|
PolyFEM
|
#include <GenericElastic.hpp>
Public Member Functions | |
| GenericElastic () | |
| virtual | ~GenericElastic ()=default |
| double | compute_energy (const NonLinearAssemblerData &data) const override |
| Eigen::MatrixXd | assemble_hessian (const NonLinearAssemblerData &data) const override |
| Eigen::VectorXd | assemble_gradient (const NonLinearAssemblerData &data) const override |
| void | assign_stress_tensor (const OutputData &data, const int all_size, const ElasticityTensorType &type, Eigen::MatrixXd &all, const std::function< Eigen::MatrixXd(const Eigen::MatrixXd &)> &fun) const override |
| void | compute_stress_grad_multiply_mat (const OptAssemblerData &data, const Eigen::MatrixXd &mat, Eigen::MatrixXd &stress, Eigen::MatrixXd &result) const override |
| void | compute_stress_grad_multiply_stress (const OptAssemblerData &data, Eigen::MatrixXd &stress, Eigen::MatrixXd &result) const override |
| void | compute_stress_grad_multiply_vect (const OptAssemblerData &data, const Eigen::MatrixXd &vect, Eigen::MatrixXd &stress, Eigen::MatrixXd &result) const override |
| Derived & | derived () |
| Returns this as a reference to derived class. | |
| const Derived & | derived () const |
| Returns this as a const reference to derived class. | |
| virtual void | add_multimaterial (const int index, const json ¶ms, const Units &units) override=0 |
| bool | allow_inversion () const override |
| virtual bool | real_def_grad () const |
Public Member Functions inherited from polyfem::assembler::ElasticityAssembler | |
| ElasticityAssembler () | |
| virtual | ~ElasticityAssembler ()=default |
| void | set_use_robust_jacobian () |
| void | compute_scalar_value (const OutputData &data, std::vector< NamedMatrix > &result) const override |
| void | compute_tensor_value (const OutputData &data, std::vector< NamedMatrix > &result) const override |
| void | compute_stress_tensor (const OutputData &data, const ElasticityTensorType &type, Eigen::MatrixXd &stresses) const |
| void | compute_von_mises_stresses (const OutputData &data, Eigen::MatrixXd &stresses) const |
| bool | is_solution_displacement () const override |
| bool | is_tensor () const override |
Public Member Functions inherited from polyfem::assembler::Assembler | |
| virtual | ~Assembler ()=default |
| virtual std::string | name () const =0 |
| int | size () const |
| virtual void | set_size (const int size) |
| virtual void | assemble (const bool is_volume, const int n_basis, const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &gbases, const AssemblyValsCache &cache, const double t, StiffnessMatrix &stiffness, const bool is_mass=false) const |
| virtual void | compute_stiffness_value (const double t, const assembler::ElementAssemblyValues &vals, const Eigen::MatrixXd &local_pts, const Eigen::MatrixXd &displacement, Eigen::MatrixXd &tensor) const |
| virtual void | compute_dstress_dmu_dlambda (const OptAssemblerData &data, Eigen::MatrixXd &dstress_dmu, Eigen::MatrixXd &dstress_dlambda) const |
| virtual void | compute_stress_grad (const OptAssemblerData &data, const Eigen::MatrixXd &prev_grad_u_i, Eigen::MatrixXd &stress, Eigen::MatrixXd &result) const |
| virtual void | compute_stress_prev_grad (const OptAssemblerData &data, const Eigen::MatrixXd &prev_grad_u_i, Eigen::MatrixXd &result) const |
| virtual std::map< std::string, ParamFunc > | parameters () const =0 |
| virtual VectorNd | compute_rhs (const AutodiffHessianPt &pt) const |
| virtual Eigen::Matrix< AutodiffScalarGrad, Eigen::Dynamic, 1, 0, 3, 1 > | kernel (const int dim, const AutodiffGradPt &rvect, const AutodiffScalarGrad &r) const |
| void | set_materials (const std::vector< int > &body_ids, const json &body_params, const Units &units) |
| virtual void | update_lame_params (const Eigen::MatrixXd &lambdas, const Eigen::MatrixXd &mus) |
| virtual bool | is_fluid () const |
Public Member Functions inherited from polyfem::assembler::NLAssembler | |
| virtual | ~NLAssembler ()=default |
| double | assemble_energy (const bool is_volume, const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &gbases, const AssemblyValsCache &cache, const double t, const double dt, const Eigen::MatrixXd &displacement, const Eigen::MatrixXd &displacement_prev) const override |
| Eigen::VectorXd | assemble_energy_per_element (const bool is_volume, const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &gbases, const AssemblyValsCache &cache, const double t, const double dt, const Eigen::MatrixXd &displacement, const Eigen::MatrixXd &displacement_prev) const override |
| void | assemble_gradient (const bool is_volume, const int n_basis, const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &gbases, const AssemblyValsCache &cache, const double t, const double dt, const Eigen::MatrixXd &displacement, const Eigen::MatrixXd &displacement_prev, Eigen::MatrixXd &rhs) const override |
| void | assemble_hessian (const bool is_volume, const int n_basis, const bool project_to_psd, const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &gbases, const AssemblyValsCache &cache, const double t, const double dt, const Eigen::MatrixXd &displacement, const Eigen::MatrixXd &displacement_prev, utils::MatrixCache &mat_cache, StiffnessMatrix &grad) const override |
| virtual bool | is_linear () const override |
Protected Member Functions | |
| virtual Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3 > | gradient (const RowVectorNd &p, const double t, const int el_id, const Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3 > &F) const |
| virtual Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, 9, 9 > | hessian (const RowVectorNd &p, const double t, const int el_id, const Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3 > &F) const |
Protected Attributes | |
| AutodiffType | autodiff_type_ = AutodiffType::STRESS |
Protected Attributes inherited from polyfem::assembler::ElasticityAssembler | |
| bool | use_robust_jacobian = false |
Protected Attributes inherited from polyfem::assembler::Assembler | |
| int | size_ = -1 |
Private Member Functions | |
| template<typename T > | |
| T | compute_energy_aux (const NonLinearAssemblerData &data) const |
| Eigen::MatrixXd | assemble_hessian_full_ad (const NonLinearAssemblerData &data) const |
| Eigen::VectorXd | assemble_gradient_full_ad (const NonLinearAssemblerData &data) const |
| Eigen::MatrixXd | assemble_hessian_stress_ad (const NonLinearAssemblerData &data) const |
| Eigen::VectorXd | assemble_gradient_stress_ad (const NonLinearAssemblerData &data) const |
| Eigen::MatrixXd | assemble_hessian_stress_noad (const NonLinearAssemblerData &data) const |
| Eigen::VectorXd | assemble_gradient_stress_noad (const NonLinearAssemblerData &data) const |
| template<int n_basis, int dim> | |
| void | compute_gradient_from_stress (const NonLinearAssemblerData &data, Eigen::VectorXd &res) const |
| template<int n_basis, int dim> | |
| void | compute_gradient_from_stress_noad (const NonLinearAssemblerData &data, Eigen::VectorXd &res) const |
| template<int n_basis, int dim> | |
| void | compute_hessian_from_stress (const NonLinearAssemblerData &data, Eigen::MatrixXd &H) const |
| template<int n_basis, int dim> | |
| void | compute_hessian_from_stress_noad (const NonLinearAssemblerData &data, Eigen::MatrixXd &H) const |
| template<int dim> | |
| Eigen::Matrix< double, dim *dim, dim > | compute_B_block (const Eigen::Matrix< double, 1, dim > &g) const |
Additional Inherited Members | |
Public Types inherited from polyfem::assembler::Assembler | |
| typedef std::pair< std::string, Eigen::MatrixXd > | NamedMatrix |
| typedef std::function< double(const RowVectorNd &, const RowVectorNd &, double, int)> | ParamFunc |
Definition at line 22 of file GenericElastic.hpp.
| polyfem::assembler::GenericElastic< Derived >::GenericElastic | ( | ) |
Definition at line 34 of file GenericElastic.cpp.
|
virtualdefault |
|
overridepure virtual |
Reimplemented from polyfem::assembler::Assembler.
Implemented in polyfem::assembler::ActiveFiber, polyfem::assembler::AMIPSEnergy, polyfem::assembler::GenericFiber< FiberModel >, polyfem::assembler::GenericFiber< ActiveFiber >, polyfem::assembler::GenericFiber< HGOFiber >, polyfem::assembler::HGOFiber, polyfem::assembler::IsochoricNeoHookean, polyfem::assembler::MooneyRivlin3ParamElasticity, polyfem::assembler::MooneyRivlinElasticity, polyfem::assembler::NeoHookeanAutodiff, polyfem::assembler::UnconstrainedOgdenElasticity, polyfem::assembler::IncompressibleOgdenElasticity, and polyfem::assembler::VolumePenalty.
|
inlineoverridevirtual |
Implements polyfem::assembler::ElasticityAssembler.
Definition at line 65 of file GenericElastic.hpp.
|
overridevirtual |
Implements polyfem::assembler::NLAssembler.
Definition at line 113 of file GenericElastic.cpp.
References polyfem::assembler::FULL, and polyfem::assembler::STRESS.
|
private |
Definition at line 138 of file GenericElastic.cpp.
|
private |
Definition at line 157 of file GenericElastic.cpp.
References polyfem::assembler::ElementAssemblyValues::basis_values, and polyfem::assembler::NonLinearAssemblerData::vals.
|
private |
Definition at line 227 of file GenericElastic.cpp.
References polyfem::assembler::ElementAssemblyValues::basis_values, and polyfem::assembler::NonLinearAssemblerData::vals.
|
overridevirtual |
Implements polyfem::assembler::NLAssembler.
Definition at line 297 of file GenericElastic.cpp.
References polyfem::assembler::FULL, and polyfem::assembler::STRESS.
|
private |
Definition at line 322 of file GenericElastic.cpp.
References polyfem::assembler::ElementAssemblyValues::basis_values, polyfem::hessian_from_energy(), and polyfem::assembler::NonLinearAssemblerData::vals.
|
private |
Definition at line 340 of file GenericElastic.cpp.
References polyfem::assembler::ElementAssemblyValues::basis_values, and polyfem::assembler::NonLinearAssemblerData::vals.
|
private |
Definition at line 418 of file GenericElastic.cpp.
|
overridevirtual |
Implements polyfem::assembler::ElasticityAssembler.
Definition at line 39 of file GenericElastic.cpp.
|
private |
Definition at line 21 of file GenericElastic.cpp.
|
overridevirtual |
Implements polyfem::assembler::NLAssembler.
Definition at line 107 of file GenericElastic.cpp.
|
inlineprivate |
Definition at line 93 of file GenericElastic.hpp.
References polyfem::compute_disp_grad_at_quad(), polyfem::assembler::NonLinearAssemblerData::da, polyfem::assembler::GenericElastic< Derived >::derived(), polyfem::assembler::ElementAssemblyValues::element_id, polyfem::get_local_disp(), polyfem::assembler::ElementAssemblyValues::jac_it, polyfem::assembler::GenericElastic< Derived >::real_def_grad(), polyfem::assembler::Assembler::size(), polyfem::assembler::NonLinearAssemblerData::t, val, polyfem::assembler::ElementAssemblyValues::val, and polyfem::assembler::NonLinearAssemblerData::vals.
|
inlineprivate |
Definition at line 144 of file GenericElastic.hpp.
References polyfem::assembler::ElementAssemblyValues::basis_values, polyfem::assembler::NonLinearAssemblerData::da, polyfem::assembler::GenericElastic< Derived >::derived(), polyfem::assembler::ElementAssemblyValues::element_id, polyfem::assembler::ElementAssemblyValues::jac_it, polyfem::assembler::GenericElastic< Derived >::real_def_grad(), DiffScalarBase::setVariableCount(), polyfem::assembler::Assembler::size(), polyfem::assembler::NonLinearAssemblerData::t, val, polyfem::assembler::ElementAssemblyValues::val, polyfem::assembler::NonLinearAssemblerData::vals, and polyfem::assembler::NonLinearAssemblerData::x.
|
inlineprivate |
Definition at line 216 of file GenericElastic.hpp.
References polyfem::assembler::ElementAssemblyValues::basis_values, polyfem::assembler::NonLinearAssemblerData::da, polyfem::assembler::GenericElastic< Derived >::derived(), polyfem::assembler::ElementAssemblyValues::element_id, polyfem::assembler::ElementAssemblyValues::jac_it, polyfem::assembler::GenericElastic< Derived >::real_def_grad(), polyfem::assembler::Assembler::size(), polyfem::assembler::NonLinearAssemblerData::t, polyfem::assembler::ElementAssemblyValues::val, polyfem::assembler::NonLinearAssemblerData::vals, and polyfem::assembler::NonLinearAssemblerData::x.
|
inlineprivate |
Definition at line 270 of file GenericElastic.hpp.
References polyfem::assembler::ElementAssemblyValues::basis_values, polyfem::assembler::NonLinearAssemblerData::da, polyfem::assembler::GenericElastic< Derived >::derived(), polyfem::assembler::ElementAssemblyValues::element_id, polyfem::assembler::ElementAssemblyValues::jac_it, polyfem::assembler::GenericElastic< Derived >::real_def_grad(), DiffScalarBase::setVariableCount(), polyfem::assembler::Assembler::size(), polyfem::assembler::NonLinearAssemblerData::t, val, polyfem::assembler::ElementAssemblyValues::val, polyfem::assembler::NonLinearAssemblerData::vals, and polyfem::assembler::NonLinearAssemblerData::x.
|
inlineprivate |
Definition at line 355 of file GenericElastic.hpp.
References polyfem::assembler::ElementAssemblyValues::basis_values, polyfem::assembler::NonLinearAssemblerData::da, polyfem::assembler::GenericElastic< Derived >::derived(), polyfem::assembler::ElementAssemblyValues::element_id, polyfem::assembler::ElementAssemblyValues::jac_it, polyfem::assembler::GenericElastic< Derived >::real_def_grad(), polyfem::assembler::Assembler::size(), polyfem::assembler::NonLinearAssemblerData::t, polyfem::assembler::ElementAssemblyValues::val, polyfem::assembler::NonLinearAssemblerData::vals, and polyfem::assembler::NonLinearAssemblerData::x.
|
overridevirtual |
Reimplemented from polyfem::assembler::Assembler.
Definition at line 496 of file GenericElastic.cpp.
References polyfem::assembler::OptAssemblerData::el_id, polyfem::F, polyfem::assembler::OptAssemblerData::global_pts, polyfem::assembler::OptAssemblerData::grad_u_i, polyfem::assembler::OptAssemblerData::local_pts, DiffScalarBase::setVariableCount(), and polyfem::assembler::OptAssemblerData::t.
|
overridevirtual |
Reimplemented from polyfem::assembler::Assembler.
Definition at line 536 of file GenericElastic.cpp.
References polyfem::assembler::OptAssemblerData::el_id, polyfem::F, polyfem::assembler::OptAssemblerData::global_pts, polyfem::assembler::OptAssemblerData::grad_u_i, polyfem::assembler::OptAssemblerData::local_pts, DiffScalarBase::setVariableCount(), and polyfem::assembler::OptAssemblerData::t.
|
overridevirtual |
Reimplemented from polyfem::assembler::Assembler.
Definition at line 575 of file GenericElastic.cpp.
References polyfem::assembler::OptAssemblerData::el_id, polyfem::F, polyfem::assembler::OptAssemblerData::global_pts, polyfem::assembler::OptAssemblerData::grad_u_i, polyfem::assembler::OptAssemblerData::local_pts, DiffScalarBase::setVariableCount(), and polyfem::assembler::OptAssemblerData::t.
|
inline |
Returns this as a reference to derived class.
Definition at line 58 of file GenericElastic.hpp.
Referenced by polyfem::assembler::GenericElastic< Derived >::compute_energy_aux(), polyfem::assembler::GenericElastic< Derived >::compute_gradient_from_stress(), polyfem::assembler::GenericElastic< Derived >::compute_gradient_from_stress_noad(), polyfem::assembler::GenericElastic< Derived >::compute_hessian_from_stress(), and polyfem::assembler::GenericElastic< Derived >::compute_hessian_from_stress_noad().
|
inline |
Returns this as a const reference to derived class.
Definition at line 60 of file GenericElastic.hpp.
|
inlineprotectedvirtual |
Reimplemented in polyfem::assembler::AMIPSEnergy, and polyfem::assembler::VolumePenalty.
Definition at line 72 of file GenericElastic.hpp.
References polyfem::log_and_throw_error().
|
inlineprotectedvirtual |
Reimplemented in polyfem::assembler::AMIPSEnergy, and polyfem::assembler::VolumePenalty.
Definition at line 81 of file GenericElastic.hpp.
References polyfem::log_and_throw_error().
|
inlinevirtual |
Reimplemented in polyfem::assembler::AMIPSEnergy.
Definition at line 67 of file GenericElastic.hpp.
Referenced by polyfem::assembler::GenericElastic< Derived >::compute_energy_aux(), polyfem::assembler::GenericElastic< Derived >::compute_gradient_from_stress(), polyfem::assembler::GenericElastic< Derived >::compute_gradient_from_stress_noad(), polyfem::assembler::GenericElastic< Derived >::compute_hessian_from_stress(), and polyfem::assembler::GenericElastic< Derived >::compute_hessian_from_stress_noad().
|
protected |
Definition at line 70 of file GenericElastic.hpp.