PolyFEM
Loading...
Searching...
No Matches
PolygonalBasis3d.hpp
Go to the documentation of this file.
1#pragma once
2
8
9#include <Eigen/Dense>
10#include <vector>
11#include <map>
12
13namespace polyfem
14{
15 namespace basis
16 {
18 {
19 public:
20 // Compute the integral constraints for each basis of the mesh. This step is PDE-dependent.
21 //
22 // @param[in] mesh Input volume mesh
23 // @param[in] n_bases Number of bases/nodes in the mesh
24 // @param[in] values Shape functions for the PDE field evaluated over each
25 // elements
26 // @param[in] gvalues Shape functions for the geometric mapping evaluated over
27 // each elements
28 // @param[out] basis_integrals Integral constraints over polygon that each basis of the
29 // mesh must verify
30 //
32 const assembler::Assembler &assembler,
33 const mesh::Mesh3D &mesh,
34 const int n_bases,
35 const std::vector<ElementBases> &bases,
36 const std::vector<ElementBases> &gbases,
37 Eigen::MatrixXd &basis_integrals);
38
56 static int build_bases(
57 const assembler::LinearAssembler &assembler,
58 const int n_samples_per_edge,
59 const mesh::Mesh3D &mesh,
60 const int n_bases,
61 const int quadrature_order,
62 const int mass_quadrature_order,
63 const int integral_constraints,
64 std::vector<ElementBases> &bases,
65 const std::vector<ElementBases> &gbases,
66 const std::map<int, InterfaceData> &poly_face_to_data,
67 std::map<int, std::pair<Eigen::MatrixXd, Eigen::MatrixXi>> &mapped_boundary);
68 };
69 } // namespace basis
70} // namespace polyfem
assemble matrix based on the local assembler local assembler is eg Laplace, LinearElasticity etc
static int build_bases(const assembler::LinearAssembler &assembler, const int n_samples_per_edge, const mesh::Mesh3D &mesh, const int n_bases, const int quadrature_order, const int mass_quadrature_order, const int integral_constraints, std::vector< ElementBases > &bases, const std::vector< ElementBases > &gbases, const std::map< int, InterfaceData > &poly_face_to_data, std::map< int, std::pair< Eigen::MatrixXd, Eigen::MatrixXi > > &mapped_boundary)
Build bases over the remaining polygons of a mesh.
static void compute_integral_constraints(const assembler::Assembler &assembler, const mesh::Mesh3D &mesh, const int n_bases, const std::vector< ElementBases > &bases, const std::vector< ElementBases > &gbases, Eigen::MatrixXd &basis_integrals)