PolyFEM
Loading...
Searching...
No Matches
LagrangeBasis2d.hpp
Go to the documentation of this file.
1#pragma once
2
9
11
12#include <Eigen/Dense>
13#include <vector>
14
15namespace polyfem
16{
17 namespace basis
18 {
20 {
21 public:
44 static int build_bases(
45 const mesh::Mesh2D &mesh,
46 const std::string &assembler,
47 const int quadrature_order,
48 const int mass_quadrature_order,
49 const int discr_order,
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_edge_to_data,
57 std::shared_ptr<mesh::MeshNodes> &mesh_nodes);
58
81 static int build_bases(
82 const mesh::Mesh2D &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 serendipity,
88 const bool has_polys,
89 const bool is_geom_bases,
90 const bool use_corner_quadrature,
91 std::vector<ElementBases> &bases,
92 std::vector<mesh::LocalBoundary> &local_boundary,
93 std::map<int, InterfaceData> &poly_edge_to_data,
94 std::shared_ptr<mesh::MeshNodes> &mesh_nodes);
95
96 // return the local edge nodes for a tri or a quad of order p, index points to the edge
97 static Eigen::VectorXi tri_edge_local_nodes(const int p, const mesh::Mesh2D &mesh, mesh::Navigation::Index index);
98 static Eigen::VectorXi quad_edge_local_nodes(const int q, const mesh::Mesh2D &mesh, mesh::Navigation::Index index);
99 };
100 } // namespace basis
101} // namespace polyfem
static int build_bases(const mesh::Mesh2D &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, const bool use_corner_quadrature, std::vector< ElementBases > &bases, std::vector< mesh::LocalBoundary > &local_boundary, std::map< int, InterfaceData > &poly_edge_to_data, std::shared_ptr< mesh::MeshNodes > &mesh_nodes)
Builds FE basis functions over the entire mesh (P1, P2 over triangles, Q1, Q2 over quads).
static int build_bases(const mesh::Mesh2D &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, const bool use_corner_quadrature, std::vector< ElementBases > &bases, std::vector< mesh::LocalBoundary > &local_boundary, std::map< int, InterfaceData > &poly_edge_to_data, std::shared_ptr< mesh::MeshNodes > &mesh_nodes)
Builds FE basis functions over the entire mesh (P1, P2 over triangles, Q1, Q2 over quads).
static Eigen::VectorXi tri_edge_local_nodes(const int p, const mesh::Mesh2D &mesh, mesh::Navigation::Index index)
static Eigen::VectorXi quad_edge_local_nodes(const int q, const mesh::Mesh2D &mesh, mesh::Navigation::Index index)