| 87 | | createSubGrids(); |
| 88 | | } |
| 89 | | |
| 90 | | template <size_t NDIM, typename T> |
| 91 | | void FcCartDecomp<NDIM, T>::createSubGrids(){ |
| 92 | | size_t num = this->getComm()->getNumProcs(); |
| 93 | | this->subGrids.resize(num); |
| 94 | | const FcCartGrid<NDIM> &globalGrid = static_cast<const FcCartGrid<NDIM> &>(this->getGlobalGrid()); |
| 95 | | FcBox<NDIM, double> globalExtents = globalGrid.getExtents(); |
| 96 | | FcBox<NDIM, int> globalCells = globalGrid.getCells(); |
| 97 | | double upper[NDIM], lower[NDIM], dx[NDIM]; |
| 98 | | |
| 99 | | for (size_t i=0; i<NDIM; ++i) |
| 100 | | dx[i] = globalExtents.getLength(i)/globalCells.getLength(i); |
| 101 | | |
| 102 | | for (size_t i=0; i<num; ++i){ |
| 103 | | FcBox<NDIM, T> subBox = this->getBox(i); |
| 104 | | |
| 105 | | for (size_t j=0; j<NDIM; ++j){ |
| 106 | | lower[j] = globalExtents.getLower(j) + (subBox.getLower(j) - globalCells.getLower(j))*dx[j]; |
| 107 | | upper[j] = lower[j] + (subBox.getUpper(j) - subBox.getLower(j))*dx[j]; |
| 108 | | } |
| 109 | | |
| 110 | | FcBox<NDIM, double> subExt(lower, upper); |
| 111 | | subGrids[i] = new FcCartGrid<NDIM>(subExt, subBox); |
| 112 | | } |