From ee4ea74b6beefa9f15eb4bd9dafc92beffd9b2f7 Mon Sep 17 00:00:00 2001
From: Simon Praetorius <simon.praetorius@tu-dresden.de>
Date: Thu, 13 Oct 2016 19:14:39 +0200
Subject: [PATCH] some minor error corrected in master

---
 AMDiS/CMakeLists.txt              |   2 +-
 AMDiS/src/expressions/valueOf.hpp | 143 +++++++++++++++---------------
 2 files changed, 73 insertions(+), 72 deletions(-)

diff --git a/AMDiS/CMakeLists.txt b/AMDiS/CMakeLists.txt
index 1d00e569..d2ff853b 100644
--- a/AMDiS/CMakeLists.txt
+++ b/AMDiS/CMakeLists.txt
@@ -2,7 +2,7 @@ set(CMAKE_LEGACY_CYGWIN_WIN32 0)
 cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
 project(AMDiS)
 
-if (USE_NEW_CMAKE AND ${CMAKE_VERSION} VERSION_GREATER "3.0")
+if (USE_NEW_CMAKE AND ${CMAKE_VERSION} VERSION_GREATER "3.2")
     # Experimental implementation of new CMakeLists.txt
     # Can be selected by calling cmake -DUSE_NEW_CMAKE=ON .
     # Use only if you know what you are doing :-)
diff --git a/AMDiS/src/expressions/valueOf.hpp b/AMDiS/src/expressions/valueOf.hpp
index ef4ed4e1..cbf17a9a 100644
--- a/AMDiS/src/expressions/valueOf.hpp
+++ b/AMDiS/src/expressions/valueOf.hpp
@@ -5,7 +5,7 @@
  * Copyright (C) 2013 Dresden University of Technology. All Rights Reserved.
  * Web: https://fusionforge.zih.tu-dresden.de/projects/amdis
  *
- * Authors: 
+ * Authors:
  * Simon Vey, Thomas Witkowski, Andreas Naumann, Simon Praetorius, et al.
  *
  * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
@@ -15,7 +15,7 @@
  * This file is part of AMDiS
  *
  * See also license.opensource.txt in the distribution.
- * 
+ *
  ******************************************************************************/
 
 
@@ -31,21 +31,22 @@
 
 #include "traits/category.hpp"
 #include "traits/at.hpp"
+#include "traits/resize.hpp"
 
 #include <boost/static_assert.hpp>
 #include <boost/mpl/bool.hpp>
 
 
