PhysicsBasedAnimationToolkit 0.0.10
Cross-platform C++20 library of algorithms and data structures commonly used in computer graphics research on physically-based simulation.
Loading...
Searching...
No Matches
ShapeFunctions.h File Reference

FEM shape functions and gradients. More...

#include "Concepts.h"
#include "Jacobian.h"
#include "pbat/Aliases.h"
#include "pbat/common/Concepts.h"
#include "pbat/common/Eigen.h"
#include "pbat/profiling/Profiling.h"
#include <Eigen/LU>
#include <Eigen/SVD>
#include <exception>
#include <fmt/core.h>
#include <string>
#include <tbb/parallel_for.h>

Go to the source code of this file.

Namespaces

namespace  pbat
 The main namespace of the library.
 
namespace  pbat::fem
 Finite Element Method (FEM)
 

Functions

template<CElement TElement, int QuadratureOrder, common::CFloatingPoint TScalar = Scalar>
auto pbat::fem::ElementShapeFunctions () -> Eigen::Matrix< TScalar, TElement::kNodes, TElement::template QuadratureType< QuadratureOrder, TScalar >::kPoints >
 Computes shape functions at element quadrature points for a polynomial quadrature rule of order QuadratureOrder.
 
template<CElement TElement, int QuadratureOrder, common::CFloatingPoint TScalar, class TDerivedE>
auto pbat::fem::ShapeFunctionMatrix (Eigen::DenseBase< TDerivedE > const &E, Eigen::Index nNodes) -> Eigen::SparseMatrix< TScalar, Eigen::RowMajor, typename TDerivedE::Scalar >
 Constructs a shape function matrix \( \mathbf{N} \) for a given mesh, i.e. at the element quadrature points.
 
template<int QuadratureOrder, CMesh TMesh>
auto pbat::fem::ShapeFunctionMatrix (TMesh const &mesh) -> Eigen::SparseMatrix< typename TMesh::ScalarType, Eigen::RowMajor, typename TMesh::IndexType >
 Constructs a shape function matrix \( \mathbf{N} \) for a given mesh, i.e. at the element quadrature points.
 
template<CElement TElement, class TDerivedE, class TDerivedXi, common::CIndex TIndex = typename TDerivedE::Scalar>
auto pbat::fem::ShapeFunctionMatrixAt (Eigen::DenseBase< TDerivedE > const &E, TIndex nNodes, Eigen::MatrixBase< TDerivedXi > const &Xi) -> Eigen::SparseMatrix< typename TDerivedXi::Scalar, Eigen::RowMajor, TIndex >
 Constructs a shape function matrix \( \mathbf{N} \) for a given mesh, i.e. at the element quadrature points.
 
template<CMesh TMesh, class TDerivedEg, class TDerivedXi>
auto pbat::fem::ShapeFunctionMatrixAt (TMesh const &mesh, Eigen::DenseBase< TDerivedEg > const &eg, Eigen::MatrixBase< TDerivedXi > const &Xi) -> Eigen::SparseMatrix< typename TMesh::ScalarType, Eigen::RowMajor, typename TMesh::IndexType >
 Constructs a shape function matrix \( \mathbf{N} \) for a given mesh, i.e. at the given evaluation points.
 
template<CElement TElement, class TDerivedXi>
auto pbat::fem::ShapeFunctionsAt (Eigen::DenseBase< TDerivedXi > const &Xi) -> Eigen::Matrix< typename TDerivedXi::Scalar, TElement::kNodes, Eigen::Dynamic >
 Compute shape functions at the given reference positions.
 
template<CElement TElement, class TDerivedXi, class TDerivedX>
auto pbat::fem::ElementShapeFunctionGradients (Eigen::MatrixBase< TDerivedXi > const &Xi, Eigen::MatrixBase< TDerivedX > const &X) -> Eigen::Matrix< typename TDerivedX::Scalar, TElement::kNodes, TDerivedX::RowsAtCompileTime >
 Computes gradients \( \mathbf{G}(X) = \nabla_X \mathbf{N}_e(X) \) of FEM basis functions. Given some FEM function.
 
template<CElement TElement, int Dims, int QuadratureOrder, class TDerivedE, class TDerivedX, common::CFloatingPoint TScalar = typename TDerivedX::Scalar, common::CIndex TIndex = typename TDerivedE::Scalar>
auto pbat::fem::ShapeFunctionGradients (Eigen::MatrixBase< TDerivedE > const &E, Eigen::MatrixBase< TDerivedX > const &X) -> Eigen::Matrix< TScalar, TElement::kNodes, Eigen::Dynamic >
 Computes nodal shape function gradients at each element quadrature points.
 
template<int QuadratureOrder, CMesh TMesh>
auto pbat::fem::ShapeFunctionGradients (TMesh const &mesh) -> Eigen::Matrix< typename TMesh::ScalarType, TMesh::ElementType::kNodes, Eigen::Dynamic >
 Computes nodal shape function gradients at each element quadrature points.
 
template<CElement TElement, int Dims, class TDerivedEg, class TDerivedX, class TDerivedXi>
auto pbat::fem::ShapeFunctionGradientsAt (Eigen::DenseBase< TDerivedEg > const &Eg, Eigen::MatrixBase< TDerivedX > const &X, Eigen::MatrixBase< TDerivedXi > const &Xi) -> Eigen::Matrix< typename TDerivedXi::Scalar, TElement::kNodes, Eigen::Dynamic >
 Computes nodal shape function gradients at evaluation points Xi.
 
template<CMesh TMesh, class TDerivedEg, class TDerivedXi>
auto pbat::fem::ShapeFunctionGradientsAt (TMesh const &mesh, Eigen::DenseBase< TDerivedEg > const &eg, Eigen::MatrixBase< TDerivedXi > const &Xi) -> Eigen::Matrix< typename TMesh::ScalarType, TMesh::ElementType::kNodes, Eigen::Dynamic >
 Computes nodal shape function gradients at evaluation points Xg.
 

Detailed Description

FEM shape functions and gradients.

Author
Quoc-Minh Ton-That (tonth.nosp@m.at.q.nosp@m.uocmi.nosp@m.nh@g.nosp@m.mail..nosp@m.com)
Date
2025-02-11