1 #include <iostream>
2
3 #include <dune/common/densevector.hh>
4 #include <dune/common/dynvector.hh>
5 #include <dune/common/exceptions.hh>
6 #include <dune/common/fvector.hh>
7
8 using namespace Dune;
9
10 template <class FirstVectorImp, class SecondVectorImp>
assign(DenseVector<FirstVectorImp> & first,const DenseVector<SecondVectorImp> & second)11 void assign(DenseVector<FirstVectorImp>& first, const DenseVector<SecondVectorImp>& second)
12 {
13 first = second;
14 }
15
run()16 bool run()
17 {
18 bool passed = true;
19 FieldVector<double, 3> fvec1{1, 2, 3};
20 DynamicVector<double> dynvec1{1, 2, 3};
21 FieldVector<double, 3> fvec2;
22 DynamicVector<double> dynvec2(3);
23 // check mixed assignments
24 assign(fvec2, dynvec1);
25 assign(dynvec2, fvec1);
26 for (size_t i = 0; i < 3; ++i) {
27 if (fvec2[i] != dynvec1[i]) {
28 std::cerr << "Assigning a DynamicVector to a FieldVector as DenseVectors does not work!"
29 << std::endl << i << "-th entry after assignment is " << fvec2[i] << ", should be "
30 << i+1 << "!" << std::endl;
31 passed = false;
32 }
33 if (dynvec1[i] != dynvec2[i]) {
34 std::cerr << "Assigning a FieldVector to a DynamicVector as DenseVectors does not work"
35 << std::endl << i << "-th entry after assignment is " << dynvec1[i] << ", should be "
36 << i+1 << "!" << std::endl;
37 passed = false;
38 }
39 }
40 return passed;
41 }
42
main()43 int main()
44 {
45 bool passed = run();
46 if (!passed)
47 DUNE_THROW(Dune::Exception, "Test failed");
48 return !passed;
49 }
50