8#ifndef model_TrialDef_H_
9#define model_TrialDef_H_
33 constexpr static int rows=(TrialFunctionType::dim*(TrialFunctionType::dim+1))/2;
34 constexpr static int cols=T::cols;
40 const std::shared_ptr<T>
op;
46 throw std::invalid_argument(
"Null FEM expression operand.");
53 return op->sfmDef(ele,bary);
63 template<
class T, std::enable_if_t<std::is_base_of_v<TrialExpressionBase<T>,T>,
int> = 0>
64 auto def(
const std::shared_ptr<T>&
x)
66 return std::make_shared<TrialDef<T>>(
x);
auto def(const std::shared_ptr< T > &x)
Eigen::Matrix< double, rows, dofPerElement > ShapeFunctionMatrixType
TrialFunctionType::TrialFunctionType TrialFunctionType
TypeTraits< TrialFunctionType >::ElementType ElementType
const auto & field() const
static constexpr int rows
Eigen::Matrix< double, rows, dofPerElement > sfm(const ElementType &ele, const BaryType &bary) const
static constexpr int dofPerElement
Eigen::Matrix< double, rows, 1 > EvalMatrixType
TypeTraits< TrialFunctionType >::BaryType BaryType
TrialDef(std::shared_ptr< T > x)
const std::shared_ptr< TrialFunctionType > op
static constexpr int cols
TrialExpressionBase()=default