Loading [MathJax]/extensions/tex2jax.js
PolyFEM
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Electrostatics.hpp
Go to the documentation of this file.
1#pragma once
2
5
6// local assembler for laplace equation
7namespace polyfem
8{
9 namespace assembler
10 {
11 // Laplacian with some extra steps
13 {
14 public:
15 Electrostatics() : epsilon_("epsilon") {}
16
18
19 std::string name() const override { return "Electrostatics"; }
20 std::map<std::string, ParamFunc> parameters() const override;
21
22 // inialize material parameter
23 void add_multimaterial(const int index, const json &params, const Units &units) override;
24
28 Eigen::Matrix<double, Eigen::Dynamic, 1, 0, 9, 1> assemble(const LinearAssemblerData &data) const override;
29
31 const Eigen::MatrixXd &mat,
32 Eigen::MatrixXd &stress,
33 Eigen::MatrixXd &result) const override;
34
35 void compute_stiffness_value(const double t,
37 const Eigen::MatrixXd &local_pts,
38 const Eigen::MatrixXd &displacement,
39 Eigen::MatrixXd &tensor) const override;
40
42 const bool is_volume,
43 const int n_basis,
44 const std::vector<basis::ElementBases> &bases,
45 const std::vector<basis::ElementBases> &gbases,
47 const double t,
48 const Eigen::MatrixXd &solution);
49
50 private:
52 };
53 } // namespace assembler
54} // namespace polyfem
std::unique_ptr< MatrixCache > cache
Definition Assembler.cpp:21
ElementAssemblyValues vals
Definition Assembler.cpp:22
Caches basis evaluation and geometric mapping at every element.
double compute_stored_energy(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 Eigen::MatrixXd &solution)
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< 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 o...
std::string name() const override
void add_multimaterial(const int index, const json &params, const Units &units) override
std::map< std::string, ParamFunc > parameters() const override
stores per element basis values at given quadrature points and geometric mapping
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 ...
nlohmann::json json
Definition Common.hpp:9