19 , mIntegrationType(integrationType)
25 std::stringstream message;
26 message <<
"The shape of the element (" << elements.
GetShape() <<
") and integrationtype (" 27 << integrationType.
GetShape() <<
") don't match.";
28 throw Exception(__PRETTY_FUNCTION__, message.str());
44 return IntegrateGeneric(f,
double{0});
55 CellIpData cellipData(cellData, jacobian, ipCoords, iIP);
70 Eigen::VectorXd
Interpolate(Eigen::VectorXd naturalCoords)
const override 83 std::vector<Eigen::VectorXd> result;
89 CellIpData cellipData(cellData, jacobian, ipCoords, iIP);
90 result.push_back(f(cellipData));
105 template <
typename TOperation,
typename TReturn>
106 TReturn IntegrateGeneric(TOperation&& f, TReturn result)
115 CellIpData cellipData(cellData, jacobian, ipCoords, iIP);
116 result += f(cellipData) * jacobian.Det() * ipWeight;
virtual const ElementInterface & DofElement(DofType) const =0
Base class for all exceptions thrown in NuTo.
Definition: Exception.h:9
Definition: Jacobian.h:10
DofMatrix< double > Integrate(MatrixFunction f) override
Definition: Cell.h:37
virtual const Shape & GetShape() const =0
Determines the shape of the integration type.
interface for all the cell operations, simply forwarding the corresponding element interfaces ...
Definition: ElementCollection.h:14
std::vector< Eigen::VectorXd > Eval(EvalFunction f) const override
Definition: Cell.h:80
std::function< DofMatrix< double >(const CellIpData &)> MatrixFunction
Definition: CellInterface.h:20
virtual const Shape & GetShape() const =0
std::function< DofVector< double >(const CellIpData &)> VectorFunction
Definition: CellInterface.h:19
std::function< Eigen::VectorXd(const CellIpData &)> EvalFunction
Definition: CellInterface.h:23
const Shape & GetShape() const override
Definition: Cell.h:95
void Apply(VoidFunction f) override
Definition: Cell.h:47
Eigen::VectorXd Interpolate(Eigen::VectorXd naturalCoords, DofType dof) const override
Dof interpolation.
Definition: Cell.h:75
Eigen::VectorXd Interpolate(const ElementInterface &element, NaturalCoords ipCoords)
Definition: ElementInterface.h:31
std::function< double(const CellIpData &)> ScalarFunction
Definition: CellInterface.h:18
double Integrate(ScalarFunction f) override
Definition: Cell.h:42
Similar to NuTo::CellData.
Definition: CellIpData.h:14
std::function< void(const CellIpData &)> VoidFunction
Definition: CellInterface.h:22
virtual int GetNumIntegrationPoints() const =0
returns the total number of integration points for this integration type
virtual double GetIntegrationPointWeight(int rIpNum) const =0
returns the weight of an integration point
virtual Eigen::VectorXd GetLocalIntegrationPointCoordinates(int rIpNum) const =0
returns the local coordinates of an integration point
virtual Eigen::VectorXi GetDofNumbering() const =0
extract the dof numbers from its nodes.
virtual const ElementInterface & CoordinateElement() const =0
DofVector< double > Integrate(VectorFunction f) override
Definition: Cell.h:32
standard abstract class for all integration types
Definition: IntegrationTypeBase.h:14
virtual Eigen::MatrixXd GetDerivativeShapeFunctions(NaturalCoords ipCoords) const =0
virtual Eigen::VectorXd ExtractNodeValues(int instance=0) const =0
extracts all node values of this element
dof container that is also capable of performing calculations.
Definition: DofMatrixContainer.h:13
Eigen::VectorXd Interpolate(Eigen::VectorXd naturalCoords) const override
Coordinate interpolation.
Definition: Cell.h:70
Definition: Exception.h:6
Extracts 'cell data' like nodal values from the cell.
Definition: CellData.h:14
int Id() const
Definition: Cell.h:65
Cell(const ElementCollection &elements, const IntegrationTypeBase &integrationType, const int id)
Definition: Cell.h:17
Eigen::VectorXi DofNumbering(DofType dof) override
Definition: Cell.h:60
Definition: CellInterface.h:13