1 #include <VertexCFD_EvaluatorTestHarness.hpp>
3 #include <Teuchos_DefaultMpiComm.hpp>
4 #include <Tpetra_CrsMatrix.hpp>
5 #include <Tpetra_Map.hpp>
20 using GO = Tpetra::Details::DefaultTypes::global_ordinal_type;
21 using LO = Tpetra::Details::DefaultTypes::local_ordinal_type;
23 auto comm = Teuchos::rcp(
new Teuchos::MpiComm<int>(MPI_COMM_WORLD));
26 GO num_global_entries = nx * ny;
29 new Tpetra::Map<>(num_global_entries, index_base, comm));
31 LO entries_per_row = 5;
32 _matrix = Teuchos::rcp(
new Tpetra::CrsMatrix<>(_map, entries_per_row));
35 Teuchos::ArrayRCP<GO> row_inds(entries_per_row);
36 Teuchos::ArrayRCP<double> row_vals(entries_per_row);
37 LO num_local_rows = _map->getLocalNumElements();
38 for (LO local_row = 0; local_row < num_local_rows; ++local_row)
40 GO global_row = _map->getGlobalElement(local_row);
41 GO ix = global_row % nx;
42 GO iy = global_row / nx;
45 row_inds[0] = global_row;
51 row_inds[num_entries] = ix - 1 + iy * nx;
52 row_vals[num_entries] = -1.0;
57 row_inds[num_entries] = ix + 1 + iy * nx;
58 row_vals[num_entries] = -1.0;
63 row_inds[num_entries] = ix + (iy - 1) * nx;
64 row_vals[num_entries] = -1.0;
69 row_inds[num_entries] = ix + (iy + 1) * nx;
70 row_vals[num_entries] = -1.0;
74 _matrix->insertGlobalValues(global_row,
75 row_inds.view(0, num_entries),
76 row_vals.view(0, num_entries));
78 _matrix->fillComplete();
81 _x = Teuchos::rcp(
new Tpetra::MultiVector<>(_map, 1));
83 _y = Teuchos::rcp(
new Tpetra::MultiVector<>(_map, 1));
90 = {1.342423770482685, 2.18484754096537, 2.723654789583171,
91 3.0479959507414374, 3.201077948227338, 3.201077948227339,
92 3.047995950741439, 2.723654789583172, 2.1848475409653703,
93 1.3424237704826851, 2.1848475409653694, 3.6733116037956237,
94 4.6617756666258785, 5.267251065155242, 5.5552378939405775,
95 5.555237893940578, 5.267251065155244, 4.661775666625878,
96 3.6733116037956237, 2.1848475409653707, 2.723654789583172,
97 4.661775666625879, 5.982885207969479, 6.803994749313078,
98 7.19738466843915, 7.197384668439149, 6.803994749313074,
99 5.982885207969476, 4.6617756666258785, 2.7236547895831706,
100 3.0479959507414387, 5.267251065155243, 6.803994749313077,
101 7.768458055688435, 8.232921362063793, 8.232921362063792,
102 7.76845805568843, 6.803994749313073, 5.26725106515524,
103 3.047995950741437, 3.2010779482273386, 5.555237893940577,
104 7.19738466843915, 8.232921362063792, 8.732921362063793,
105 8.732921362063792, 8.232921362063788, 7.197384668439146,
106 5.555237893940573, 3.2010779482273364, 3.201077948227339,
107 5.555237893940577, 7.197384668439149, 8.23292136206379,
108 8.73292136206379, 8.732921362063788, 8.232921362063786,
109 7.197384668439144, 5.555237893940571, 3.201077948227336,
110 3.0479959507414396, 5.267251065155243, 6.803994749313074,
111 7.76845805568843, 8.232921362063788, 8.232921362063786,
112 7.768458055688429, 6.80399474931307, 5.267251065155238,
113 3.0479959507414365, 2.723654789583173, 4.661775666625879,
114 5.982885207969477, 6.803994749313072, 7.1973846684391445,
115 7.197384668439141, 6.8039947493130715, 5.982885207969472,
116 4.661775666625878, 2.72365478958317, 2.1848475409653707,
117 3.6733116037956255, 4.661775666625879, 5.267251065155241,
118 5.555237893940573, 5.555237893940573, 5.267251065155241,
119 4.661775666625878, 3.673311603795623, 2.18484754096537,
120 1.3424237704826854, 2.1848475409653703, 2.7236547895831715,
121 3.047995950741438, 3.201077948227337, 3.2010779482273364,
122 3.0479959507414374, 2.7236547895831706, 2.1848475409653694,
131 Teuchos::RCP<Tpetra::Map<>> _map;
132 Teuchos::RCP<Tpetra::CrsMatrix<>> _matrix;
133 Teuchos::RCP<Tpetra::MultiVector<>> _x;
134 Teuchos::RCP<Tpetra::MultiVector<>> _y;
135 std::vector<double> _ref_soln;