diff options
author | Anton Khirnov <anton@khirnov.net> | 2019-07-25 10:56:04 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2019-07-25 10:56:04 +0200 |
commit | 43c18a92f8430a26f56b790baea2fdc1607dd02b (patch) | |
tree | 04b1084407e6d9ffef66b40c4964e506fd1bc779 /src | |
parent | 68e2c0b3166527e95b66c024fcc06395d059c6bf (diff) |
Fix syncing the solution values.
Diffstat (limited to 'src')
-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; } |