Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Aland, Sebastian
amdis
Commits
ee4ea74b
Commit
ee4ea74b
authored
Oct 13, 2016
by
Praetorius, Simon
Browse files
some minor error corrected in master
parent
083a5c96
Changes
2
Hide whitespace changes
Inline
Side-by-side
AMDiS/CMakeLists.txt
View file @
ee4ea74b
...
...
@@ -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 :-)
...
...
AMDiS/src/expressions/valueOf.hpp
View file @
ee4ea74b
...
...
@@ -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
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment