|
PolyFEM
|
#include <Assembler.hpp>
Public Types | |
| using | SolutionSplitter = std::function< void(const Eigen::MatrixXd &x, Eigen::MatrixXd &x_phi, Eigen::MatrixXd &x_psi)> |
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 |
Public Member Functions | |
| virtual | ~MixedNLAssembler ()=default |
| double | assemble_energy (const bool is_volume, const int n_psi_basis, const int n_phi_basis, const std::vector< basis::ElementBases > &psi_bases, const std::vector< basis::ElementBases > &phi_bases, const std::vector< basis::ElementBases > &gbases, const AssemblyValsCache &psi_cache, const AssemblyValsCache &phi_cache, const double t, const double dt, const Eigen::MatrixXd &x, const Eigen::MatrixXd &x_prev, const SolutionSplitter &split_solution) const |
| Eigen::VectorXd | assemble_energy_per_element (const bool is_volume, const int n_psi_basis, const int n_phi_basis, const std::vector< basis::ElementBases > &psi_bases, const std::vector< basis::ElementBases > &phi_bases, const std::vector< basis::ElementBases > &gbases, const AssemblyValsCache &psi_cache, const AssemblyValsCache &phi_cache, const double t, const double dt, const Eigen::MatrixXd &x, const Eigen::MatrixXd &x_prev, const SolutionSplitter &split_solution) const |
| void | assemble_gradient (const bool is_volume, const int n_psi_basis, const int n_phi_basis, const std::vector< basis::ElementBases > &psi_bases, const std::vector< basis::ElementBases > &phi_bases, const std::vector< basis::ElementBases > &gbases, const AssemblyValsCache &psi_cache, const AssemblyValsCache &phi_cache, const double t, const double dt, const Eigen::MatrixXd &x, const Eigen::MatrixXd &x_prev, const SolutionSplitter &split_solution, Eigen::MatrixXd &grad) const |
| void | assemble_hessian (const bool is_volume, const int n_psi_basis, const int n_phi_basis, const bool project_to_psd, const std::vector< basis::ElementBases > &psi_bases, const std::vector< basis::ElementBases > &phi_bases, const std::vector< basis::ElementBases > &gbases, const AssemblyValsCache &psi_cache, const AssemblyValsCache &phi_cache, const double t, const double dt, const Eigen::MatrixXd &x, const Eigen::MatrixXd &x_prev, const SolutionSplitter &split_solution, utils::MatrixCache &mat_cache, StiffnessMatrix &hessian) const |
| bool | is_linear () const override |
| 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 |
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_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, 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, const std::string &root_path) |
| virtual void | add_multimaterial (const int index, const json ¶ms, 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 |
Protected Member Functions | |
| virtual int | rows () const =0 |
| virtual int | cols () const =0 |
| virtual double | compute_energy (const MixedNonLinearAssemblerData &data) const =0 |
| virtual Eigen::VectorXd | compute_gradient (const MixedNonLinearAssemblerData &data) const =0 |
| virtual Eigen::MatrixXd | compute_hessian (const MixedNonLinearAssemblerData &data) const =0 |
Additional Inherited Members | |
Protected Attributes inherited from polyfem::assembler::Assembler | |
| int | size_ = -1 |
Definition at line 208 of file Assembler.hpp.
| using polyfem::assembler::MixedNLAssembler::SolutionSplitter = std::function<void( const Eigen::MatrixXd &x, Eigen::MatrixXd &x_phi, Eigen::MatrixXd &x_psi)> |
Definition at line 211 of file Assembler.hpp.
|
virtualdefault |
| double polyfem::assembler::MixedNLAssembler::assemble_energy | ( | const bool | is_volume, |
| const int | n_psi_basis, | ||
| const int | n_phi_basis, | ||
| const std::vector< basis::ElementBases > & | psi_bases, | ||
| const std::vector< basis::ElementBases > & | phi_bases, | ||
| const std::vector< basis::ElementBases > & | gbases, | ||
| const AssemblyValsCache & | psi_cache, | ||
| const AssemblyValsCache & | phi_cache, | ||
| const double | t, | ||
| const double | dt, | ||
| const Eigen::MatrixXd & | x, | ||
| const Eigen::MatrixXd & | x_prev, | ||
| const SolutionSplitter & | split_solution | ||
| ) | const |
Definition at line 577 of file Assembler.cpp.
References cols(), compute_energy(), polyfem::utils::create_thread_storage(), polyfem::assembler::ElementAssemblyValues::det, polyfem::utils::get_local_thread_storage(), polyfem::utils::maybe_parallel_for(), polyfem::assembler::ElementAssemblyValues::quadrature, quadrature, rows(), polyfem::assembler::Assembler::size(), polyfem::quadrature::Quadrature::weights, and x.
Referenced by assemble_energy_per_element(), and polyfem::solver::MixedAssemblerForm::value_unweighted().
|
inlinevirtual |
Reimplemented from polyfem::assembler::Assembler.
Definition at line 81 of file Assembler.hpp.
| Eigen::VectorXd polyfem::assembler::MixedNLAssembler::assemble_energy_per_element | ( | const bool | is_volume, |
| const int | n_psi_basis, | ||
| const int | n_phi_basis, | ||
| const std::vector< basis::ElementBases > & | psi_bases, | ||
| const std::vector< basis::ElementBases > & | phi_bases, | ||
| const std::vector< basis::ElementBases > & | gbases, | ||
| const AssemblyValsCache & | psi_cache, | ||
| const AssemblyValsCache & | phi_cache, | ||
| const double | t, | ||
| const double | dt, | ||
| const Eigen::MatrixXd & | x, | ||
| const Eigen::MatrixXd & | x_prev, | ||
| const SolutionSplitter & | split_solution | ||
| ) | const |
Definition at line 637 of file Assembler.cpp.
References assemble_energy(), cols(), compute_energy(), polyfem::utils::create_thread_storage(), polyfem::assembler::ElementAssemblyValues::det, polyfem::utils::get_local_thread_storage(), polyfem::utils::maybe_parallel_for(), polyfem::assembler::ElementAssemblyValues::quadrature, quadrature, rows(), polyfem::assembler::Assembler::size(), polyfem::quadrature::Quadrature::weights, and x.
Referenced by polyfem::solver::MixedAssemblerForm::value_per_element_unweighted().
|
inlinevirtual |
Reimplemented from polyfem::assembler::Assembler.
Definition at line 91 of file Assembler.hpp.
|
inlinevirtual |
Reimplemented from polyfem::assembler::Assembler.
Definition at line 102 of file Assembler.hpp.
| void polyfem::assembler::MixedNLAssembler::assemble_gradient | ( | const bool | is_volume, |
| const int | n_psi_basis, | ||
| const int | n_phi_basis, | ||
| const std::vector< basis::ElementBases > & | psi_bases, | ||
| const std::vector< basis::ElementBases > & | phi_bases, | ||
| const std::vector< basis::ElementBases > & | gbases, | ||
| const AssemblyValsCache & | psi_cache, | ||
| const AssemblyValsCache & | phi_cache, | ||
| const double | t, | ||
| const double | dt, | ||
| const Eigen::MatrixXd & | x, | ||
| const Eigen::MatrixXd & | x_prev, | ||
| const SolutionSplitter & | split_solution, | ||
| Eigen::MatrixXd & | grad | ||
| ) | const |
Definition at line 703 of file Assembler.cpp.
References polyfem::assembler::ElementAssemblyValues::basis_values, cols(), compute_gradient(), polyfem::utils::create_thread_storage(), polyfem::assembler::ElementAssemblyValues::det, polyfem::utils::get_local_thread_storage(), polyfem::utils::maybe_parallel_for(), polyfem::assembler::ElementAssemblyValues::quadrature, quadrature, rows(), polyfem::assembler::Assembler::size(), polyfem::quadrature::Quadrature::weights, and x.
Referenced by polyfem::solver::MixedAssemblerForm::first_derivative_unweighted().
|
inlinevirtual |
Reimplemented from polyfem::assembler::Assembler.
Definition at line 115 of file Assembler.hpp.
| void polyfem::assembler::MixedNLAssembler::assemble_hessian | ( | const bool | is_volume, |
| const int | n_psi_basis, | ||
| const int | n_phi_basis, | ||
| const bool | project_to_psd, | ||
| const std::vector< basis::ElementBases > & | psi_bases, | ||
| const std::vector< basis::ElementBases > & | phi_bases, | ||
| const std::vector< basis::ElementBases > & | gbases, | ||
| const AssemblyValsCache & | psi_cache, | ||
| const AssemblyValsCache & | phi_cache, | ||
| const double | t, | ||
| const double | dt, | ||
| const Eigen::MatrixXd & | x, | ||
| const Eigen::MatrixXd & | x_prev, | ||
| const SolutionSplitter & | split_solution, | ||
| utils::MatrixCache & | mat_cache, | ||
| StiffnessMatrix & | hessian | ||
| ) | const |
Definition at line 792 of file Assembler.cpp.
References polyfem::assembler::ElementAssemblyValues::basis_values, cols(), compute_hessian(), polyfem::utils::create_thread_storage(), polyfem::assembler::ElementAssemblyValues::det, polyfem::utils::get_local_thread_storage(), polyfem::utils::MatrixCache::get_matrix(), polyfem::utils::MatrixCache::init(), polyfem::logger(), polyfem::utils::maybe_parallel_for(), polyfem::assembler::ElementAssemblyValues::quadrature, quadrature, rows(), polyfem::utils::MatrixCache::set_zero(), polyfem::assembler::Assembler::size(), polyfem::quadrature::Quadrature::weights, and x.
Referenced by polyfem::solver::MixedAssemblerForm::second_derivative_unweighted().
|
protectedpure virtual |
Implemented in polyfem::assembler::ThermoElasticity.
Referenced by assemble_energy(), assemble_energy_per_element(), assemble_gradient(), and assemble_hessian().
|
protectedpure virtual |
Implemented in polyfem::assembler::ThermoElasticity.
Referenced by assemble_energy(), and assemble_energy_per_element().
|
protectedpure virtual |
Implemented in polyfem::assembler::ThermoElasticity.
Referenced by assemble_gradient().
|
protectedpure virtual |
Implemented in polyfem::assembler::ThermoElasticity.
Referenced by assemble_hessian().
|
inlineoverridevirtual |
Implements polyfem::assembler::Assembler.
Definition at line 287 of file Assembler.hpp.
|
protectedpure virtual |
Implemented in polyfem::assembler::ThermoElasticity.
Referenced by assemble_energy(), assemble_energy_per_element(), assemble_gradient(), and assemble_hessian().