PolyFEM
Loading...
Searching...
No Matches
Bilaplacian.hpp
Go to the documentation of this file.
1#pragma once
2
5
6namespace polyfem::assembler
7{
8 // local assembler for bilaplacian, see laplacian
9 // 0 L
10 // L M
12 {
13 public:
15
16 Eigen::Matrix<double, Eigen::Dynamic, 1, 0, 9, 1>
17 assemble(const LinearAssemblerData &data) const override
18 {
19 return Eigen::Matrix<double, 1, 1>::Zero(1, 1);
20 }
21
22 std::string name() const override { return "Bilaplacian"; }
23 std::map<std::string, ParamFunc> parameters() const override { return std::map<std::string, ParamFunc>(); }
24 };
25
27 {
28 public:
29 std::string name() const override { return "BilaplacianMixed"; }
30
32
33 // res is R
34 Eigen::Matrix<double, Eigen::Dynamic, 1, 0, 3, 1>
35 assemble(const MixedAssemblerData &data) const override;
36
37 inline int rows() const override { return 1; }
38 inline int cols() const override { return 1; }
39 };
40
42 {
43 public:
45
46 // res is R
47 Eigen::Matrix<double, Eigen::Dynamic, 1, 0, 9, 1>
48 assemble(const LinearAssemblerData &data) const override;
49
50 std::string name() const override { return "BilaplacianAux"; }
51 std::map<std::string, ParamFunc> parameters() const override { return std::map<std::string, ParamFunc>(); }
52 };
53} // namespace polyfem::assembler
std::map< std::string, ParamFunc > parameters() const override
Eigen::Matrix< double, Eigen::Dynamic, 1, 0, 9, 1 > assemble(const LinearAssemblerData &data) const override
local assembly function that defines the bilinear form (LHS) computes and returns a single local stif...
std::string name() const override
std::string name() const override
std::map< std::string, ParamFunc > parameters() const override
Eigen::Matrix< double, Eigen::Dynamic, 1, 0, 9, 1 > assemble(const LinearAssemblerData &data) const override
local assembly function that defines the bilinear form (LHS) computes and returns a single local stif...
Eigen::Matrix< double, Eigen::Dynamic, 1, 0, 3, 1 > assemble(const MixedAssemblerData &data) const override
std::string name() const override
assemble matrix based on the local assembler local assembler is eg Laplace, LinearElasticity etc
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 ...
void assemble(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, StiffnessMatrix &stiffness) const
Used for test only.