summaryrefslogtreecommitdiff
path: root/src/qms.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/qms.c')
-rw-r--r--src/qms.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/qms.c b/src/qms.c
index de2bb12..162bd47 100644
--- a/src/qms.c
+++ b/src/qms.c
@@ -899,7 +899,7 @@ void qms_mg_solve(CCTK_ARGUMENTS)
double *dst = bnd->val + j * bnd->val_stride;
for (ptrdiff_t i = -j; i < (ptrdiff_t)cp->solver->local_size[0] + j; i++) {
const ptrdiff_t idx = CCTK_GFINDEX3D(cctkGH, ABS(i) + cp->offset_left[0], cp->y_idx, cp->offset_left[1] + cp->solver->local_size[1] - 1 + j);
- dst[i] = W_val1[idx];
+ dst[i] = W_mg[idx];
}
}
}
@@ -910,7 +910,7 @@ void qms_mg_solve(CCTK_ARGUMENTS)
double *dst = bnd->val + j * bnd->val_stride;
for (ptrdiff_t i = -j; i < (ptrdiff_t)cp->solver->local_size[1] + j; i++) {
const ptrdiff_t idx = CCTK_GFINDEX3D(cctkGH, cp->offset_left[1] + cp->solver->local_size[0] - 1 + j, cp->y_idx, cp->offset_left[1] + ABS(i));
- dst[i] = W_val1[idx];
+ dst[i] = W_mg[idx];
}
}
}
@@ -921,12 +921,18 @@ void qms_mg_solve(CCTK_ARGUMENTS)
if (ret < 0)
CCTK_WARN(0, "Error solving the quasi-maximal slicing equation");
+ {
+ double *W_mg_1 = CCTK_VarDataPtr(cctkGH, 1, "QuasiMaximalSlicingMG::W_mg");
+ solution_to_grid(cp, cp->solver, W_mg);
+ memcpy(W_mg_1, W_mg, grid_size * sizeof(*W_mg_1));
+ }
+
/* add the solution to the list of past solutions */
{
memcpy(W_val0, W_val1, sizeof(*W_val0) * grid_size);
W_val0_time[reflevel] = W_val1_time[reflevel];
- solution_to_grid(cp, cp->solver, W_val1);
+ memcpy(W_val1, W_mg, sizeof(*W_val1) * grid_size);
W_val1_time[reflevel] = ms->gh->cctk_time;
}