diff options
author | Anton Khirnov <anton@khirnov.net> | 2019-04-19 20:28:05 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2019-04-19 20:28:05 +0200 |
commit | 29bfa17b477adf7cd7adff3763900d555e745dd1 (patch) | |
tree | 81162108a9c82b577e0b40ec17ede0037680ea64 | |
parent | c8157f4796d8fe0de06946a8a7e7594a1fea4164 (diff) |
Make sure the initial guess conforms to the boundary condition.
-rw-r--r-- | src/maximal_slicing_axi_mg.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/maximal_slicing_axi_mg.c b/src/maximal_slicing_axi_mg.c index 2020079..833fbbf 100644 --- a/src/maximal_slicing_axi_mg.c +++ b/src/maximal_slicing_axi_mg.c @@ -666,6 +666,10 @@ void msa_mg_eval(CCTK_ARGUMENTS) const ptrdiff_t idx = CCTK_GFINDEX3D(cctkGH, i + cp->offset_left[0], cp->y_idx, cp->offset_left[1] + solver->domain_size - 1 + j); dst[i] = lapse_mg_eval[idx] - 1.0; } + if (j == 0) { + dst = solver->u + solver->u_stride * (solver->domain_size - 1); + memcpy(dst, bnd->val, sizeof(*dst) * solver->domain_size); + } } for (int j = 0; j < solver->fd_stencil; j++) { MG2DBoundary *bnd = solver->boundaries[MG2D_BOUNDARY_0U]; @@ -674,6 +678,11 @@ void msa_mg_eval(CCTK_ARGUMENTS) const ptrdiff_t idx = CCTK_GFINDEX3D(cctkGH, cp->offset_left[0] + solver->domain_size - 1 + j, cp->y_idx, cp->offset_left[1] + i); dst[i] = lapse_mg_eval[idx] - 1.0; } + if (j == 0) { + dst = solver->u + solver->domain_size - 1; + for (ptrdiff_t i = 0; i < solver->domain_size; i++) + dst[i * solver->u_stride] = bnd->val[i]; + } } ms->time_fine_boundaries += gettime() - start; |