PolyFEM
|
#include <Assembler.hpp>
Public Member Functions | |
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 |
virtual bool | allow_inversion () const =0 |
virtual 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 =0 |
![]() | |
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 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 |
virtual 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 |
virtual 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 |
virtual 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 |
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_multiply_mat (const OptAssemblerData &data, const Eigen::MatrixXd &mat, Eigen::MatrixXd &stress, Eigen::MatrixXd &result) const |
virtual void | compute_stress_grad_multiply_stress (const OptAssemblerData &data, Eigen::MatrixXd &stress, Eigen::MatrixXd &result) const |
virtual void | compute_stress_grad_multiply_vect (const OptAssemblerData &data, const Eigen::MatrixXd &vect, Eigen::MatrixXd &stress, Eigen::MatrixXd &result) 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 | add_multimaterial (const int index, const json ¶ms, const Units &units) |
virtual void | update_lame_params (const Eigen::MatrixXd &lambdas, const Eigen::MatrixXd &mus) |
virtual bool | is_linear () const =0 |
virtual bool | is_fluid () const |
Protected Attributes | |
bool | use_robust_jacobian = false |
![]() | |
int | size_ = -1 |
Additional Inherited Members | |
![]() | |
typedef std::pair< std::string, Eigen::MatrixXd > | NamedMatrix |
typedef std::function< double(const RowVectorNd &, const RowVectorNd &, double, int)> | ParamFunc |
Definition at line 301 of file Assembler.hpp.
|
inline |
Definition at line 304 of file Assembler.hpp.
|
virtualdefault |
|
pure virtual |
Implemented in polyfem::assembler::AMIPSEnergy, polyfem::assembler::FixedCorotational, polyfem::assembler::GenericElastic< Derived >, polyfem::assembler::GenericElastic< AMIPSEnergyAutodiff >, polyfem::assembler::GenericElastic< IncompressibleOgdenElasticity >, polyfem::assembler::GenericElastic< MooneyRivlin3ParamElasticity >, polyfem::assembler::GenericElastic< MooneyRivlinElasticity >, polyfem::assembler::GenericElastic< NeoHookeanAutodiff >, polyfem::assembler::GenericElastic< UnconstrainedOgdenElasticity >, polyfem::assembler::HookeLinearElasticity, polyfem::assembler::IncompressibleLinearElasticityDispacement, polyfem::assembler::LinearElasticity, polyfem::assembler::MooneyRivlin3ParamSymbolic, polyfem::assembler::MultiModel, polyfem::assembler::NeoHookeanElasticity, polyfem::assembler::SaintVenantElasticity, and polyfem::assembler::SumModel.
|
pure virtual |
Implemented in polyfem::assembler::AMIPSEnergy, polyfem::assembler::FixedCorotational, polyfem::assembler::GenericElastic< Derived >, polyfem::assembler::GenericElastic< AMIPSEnergyAutodiff >, polyfem::assembler::GenericElastic< IncompressibleOgdenElasticity >, polyfem::assembler::GenericElastic< MooneyRivlin3ParamElasticity >, polyfem::assembler::GenericElastic< MooneyRivlinElasticity >, polyfem::assembler::GenericElastic< NeoHookeanAutodiff >, polyfem::assembler::GenericElastic< UnconstrainedOgdenElasticity >, polyfem::assembler::HookeLinearElasticity, polyfem::assembler::IncompressibleLinearElasticityDispacement, polyfem::assembler::LinearElasticity, polyfem::assembler::MooneyRivlin3ParamSymbolic, polyfem::assembler::MultiModel, polyfem::assembler::NeoHookeanElasticity, polyfem::assembler::SaintVenantElasticity, and polyfem::assembler::SumModel.
Referenced by compute_stress_tensor(), and compute_von_mises_stresses().
|
inlineoverridevirtual |
Reimplemented from polyfem::assembler::Assembler.
Definition at line 311 of file Assembler.hpp.
References compute_von_mises_stresses().
|
inline |
Definition at line 340 of file Assembler.hpp.
References assign_stress_tensor(), and polyfem::assembler::Assembler::size().
Referenced by compute_tensor_value().
|
inlineoverridevirtual |
Reimplemented from polyfem::assembler::Assembler.
Definition at line 322 of file Assembler.hpp.
References polyfem::CAUCHY, compute_stress_tensor(), polyfem::F, polyfem::PK1, and polyfem::PK2.
|
inline |
Definition at line 351 of file Assembler.hpp.
References assign_stress_tensor(), polyfem::CAUCHY, and polyfem::von_mises_stress_for_stress_tensor().
Referenced by compute_scalar_value().
|
inlineoverridevirtual |
Reimplemented from polyfem::assembler::Assembler.
Definition at line 361 of file Assembler.hpp.
|
inlineoverridevirtual |
Reimplemented from polyfem::assembler::Assembler.
Definition at line 362 of file Assembler.hpp.
void polyfem::assembler::ElasticityAssembler::set_use_robust_jacobian | ( | ) |
Definition at line 773 of file Assembler.cpp.
References polyfem::logger(), and use_robust_jacobian.
|
protected |
Definition at line 372 of file Assembler.hpp.
Referenced by polyfem::assembler::NeoHookeanElasticity::compute_energy_aux(), polyfem::assembler::NeoHookeanElasticity::compute_energy_aux_gradient_fast(), polyfem::assembler::NeoHookeanElasticity::compute_energy_hessian_aux_fast(), and set_use_robust_jacobian().