Loading [MathJax]/jax/input/TeX/config.js
PolyFEM
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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:
43 static int build_bases(
44 const mesh::Mesh3D &mesh,
45 const std::string &assembler,
46 const int quadrature_order,
47 const int mass_quadrature_order,
48 const int discr_order,
49 const bool bernstein,
50 const bool serendipity,
51 const bool has_polys,
52 const bool is_geom_bases,
53 const bool use_corner_quadrature,
54 std::vector<ElementBases> &bases,
55 std::vector<mesh::LocalBoundary> &local_boundary,
56 std::map<int, InterfaceData> &poly_face_to_data,
57 std::shared_ptr<mesh::MeshNodes> &mesh_nodes);
58
81 static int build_bases(
82 const mesh::Mesh3D &mesh,
83 const std::string &assembler,
84 const int quadrature_order,
85 const int mass_quadrature_order,
86 const Eigen::VectorXi &discr_order,
87 const bool bernstein,
88 const bool serendipity,
89 const bool has_polys,
90 const bool is_geom_bases,
91 const bool use_corner_quadrature,
92 std::vector<ElementBases> &bases,
93 std::vector<mesh::LocalBoundary> &local_boundary,
94 std::map<int, InterfaceData> &poly_face_to_data,
95 std::shared_ptr<mesh::MeshNodes> &mesh_nodes);
96
97 // return the local faces nodes for a tet or a hex of order p, index points to a face
98 static Eigen::VectorXi tet_face_local_nodes(const int p, const mesh::Mesh3D &mesh, mesh::Navigation3D::Index index);
99 static Eigen::VectorXi hex_face_local_nodes(const bool serendipity, const int q, const mesh::Mesh3D &mesh, mesh::Navigation3D::Index index);
100
101 private:
103
104 static Eigen::RowVector3d quadr_hex_local_node_coordinates(int local_index);
105 };
106 } // namespace basis
107} // namespace polyfem
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 bernstein, const bool serendipity, const bool has_polys, const bool is_geom_bases, const bool use_corner_quadrature, 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::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 Eigen::VectorXi &discr_order, const bool bernstein, const bool serendipity, const bool has_polys, const bool is_geom_bases, const bool use_corner_quadrature, 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::MatrixXd linear_hex_face_local_nodes_coordinates(const mesh::Mesh3D &mesh, mesh::Navigation3D::Index index)
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)