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

Local nonlinear assembler for an arbitrary number of FE spaces. More...

#include <Assembler.hpp>

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

Public Member Functions

virtual ~MultiSpacesNLAssembler ()=default
 
virtual double compute_energy (const MultiSpacesNLAssemblerData &data) const =0
 
virtual Eigen::VectorXd assemble_gradient (const MultiSpacesNLAssemblerData &data) const =0
 
virtual Eigen::MatrixXd assemble_hessian (const MultiSpacesNLAssemblerData &data, int row_space, int col_space) const =0
 
bool is_linear () const override
 
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
 
- 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 compute_scalar_value (const OutputData &data, std::vector< NamedMatrix > &result) const
 
virtual void compute_tensor_value (const OutputData &data, std::vector< NamedMatrix > &result) 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, const std::string &root_path)
 
virtual void add_multimaterial (const int index, const json &params, const Units &units, const std::string &root_path)
 
virtual void update_lame_params (const Eigen::MatrixXd &lambdas, const Eigen::MatrixXd &mus)
 
virtual bool is_solution_displacement () const
 
virtual bool is_fluid () const
 
virtual bool is_tensor () 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
 
- Protected Attributes inherited from polyfem::assembler::Assembler
int size_ = -1
 

Detailed Description

Local nonlinear assembler for an arbitrary number of FE spaces.

Unlike NLAssembler and MixedNLAssembler, this class never performs global assembly. The owning form is responsible for element traversal and gather/scatter.

Definition at line 301 of file Assembler.hpp.

Constructor & Destructor Documentation

◆ ~MultiSpacesNLAssembler()

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

Member Function Documentation

◆ assemble_gradient() [1/2]

virtual void polyfem::assembler::Assembler::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
inlinevirtual

Reimplemented from polyfem::assembler::Assembler.

Definition at line 102 of file Assembler.hpp.

◆ assemble_gradient() [2/2]

virtual Eigen::VectorXd polyfem::assembler::MultiSpacesNLAssembler::assemble_gradient ( const MultiSpacesNLAssemblerData data) const
pure virtual

◆ assemble_hessian() [1/2]

virtual void polyfem::assembler::Assembler::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
inlinevirtual

Reimplemented from polyfem::assembler::Assembler.

Definition at line 115 of file Assembler.hpp.

◆ assemble_hessian() [2/2]

virtual Eigen::MatrixXd polyfem::assembler::MultiSpacesNLAssembler::assemble_hessian ( const MultiSpacesNLAssemblerData data,
int  row_space,
int  col_space 
) const
pure virtual

◆ compute_energy()

virtual double polyfem::assembler::MultiSpacesNLAssembler::compute_energy ( const MultiSpacesNLAssemblerData data) const
pure virtual

◆ is_linear()

bool polyfem::assembler::MultiSpacesNLAssembler::is_linear ( ) const
inlineoverridevirtual

Implements polyfem::assembler::Assembler.

Definition at line 316 of file Assembler.hpp.


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