summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2019-04-19 20:28:05 +0200
committerAnton Khirnov <anton@khirnov.net>2019-04-19 20:28:05 +0200
commit29bfa17b477adf7cd7adff3763900d555e745dd1 (patch)
tree81162108a9c82b577e0b40ec17ede0037680ea64
parentc8157f4796d8fe0de06946a8a7e7594a1fea4164 (diff)
Make sure the initial guess conforms to the boundary condition.
-rw-r--r--src/maximal_slicing_axi_mg.c9
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;