template<class 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>{},
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>{},
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>{},
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>&>())};
}
Concept for hyperelastic energy.
Definition HyperElasticity.h:53
double Scalar
Scalar type.
Definition Aliases.h:18
Concept for hyperelastic energy.
- Template Parameters
-