Vlasiator ebf0dd394 on dev (v5.4.0 + 1054 commits)
Loading...
Searching...
No Matches
grid_test.cpp
Go to the documentation of this file.
1#include "dccrg.hpp"
2#include "mpi.h"
3#include <iostream>
4#include "fstream"
5
6struct grid_data {
7
8 int value = 0;
9
10 std::tuple<void*, int, MPI_Datatype> get_mpi_datatype()
11 {
12 return std::make_tuple(this, 0, MPI_BYTE);
13 }
14
15};
16
17int main(int argc, char* argv[]) {
18
19 if (MPI_Init(&argc, &argv) != MPI_SUCCESS) {
20 // cerr << "Coudln't initialize MPI." << endl;
21 abort();
22 }
23
24 MPI_Comm comm = MPI_COMM_WORLD;
25
26 int rank = 0, comm_size = 0;
27 MPI_Comm_rank(comm, &rank);
28 MPI_Comm_size(comm, &comm_size);
29
30 dccrg::Dccrg<grid_data> grid;
31
32 const int xDim = 16;
33 const int yDim = 16;
34 const int zDim = 16;
35 const std::array<uint64_t, 3> grid_size = {{xDim,yDim,zDim}};
36
37 grid.initialize(grid_size, comm, "RANDOM", 1);
38
39 grid.balance_load();
40
41 bool doRefine = true;
42 const std::array<uint,4> refinementIds = {{4,22,29,4104}};
43 if(doRefine) {
44 for(uint i = 0; i < refinementIds.size(); i++) {
45 if(refinementIds[i] > 0) {
46 grid.refine_completely(refinementIds[i]);
47 grid.stop_refining();
48 }
49 }
50 }
51
52 grid.balance_load();
53
54 // std::vector<uint64_t> cells = grid.get_cells()
55
56 auto cells = grid.cells;
57 sort(cells.begin(), cells.end());
58
59 std::cout << "Grid size at 0 refinement is " << xDim << " x " << yDim << " x " << zDim << std::endl;
60 for (const auto& cell: cells) {
61 std::cout << "Data of cell " << cell.id << " is stored at " << cell.data << std::endl;
62 }
63
64 std::ofstream outfile;
65
66 grid.write_vtk_file("test.vtk");
67
68 outfile.open("test.vtk", std::ofstream::app);
69 // write each cells id
70 outfile << "CELL_DATA " << cells.size() << std::endl;
71 outfile << "SCALARS id int 1" << std::endl;
72 outfile << "LOOKUP_TABLE default" << std::endl;
73 for (const auto& cell: cells) {
74 outfile << cell.id << std::endl;
75 }
76 outfile.close();
77
78 MPI_Finalize();
79
80 return 0;
81
82}
for i
Definition Dispersion.m:24
std::tuple< void *, int, MPI_Datatype > get_mpi_datatype()
Definition grid_test.cpp:10
int main()