NuTo
Numerics Tool
CellData.h
Go to the documentation of this file.
1 #pragma once
2 
5 
6 namespace NuTo
7 {
8 
9 
14 class CellData
15 {
16 public:
17  CellData(const ElementCollection& elements, int cellId)
18  : mElements(elements)
19  , mCellId(cellId)
20  {
21  }
22 
23  int GetCellId() const
24  {
25  return mCellId;
26  }
27 
28  Eigen::VectorXd GetCoordinates() const
29  {
30  return mElements.CoordinateElement().ExtractNodeValues();
31  }
32 
33  const Eigen::VectorXd& GetNodeValues(DofType dofType, int instance = 0) const
34  {
35  if (instance >= static_cast<int>(mNodeValues[dofType].size()))
36  mNodeValues[dofType].resize(instance + 1);
37 
38  Eigen::VectorXd& nodeValues = mNodeValues[dofType][instance];
39  if (nodeValues.size() == 0)
40  nodeValues = mElements.DofElement(dofType).ExtractNodeValues(instance);
41 
42  return nodeValues;
43  }
44 
45  const ElementCollection& Elements() const
46  {
47  return mElements;
48  }
49 
50 private:
51  mutable DofContainer<std::vector<Eigen::VectorXd>> mNodeValues;
52  const ElementCollection& mElements;
53  int mCellId;
54 };
55 } /* NuTo */
virtual const ElementInterface & DofElement(DofType) const =0
int GetCellId() const
Definition: CellData.h:23
Eigen::VectorXd GetCoordinates() const
Definition: CellData.h:28
interface for all the cell operations, simply forwarding the corresponding element interfaces ...
Definition: ElementCollection.h:14
CellData(const ElementCollection &elements, int cellId)
Definition: CellData.h:17
Definition: DofType.h:8
virtual const ElementInterface & CoordinateElement() const =0
const ElementCollection & Elements() const
Definition: CellData.h:45
virtual Eigen::VectorXd ExtractNodeValues(int instance=0) const =0
extracts all node values of this element
Definition: Exception.h:6
const Eigen::VectorXd & GetNodeValues(DofType dofType, int instance=0) const
Definition: CellData.h:33
Extracts &#39;cell data&#39; like nodal values from the cell.
Definition: CellData.h:14
Definition: DofContainer.h:10