PolyFEM
Loading...
Searching...
No Matches
polyfem::basis::LagrangeBasis3d Class Reference

#include <LagrangeBasis3d.hpp>

Static Public Member Functions

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, 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 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, 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::VectorXi tet_face_local_nodes (const int p, const mesh::Mesh3D &mesh, mesh::Navigation3D::Index index)
 
static Eigen::VectorXi hex_face_local_nodes (const bool serendipity, const int q, const mesh::Mesh3D &mesh, mesh::Navigation3D::Index index)
 

Static Private Member Functions

static Eigen::MatrixXd linear_hex_face_local_nodes_coordinates (const mesh::Mesh3D &mesh, mesh::Navigation3D::Index index)
 
static Eigen::RowVector3d quadr_hex_local_node_coordinates (int local_index)
 

Detailed Description

Definition at line 18 of file LagrangeBasis3d.hpp.

Member Function Documentation

◆ build_bases() [1/2]

static int polyfem::basis::LagrangeBasis3d::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,
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 
)
static

Builds FE basis functions over the entire mesh (P1, P2 over tets, Q1, Q2 over hex).

Polygonal facets with > 4 vertices are dealt later on by the PolygonalBasis3d class.

Parameters
[in]meshThe input volumetric mesh
[in]assemblerThe pde to solve
[in]quadrature_orderThe quadrature order
[in]mass_quadrature_orderThe quadrature order for mass
[in]discr_orderThe order for each element
[in]serendipityUses serendipity bases or not (only for hex)
[in]has_polysDoes the mesh has polygons, if not the interface mapping is not necessary
[in]is_geom_basesFlag to decide if build geometric mapping or normal bases, used to decide if the nodes are important
[out]basesList of basis functions per element
[out]local_boundaryList of descriptor per element, indicating which edge of the canonical elements lie on the boundary of the mesh
[out]poly_edge_to_dataData for edges at the interface with a polygon (used to build the harmonics inside polygons)
Returns
The number of basis functions created.

◆ build_bases() [2/2]

static int polyfem::basis::LagrangeBasis3d::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,
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 
)
static

Builds FE basis functions over the entire mesh (P1, P2 over tets, Q1, Q2 over hes).

Polygonal facets with > 4 vertices are dealt later on by the PolygonalBasis3d class.

Parameters
[in]meshThe input volumetric mesh
[in]assemblerThe pde to solve
[in]quadrature_orderThe quadrature order
[in]mass_quadrature_orderThe quadrature order for mass
[in]discr_orderThe order of the elements (1-4)
[in]serendipityUses serendipity bases or not (only for hex)
[in]has_polysDoes the mesh has polygons, if not the interface mapping is not necessary
[in]is_geom_basesFlag to decide if build geometric mapping or normal bases, used to decide if the nodes are important
[out]basesList of basis functions per element
[out]local_boundaryList of descriptor per element, indicating which edge of the canonical elements lie on the boundary of the mesh
[out]poly_edge_to_dataData for edges at the interface with a polygon (used to build the harmonics inside polygons)
Returns
The number of basis functions created.

Referenced by polyfem::mesh::Remesher::build_bases(), and polyfem::State::build_basis().

Here is the caller graph for this function:

◆ hex_face_local_nodes()

Eigen::VectorXi LagrangeBasis3d::hex_face_local_nodes ( const bool  serendipity,
const int  q,
const mesh::Mesh3D mesh,
mesh::Navigation3D::Index  index 
)
static

Definition at line 1190 of file LagrangeBasis3d.cpp.

References polyfem::mesh::Navigation3D::Index::element, polyfem::mesh::Navigation3D::Index::face, polyfem::mesh::Mesh3D::get_index_from_element_edge(), polyfem::mesh::Mesh::is_cube(), polyfem::mesh::Mesh3D::next_around_face(), polyfem::autogen::q_nodes_3d(), polyfem::mesh::Mesh3D::switch_vertex(), and polyfem::mesh::Navigation3D::Index::vertex.

Referenced by polyfem::basis::SplineBasis3d::build_bases().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ linear_hex_face_local_nodes_coordinates()

static Eigen::MatrixXd polyfem::basis::LagrangeBasis3d::linear_hex_face_local_nodes_coordinates ( const mesh::Mesh3D mesh,
mesh::Navigation3D::Index  index 
)
staticprivate

◆ quadr_hex_local_node_coordinates()

static Eigen::RowVector3d polyfem::basis::LagrangeBasis3d::quadr_hex_local_node_coordinates ( int  local_index)
staticprivate

◆ tet_face_local_nodes()

Eigen::VectorXi LagrangeBasis3d::tet_face_local_nodes ( const int  p,
const mesh::Mesh3D mesh,
mesh::Navigation3D::Index  index 
)
static

The documentation for this class was generated from the following files: