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

#include <Laplacian.hpp>

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

Public Member Functions

std::string name () const override
 
std::map< std::string, ParamFuncparameters () const override
 
Eigen::Matrix< double, Eigen::Dynamic, 1, 0, 9, 1 > assemble (const LinearAssemblerData &data) const override
 computes local stiffness matrix (1x1) for bases i,j where i,j is passed in through data ie integral of grad(phi_i) dot grad(phi_j)
 
VectorNd compute_rhs (const AutodiffHessianPt &pt) const override
 uses autodiff to compute the rhs for a fabricated solution in this case it just return pt.getHessian().trace() pt is the evaluation of the solution at a point
 
void compute_stress_grad_multiply_mat (const OptAssemblerData &data, const Eigen::MatrixXd &mat, Eigen::MatrixXd &stress, Eigen::MatrixXd &result) const override
 
void compute_stiffness_value (const double t, const assembler::ElementAssemblyValues &vals, const Eigen::MatrixXd &local_pts, const Eigen::MatrixXd &displacement, Eigen::MatrixXd &tensor) const override
 
Eigen::Matrix< AutodiffScalarGrad, Eigen::Dynamic, 1, 0, 3, 1 > kernel (const int dim, const AutodiffGradPt &rvect, const AutodiffScalarGrad &r) const override
 kernel of the pde, used in kernel problem
 
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 override
 assembles the stiffness matrix for the given basis the bilinear form (local assembler) is encoded by the overloaded assemble (see below) function that the subclass (eg Laplacian) defines sets stiffness and modifies cache if it has not already been computed
 
virtual Eigen::Matrix< double, Eigen::Dynamic, 1, 0, 9, 1 > assemble (const LinearAssemblerData &data) const=0
 local assembly function that defines the bilinear form (LHS) computes and returns a single local stiffness value
 
- Public Member Functions inherited from polyfem::assembler::LinearAssembler
 LinearAssembler ()
 
virtual ~LinearAssembler ()=default
 
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 override
 assembles the stiffness matrix for the given basis the bilinear form (local assembler) is encoded by the overloaded assemble (see below) function that the subclass (eg Laplacian) defines sets stiffness and modifies cache if it has not already been computed
 
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 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_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_dstress_dmu_dlambda (const OptAssemblerData &data, Eigen::MatrixXd &dstress_dmu, Eigen::MatrixXd &dstress_dlambda) 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
 
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_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

Definition at line 11 of file Laplacian.hpp.

Member Function Documentation

◆ assemble() [1/3]

void polyfem::assembler::LinearAssembler::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
overridevirtual

assembles the stiffness matrix for the given basis the bilinear form (local assembler) is encoded by the overloaded assemble (see below) function that the subclass (eg Laplacian) defines sets stiffness and modifies cache if it has not already been computed

Reimplemented from polyfem::assembler::Assembler.

◆ assemble() [2/3]

Eigen::Matrix< double, Eigen::Dynamic, 1, 0, 9, 1 > polyfem::assembler::Laplacian::assemble ( const LinearAssemblerData data) const
overridevirtual

computes local stiffness matrix (1x1) for bases i,j where i,j is passed in through data ie integral of grad(phi_i) dot grad(phi_j)

Implements polyfem::assembler::LinearAssembler.

Definition at line 13 of file Laplacian.cpp.

References polyfem::assembler::ElementAssemblyValues::basis_values, polyfem::assembler::LinearAssemblerData::da, polyfem::assembler::LinearAssemblerData::i, polyfem::assembler::LinearAssemblerData::j, and polyfem::assembler::LinearAssemblerData::vals.

Referenced by polyfem::State::solve_transient_navier_stokes_split().

Here is the caller graph for this function:

◆ assemble() [3/3]

virtual Eigen::Matrix< double, Eigen::Dynamic, 1, 0, 9, 1 > polyfem::assembler::LinearAssembler::assemble ( const LinearAssemblerData data) const
virtual

local assembly function that defines the bilinear form (LHS) computes and returns a single local stiffness value

Implements polyfem::assembler::LinearAssembler.

◆ compute_rhs()

Eigen::Matrix< double, Eigen::Dynamic, 1, 0, 3, 1 > polyfem::assembler::Laplacian::compute_rhs ( const AutodiffHessianPt pt) const
overridevirtual

uses autodiff to compute the rhs for a fabricated solution in this case it just return pt.getHessian().trace() pt is the evaluation of the solution at a point

Reimplemented from polyfem::assembler::Assembler.

Definition at line 28 of file Laplacian.cpp.

◆ compute_stiffness_value()

void polyfem::assembler::Laplacian::compute_stiffness_value ( const double  t,
const assembler::ElementAssemblyValues vals,
const Eigen::MatrixXd &  local_pts,
const Eigen::MatrixXd &  displacement,
Eigen::MatrixXd &  tensor 
) const
overridevirtual

Reimplemented from polyfem::assembler::Assembler.

Definition at line 59 of file Laplacian.cpp.

◆ compute_stress_grad_multiply_mat()

void polyfem::assembler::Laplacian::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 50 of file Laplacian.cpp.

References polyfem::assembler::OptAssemblerData::grad_u_i, and mat.

◆ kernel()

Eigen::Matrix< AutodiffScalarGrad, Eigen::Dynamic, 1, 0, 3, 1 > polyfem::assembler::Laplacian::kernel ( const int  dim,
const AutodiffGradPt rvect,
const AutodiffScalarGrad r 
) const
overridevirtual

kernel of the pde, used in kernel problem

Reimplemented from polyfem::assembler::Assembler.

Definition at line 36 of file Laplacian.cpp.

◆ name()

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

Implements polyfem::assembler::Assembler.

Definition at line 16 of file Laplacian.hpp.

◆ parameters()

std::map< std::string, ParamFunc > polyfem::assembler::Laplacian::parameters ( ) const
inlineoverridevirtual

Implements polyfem::assembler::Assembler.

Definition at line 17 of file Laplacian.hpp.


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