diff --git a/bh_tree_mpi/simulation/MpiSimulation.cpp b/bh_tree_mpi/simulation/MpiSimulation.cpp
index 4e43e46fa873fb1d552bf2b59dcff19a750402ca..18bc98dde115cc8d3c25d2c62d42f8a19a1d8bc8 100644
--- a/bh_tree_mpi/simulation/MpiSimulation.cpp
+++ b/bh_tree_mpi/simulation/MpiSimulation.cpp
@@ -207,105 +207,14 @@ namespace nbody {
this->send(this->tree->copyRefinements(this->domains[i]), i);
}
}
- int received = 0;
- while (received < this->parallelSize - 1) {
- vector
buffer;
-
- this->recv(buffer, MPI_ANY_SOURCE);
- //cout << "recved " + buffer.size() << endl;
- //print(this->parallelRank, buffer);
- received++;
- }
- /*
- vector > sendRefinements;
- MPI_Request* sendRequests = new MPI_Request[this->parallelSize];
-
- for (int i = 0; i < this->parallelSize; i++) {
- if (i != this->parallelRank) {
- sendRefinements.push_back(this->tree->copyRefinements(this->domains[i]));
- MPI_Isend(&sendRefinements[i], (int) sendRefinements[i].size(), this->bodyType, i, 0, MPI_COMM_WORLD, &sendRequests[i]);
- } else {
- sendRefinements.push_back(vector());
- }
- }
-
- int received = 0;
- Body** data = new Body*[this->parallelSize];
- MPI_Request* recvRequests = new MPI_Request[this->parallelSize];
-
- for (int i = 0; i < this->parallelSize; i++) {
- data[i] = NULL;
- }
- while (received < this->parallelSize - 1) {
- for (int i = 0; i < this->parallelSize; i++) {
- if (i != this->parallelRank && data[i] == NULL) {
- int ready;
- MPI_Status probeStatus;
-
- MPI_Iprobe(i, 0, MPI_COMM_WORLD, &ready, &probeStatus);
- if (ready) {
- int count;
- MPI_Status status;
-
- MPI_Get_count(&probeStatus, this->bodyType, &count);
- data[i] = new Body[count];
- MPI_Irecv(&data[i][0], count, this->bodyType, i, 0, MPI_COMM_WORLD, &recvRequests[i]);
- MPI_Wait(&recvRequests[i], &status);
- cout << this->parallelRank << ": " << count << " from " << i << " received" << endl;
- }
- }
- }
- }
- delete[] sendRequests;
- delete[] recvRequests;
- for (int i = 0; i < this->parallelSize; i++) {
- delete[] data[i];
- }
- delete[] data;
- */
- /*
- int* lengths = new int[this->parallelSize];
-
- for (int i = 0; i < this->parallelSize; i++) {
- if (i != this->parallelRank) {
- refinements.push_back(this->tree->copyRefinements(this->domains[i]));
- } else {
- refinements.push_back(vector());
- }
- lengths[i] = refinements.back().size();
- }
- MPI_Alltoall(lengths, 1, MPI_INT, lengths, 1, MPI_INT, MPI_COMM_WORLD);
- for (int i = 0; i < this->parallelSize; i++) {
- if (i != this->parallelRank) {
- MPI_Send(&(refinements[i][0]), (int) refinements[i].size(), this->bodyType, i, 0, MPI_COMM_WORLD);
- }
- }
- for (int i = 0; i < this->parallelSize; i++) {
- if (i != this->parallelRank) {
- MPI_Recv()
- }
- }
- delete[] lengths;
- */
//receive bodies and integrate them into local tree for simulation
-
- /*
- int received = 0;
- while (received < this->parallelSize - 1) {
+ for (int i = 0; i < this->parallelSize - 1; i++) {
vector refinements;
- //int source = this->recv(refinements);
- //cout << "refR: " << this->parallelRank << " <- " << source << ": " << refinements.size() << endl;
- //this->tree->mergeLET(refinements);
- //integrate bodies in order of arrival to do communication/computation overlapping
- this->comms[0].recvBlocking(MPI_ANY_SOURCE, refinements);
-
+ this->recv(refinements, MPI_ANY_SOURCE);
this->tree->mergeLET(refinements);
- //this->tree.getRootBB().print();
- received++;
}
- */
if (!this->tree->isCorrect()) {
cout << "WRONG" << endl;
}
@@ -320,7 +229,7 @@ namespace nbody {
this->tree->build(this->bodies);
}
*/
- this->tree->build(this->bodies);
+ this->tree->build(this->bodies, this->overallDomain);
if (!this->tree->isCorrect()) {
cout << "wrong tree" << endl;
} else {