Move array extraction to comm module
This commit is contained in:
parent
1fcddc91b7
commit
d53da89b95
@ -312,11 +312,11 @@ void commCollectResult(Comm* c,
|
|||||||
int jmax,
|
int jmax,
|
||||||
int imax)
|
int imax)
|
||||||
{
|
{
|
||||||
#if defined(_MPI)
|
|
||||||
int imaxLocal = c->imaxLocal;
|
int imaxLocal = c->imaxLocal;
|
||||||
int jmaxLocal = c->jmaxLocal;
|
int jmaxLocal = c->jmaxLocal;
|
||||||
int kmaxLocal = c->kmaxLocal;
|
int kmaxLocal = c->kmaxLocal;
|
||||||
|
|
||||||
|
#if defined(_MPI)
|
||||||
int offset[c->size * NDIMS];
|
int offset[c->size * NDIMS];
|
||||||
int imaxLocalAll[c->size];
|
int imaxLocalAll[c->size];
|
||||||
int jmaxLocalAll[c->size];
|
int jmaxLocalAll[c->size];
|
||||||
@ -439,6 +439,46 @@ void commCollectResult(Comm* c,
|
|||||||
imax);
|
imax);
|
||||||
|
|
||||||
free(tmp);
|
free(tmp);
|
||||||
|
#else
|
||||||
|
int idx = 0;
|
||||||
|
|
||||||
|
for (int k = 1; k < kmaxLocal + 1; k++) {
|
||||||
|
for (int j = 1; j < jmaxLocal + 1; j++) {
|
||||||
|
for (int i = 1; i < imaxLocal + 1; i++) {
|
||||||
|
pg[idx++] = G(s->p, i, j, k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
idx = 0;
|
||||||
|
|
||||||
|
for (int k = 1; k < kmaxLocal + 1; k++) {
|
||||||
|
for (int j = 1; j < jmaxLocal + 1; j++) {
|
||||||
|
for (int i = 1; i < imaxLocal + 1; i++) {
|
||||||
|
ug[idx++] = (G(s->u, i, j, k) + G(s->u, i - 1, j, k)) / 2.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
idx = 0;
|
||||||
|
|
||||||
|
for (int k = 1; k < kmaxLocal + 1; k++) {
|
||||||
|
for (int j = 1; j < jmaxLocal + 1; j++) {
|
||||||
|
for (int i = 1; i < imaxLocal + 1; i++) {
|
||||||
|
vg[idx++] = (G(s->v, i, j, k) + G(s->v, i, j - 1, k)) / 2.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
idx = 0;
|
||||||
|
|
||||||
|
for (int k = 1; k < kmaxLocal + 1; k++) {
|
||||||
|
for (int j = 1; j < jmaxLocal + 1; j++) {
|
||||||
|
for (int i = 1; i < imaxLocal + 1; i++) {
|
||||||
|
wg[idx++] = (G(s->w, i, j, k) + G(s->w, i, j, k - 1)) / 2.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,56 +18,6 @@
|
|||||||
#include "timing.h"
|
#include "timing.h"
|
||||||
#include "vtkWriter.h"
|
#include "vtkWriter.h"
|
||||||
|
|
||||||
#ifndef _MPI
|
|
||||||
#define G(v, i, j, k) v[(k) * (imax + 2) * (jmax + 2) + (j) * (imax + 2) + (i)]
|
|
||||||
|
|
||||||
static void createBulkArrays(Solver* s, double* pg, double* ug, double* vg, double* wg)
|
|
||||||
{
|
|
||||||
int imax = s->grid.imax;
|
|
||||||
int jmax = s->grid.jmax;
|
|
||||||
int kmax = s->grid.kmax;
|
|
||||||
int idx = 0;
|
|
||||||
|
|
||||||
for (int k = 1; k < kmax + 1; k++) {
|
|
||||||
for (int j = 1; j < jmax + 1; j++) {
|
|
||||||
for (int i = 1; i < imax + 1; i++) {
|
|
||||||
pg[idx++] = G(s->p, i, j, k);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
idx = 0;
|
|
||||||
|
|
||||||
for (int k = 1; k < kmax + 1; k++) {
|
|
||||||
for (int j = 1; j < jmax + 1; j++) {
|
|
||||||
for (int i = 1; i < imax + 1; i++) {
|
|
||||||
ug[idx++] = (G(s->u, i, j, k) + G(s->u, i - 1, j, k)) / 2.0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
idx = 0;
|
|
||||||
|
|
||||||
for (int k = 1; k < kmax + 1; k++) {
|
|
||||||
for (int j = 1; j < jmax + 1; j++) {
|
|
||||||
for (int i = 1; i < imax + 1; i++) {
|
|
||||||
vg[idx++] = (G(s->v, i, j, k) + G(s->v, i, j - 1, k)) / 2.0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
idx = 0;
|
|
||||||
|
|
||||||
for (int k = 1; k < kmax + 1; k++) {
|
|
||||||
for (int j = 1; j < jmax + 1; j++) {
|
|
||||||
for (int i = 1; i < imax + 1; i++) {
|
|
||||||
wg[idx++] = (G(s->w, i, j, k) + G(s->w, i, j, k - 1)) / 2.0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif /* ifndef _MPI */
|
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
double timeStart, timeStop;
|
double timeStart, timeStop;
|
||||||
@ -134,7 +84,6 @@ int main(int argc, char** argv)
|
|||||||
wg = allocate(64, bytesize);
|
wg = allocate(64, bytesize);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _MPI
|
|
||||||
commCollectResult(&s.comm,
|
commCollectResult(&s.comm,
|
||||||
ug,
|
ug,
|
||||||
vg,
|
vg,
|
||||||
@ -147,9 +96,6 @@ int main(int argc, char** argv)
|
|||||||
s.grid.kmax,
|
s.grid.kmax,
|
||||||
s.grid.jmax,
|
s.grid.jmax,
|
||||||
s.grid.imax);
|
s.grid.imax);
|
||||||
#else
|
|
||||||
createBulkArrays(&s, pg, ug, vg, wg);
|
|
||||||
#endif /* ifdef _MPI */
|
|
||||||
|
|
||||||
if (commIsMaster(&s.comm)) {
|
if (commIsMaster(&s.comm)) {
|
||||||
VtkOptions opts = { .grid = s.grid };
|
VtkOptions opts = { .grid = s.grid };
|
||||||
|
Loading…
Reference in New Issue
Block a user