Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
dune-matrix-vector
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
agnumpde
dune-matrix-vector
Commits
f4171224
Commit
f4171224
authored
7 years ago
by
Max Kahnt
Browse files
Options
Downloads
Patches
Plain Diff
Remove genericvectortoolstest.
parent
14796027
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
dune/matrix-vector/test/CMakeLists.txt
+0
-1
0 additions, 1 deletion
dune/matrix-vector/test/CMakeLists.txt
dune/matrix-vector/test/genericvectortoolstest.cc
+0
-246
0 additions, 246 deletions
dune/matrix-vector/test/genericvectortoolstest.cc
with
0 additions
and
247 deletions
dune/matrix-vector/test/CMakeLists.txt
+
0
−
1
View file @
f4171224
dune_add_test
(
SOURCES arithmetictest.cc
)
dune_add_test
(
SOURCES genericvectortoolstest.cc
)
dune_add_test
(
SOURCES staticmatrixtoolstest.cc
)
dune_add_test
(
SOURCES triangularsolvetest.cc
)
This diff is collapsed.
Click to expand it.
dune/matrix-vector/test/genericvectortoolstest.cc
deleted
100644 → 0
+
0
−
246
View file @
14796027
#
ifdef
HAVE_CONFIG_H
#include
"config.h"
#endif
#include
<dune/common/exceptions.hh>
#include
<dune/common/fvector.hh>
#include
<dune/common/fmatrix.hh>
#include
<dune/common/parallel/mpihelper.hh>
#include
<dune/common/typeutilities.hh>
#include
<dune/istl/bcrsmatrix.hh>
#include
<dune/istl/bvector.hh>
#include
<dune/istl/matrixindexset.hh>
#include
<dune/istl/multitypeblockmatrix.hh>
#include
<dune/istl/multitypeblockvector.hh>
#include
<dune/matrix-vector/algorithm.hh>
#include
<dune/matrix-vector/genericvectortools.hh>
/// custom multitype types to allow for BlockVector nesting
template
<
class
...
Args
>
struct
CustomMultiTypeBlockVector
:
public
Dune
::
MultiTypeBlockVector
<
Args
...
>
{
constexpr
static
int
blocklevel
=
1
;
// fake value
};
template
<
class
...
Args
>
struct
CustomMultiTypeBlockMatrix
:
public
Dune
::
MultiTypeBlockMatrix
<
Args
...
>
{
constexpr
static
int
blocklevel
=
1
;
// fake value
};
// inject matrix traits for CustomMultiTypeBlockMatrix
namespace
Dune
{
namespace
MatrixVector
{
template
<
class
...
Args
>
struct
MatrixTraits
<
CustomMultiTypeBlockMatrix
<
Args
...
>>
{
enum
{
isMatrix
=
true
};
};
}}
class
ResizeTestSuite
{
/// typedefs
using
BS
=
std
::
bitset
<
2
>
;
using
FV
=
Dune
::
FieldVector
<
double
,
3
>
;
using
BV
=
Dune
::
BlockVector
<
FV
>
;
using
MV
=
CustomMultiTypeBlockVector
<
BV
,
BV
,
FV
>
;
using
FM
=
Dune
::
FieldMatrix
<
double
,
3
,
10
>
;
using
BM
=
Dune
::
BCRSMatrix
<
FM
>
;
using
MM
=
CustomMultiTypeBlockMatrix
<
CustomMultiTypeBlockMatrix
<
BM
>
,
CustomMultiTypeBlockMatrix
<
BM
>
,
CustomMultiTypeBlockMatrix
<
FM
>>
;
/// instanciation helper
auto
createBM
(
size_t
n
)
{
BM
bm
;
Dune
::
MatrixIndexSet
indices
(
n
,
n
+
10
);
indices
.
exportIdx
(
bm
);
return
bm
;
}
auto
createMM
(
size_t
n1
,
size_t
n2
)
{
using
namespace
Dune
::
Indices
;
MM
mm
;
mm
[
_0
][
_0
]
=
createBM
(
n1
);
mm
[
_1
][
_0
]
=
createBM
(
n2
);
return
mm
;
}
bool
checkGetSize
()
{
using
namespace
Dune
::
MatrixVector
::
Generic
::
Impl
;
std
::
cout
<<
"Testing getSize... "
;
auto
hasSize
=
[](
auto
&&
c
,
auto
&&
size
)
{
if
(
getSize
(
c
,
Dune
::
PriorityTag
<
42
>
())
!=
size
)
DUNE_THROW
(
Dune
::
Exception
,
"Unexpected getSize mismatch."
);
};
try
{
// test vector types
using
BS
=
std
::
bitset
<
2
>
;
hasSize
(
BS
(),
(
uint
)
2
);
using
FV
=
Dune
::
FieldVector
<
double
,
3
>
;
hasSize
(
FV
(),
(
uint
)
3
);
using
BV
=
Dune
::
BlockVector
<
FV
>
;
hasSize
(
BV
(
4
),
(
uint
)
4
);
using
MV
=
CustomMultiTypeBlockVector
<
FV
,
BV
,
FV
,
FV
,
BV
>
;
hasSize
(
MV
(),
(
uint
)
5
);
// test matrix types
using
FM
=
Dune
::
FieldMatrix
<
double
,
3
,
10
>
;
hasSize
(
FM
(),
(
uint
)
3
);
using
BM
=
Dune
::
BCRSMatrix
<
FM
>
;
BM
bm
;
Dune
::
MatrixIndexSet
indices
(
4
,
10
);
indices
.
exportIdx
(
bm
);
hasSize
(
bm
,
(
uint
)
4
);
using
MM
=
CustomMultiTypeBlockMatrix
<
BM
,
BM
,
BM
,
FM
,
FM
>
;
hasSize
(
MM
(),
(
uint
)
5
);
}
catch
(
Dune
::
Exception
e
)
{
std
::
cout
<<
"FAILURE."
<<
std
::
endl
;
std
::
cout
<<
e
<<
std
::
endl
;
return
false
;
}
std
::
cout
<<
"done."
<<
std
::
endl
;
return
true
;
}
//! yield test access to protected ScalarSwitch method subSizeProvider
template
<
class
Vector
>
struct
SubSizeProviderAccess
:
Dune
::
MatrixVector
::
Generic
::
Impl
::
ScalarSwitch
<
Vector
>
{
using
Base
=
Dune
::
MatrixVector
::
Generic
::
Impl
::
ScalarSwitch
<
Vector
>
;
template
<
class
T
>
static
decltype
(
auto
)
test
(
T
&&
t
)
{
return
Base
::
subSizeProvider
(
std
::
forward
<
T
>
(
t
));
}
};
bool
checkSubSizeProvider
()
{
using
namespace
Dune
::
MatrixVector
;
std
::
cout
<<
"Testing subSizeProvider... "
;
// check if the sizeProvider yields the same result as given in t
auto
pointsToSame
=
[](
auto
&
o1
,
auto
&
o2
)
{
if
(
&
o1
!=
&
o2
)
DUNE_THROW
(
Dune
::
Exception
,
"Unexpected subSizeProvider."
);
};
// check if the sizeProvider yields the correct result for given vector type
auto
testVectorRange
=
[
&
](
const
auto
&
v
)
{
sparseRangeFor
(
v
,
[
&
](
auto
&&
vi
,
auto
)
{
pointsToSame
(
vi
,
SubSizeProviderAccess
<
std
::
decay_t
<
decltype
(
v
)
>>::
test
(
vi
));
});
};
// check if the sizeProvider yields the correct result for given matrix type
auto
testMatrixRange
=
[
&
](
const
auto
&
m
)
{
sparseRangeFor
(
m
,
[
&
](
auto
&&
mi
,
auto
)
{
sparseRangeFirst
(
mi
,
[
&
](
auto
&&
mii
)
{
pointsToSame
(
mii
,
SubSizeProviderAccess
<
std
::
decay_t
<
decltype
(
m
)
>>::
test
(
mi
));
});
});
};
try
{
// test vector types
testVectorRange
(
FV
());
testVectorRange
(
BV
(
4
));
testVectorRange
(
MV
());
// test matrix types
testMatrixRange
(
FM
());
testMatrixRange
(
createBM
(
4
));
testMatrixRange
(
createMM
(
6
,
0
));
}
catch
(
Dune
::
Exception
e
)
{
std
::
cout
<<
"FAILURE."
<<
std
::
endl
;
std
::
cout
<<
e
<<
std
::
endl
;
return
false
;
}
std
::
cout
<<
"done."
<<
std
::
endl
;
return
true
;
}
bool
checkResize
()
{
using
namespace
Dune
::
MatrixVector
::
Generic
;
std
::
cout
<<
"Testing resize... "
;
// test failure for invalid static resize
try
{
resize
(
FV
(),
Dune
::
FieldVector
<
int
,
5
>
());
return
false
;
}
catch
(
Dune
::
Exception
)
{
// TODO make sure the right exception is thrown
}
auto
hasSize
=
[](
auto
&&
size
,
auto
&&
expectedSize
)
{
if
(
size
!=
expectedSize
)
DUNE_THROW
(
Dune
::
Exception
,
"Resize created unexpected size."
);
};
try
{
// test vector types
BS
bs
,
bs2
;
resize
(
bs
,
bs2
);
FV
fv
,
fv2
;
resize
(
fv
,
fv2
);
BV
bv
,
bv2
(
5
);
resize
(
bv
,
bv2
);
hasSize
(
bv
.
size
(),
(
uint
)
5
);
MV
mv
,
mv2
;
using
namespace
Dune
::
Indices
;
mv2
[
_0
].
resize
(
5
);
resize
(
mv
,
mv2
);
hasSize
(
mv
[
_0
].
size
(),
(
uint
)
5
);
hasSize
(
mv
[
_1
].
size
(),
(
uint
)
0
);
hasSize
(
mv
[
_2
].
size
(),
(
uint
)
3
);
// test "natural" matrix types
FM
fm
;
resize
(
fv
,
fm
);
BM
bm
=
createBM
(
4
);
resize
(
bv
,
bm
);
hasSize
(
bv
.
size
(),
(
uint
)
4
);
MM
mm
=
createMM
(
0
,
6
);
resize
(
mv
,
mm
);
hasSize
(
mv
[
_0
].
size
(),
(
uint
)
0
);
hasSize
(
mv
[
_1
].
size
(),
(
uint
)
6
);
hasSize
(
mv
[
_2
].
size
(),
(
uint
)
3
);
// test "unnatural" matrix types
// TODO
}
catch
(
Dune
::
Exception
e
)
{
std
::
cout
<<
"FAILURE."
<<
std
::
endl
;
std
::
cout
<<
e
<<
std
::
endl
;
return
false
;
}
std
::
cout
<<
"done."
<<
std
::
endl
;
return
true
;
}
public
:
bool
check
()
{
std
::
cout
<<
"Resize test starting.."
<<
std
::
endl
;
bool
passed
=
true
;
passed
=
passed
and
checkGetSize
();
passed
=
passed
and
checkSubSizeProvider
();
passed
=
passed
and
checkResize
();
// TODO test ignore nodes type
if
(
passed
)
std
::
cout
<<
"Resize test succeeded.
\n
"
<<
std
::
endl
;
return
passed
;
}
};
int
main
(
int
argc
,
char
*
argv
[])
{
Dune
::
MPIHelper
::
instance
(
argc
,
argv
);
bool
passed
=
ResizeTestSuite
().
check
();
if
(
not
passed
)
return
1
;
return
0
;
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
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!
Save comment
Cancel
Please
register
or
sign in
to comment