PolyFEM
Loading...
Searching...
No Matches
Mass.hpp
Go to the documentation of this file.
1#pragma once
2
6
7#include <memory>
8
9namespace polyfem::assembler
10{
11 class Mass : public LinearAssembler
12 {
13 public:
14 Mass();
15 explicit Mass(std::shared_ptr<Density> density);
16
18
22 Eigen::Matrix<double, Eigen::Dynamic, 1, 0, 9, 1>
23 assemble(const LinearAssemblerData &data) const override;
24
28 Eigen::Matrix<double, Eigen::Dynamic, 1, 0, 3, 1> compute_rhs(const AutodiffHessianPt &pt) const override;
29
31 void add_multimaterial(const int index, const json &params, const Units &units, const std::string &root_path) override;
32
34 const Density &density() const { return *density_; }
35
36 std::string name() const override { return "Mass"; }
37 virtual std::map<std::string, ParamFunc> parameters() const override;
38
39 private:
40 // class that stores and compute density per point
41 std::shared_ptr<Density> density_;
42 };
43
44 class HRZMass : public LinearAssembler
45 {
46 public:
48
52 Eigen::Matrix<double, Eigen::Dynamic, 1, 0, 9, 1>
53 assemble(const LinearAssemblerData &data) const override;
54
55 virtual std::map<std::string, ParamFunc> parameters() const override
56 {
57 std::map<std::string, ParamFunc> res;
58 return res;
59 }
60
61 std::string name() const override { return "HRZMass"; }
62 };
63} // namespace polyfem::assembler
Eigen::Matrix< double, Eigen::Dynamic, 1, 0, 9, 1 > assemble(const LinearAssemblerData &data) const override
computes and returns local stiffness matrix (1x1) for bases i,j (where i,j is passed in through data)...
Definition Mass.cpp:81
std::string name() const override
Definition Mass.hpp:61
virtual std::map< std::string, ParamFunc > parameters() const override
Definition Mass.hpp:55
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 ...
const Density & density() const
class that stores and compute density per point
Definition Mass.hpp:34
std::string name() const override
Definition Mass.hpp:36
Eigen::Matrix< double, Eigen::Dynamic, 1, 0, 3, 1 > compute_rhs(const AutodiffHessianPt &pt) const override
uses autodiff to compute the rhs for a fabricated solution in this case it just return pt....
Definition Mass.cpp:38
virtual std::map< std::string, ParamFunc > parameters() const override
Definition Mass.cpp:56
std::shared_ptr< Density > density_
Definition Mass.hpp:41
Eigen::Matrix< double, Eigen::Dynamic, 1, 0, 9, 1 > assemble(const LinearAssemblerData &data) const override
computes and returns local stiffness matrix (1x1) for bases i,j (where i,j is passed in through data)...
Definition Mass.cpp:18
void add_multimaterial(const int index, const json &params, const Units &units, const std::string &root_path) override
inialize material parameter
Definition Mass.cpp:46
Used for test only.
Eigen::Matrix< AutodiffScalarHessian, Eigen::Dynamic, 1, 0, 3, 1 > AutodiffHessianPt
nlohmann::json json
Definition Common.hpp:9