aboutsummaryrefslogtreecommitdiff
path: root/mg2d.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2019-05-12 13:33:04 +0200
committerAnton Khirnov <anton@khirnov.net>2019-05-21 14:55:36 +0200
commite1474028b17651bd9ad75c366ad1bb46aab63a8f (patch)
tree2eb774fa29f8d9fae67811d98391416f9bd9a9d8 /mg2d.c
parent6ca76797cb4034a961166ae782db550ba9a7e6e6 (diff)
Make the ghost points explicit in prolongation
Diffstat (limited to 'mg2d.c')
-rw-r--r--mg2d.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/mg2d.c b/mg2d.c
index 84985d7..25a1759 100644
--- a/mg2d.c
+++ b/mg2d.c
@@ -192,7 +192,7 @@ static int mg_solve_subgrid(MG2DContext *ctx, MG2DLevel *level, int allow_exact)
/* prolongate the coarser-level correction */
mg2di_timer_start(&level->timer_prolong);
ret = mg2di_gt_transfer(level->transfer_prolong, level->prolong_tmp,
- level->child->solver->u);
+ level->child->solver->u_base);
mg2di_timer_stop(&level->timer_prolong);
if (ret < 0)
return ret;
@@ -444,8 +444,10 @@ static int mg_levels_init(MG2DContext *ctx)
cur->transfer_prolong->dst.step[0] = cur->solver->step[0];
cur->transfer_prolong->dst.step[1] = cur->solver->step[1];
- cur->transfer_prolong->src.size[0] = cur->child->solver->domain_size[0];
- cur->transfer_prolong->src.size[1] = cur->child->solver->domain_size[1];
+ cur->transfer_prolong->src.start[0] = -FD_STENCIL_MAX;
+ cur->transfer_prolong->src.start[1] = -FD_STENCIL_MAX;
+ cur->transfer_prolong->src.size[0] = cur->child->solver->domain_size[0] + 2 * FD_STENCIL_MAX;
+ cur->transfer_prolong->src.size[1] = cur->child->solver->domain_size[1] + 2 * FD_STENCIL_MAX;
cur->transfer_prolong->src.step[0] = cur->child->solver->step[0];
cur->transfer_prolong->src.step[1] = cur->child->solver->step[1];