diff options
Diffstat (limited to 'mg2d.c')
-rw-r--r-- | mg2d.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -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]; |