PolyFEM
Loading...
Searching...
No Matches
LagrangeBasis3d.hpp
Go to the documentation of this file.
1#pragma once
2
10
11#include <Eigen/Dense>
12#include <vector>
13
14namespace polyfem
15{
16 namespace basis
17 {
19 {
20 public:
42 static int build_bases(
43 const mesh::Mesh3D &mesh,
44 const std::string &assembler,
45 const int quadrature_order,
46 const int mass_quadrature_order,
47 const int discr_order,
48 const bool serendipity,
49 const bool has_polys,
50 const bool is_geom_bases,
51 std::vector<ElementBases> &bases,
52 std::vector<mesh::LocalBoundary> &local_boundary,
53 std::map<int, InterfaceData> &poly_face_to_data,
54 std::shared_ptr<mesh::MeshNodes> &mesh_nodes);
55
77 static int build_bases(
78 const mesh::Mesh3D &mesh,
79 const std::string &assembler,
80 const int quadrature_order,
81 const int mass_quadrature_order,
82 const Eigen::VectorXi &discr_order,
83 const bool serendipity,
84 const bool has_polys,
85 const bool is_geom_bases,
86 std::vector<ElementBases> &bases,
87 std::vector<mesh::LocalBoundary> &local_boundary,
88 std::map<int, InterfaceData> &poly_face_to_data,
89 std::shared_ptr<mesh::MeshNodes> &mesh_nodes);
90
91 // return the local faces nodes for a tet or a hex of order p, index points to a face
92 static Eigen::VectorXi tet_face_local_nodes(const int p, const mesh::Mesh3D &mesh, mesh::Navigation3D::Index index);
93 static Eigen::VectorXi hex_face_local_nodes(const bool serendipity, const int q, const mesh::Mesh3D &mesh, mesh::Navigation3D::Index index);
94
95 private:
97
98 static Eigen::RowVector3d quadr_hex_local_node_coordinates(int local_index);
99 };
100 } // namespace basis
101} // namespace polyfem
static Eigen::VectorXi hex_face_local_nodes(const bool serendipity, const int q, const mesh::Mesh3D &mesh, mesh::Navigation3D::Index index)
static int build_bases(const mesh::Mesh3D &mesh, const std::string &assembler, const int quadrature_order, const int mass_quadrature_order, const int discr_order, const bool serendipity, const bool has_polys, const bool is_geom_bases, std::vector< ElementBases > &bases, std::vector< mesh::LocalBoundary > &local_boundary, std::map< int, InterfaceData > &poly_face_to_data, std::shared_ptr< mesh::MeshNodes > &mesh_nodes)
Builds FE basis functions over the entire mesh (P1, P2 over tets, Q1, Q2 over hes).
static Eigen::MatrixXd linear_hex_face_local_nodes_coordinates(const mesh::Mesh3D &mesh, mesh::Navigation3D::Index index)
static int build_bases(const mesh::Mesh3D &mesh, const std::string &assembler, const int quadrature_order, const int mass_quadrature_order, const Eigen::VectorXi &discr_order, const bool serendipity, const bool has_polys, const bool is_geom_bases, std::vector< ElementBases > &bases, std::vector< mesh::LocalBoundary > &local_boundary, std::map< int, InterfaceData > &poly_face_to_data, std::shared_ptr< mesh::MeshNodes > &mesh_nodes)
Builds FE basis functions over the entire mesh (P1, P2 over tets, Q1, Q2 over hex).
static Eigen::VectorXi tet_face_local_nodes(const int p, const mesh::Mesh3D &mesh, mesh::Navigation3D::Index index)
static Eigen::RowVector3d quadr_hex_local_node_coordinates(int local_index)