PolyFEM
Loading...
Searching...
No Matches
polyfem::assembler::ElasticityAssembler Class Referenceabstract

#include <Assembler.hpp>

Inheritance diagram for polyfem::assembler::ElasticityAssembler:
[legend]
Collaboration diagram for polyfem::assembler::ElasticityAssembler:
[legend]

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
 
- 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 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, 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 add_multimaterial (const int index, const json &params, 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 Member Functions

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
 

Protected Attributes

bool use_robust_jacobian = false
 
- Protected Attributes inherited from polyfem::assembler::Assembler
int size_ = -1
 

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

Definition at line 302 of file Assembler.hpp.

Constructor & Destructor Documentation

◆ ElasticityAssembler()

polyfem::assembler::ElasticityAssembler::ElasticityAssembler ( )
inline

Definition at line 305 of file Assembler.hpp.

◆ ~ElasticityAssembler()

virtual polyfem::assembler::ElasticityAssembler::~ElasticityAssembler ( )
virtualdefault

Member Function Documentation

◆ allow_inversion()

◆ assign_stress_tensor()

◆ compute_scalar_value()

void polyfem::assembler::ElasticityAssembler::compute_scalar_value ( const OutputData data,
std::vector< NamedMatrix > &  result 
) const
inlineoverridevirtual

Reimplemented from polyfem::assembler::Assembler.

Definition at line 311 of file Assembler.hpp.

References compute_von_mises_stresses().

Here is the call graph for this function:

◆ compute_stress_tensor()

void polyfem::assembler::ElasticityAssembler::compute_stress_tensor ( const OutputData data,
const ElasticityTensorType type,
Eigen::MatrixXd &  stresses 
) const
inline

Definition at line 340 of file Assembler.hpp.

References assign_stress_tensor(), and polyfem::assembler::Assembler::size().

Referenced by compute_tensor_value().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ compute_tensor_value()

void polyfem::assembler::ElasticityAssembler::compute_tensor_value ( const OutputData data,
std::vector< NamedMatrix > &  result 
) const
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.

Here is the call graph for this function:

◆ compute_von_mises_stresses()

void polyfem::assembler::ElasticityAssembler::compute_von_mises_stresses ( const OutputData data,
Eigen::MatrixXd &  stresses 
) const
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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_solution_displacement()

bool polyfem::assembler::ElasticityAssembler::is_solution_displacement ( ) const
inlineoverridevirtual

Reimplemented from polyfem::assembler::Assembler.

Definition at line 361 of file Assembler.hpp.

◆ is_tensor()

bool polyfem::assembler::ElasticityAssembler::is_tensor ( ) const
inlineoverridevirtual

Reimplemented from polyfem::assembler::Assembler.

Definition at line 362 of file Assembler.hpp.

◆ set_use_robust_jacobian()

void polyfem::assembler::ElasticityAssembler::set_use_robust_jacobian ( )
inline

Definition at line 308 of file Assembler.hpp.

References use_robust_jacobian.

Member Data Documentation

◆ use_robust_jacobian


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