Commit ee4ea74b authored by Praetorius, Simon's avatar Praetorius, Simon
Browse files

some minor error corrected in master

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