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
pbat::physics::CHyperElasticEnergy Concept Reference

Concept for hyperelastic energy. More...

#include <HyperElasticity.h>

Concept definition

template<class T>
concept pbat::physics::CHyperElasticEnergy = requires(T t)
{
{
T::kDims
} -> std::convertible_to<int>;
{
} -> std::convertible_to<Scalar>;
{
t.grad(math::linalg::mini::SMatrix<Scalar, T::kDims * T::kDims>{}, Scalar{}, Scalar{})
} -> std::convertible_to<math::linalg::mini::SVector<Scalar, T::kDims * T::kDims>>;
{
t.hessian(math::linalg::mini::SMatrix<Scalar, T::kDims * T::kDims>{}, Scalar{}, Scalar{})
} -> std::convertible_to<
math::linalg::mini::SMatrix<Scalar, T::kDims * T::kDims, T::kDims * T::kDims>>;
{
t.evalWithGrad(
math::linalg::mini::SMatrix<Scalar, T::kDims * T::kDims>{},
Scalar{},
Scalar{},
std::declval<math::linalg::mini::SVector<Scalar, T::kDims * T::kDims>&>())
} -> std::convertible_to<Scalar>;
{
t.evalWithGradAndHessian(
math::linalg::mini::SMatrix<Scalar, T::kDims * T::kDims>{},
Scalar{},
Scalar{},
std::declval<math::linalg::mini::SVector<Scalar, T::kDims * T::kDims>&>(),
std::declval<
math::linalg::mini::SMatrix<Scalar, T::kDims * T::kDims, T::kDims * T::kDims>&>())
} -> std::convertible_to<Scalar>;
{t.gradAndHessian(
math::linalg::mini::SMatrix<Scalar, T::kDims * T::kDims>{},
Scalar{},
Scalar{},
std::declval<math::linalg::mini::SVector<Scalar, T::kDims * T::kDims>&>(),
std::declval<
math::linalg::mini::SMatrix<Scalar, T::kDims * T::kDims, T::kDims * T::kDims>&>())};
}
Definition Matrix.h:121
Concept for hyperelastic energy.
Definition HyperElasticity.h:53
double Scalar
Scalar type.
Definition Aliases.h:18

Detailed Description

Concept for hyperelastic energy.

Template Parameters
TType to check