PolyFEM
Loading...
Searching...
No Matches
polyfem::assembler::IncompressibleOgdenElasticity Class Reference

#include <OgdenElasticity.hpp>

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

Public Member Functions

 IncompressibleOgdenElasticity ()
 
void add_multimaterial (const int index, const json &params, const Units &units) override
 
const GenericMatParamscoefficients () const
 Coefficient of nth term, where n can range from 1 to 6.
 
const GenericMatParamsexpoenents () const
 Exponent of nth term, where n can range from 1 to 6.
 
const GenericMatParambulk_modulus () const
 Bulk modulus.
 
int num_terms () const
 Number of terms in the Ogden model.
 
std::string name () const override
 
std::map< std::string, ParamFuncparameters () const override
 
template<typename T >
elastic_energy (const RowVectorNd &p, const double t, const int el_id, const DefGradMatrix< T > &def_grad) const
 
- Public Member Functions inherited from polyfem::assembler::GenericElastic< IncompressibleOgdenElasticity >
 GenericElastic ()
 
virtual ~GenericElastic ()=default
 
double compute_energy (const NonLinearAssemblerData &data) const override
 
Eigen::MatrixXd assemble_hessian (const NonLinearAssemblerData &data) 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 Eigen::MatrixXd assemble_hessian (const NonLinearAssemblerData &data) const =0
 
Eigen::VectorXd assemble_gradient (const NonLinearAssemblerData &data) 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
 
virtual Eigen::VectorXd assemble_gradient (const NonLinearAssemblerData &data) const =0
 
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
 
IncompressibleOgdenElasticityderived ()
 Returns this as a reference to derived class.
 
const IncompressibleOgdenElasticityderived () const
 Returns this as a const reference to derived class.
 
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
 
- 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
 
- Public Member Functions inherited from polyfem::assembler::Assembler
virtual ~Assembler ()=default
 
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 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::ElasticityAssembler
 ElasticityAssembler ()
 
virtual ~ElasticityAssembler ()=default
 
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
 

Private Attributes

GenericMatParams coefficients_
 
GenericMatParams expoenents_
 
GenericMatParam bulk_modulus_
 

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
 
- Protected Attributes inherited from polyfem::assembler::Assembler
int size_ = -1
 

Detailed Description

Definition at line 36 of file OgdenElasticity.hpp.

Constructor & Destructor Documentation

◆ IncompressibleOgdenElasticity()

polyfem::assembler::IncompressibleOgdenElasticity::IncompressibleOgdenElasticity ( )

Definition at line 48 of file OgdenElasticity.cpp.

Member Function Documentation

◆ add_multimaterial()

void polyfem::assembler::IncompressibleOgdenElasticity::add_multimaterial ( const int  index,
const json params,
const Units units 
)
overridevirtual

Implements polyfem::assembler::GenericElastic< IncompressibleOgdenElasticity >.

Definition at line 53 of file OgdenElasticity.cpp.

References polyfem::assembler::GenericMatParam::add_multimaterial(), polyfem::assembler::GenericMatParams::add_multimaterial(), bulk_modulus_, coefficients_, expoenents_, polyfem::assembler::GenericMatParams::size(), and polyfem::Units::stress().

Referenced by polyfem::assembler::MultiModel::add_multimaterial().

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

◆ bulk_modulus()

const GenericMatParam & polyfem::assembler::IncompressibleOgdenElasticity::bulk_modulus ( ) const
inline

Bulk modulus.

Definition at line 49 of file OgdenElasticity.hpp.

References bulk_modulus_.

Referenced by parameters().

Here is the caller graph for this function:

◆ coefficients()

const GenericMatParams & polyfem::assembler::IncompressibleOgdenElasticity::coefficients ( ) const
inline

Coefficient of nth term, where n can range from 1 to 6.

Definition at line 45 of file OgdenElasticity.hpp.

References coefficients_.

Referenced by parameters().

Here is the caller graph for this function:

◆ elastic_energy()

template<typename T >
T polyfem::assembler::IncompressibleOgdenElasticity::elastic_energy ( const RowVectorNd p,
const double  t,
const int  el_id,
const DefGradMatrix< T > &  def_grad 
) const

◆ expoenents()

const GenericMatParams & polyfem::assembler::IncompressibleOgdenElasticity::expoenents ( ) const
inline

Exponent of nth term, where n can range from 1 to 6.

Definition at line 47 of file OgdenElasticity.hpp.

References expoenents_.

Referenced by parameters().

Here is the caller graph for this function:

◆ name()

std::string polyfem::assembler::IncompressibleOgdenElasticity::name ( ) const
inlineoverridevirtual

Implements polyfem::assembler::Assembler.

Definition at line 54 of file OgdenElasticity.hpp.

◆ num_terms()

int polyfem::assembler::IncompressibleOgdenElasticity::num_terms ( ) const
inline

Number of terms in the Ogden model.

Definition at line 52 of file OgdenElasticity.hpp.

References coefficients_, and polyfem::assembler::GenericMatParams::size().

Here is the call graph for this function:

◆ parameters()

std::map< std::string, Assembler::ParamFunc > polyfem::assembler::IncompressibleOgdenElasticity::parameters ( ) const
overridevirtual

Implements polyfem::assembler::Assembler.

Definition at line 61 of file OgdenElasticity.cpp.

References bulk_modulus(), coefficients(), expoenents(), and polyfem::assembler::GenericMatParams::size().

Here is the call graph for this function:

Member Data Documentation

◆ bulk_modulus_

GenericMatParam polyfem::assembler::IncompressibleOgdenElasticity::bulk_modulus_
private

Definition at line 67 of file OgdenElasticity.hpp.

Referenced by add_multimaterial(), and bulk_modulus().

◆ coefficients_

GenericMatParams polyfem::assembler::IncompressibleOgdenElasticity::coefficients_
private

Definition at line 65 of file OgdenElasticity.hpp.

Referenced by add_multimaterial(), coefficients(), and num_terms().

◆ expoenents_

GenericMatParams polyfem::assembler::IncompressibleOgdenElasticity::expoenents_
private

Definition at line 66 of file OgdenElasticity.hpp.

Referenced by add_multimaterial(), and expoenents().


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