NuTo
Numerics Tool
NodeSimple.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <Eigen/Core>
4 #include <vector>
5 #include <cassert>
6 
7 namespace NuTo
8 {
12 {
13 public:
18  NodeSimple(Eigen::VectorXd values)
19  : mValues({values})
20  , mDofNumbers(Eigen::VectorXi::Constant(values.rows(), -1))
21  {
22  }
23 
26  NodeSimple(double value)
27  : mValues({Eigen::VectorXd::Constant(1, value)})
28  , mDofNumbers(Eigen::VectorXi::Zero(1))
29  {
30  }
31 
32  NodeSimple(int dimension, int numInstances)
33  : mValues(numInstances, Eigen::VectorXd::Zero(dimension))
34  , mDofNumbers(Eigen::VectorXi::Constant(dimension, -1))
35  {
36  }
37 
39  void AllocateInstances(int numInstances)
40  {
41  assert(numInstances > 0);
42  mValues.resize(numInstances, Eigen::VectorXd::Zero(mValues[0].size()));
43  }
44 
45  int GetNumInstances() const
46  {
47  return mValues.size();
48  }
49 
50  const Eigen::VectorXd& GetValues(int instance = 0) const
51  {
52  assert(instance < static_cast<int>(mValues.size()));
53  return mValues[instance];
54  }
55 
56  int GetDofNumber(int component) const
57  {
58  assert(component < mDofNumbers.rows());
59  return mDofNumbers[component];
60  }
61 
62  void SetValues(Eigen::VectorXd values, int instance = 0)
63  {
64  assert(instance < static_cast<int>(mValues.size()));
65  assert(values.size() == mValues[instance].size());
66  mValues[instance] = values;
67  }
68 
69  void SetValue(int component, double value, int instance = 0)
70  {
71  assert(instance < static_cast<int>(mValues.size()));
72  assert(component < mDofNumbers.rows());
73  mValues[instance][component] = value;
74  }
75 
76  void SetDofNumber(int component, int dofNumber)
77  {
78  assert(component < mDofNumbers.rows());
79  mDofNumbers[component] = dofNumber;
80  }
81 
82  int GetNumValues() const
83  {
84  return mValues[0].rows();
85  }
86 
87 private:
88  std::vector<Eigen::VectorXd> mValues;
89  Eigen::VectorXi mDofNumbers;
90 };
91 } /* NuTo */
void AllocateInstances(int numInstances)
Allocates numInstances full of zeros.
Definition: NodeSimple.h:39
void SetDofNumber(int component, int dofNumber)
Definition: NodeSimple.h:76
Store node values and its dof.
Definition: NodeSimple.h:11
NodeSimple(int dimension, int numInstances)
Definition: NodeSimple.h:32
void SetValues(Eigen::VectorXd values, int instance=0)
Definition: NodeSimple.h:62
string value
Definition: single_edge_notch_tension_test.py:6
Definition: SerializeStreamOut.h:6
NodeSimple(double value)
initializes a 1D node with value and a dof number 0
Definition: NodeSimple.h:26
NodeSimple(Eigen::VectorXd values)
initizalizes the node values with values and initializes the dof numbers to zero
Definition: NodeSimple.h:18
int GetNumValues() const
Definition: NodeSimple.h:82
int GetNumInstances() const
Definition: NodeSimple.h:45
Definition: Exception.h:6
int GetDofNumber(int component) const
Definition: NodeSimple.h:56
void SetValue(int component, double value, int instance=0)
Definition: NodeSimple.h:69
constexpr int dimension
Definition: single_edge_notched_tension_test.cpp:30
const Eigen::VectorXd & GetValues(int instance=0) const
Definition: NodeSimple.h:50