diff options
Diffstat (limited to 'src/qms.c')
-rw-r--r-- | src/qms.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -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; } |