Physical boundaries not filled correctly in RefineSchedule after regridding
- Dominant language
- C++
- Stars
- 250
- Forks
- 89
- Avg merge
- 34m
- Merged PRs (30d)
- 1
Description
Hi,
We want to do a synchronization between levels after regridding. We use the following instruction:
d_fill_new_level->createSchedule(level,old_level,level_number-1,hierarchy,this)->fillData(data_time, true);
So data values are taken from the old level and parent level in the hierarchy.
The values in physical boundary nodes are supposed to be taken from the parent level. What occurs is that those values are 0, which is incorrect, since parent level values are not 0. However, values for internal ghost zones have the correct parent level values.
I am using a custom spatial interpolator with stencil 3. If I reduce the stencil to 1 it works since there are not all values in the physical ghost zone which are 0. The nearest values to internal domain are correctly set, but not the farther ones.
This behaviour only happens after a regrid. During simulation with schedules create like the following one all required physical boundary values from a parent level are correctly filled:
d_bdry_fill_advance12->createSchedule(level,ln-1,new_hierarchy,this)
So I suspect there is a difference for the setup of the schedule that is generating the incorrect behaviour.
Contributor guide
Research direction
Start by comparing the schedule setup in d_fill_new_level->createSchedule(...)->fillData(data_time, true) with d_bdry_fill_advance12->createSchedule(...). Reproduce the post-regrid case with the custom stencil-3 interpolator and inspect physical versus internal ghost-zone filling. Done means physical boundary values are taken from the parent level rather than becoming zero.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- hpc
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100