settings.getCellWidth(),
settings.getSimulationWidth() - settings.getCellWidth(),
settings.getCellHeight(),
settings.getSimulationHeight() - settings.getCellHeight());
BorderRegions borders = new BorderRegions(simAreaDouble, innerSimAreaDouble);
int xmin = -Grid.INTERPOLATION_RADIUS;
int xmax = myPartGlobal.xsize() + Grid.INTERPOLATION_RADIUS - 1;
int ymin = -Grid.INTERPOLATION_RADIUS;
int ymax = myPartGlobal.ysize() + Grid.INTERPOLATION_RADIUS - 1;
for (int x = xmin; x <= xmax; x++) {
for (int y = ymin; y <= ymax; y++) {
double simX = x * settings.getCellWidth() + settings.getCellWidth() / 2;
double simY = y * settings.getCellHeight() + settings.getCellHeight() / 2;
int region = borders.getRegion(simX, simY);
List<SharedData> sharedDatas = sharedDataManager.getBorderSharedData(region);
List<Point> directions = sharedDataManager.getBorderDirections(region);
assert sharedDatas.size() == directions.size();