| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -24,6 +24,19 @@ void DataBlock::InitFromGrid(Grid &grid, Input &input) { | |||
| 24 | 24 | GridHost gridHost(grid); | |
| 25 | 25 | gridHost.SyncFromDevice(); | |
| 26 | 26 | ||
| 27 | + nghost = std::vector<int>(3); | ||
| 28 | + np_int = std::vector<int>(3); | ||
| 29 | + np_tot = std::vector<int>(3); | ||
| 30 | + lbound = std::vector<BoundaryType>(3); | ||
| 31 | + rbound = std::vector<BoundaryType>(3); | ||
| 32 | + beg = std::vector<int>(3); | ||
| 33 | + end = std::vector<int>(3); | ||
| 34 | + gbeg = std::vector<int>(3); | ||
| 35 | + gend = std::vector<int>(3); | ||
| 36 | + | ||
| 37 | + xbeg = std::vector<real>(3); | ||
| 38 | + xend = std::vector<real>(3); | ||
| 39 | + | ||
| 27 | 40 | // Get the number of points from the parent grid object | |
| 28 | 41 | for(int dir = 0 ; dir < 3 ; dir++) { | |
| 29 | 42 | nghost[dir] = grid.nghost[dir]; | |
@@ -62,14 +75,14 @@ void DataBlock::InitFromGrid(Grid &grid, Input &input) { | |||
| 62 | 75 | ||
| 63 | 76 | // Allocate the required fields | |
| 64 | 77 | for(int dir = 0 ; dir < 3 ; dir++) { | |
| 65 | - x[dir] = IdefixArray1D<real>("DataBlock_x",np_tot[dir]); | ||
| 66 | - xr[dir] = IdefixArray1D<real>("DataBlock_xr",np_tot[dir]); | ||
| 67 | - xl[dir] = IdefixArray1D<real>("DataBlock_xl",np_tot[dir]); | ||
| 68 | - dx[dir] = IdefixArray1D<real>("DataBlock_dx",np_tot[dir]); | ||
| 69 | - xgc[dir] = IdefixArray1D<real>("DataBlock_xgc",np_tot[dir]); | ||
| 70 | - | ||
| 71 | - A[dir] = IdefixArray3D<real>("DataBlock_A", | ||
| 72 | - np_tot[KDIR]+KOFFSET, np_tot[JDIR]+JOFFSET, np_tot[IDIR]+IOFFSET); | ||
| 78 | + x.push_back(IdefixArray1D<real>("DataBlock_x",np_tot[dir])); | ||
| 79 | + xr.push_back(IdefixArray1D<real>("DataBlock_xr",np_tot[dir])); | ||
| 80 | + xl.push_back(IdefixArray1D<real>("DataBlock_xl",np_tot[dir])); | ||
| 81 | + dx.push_back(IdefixArray1D<real>("DataBlock_dx",np_tot[dir])); | ||
| 82 | + xgc.push_back(IdefixArray1D<real>("DataBlock_xgc",np_tot[dir])); | ||
| 83 | + | ||
| 84 | + A.push_back(IdefixArray3D<real>("DataBlock_A", | ||
| 85 | + np_tot[KDIR]+KOFFSET, np_tot[JDIR]+JOFFSET, np_tot[IDIR]+IOFFSET)); | ||
| 73 | 86 | } | |
| 74 | 87 | ||
| 75 | 88 | dV = IdefixArray3D<real>("DataBlock_dV",np_tot[KDIR],np_tot[JDIR],np_tot[IDIR]); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -23,11 +23,11 @@ | |||
| 23 | 23 | class DataBlock { | |
| 24 | 24 | public: | |
| 25 | 25 | // Local grid information | |
| 26 | - IdefixArray1D<real> x[3]; ///< geometrical central points | ||
| 27 | - IdefixArray1D<real> xr[3]; ///< cell right interface | ||
| 28 | - IdefixArray1D<real> xl[3]; ///< cell left interface | ||
| 29 | - IdefixArray1D<real> dx[3]; ///< cell width | ||
| 30 | - IdefixArray1D<real> xgc[3]; ///< cell geometrical cell center | ||
| 26 | + std::vector<IdefixArray1D<real>> x; ///< geometrical central points | ||
| 27 | + std::vector<IdefixArray1D<real>> xr; ///< cell right interface | ||
| 28 | + std::vector<IdefixArray1D<real>> xl; ///< cell left interface | ||
| 29 | + std::vector<IdefixArray1D<real>> dx; ///< cell width | ||
| 30 | + std::vector<IdefixArray1D<real>> xgc; ///< cell geometrical cell center | ||
| 31 | 31 | IdefixArray1D<real> rt; ///< In spherical coordinates, gives $\tilde{r}$ | |
| 32 | 32 | IdefixArray1D<real> sinx2m; ///< In spherical coordinates, | |
| 33 | 33 | ///< gives sin(th) at a j-1/2 interface | |
@@ -38,27 +38,27 @@ class DataBlock { | |||
| 38 | 38 | IdefixArray1D<real> dmu; ///< In spherical coordinates, | |
| 39 | 39 | ///< gives the $\theta$ volume = fabs(cos(th_m) - cos(th_p)) | |
| 40 | 40 | ||
| 41 | - real xbeg[3]; ///< Beginning of active domain in datablock | ||
| 42 | - real xend[3]; ///< End of active domain in datablock | ||
| 41 | + std::vector<real> xbeg; ///< Beginning of active domain in datablock | ||
| 42 | + std::vector<real> xend; ///< End of active domain in datablock | ||
| 43 | 43 | ||
| 44 | - IdefixArray3D<real> dV; ///< cell volume | ||
| 45 | - IdefixArray3D<real> A[3]; ///< cell right interface area | ||
| 44 | + IdefixArray3D<real> dV; ///< cell volume | ||
| 45 | + std::vector<IdefixArray3D<real>> A; ///< cell right interface area | ||
| 46 | 46 | ||
| 47 | - int np_tot[3]; ///< total number of grid points in datablock | ||
| 48 | - int np_int[3]; ///< active number of grid points in datablock (excl. ghost cells) | ||
| 47 | + std::vector<int> np_tot; ///< total number of grid points in datablock | ||
| 48 | + std::vector<int> np_int; ///< active number of grid points in datablock (excl. ghost cells) | ||
| 49 | 49 | ||
| 50 | - int nghost[3]; ///< number of ghost cells at each boundary | ||
| 51 | - BoundaryType lbound[3]; ///< Boundary condition to the left | ||
| 52 | - BoundaryType rbound[3]; ///< Boundary condition to the right | ||
| 50 | + std::vector<int> nghost; ///< number of ghost cells at each boundary | ||
| 51 | + std::vector<BoundaryType> lbound; ///< Boundary condition to the left | ||
| 52 | + std::vector<BoundaryType> rbound; ///< Boundary condition to the right | ||
| 53 | 53 | ||
| 54 | - bool haveAxis = false; ///< DataBlock contains points on the axis and a special treatment | ||
| 55 | - ///< has been required for these. | ||
| 54 | + bool haveAxis{false}; ///< DataBlock contains points on the axis and a special treatment | ||
| 55 | + ///< has been required for these. | ||
| 56 | 56 | ||
| 57 | - int beg[3]; ///< First local index of the active domain | ||
| 58 | - int end[3]; ///< Last local index of the active domain+1 | ||
| 57 | + std::vector<int> beg; ///< First local index of the active domain | ||
| 58 | + std::vector<int> end; ///< Last local index of the active domain+1 | ||
| 59 | 59 | ||
| 60 | - int gbeg[3]; ///< First global index of the active domain of this datablock | ||
| 61 | - int gend[3]; ///< Last global index of the active domain of this datablock | ||
| 60 | + std::vector<int> gbeg; ///< First global index of the active domain of this datablock | ||
| 61 | + std::vector<int> gend; ///< Last global index of the active domain of this datablock | ||
| 62 | 62 | ||
| 63 | 63 | real dt; ///< Current timestep | |
| 64 | 64 | real t; ///< Current time | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -23,24 +23,27 @@ DataBlockHost::DataBlockHost(DataBlock& datain) { | |||
| 23 | 23 | ||
| 24 | 24 | // Create mirrors (should be mirror_view) | |
| 25 | 25 | for(int dir = 0 ; dir < 3 ; dir++) { | |
| 26 | - x[dir] = Kokkos::create_mirror_view(data->x[dir]); | ||
| 27 | - xr[dir] = Kokkos::create_mirror_view(data->xr[dir]); | ||
| 28 | - xl[dir] = Kokkos::create_mirror_view(data->xl[dir]); | ||
| 29 | - dx[dir] = Kokkos::create_mirror_view(data->dx[dir]); | ||
| 30 | - A[dir] = Kokkos::create_mirror_view(data->A[dir]); | ||
| 31 | - np_tot[dir] = data->np_tot[dir]; | ||
| 32 | - np_int[dir] = data->np_int[dir]; | ||
| 33 | - nghost[dir] = data->nghost[dir]; | ||
| 34 | - | ||
| 35 | - xbeg[dir] = data->xbeg[dir]; | ||
| 36 | - xend[dir] = data->xend[dir]; | ||
| 37 | - beg[dir] = data->beg[dir]; | ||
| 38 | - end[dir] = data->end[dir]; | ||
| 39 | - gbeg[dir] = data->gbeg[dir]; | ||
| 40 | - gend[dir] = data->gend[dir]; | ||
| 26 | + x.push_back(Kokkos::create_mirror_view(data->x[dir])); | ||
| 27 | + xr.push_back(Kokkos::create_mirror_view(data->xr[dir])); | ||
| 28 | + xl.push_back(Kokkos::create_mirror_view(data->xl[dir])); | ||
| 29 | + dx.push_back(Kokkos::create_mirror_view(data->dx[dir])); | ||
| 30 | + A.push_back(Kokkos::create_mirror_view(data->A[dir])); | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + np_tot = data->np_tot; | ||
| 34 | + np_int = data->np_int; | ||
| 35 | + np_tot = data->np_tot; | ||
| 36 | + | ||
| 37 | + nghost = data->nghost; | ||
| 38 | + | ||
| 39 | + xbeg = data->xbeg; | ||
| 40 | + xend = data->xend; | ||
| 41 | + beg = data->beg; | ||
| 42 | + end = data->end; | ||
| 43 | + gbeg = data->gbeg; | ||
| 44 | + gend = data->gend; | ||
| 41 | 45 | ||
| 42 | 46 | // TO BE COMPLETED... | |
| 43 | - } | ||
| 44 | 47 | ||
| 45 | 48 | dV = Kokkos::create_mirror_view(data->dV); | |
| 46 | 49 | Vc = Kokkos::create_mirror_view(data->hydro.Vc); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -14,44 +14,44 @@ | |||
| 14 | 14 | class DataBlockHost { | |
| 15 | 15 | public: | |
| 16 | 16 | // Local grid information | |
| 17 | - IdefixArray1D<real>::HostMirror x[3]; // geometrical central points | ||
| 18 | - IdefixArray1D<real>::HostMirror xr[3]; // cell right interface | ||
| 19 | - IdefixArray1D<real>::HostMirror xl[3]; // cell left interface | ||
| 20 | - IdefixArray1D<real>::HostMirror dx[3]; // cell width | ||
| 17 | + std::vector<IdefixArray1D<real>::HostMirror> x; ///> geometrical central points | ||
| 18 | + std::vector<IdefixArray1D<real>::HostMirror> xr; ///> cell right interface | ||
| 19 | + std::vector<IdefixArray1D<real>::HostMirror> xl; ///> cell left interface | ||
| 20 | + std::vector<IdefixArray1D<real>::HostMirror> dx; ///> cell width | ||
| 21 | 21 | ||
| 22 | - IdefixArray3D<real>::HostMirror dV; // cell volume | ||
| 23 | - IdefixArray3D<real>::HostMirror A[3]; // cell right interface area | ||
| 22 | + IdefixArray3D<real>::HostMirror dV; ///> cell volume | ||
| 23 | + std::vector<IdefixArray3D<real>::HostMirror> A; ///> cell right interface area | ||
| 24 | 24 | ||
| 25 | - IdefixArray4D<real>::HostMirror Vc; // Main cell-centered primitive variables index | ||
| 25 | + IdefixArray4D<real>::HostMirror Vc; ///> Main cell-centered primitive variables index | ||
| 26 | 26 | #if MHD == YES | |
| 27 | - IdefixArray4D<real>::HostMirror Vs; // Main face-centered primitive variables index | ||
| 28 | - IdefixArray4D<real>::HostMirror Ve; // Main edge-centered primitive variables index | ||
| 29 | - IdefixArray4D<real>::HostMirror J; // Current (only when haveCurrent is enabled) | ||
| 27 | + IdefixArray4D<real>::HostMirror Vs; ///> Main face-centered primitive variables index | ||
| 28 | + IdefixArray4D<real>::HostMirror Ve; ///> Main edge-centered primitive variables index | ||
| 29 | + IdefixArray4D<real>::HostMirror J; ///> Current (only when haveCurrent is enabled) | ||
| 30 | 30 | #endif | |
| 31 | - IdefixArray4D<real>::HostMirror Uc; // Main cell-centered conservative variables | ||
| 31 | + IdefixArray4D<real>::HostMirror Uc; ///> Main cell-centered conservative variables | ||
| 32 | 32 | IdefixArray3D<real>::HostMirror InvDt; | |
| 33 | 33 | ||
| 34 | - IdefixArray3D<real>::HostMirror Ex1; // x1 electric field | ||
| 35 | - IdefixArray3D<real>::HostMirror Ex2; // x2 electric field | ||
| 36 | - IdefixArray3D<real>::HostMirror Ex3; // x3 electric field | ||
| 34 | + IdefixArray3D<real>::HostMirror Ex1; ///> x1 electric field | ||
| 35 | + IdefixArray3D<real>::HostMirror Ex2; ///> x2 electric field | ||
| 36 | + IdefixArray3D<real>::HostMirror Ex3; ///> x3 electric field | ||
| 37 | 37 | ||
| 38 | 38 | ||
| 39 | - real xbeg[3]; // Beginning of dataBlock | ||
| 40 | - real xend[3]; // End of dataBlock | ||
| 39 | + std::vector<real> xbeg; ///> Beginning of dataBlock | ||
| 40 | + std::vector<real> xend; ///> End of dataBlock | ||
| 41 | 41 | ||
| 42 | - int np_tot[3]; // total number of grid points | ||
| 43 | - int np_int[3]; // internal number of grid points | ||
| 42 | + std::vector<int> np_tot; ///> total number of grid points | ||
| 43 | + std::vector<int> np_int; ///> internal number of grid points | ||
| 44 | 44 | ||
| 45 | - int nghost[3]; // number of ghost cells | ||
| 45 | + std::vector<int> nghost; ///> number of ghost cells | ||
| 46 | 46 | ||
| 47 | - BoundaryType lbound[3]; // Boundary condition to the left | ||
| 48 | - BoundaryType rbound[3]; // Boundary condition to the right | ||
| 47 | + std::vector<BoundaryType> lbound; ///> Boundary condition to the left | ||
| 48 | + std::vector<BoundaryType> rbound; ///> Boundary condition to the right | ||
| 49 | 49 | ||
| 50 | - int beg[3]; // Begining of internal indices | ||
| 51 | - int end[3]; // End of internal indices | ||
| 50 | + std::vector<int> beg; ///> Begining of internal indices | ||
| 51 | + std::vector<int> end; ///> End of internal indices | ||
| 52 | 52 | ||
| 53 | - int gbeg[3]; // Begining of local block in the grid (internal) | ||
| 54 | - int gend[3]; // End of local block in the grid (internal) | ||
| 53 | + std::vector<int> gbeg; ///> Begining of local block in the grid (internal) | ||
| 54 | + std::vector<int> gend; ///> End of local block in the grid (internal) | ||
| 55 | 55 | ||
| 56 | 56 | // Constructor | |
| 57 | 57 | explicit DataBlockHost(DataBlock &); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -133,11 +133,9 @@ void Fargo::Init(Input &input, DataBlock *data) { | |||
| 133 | 133 | this->hydro = &(data->hydro); | |
| 134 | 134 | ||
| 135 | 135 | // A bit of arithmetic to get the sizes of the working array | |
| 136 | - for(int dir = 0 ; dir < 3 ; dir++) { | ||
| 137 | - this->nghost[dir] = data->nghost[dir]; | ||
| 138 | - this->beg[dir] = data->beg[dir]; | ||
| 139 | - this->end[dir] = data->end[dir]; | ||
| 140 | - } | ||
| 136 | + this->nghost = data->nghost; | ||
| 137 | + this->beg = data->beg; | ||
| 138 | + this->end = data->end; | ||
| 141 | 139 | ||
| 142 | 140 | if(input.CheckBlock("Fargo")) { | |
| 143 | 141 | std::string opType = input.Get<std::string>("Fargo","velocity",0); | |
@@ -235,9 +233,9 @@ void Fargo::Init(Input &input, DataBlock *data) { | |||
| 235 | 233 | vars.push_back(i); | |
| 236 | 234 | } | |
| 237 | 235 | #if MHD == YES | |
| 238 | - this->mpi.Init(data->mygrid, vars, this->nghost, data->np_int, true); | ||
| 236 | + this->mpi.Init(data->mygrid, vars, this->nghost.data(), data->np_int.data(), true); | ||
| 239 | 237 | #else | |
| 240 | - this->mpi.Init(data->mygrid, vars, this->nghost, data->np_int); | ||
| 238 | + this->mpi.Init(data->mygrid, vars, this->nghost.data(), data->np_int.data()); | ||
| 241 | 239 | #endif | |
| 242 | 240 | } | |
| 243 | 241 | #endif | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -42,9 +42,9 @@ class Fargo { | |||
| 42 | 42 | Mpi mpi; // Fargo-specific MPI layer | |
| 43 | 43 | #endif | |
| 44 | 44 | ||
| 45 | - int beg[3]; | ||
| 46 | - int end[3]; | ||
| 47 | - int nghost[3]; | ||
| 45 | + std::vector<int> beg; | ||
| 46 | + std::vector<int> end; | ||
| 47 | + std::vector<int> nghost; | ||
| 48 | 48 | int maxShift; //< maximum number of cells along which we plan to shift. | |
| 49 | 49 | real dtMax{0}; //< Maximum allowable dt for a given Fargo velocity | |
| 50 | 50 | //< when domain decomposition is enabled | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -18,6 +18,11 @@ Grid::Grid() { | |||
| 18 | 18 | Grid::Grid(Input &input) { | |
| 19 | 19 | idfx::pushRegion("Grid::Grid(Input)"); | |
| 20 | 20 | ||
| 21 | + xbeg = std::vector<real>(3); | ||
| 22 | + xend = std::vector<real>(3); | ||
| 23 | + | ||
| 24 | + nghost = std::vector<int>(3); | ||
| 25 | + | ||
| 21 | 26 | // Get grid size from input file, block [Grid] | |
| 22 | 27 | int npoints[3]; | |
| 23 | 28 | for(int dir = 0 ; dir < 3 ; dir++) { | |
@@ -39,6 +44,10 @@ Grid::Grid(Input &input) { | |||
| 39 | 44 | } | |
| 40 | 45 | } | |
| 41 | 46 | ||
| 47 | + np_tot = std::vector<int>(3); | ||
| 48 | + np_int = std::vector<int>(3); | ||
| 49 | + lbound = std::vector<BoundaryType>(3); | ||
| 50 | + rbound = std::vector<BoundaryType>(3); | ||
| 42 | 51 | ||
| 43 | 52 | for(int dir = 0 ; dir < 3 ; dir++) { | |
| 44 | 53 | np_tot[dir] = npoints[dir] + 2*nghost[dir]; | |
@@ -99,7 +108,10 @@ Grid::Grid(Input &input) { | |||
| 99 | 108 | } | |
| 100 | 109 | ||
| 101 | 110 | // Allocate the grid structure on device. Initialisation will come from GridHost | |
| 102 | - | ||
| 111 | + x = std::vector<IdefixArray1D<real>>(3); | ||
| 112 | + xr = std::vector<IdefixArray1D<real>>(3); | ||
| 113 | + xl = std::vector<IdefixArray1D<real>>(3); | ||
| 114 | + dx = std::vector<IdefixArray1D<real>>(3); | ||
| 103 | 115 | for(int dir = 0 ; dir < 3 ; dir++) { | |
| 104 | 116 | x[dir] = IdefixArray1D<real>("Grid_x",np_tot[dir]); | |
| 105 | 117 | xr[dir] = IdefixArray1D<real>("Grid_xr",np_tot[dir]); | |
@@ -108,6 +120,8 @@ Grid::Grid(Input &input) { | |||
| 108 | 120 | } | |
| 109 | 121 | ||
| 110 | 122 | // Allocate proc structure (by default: one proc in each direction, size one) | |
| 123 | + nproc = std::vector<int> (3); | ||
| 124 | + xproc = std::vector<int> (3); | ||
| 111 | 125 | for(int i=0 ; i < 3; i++) { | |
| 112 | 126 | nproc[i] = 1; | |
| 113 | 127 | xproc[i] = 0; | |
@@ -168,17 +182,11 @@ Grid::Grid(Input &input) { | |||
| 168 | 182 | } | |
| 169 | 183 | ||
| 170 | 184 | // Create cartesian communicator along with cartesian coordinates. | |
| 171 | - MPI_Cart_create(MPI_COMM_WORLD, 3, nproc, period, 0, &CartComm); | ||
| 172 | - MPI_Cart_coords(CartComm, idfx::prank, 3, xproc); | ||
| 185 | + MPI_Cart_create(MPI_COMM_WORLD, 3, nproc.data(), period, 0, &CartComm); | ||
| 186 | + MPI_Cart_coords(CartComm, idfx::prank, 3, xproc.data()); | ||
| 173 | 187 | ||
| 174 | 188 | MPI_Barrier(MPI_COMM_WORLD); | |
| 175 | - idfx::cout << "Grid::Grid: Current MPI proc coordinates ("; | ||
| 176 | - | ||
| 177 | - for(int dir = 0; dir < 3; dir++) { | ||
| 178 | - idfx::cout << xproc[dir]; | ||
| 179 | - if(dir < 2) idfx::cout << ", "; | ||
| 180 | - } | ||
| 181 | - idfx::cout << ")" << std::endl; | ||
| 189 | + | ||
| 182 | 190 | ||
| 183 | 191 | if(haveAxis) { | |
| 184 | 192 | // create axis communicator to be able to exchange data over the axis | |
@@ -229,12 +237,6 @@ void Grid::makeDomainDecomposition() { | |||
| 229 | 237 | nproc[dirmax]=nproc[dirmax]*2; | |
| 230 | 238 | nleft=nleft/2; | |
| 231 | 239 | } | |
| 232 | - | ||
| 233 | - idfx::cout << "Grid::makeDomainDecomposition: grid is ("; | ||
| 234 | - for(int dir = 0 ; dir < DIMENSIONS ; dir++) { | ||
| 235 | - idfx::cout << " " << nproc[dir] << " "; | ||
| 236 | - } | ||
| 237 | - idfx::cout << ")" << std::endl; | ||
| 238 | 240 | } | |
| 239 | 241 | /* | |
| 240 | 242 | Grid& Grid::operator=(const Grid& grid) { | |
@@ -257,6 +259,7 @@ Grid& Grid::operator=(const Grid& grid) { | |||
| 257 | 259 | */ | |
| 258 | 260 | ||
| 259 | 261 | void Grid::ShowConfig() { | |
| 262 | + | ||
| 260 | 263 | for(int dir = 0 ; dir < DIMENSIONS ; dir++) { | |
| 261 | 264 | idfx::cout << "Grid: "; | |
| 262 | 265 | std::string lboundString, rboundString; | |
@@ -315,4 +318,18 @@ void Grid::ShowConfig() { | |||
| 315 | 318 | << "...." << np_int[dir] << "...." << xend[dir] << "\t" << rboundString | |
| 316 | 319 | << std::endl; | |
| 317 | 320 | } | |
| 321 | + #ifdef WITH_MPI | ||
| 322 | + idfx::cout << "Grid: MPI domain decomposition is ("; | ||
| 323 | + for(int dir = 0 ; dir < DIMENSIONS ; dir++) { | ||
| 324 | + idfx::cout << " " << nproc[dir] << " "; | ||
| 325 | + } | ||
| 326 | + idfx::cout << ")" << std::endl; | ||
| 327 | + idfx::cout << "Grid: Current MPI proc coordinates ("; | ||
| 328 | + | ||
| 329 | + for(int dir = 0; dir < 3; dir++) { | ||
| 330 | + idfx::cout << xproc[dir]; | ||
| 331 | + if(dir < 2) idfx::cout << ", "; | ||
| 332 | + } | ||
| 333 | + idfx::cout << ")" << std::endl; | ||
| 334 | + #endif | ||
| 318 | 335 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments