PolyFEM
Loading...
Searching...
No Matches
polyfem::assembler::GenericElastic< Derived > Class Template Referenceabstract

#include <GenericElastic.hpp>

Inheritance diagram for polyfem::assembler::GenericElastic< Derived >:
[legend]
Collaboration diagram for polyfem::assembler::GenericElastic< Derived >:
[legend]

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 &params, 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, ParamFuncparameters () 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 >
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
 

Detailed Description

template<typename Derived>
class polyfem::assembler::GenericElastic< Derived >

Definition at line 22 of file GenericElastic.hpp.

Constructor & Destructor Documentation

◆ GenericElastic()

template<typename Derived >
polyfem::assembler::GenericElastic< Derived >::GenericElastic ( )

Definition at line 34 of file GenericElastic.cpp.

◆ ~GenericElastic()

template<typename Derived >
virtual polyfem::assembler::GenericElastic< Derived >::~GenericElastic ( )
virtualdefault

Member Function Documentation

◆ add_multimaterial()

◆ allow_inversion()

template<typename Derived >
bool polyfem::assembler::GenericElastic< Derived >::allow_inversion ( ) const
inlineoverridevirtual

Implements polyfem::assembler::ElasticityAssembler.

Definition at line 65 of file GenericElastic.hpp.

◆ assemble_gradient()

template<typename Derived >
Eigen::VectorXd polyfem::assembler::GenericElastic< Derived >::assemble_gradient ( const NonLinearAssemblerData data) const
overridevirtual

◆ assemble_gradient_full_ad()

template<typename Derived >
Eigen::VectorXd polyfem::assembler::GenericElastic< Derived >::assemble_gradient_full_ad ( const NonLinearAssemblerData data) const
private

Definition at line 138 of file GenericElastic.cpp.

◆ assemble_gradient_stress_ad()

template<typename Derived >
Eigen::VectorXd polyfem::assembler::GenericElastic< Derived >::assemble_gradient_stress_ad ( const NonLinearAssemblerData data) const
private

◆ assemble_gradient_stress_noad()

template<typename Derived >
Eigen::VectorXd polyfem::assembler::GenericElastic< Derived >::assemble_gradient_stress_noad ( const NonLinearAssemblerData data) const
private

◆ assemble_hessian()

template<typename Derived >
Eigen::MatrixXd polyfem::assembler::GenericElastic< Derived >::assemble_hessian ( const NonLinearAssemblerData data) const
overridevirtual

◆ assemble_hessian_full_ad()

template<typename Derived >
Eigen::MatrixXd polyfem::assembler::GenericElastic< Derived >::assemble_hessian_full_ad ( const NonLinearAssemblerData data) const
private

Definition at line 322 of file GenericElastic.cpp.

References polyfem::assembler::ElementAssemblyValues::basis_values, polyfem::hessian_from_energy(), and polyfem::assembler::NonLinearAssemblerData::vals.

Here is the call graph for this function:

◆ assemble_hessian_stress_ad()

template<typename Derived >
Eigen::MatrixXd polyfem::assembler::GenericElastic< Derived >::assemble_hessian_stress_ad ( const NonLinearAssemblerData data) const
private

◆ assemble_hessian_stress_noad()

template<typename Derived >
Eigen::MatrixXd polyfem::assembler::GenericElastic< Derived >::assemble_hessian_stress_noad ( const NonLinearAssemblerData data) const
private

Definition at line 418 of file GenericElastic.cpp.

◆ assign_stress_tensor()

template<typename Derived >
void polyfem::assembler::GenericElastic< Derived >::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
overridevirtual

Implements polyfem::assembler::ElasticityAssembler.

Definition at line 39 of file GenericElastic.cpp.

◆ compute_B_block()

template<typename Derived >
template<int dim>
Eigen::Matrix< double, dim *dim, dim > polyfem::assembler::GenericElastic< Derived >::compute_B_block ( const Eigen::Matrix< double, 1, dim > &  g) const
private

Definition at line 21 of file GenericElastic.cpp.

◆ compute_energy()

template<typename Derived >
double polyfem::assembler::GenericElastic< Derived >::compute_energy ( const NonLinearAssemblerData data) const
overridevirtual

Implements polyfem::assembler::NLAssembler.

Definition at line 107 of file GenericElastic.cpp.

◆ compute_energy_aux()

◆ compute_gradient_from_stress()

◆ compute_gradient_from_stress_noad()

◆ compute_hessian_from_stress()

◆ compute_hessian_from_stress_noad()

◆ compute_stress_grad_multiply_mat()

template<typename Derived >
void polyfem::assembler::GenericElastic< Derived >::compute_stress_grad_multiply_mat ( const OptAssemblerData data,
const Eigen::MatrixXd &  mat,
Eigen::MatrixXd &  stress,
Eigen::MatrixXd &  result 
) const
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.

Here is the call graph for this function:

◆ compute_stress_grad_multiply_stress()

template<typename Derived >
void polyfem::assembler::GenericElastic< Derived >::compute_stress_grad_multiply_stress ( const OptAssemblerData data,
Eigen::MatrixXd &  stress,
Eigen::MatrixXd &  result 
) const
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.

Here is the call graph for this function:

◆ compute_stress_grad_multiply_vect()

template<typename Derived >
void polyfem::assembler::GenericElastic< Derived >::compute_stress_grad_multiply_vect ( const OptAssemblerData data,
const Eigen::MatrixXd &  vect,
Eigen::MatrixXd &  stress,
Eigen::MatrixXd &  result 
) const
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.

Here is the call graph for this function:

◆ derived() [1/2]

template<typename Derived >
Derived & polyfem::assembler::GenericElastic< Derived >::derived ( )
inline

◆ derived() [2/2]

template<typename Derived >
const Derived & polyfem::assembler::GenericElastic< Derived >::derived ( ) const
inline

Returns this as a const reference to derived class.

Definition at line 60 of file GenericElastic.hpp.

◆ gradient()

template<typename Derived >
virtual Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3 > polyfem::assembler::GenericElastic< Derived >::gradient ( const RowVectorNd p,
const double  t,
const int  el_id,
const Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3 > &  F 
) const
inlineprotectedvirtual

Reimplemented in polyfem::assembler::AMIPSEnergy, and polyfem::assembler::VolumePenalty.

Definition at line 72 of file GenericElastic.hpp.

References polyfem::log_and_throw_error().

Here is the call graph for this function:

◆ hessian()

template<typename Derived >
virtual Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, 9, 9 > polyfem::assembler::GenericElastic< Derived >::hessian ( const RowVectorNd p,
const double  t,
const int  el_id,
const Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3 > &  F 
) const
inlineprotectedvirtual

Reimplemented in polyfem::assembler::AMIPSEnergy, and polyfem::assembler::VolumePenalty.

Definition at line 81 of file GenericElastic.hpp.

References polyfem::log_and_throw_error().

Here is the call graph for this function:

◆ real_def_grad()

template<typename Derived >
virtual bool polyfem::assembler::GenericElastic< Derived >::real_def_grad ( ) const
inlinevirtual

Member Data Documentation

◆ autodiff_type_

template<typename Derived >
AutodiffType polyfem::assembler::GenericElastic< Derived >::autodiff_type_ = AutodiffType::STRESS
protected

Definition at line 70 of file GenericElastic.hpp.


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