PhysicsBasedAnimationToolkit 0.0.10
Cross-platform C++20 library of algorithms and data structures commonly used in computer graphics research on physically-based simulation.
|
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. | |
FEM shape functions and gradients.