-namespace AMDiS 
+namespace AMDiS
 {
   struct _unknown {};
 
-  namespace expressions 
+  namespace expressions
   {
     /// Expressions that extracts the values of a DOFVector at QPs
     template<typename Vector, typename Name, typename Enable = void>
     struct ValueOf : public LazyOperatorTermBase {};
-    
+
     template<typename T, typename Name>
     struct ValueOf<DOFVector<T>, Name> : public LazyOperatorTermBase
     {
@@ -64,7 +65,7 @@ namespace AMDiS
       {
 	feSpaces.insert(vecDV->getFeSpace());
       }
-      
+
       inline int getDegree() const
       {
 	return vecDV->getFeSpace()->getBasisFcts()->getDegree();
@@ -72,7 +73,7 @@ namespace AMDiS
 
       template<typename OT>
       inline void initElement(OT* ot, const ElInfo* elInfo,
-			      SubAssembler* subAssembler, Quadrature *quad, 
+			      SubAssembler* subAssembler, Quadrature *quad,
 			      const BasisFunction *basisFct = NULL)
       {
 	if (ot && subAssembler)
@@ -81,14 +82,14 @@ namespace AMDiS
 	  vecDV->getVecAtQPs(elInfo, quad, NULL, vec);
 	else if (basisFct) {
 	  const BasisFunction *localBasisFct = vecDV->getFeSpace()->getBasisFcts();
-	  
+
 	  // get coefficients of DOFVector
 	  coeff.change_dim(localBasisFct->getNumber());
 	  vecDV->getLocalVector(elInfo->getElement(), coeff);
-	  
+
 	  // eval basisfunctions of DOFVector at coords of given basisFct
 	  size_t nBasisFct = basisFct->getNumber();
-	  vec.change_dim(nBasisFct);	
+	  vec.change_dim(nBasisFct);
 	  for (size_t i = 0; i < nBasisFct; i++)
 	    vec[i] = localBasisFct->evalUh(*basisFct->getCoords(i), coeff);
 	}
@@ -97,7 +98,7 @@ namespace AMDiS
 
       template<typename OT>
       inline void initElement(OT* ot, const ElInfo* smallElInfo, const ElInfo* largeElInfo,
-			      SubAssembler* subAssembler, Quadrature *quad, 
+			      SubAssembler* subAssembler, Quadrature *quad,
 			      const BasisFunction *basisFct = NULL)
       {
 	if (ot && subAssembler)
@@ -106,29 +107,29 @@ namespace AMDiS
 	  vecDV->getVecAtQPs(smallElInfo, largeElInfo, quad, NULL, vec);
 	else if (basisFct) {
 	  const BasisFunction *localBasisFct = vecDV->getFeSpace()->getBasisFcts();
-	  
+
 	  // get coefficients of DOFVector
 	  coeff.change_dim(localBasisFct->getNumber());
 	  vecDV->getLocalVector(smallElInfo->getElement(), coeff);
-	  
+
 	  // eval basisfunctions of DOFVector at coords of given basisFct
 	  size_t nBasisFct = basisFct->getNumber();
-	  vec.change_dim(nBasisFct);	
+	  vec.change_dim(nBasisFct);
 	  for (size_t i = 0; i < nBasisFct; i++)
 	    vec[i] = localBasisFct->evalUh(*basisFct->getCoords(i), coeff);
 	}
       }
 
       inline value_type operator()(const int& iq) const { return vec[iq]; }
-      
+
       std::string str() const { return std::string("value(") + vecDV->getName() + ")"; }
     };
-    
-    
+
+
     /// Expressions that extracts the matrix-value of a Matrix<DOFVector> at QPs
     template<template<class> class Matrix, typename T, typename Name>
-    struct ValueOf<Matrix<DOFVector<T>*>, Name, 
-		  typename enable_if< traits::is_matrix<Matrix<T> > >::type > 
+    struct ValueOf<Matrix<DOFVector<T>*>, Name,
+		  typename enable_if< traits::is_matrix<Matrix<T> > >::type >
       : public LazyOperatorTermBase
     {
       typedef Matrix<T> value_type;
@@ -138,7 +139,7 @@ namespace AMDiS
       mutable mtl::dense_vector<value_type> vec;
       mutable Matrix<mtl::dense_vector<T> > coeff;
 
-      ValueOf(Matrix<DOFVector<T>*> const& vector) : vecDV(vector) 
+      ValueOf(Matrix<DOFVector<T>*> const& vector) : vecDV(vector)
       {
 	resize(coeff, num_rows(vecDV), num_cols(vecDV));
       }
@@ -150,7 +151,7 @@ namespace AMDiS
 	for (size_t j = 0; j < num_cols(vecDV); j++)
 	  feSpaces.insert(at(vecDV, i, j)->getFeSpace());
       }
-      
+
       inline int getDegree() const
       {
 	return at(vecDV, 0, 0)->getFeSpace()->getBasisFcts()->getDegree();
@@ -158,7 +159,7 @@ namespace AMDiS
 
       template<typename OT>
       inline void initElement(OT* ot, const ElInfo* elInfo,
-			      SubAssembler* subAssembler, Quadrature *quad, 
+			      SubAssembler* subAssembler, Quadrature *quad,
 			      const BasisFunction *basisFct = NULL)
       {
 	Matrix<mtl::dense_vector<T> > helper; resize(helper, num_rows(vecDV), num_cols(vecDV));
@@ -167,17 +168,17 @@ namespace AMDiS
 	  if (ot && subAssembler)
 	    ot->getVectorAtQPs(at(vecDV, i, j), elInfo, subAssembler, quad, at(helper, i, j));
 	  else if (quad)
-	    at(vecDV, i, j)->getVecAtQPs(elInfo, quad, NULL, at(helper, i, j));	
+	    at(vecDV, i, j)->getVecAtQPs(elInfo, quad, NULL, at(helper, i, j));
 	  else if (basisFct) {
 	    const BasisFunction *localBasisFct = at(vecDV, i, j)->getFeSpace()->getBasisFcts();
-	    
+
 	    // get coefficients of DOFVector
 	    at(coeff, i, j).change_dim(localBasisFct->getNumber());
 	    at(vecDV, i, j)->getLocalVector(elInfo->getElement(), at(coeff, i, j));
-	    
+
 	    // eval basisfunctions of DOFVector at coords of given basisFct
 	    size_t nBasisFct = basisFct->getNumber();
-	    at(helper, i, j).change_dim(nBasisFct);	
+	    at(helper, i, j).change_dim(nBasisFct);
 	    for (size_t k = 0; k < nBasisFct; k++)
 	      at(helper, i, j)[k] = localBasisFct->evalUh(*basisFct->getCoords(k), at(coeff, i, j));
 	  }
@@ -198,22 +199,22 @@ namespace AMDiS
 
       template<typename OT>
       inline void initElement(OT* ot, const ElInfo* smallElInfo, const ElInfo* largeElInfo,
-			      SubAssembler* subAssembler, Quadrature *quad, 
+			      SubAssembler* subAssembler, Quadrature *quad,
 			      const BasisFunction *basisFct = NULL)
-      {      
+      {
 	initElement(ot, smallElInfo, subAssembler, quad, basisFct);
       }
 
       inline value_type operator()(const int& iq) const { return vec[iq]; }
-      
+
       std::string str() const { return std::string("value_(") + at(vecDV, 0, 0)->getName() + ")"; }
     };
-    
-    
+
+
     /// Expressions that extracts the vector-value of a Vector<DOFVector> at QPs
     template<template<class> class Vector, typename T, typename Name>
-    struct ValueOf<Vector<DOFVector<T>*>, Name, 
-		  typename boost::enable_if<typename traits::is_vector<Vector<T> >::type>::type > 
+    struct ValueOf<Vector<DOFVector<T>*>, Name,
+		  typename boost::enable_if<typename traits::is_vector<Vector<T> >::type>::type >
       : public LazyOperatorTermBase
     {
       typedef Vector<T> value_type;
@@ -223,7 +224,7 @@ namespace AMDiS
       mutable mtl::dense_vector<value_type> vec;
       mutable Vector<mtl::dense_vector<T> > coeff;
 
-      ValueOf(Vector<DOFVector<T>*>& vector) : vecDV(vector) 
+      ValueOf(Vector<DOFVector<T>*>& vector) : vecDV(vector)
       {
 	resize(coeff, num_rows(vecDV));
       }
@@ -234,7 +235,7 @@ namespace AMDiS
 	for (size_t i = 0; i < num_rows(vecDV); i++)
 	  feSpaces.insert(at(vecDV, i)->getFeSpace());
       }
-      
+
       inline int getDegree() const
       {
 	return at(vecDV, 0)->getFeSpace()->getBasisFcts()->getDegree();
@@ -242,7 +243,7 @@ namespace AMDiS
 
       template<typename OT>
       inline void initElement(OT* ot, const ElInfo* elInfo,
-			      SubAssembler* subAssembler, Quadrature *quad, 
+			      SubAssembler* subAssembler, Quadrature *quad,
 			      const BasisFunction *basisFct = NULL)
       {
 	Vector<mtl::dense_vector<T> > helper; resize(helper, num_rows(vecDV));
@@ -250,17 +251,17 @@ namespace AMDiS
 	  if (ot && subAssembler)
 	    ot->getVectorAtQPs(at(vecDV, i), elInfo, subAssembler, quad, at(helper, i));
 	  else if (quad)
-	    at(vecDV, i)->getVecAtQPs(elInfo, quad, NULL, at(helper, i));	
+	    at(vecDV, i)->getVecAtQPs(elInfo, quad, NULL, at(helper, i));
 	  else if (basisFct) {
 	    const BasisFunction *localBasisFct = at(vecDV, i)->getFeSpace()->getBasisFcts();
-	    
+
 	    // get coefficients of DOFVector
 	    at(coeff, i).change_dim(localBasisFct->getNumber());
 	    at(vecDV, i)->getLocalVector(elInfo->getElement(), at(coeff, i));
-	    
+
 	    // eval basisfunctions of DOFVector at coords of given basisFct
 	    size_t nBasisFct = basisFct->getNumber();
-	    at(helper, i).change_dim(nBasisFct);	
+	    at(helper, i).change_dim(nBasisFct);
 	    for (size_t j = 0; j < nBasisFct; j++)
 	      at(helper, i)[j] = localBasisFct->evalUh(*basisFct->getCoords(j), at(coeff, i));
 	  }
@@ -277,22 +278,22 @@ namespace AMDiS
 
       template<typename OT>
       inline void initElement(OT* ot, const ElInfo* smallElInfo, const ElInfo* largeElInfo,
-			      SubAssembler* subAssembler, Quadrature *quad, 
+			      SubAssembler* subAssembler, Quadrature *quad,
 			      const BasisFunction *basisFct = NULL)
-      {      
+      {
 	initElement(ot, smallElInfo, subAssembler, quad, basisFct);
       }
 
       inline value_type operator()(const int& iq) const { return vec[iq]; }
-      
+
       std::string str() const { return std::string("value_(") + at(vecDV, 0)->getName() + ")"; }
     };
-    
-    
+
+
     /// Expression that extracts the component of a vector-values DOFVector at QPs
     template<typename Vector>
     struct ComponentOf : public LazyOperatorTermBase {};
-    
+
     template<template<class> class Vector, typename T>
     struct ComponentOf<DOFVector<Vector<T> > > : public LazyOperatorTermBase
     {
@@ -311,7 +312,7 @@ namespace AMDiS
       {
 	feSpaces.insert(vecDV->getFeSpace());
       }
-      
+
       inline int getDegree() const
       {
 	return vecDV->getFeSpace()->getBasisFcts()->getDegree();
@@ -319,7 +320,7 @@ namespace AMDiS
 
       template<typename OT>
       inline void initElement(OT* ot, const ElInfo* elInfo,
-			      SubAssembler* subAssembler, Quadrature *quad, 
+			      SubAssembler* subAssembler, Quadrature *quad,
 			      const BasisFunction *basisFct = NULL)
       {
 	if (ot && subAssembler)
@@ -328,14 +329,14 @@ namespace AMDiS
 	  vecDV->getVecAtQPs(elInfo, quad, NULL, vec);
 	else if (basisFct) {
 	  const BasisFunction *localBasisFct = vecDV->getFeSpace()->getBasisFcts();
-	  
+
 	  // get coefficients of DOFVector
 	  coeff.change_dim(localBasisFct->getNumber());
 	  vecDV->getLocalVector(elInfo->getElement(), coeff);
-	  
+
 	  // eval basisfunctions of DOFVector at coords of given basisFct
 	  size_t nBasisFct = basisFct->getNumber();
-	  vec.change_dim(nBasisFct);	
+	  vec.change_dim(nBasisFct);
 	  for (size_t i = 0; i < nBasisFct; i++)
 	    vec[i] = localBasisFct->evalUh(*basisFct->getCoords(i), coeff);
 	}
@@ -344,7 +345,7 @@ namespace AMDiS
 
       template<typename OT>
       inline void initElement(OT* ot, const ElInfo* smallElInfo, const ElInfo* largeElInfo,
-			      SubAssembler* subAssembler, Quadrature *quad, 
+			      SubAssembler* subAssembler, Quadrature *quad,
 			      const BasisFunction *basisFct = NULL)
       {
 	if (ot && subAssembler)
@@ -353,21 +354,21 @@ namespace AMDiS
 	  vecDV->getVecAtQPs(smallElInfo, largeElInfo, quad, NULL, vec);
 	else if (basisFct) {
 	  const BasisFunction *localBasisFct = vecDV->getFeSpace()->getBasisFcts();
-	  
+
 	  // get coefficients of DOFVector
 	  coeff.change_dim(localBasisFct->getNumber());
 	  vecDV->getLocalVector(smallElInfo->getElement(), coeff);
-	  
+
 	  // eval basisfunctions of DOFVector at coords of given basisFct
 	  size_t nBasisFct = basisFct->getNumber();
-	  vec.change_dim(nBasisFct);	
+	  vec.change_dim(nBasisFct);
 	  for (size_t i = 0; i < nBasisFct; i++)
 	    vec[i] = localBasisFct->evalUh(*basisFct->getCoords(i), coeff);
 	}
       }
 
       inline value_type operator()(const int& iq) const { return vec[iq][I]; }
-      
+
       std::string str() const { return std::string("comp<") + boost::lexical_cast<std::string>(I) + ">(" + vecDV->getName() + ")"; }
     };
 
@@ -379,57 +380,57 @@ namespace AMDiS
 
   // with Name
   template<typename Name, typename T>
-  expressions::ValueOf<DOFVector<T>, Name > valueOf(DOFVector<T>& vector) 
+  expressions::ValueOf<DOFVector<T>, Name > valueOf(DOFVector<T>& vector)
   { return expressions::ValueOf<DOFVector<T>, Name >(vector); }
 
   template<typename Name, typename T>
-  expressions::ValueOf<DOFVector<T>, Name > valueOf(DOFVector<T>* vector) 
+  expressions::ValueOf<DOFVector<T>, Name > valueOf(DOFVector<T>* vector)
   { return expressions::ValueOf<DOFVector<T>, Name >(vector); }
 
   template<typename Name, template<class> class Matrix, typename T>
-  typename boost::enable_if<typename traits::is_matrix<Matrix<T> >::type, 
+  typename boost::enable_if<typename traits::is_matrix<Matrix<T> >::type,
     expressions::ValueOf<Matrix<DOFVector<T>*>, Name > >::type
-  valueOf(Matrix<DOFVector<T>*> &mat) 
+  valueOf(Matrix<DOFVector<T>*> &mat)
   { return expressions::ValueOf<Matrix<DOFVector<T>*>, Name >(mat); }
 
   template<typename Name, template<class> class Vector, typename T>
-  typename boost::enable_if<typename traits::is_vector<Vector<T> >::type, 
+  typename boost::enable_if<typename traits::is_vector<Vector<T> >::type,
     expressions::ValueOf<Vector<DOFVector<T>*>, Name > >::type
-  valueOf(Vector<DOFVector<T>*> &vector) 
+  valueOf(Vector<DOFVector<T>*> &vector)
   { return expressions::ValueOf<Vector<DOFVector<T>*>, Name >(vector); }
 
 
   // without Name
   template<typename T>
-  expressions::ValueOf<DOFVector<T>, _unknown > valueOf(DOFVector<T>& vector) 
+  expressions::ValueOf<DOFVector<T>, _unknown > valueOf(DOFVector<T>& vector)
   { return expressions::ValueOf<DOFVector<T>, _unknown >(vector); }
 
   template<typename T>
-  expressions::ValueOf<DOFVector<T>, _unknown > valueOf(DOFVector<T>* vector) 
+  expressions::ValueOf<DOFVector<T>, _unknown > valueOf(DOFVector<T>* vector)
   { return expressions::ValueOf<DOFVector<T>, _unknown >(vector); }
 
   template<template<class> class Matrix, typename T>
-  typename boost::enable_if<typename traits::is_matrix<Matrix<T> >::type, 
+  typename boost::enable_if<typename traits::is_matrix<Matrix<T> >::type,
     expressions::ValueOf<Matrix<DOFVector<T>*>, _unknown > >::type
-  valueOf(Matrix<DOFVector<T>*> &mat) 
+  valueOf(Matrix<DOFVector<T>*> &mat)
   { return expressions::ValueOf<Matrix<DOFVector<T>*>, _unknown >(mat); }
 
   template<template<class> class Vector, typename T>
-  typename boost::enable_if<typename traits::is_vector<Vector<T> >::type, 
+  typename boost::enable_if<typename traits::is_vector<Vector<T> >::type,
     expressions::ValueOf<Vector<DOFVector<T>*>, _unknown > >::type
-  valueOf(Vector<DOFVector<T>*> &vector) 
+  valueOf(Vector<DOFVector<T>*> &vector)
   { return expressions::ValueOf<Vector<DOFVector<T>*>, _unknown >(vector); }
 
-  
+
   // component of a DOFVector<Vector>
   // ___________________________________________________________________________
 
   template<template<class> class Vector, typename T>
-  expressions::ComponentOf<DOFVector<Vector<T> > > componentOf(DOFVector<Vector<T> >& vector, int I) 
+  expressions::ComponentOf<DOFVector<Vector<T> > > componentOf(DOFVector<Vector<T> >& vector, int I)
   { return expressions::ComponentOf<DOFVector<Vector<T> > >(vector, I); }
 
   template<template<class> class Vector, typename T>
-  expressions::ComponentOf<DOFVector<Vector<T> > > componentOf(DOFVector<Vector<T> >* vector, int I) 
+  expressions::ComponentOf<DOFVector<Vector<T> > > componentOf(DOFVector<Vector<T> >* vector, int I)
   { return expressions::ComponentOf<DOFVector<Vector<T> > >(vector, I); }
 
 } // end namespace AMDiS
-- 
GitLab