Skip to content
Snippets Groups Projects
Commit 2b7551db authored by Oliver Sander's avatar Oliver Sander Committed by sander@FU-BERLIN.DE
Browse files

Make the internal data of TensorSSD private.

Add an operator() with three arguments to grant access
to the individual entries.

[[Imported from SVN: r7934]]
parent 1582f7dc
No related branches found
No related tags found
No related merge requests found
...@@ -433,7 +433,7 @@ evaluateDerivativeOfGradientWRTCoefficient(const Dune::FieldVector<ctype, dim>& ...@@ -433,7 +433,7 @@ evaluateDerivativeOfGradientWRTCoefficient(const Dune::FieldVector<ctype, dim>&
dvDwF = 0; dvDwF = 0;
for (int i=0; i<embeddedDim; i++) for (int i=0; i<embeddedDim; i++)
for (int j=0; j<embeddedDim; j++) for (int j=0; j<embeddedDim; j++)
dvDwF.data_[i][j][coefficient] = mixedDerivative[i][j]; dvDwF(i, j, coefficient) = mixedDerivative[i][j];
// dFDq is not invertible, if the target space is embedded into a higher-dimensional // dFDq is not invertible, if the target space is embedded into a higher-dimensional
...@@ -462,16 +462,16 @@ evaluateDerivativeOfGradientWRTCoefficient(const Dune::FieldVector<ctype, dim>& ...@@ -462,16 +462,16 @@ evaluateDerivativeOfGradientWRTCoefficient(const Dune::FieldVector<ctype, dim>&
Dune::FieldMatrix<ctype,embeddedDim,embeddedDim> hesse = TargetSpace::secondDerivativeOfDistanceSquaredWRTSecondArgument(coefficients_[k], q); Dune::FieldMatrix<ctype,embeddedDim,embeddedDim> hesse = TargetSpace::secondDerivativeOfDistanceSquaredWRTSecondArgument(coefficients_[k], q);
for (int i=0; i<embeddedDim; i++) for (int i=0; i<embeddedDim; i++)
for (int j=0; j<embeddedDim; j++) for (int j=0; j<embeddedDim; j++)
dqdwF.data_[i][j][k] = hesse[i][j]; dqdwF(i, j, k) = hesse[i][j];
} }
TensorSSD<double, embeddedDim,embeddedDim> dqdwF_times_dvq(coefficients_.size()); TensorSSD<double, embeddedDim,embeddedDim> dqdwF_times_dvq(coefficients_.size());
for (int i=0; i<embeddedDim; i++) for (int i=0; i<embeddedDim; i++)
for (int j=0; j<embeddedDim; j++) for (int j=0; j<embeddedDim; j++)
for (size_t k=0; k<coefficients_.size(); k++) { for (size_t k=0; k<coefficients_.size(); k++) {
dqdwF_times_dvq.data_[i][j][k] = 0; dqdwF_times_dvq(i, j, k) = 0;
for (int l=0; l<embeddedDim; l++) for (int l=0; l<embeddedDim; l++)
dqdwF_times_dvq.data_[i][j][k] += dqdwF.data_[l][j][k] * dvq[l][i]; dqdwF_times_dvq(i, j, k) += dqdwF(l, j, k) * dvq[l][i];
} }
Tensor3<double, embeddedDim,embeddedDim,dim> foo; Tensor3<double, embeddedDim,embeddedDim,dim> foo;
...@@ -482,7 +482,7 @@ evaluateDerivativeOfGradientWRTCoefficient(const Dune::FieldVector<ctype, dim>& ...@@ -482,7 +482,7 @@ evaluateDerivativeOfGradientWRTCoefficient(const Dune::FieldVector<ctype, dim>&
for (int i=0; i<embeddedDim; i++) for (int i=0; i<embeddedDim; i++)
for (int j=0; j<embeddedDim; j++) for (int j=0; j<embeddedDim; j++)
for (int k=0; k<dim; k++) for (int k=0; k<dim; k++)
foo[i][j][k] -= bar.data_[i][j][k]; foo[i][j][k] -= bar(i, j, k);
result = 0; result = 0;
for (int i=0; i<embeddedDim; i++) for (int i=0; i<embeddedDim; i++)
......
...@@ -41,6 +41,18 @@ public: ...@@ -41,6 +41,18 @@ public:
assert(false); assert(false);
} }
} }
/** \brief Direct access to individual entries */
T& operator()(size_t i, size_t j, size_t k)
{
return data_[i][j][k];
}
/** \brief Direct const access to individual entries */
const T& operator()(size_t i, size_t j, size_t k) const
{
return data_[i][j][k];
}
/** \brief Assignment from scalar */ /** \brief Assignment from scalar */
TensorSSD<T,N1,N2>& operator=(const T& scalar) TensorSSD<T,N1,N2>& operator=(const T& scalar)
...@@ -84,6 +96,8 @@ public: ...@@ -84,6 +96,8 @@ public:
return result; return result;
} }
private:
// having the dynamic data type on the inside is kind of a stupid data layout // having the dynamic data type on the inside is kind of a stupid data layout
Dune::array<Dune::array<std::vector<T>, N2>, N1> data_; Dune::array<Dune::array<std::vector<T>, N2>, N1> data_;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment