aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Carpet/CarpetLib/src/dh.cc40
-rw-r--r--Carpet/CarpetLib/src/dh.hh4
2 files changed, 43 insertions, 1 deletions
diff --git a/Carpet/CarpetLib/src/dh.cc b/Carpet/CarpetLib/src/dh.cc
index 911355e34..8ada3e9cf 100644
--- a/Carpet/CarpetLib/src/dh.cc
+++ b/Carpet/CarpetLib/src/dh.cc
@@ -1205,6 +1205,21 @@ regrid (bool const do_init)
<< " local.fine_boundary=" << local_box.fine_boundary[dir][face] << "\n";
}
+ ibset const& boxes =
+ local_box.fine_boundary[dir][face];
+ vector<int>& offsets =
+ local_box.fine_boundary_offsets[dir][face];
+ assert(offsets.empty());
+ offsets.reserve(boxes.setsize());
+ int offset = 0;
+ for (ibset::const_iterator
+ bi=boxes.begin(); bi!=boxes.end(); ++bi)
+ {
+ offsets.push_back(offset);
+ offset += (*bi).size();
+ }
+ local_box.fine_boundary_size[dir][face] = offset;
+
} // for face
} // for dir
@@ -1248,6 +1263,21 @@ regrid (bool const do_init)
}
assert ((obox.buffers.shift(-idir,2) & all_coarse_boundary[dir][face]).empty());
+ ibset const& boxes =
+ local_obox.coarse_boundary[dir][face];
+ vector<int>& offsets =
+ local_obox.coarse_boundary_offsets[dir][face];
+ assert(offsets.empty());
+ offsets.reserve(boxes.setsize());
+ int offset = 0;
+ for (ibset::const_iterator
+ bi=boxes.begin(); bi!=boxes.end(); ++bi)
+ {
+ offsets.push_back(offset);
+ offset += (*bi).size();
+ }
+ local_obox.coarse_boundary_size[dir][face] = offset;
+
} // for face
} // for dir
@@ -2434,7 +2464,11 @@ memory ()
memoryof (restricted_region) +
memoryof (unused_region) +
memoryof (coarse_boundary) +
- memoryof (fine_boundary);
+ memoryof (fine_boundary) +
+ memoryof (coarse_boundary_offsets) +
+ memoryof (fine_boundary_offsets) +
+ memoryof (coarse_boundary_size) +
+ memoryof (fine_boundary_size);
}
size_t
@@ -2772,6 +2806,10 @@ output (ostream & os)
<< " unused_region: " << unused_region << eol
<< " coarse_boundary: " << coarse_boundary << eol
<< " fine_boundary: " << fine_boundary << eol
+ << " coarse_boundary_offsets: " << coarse_boundary_offsets << eol
+ << " fine_boundary_offsets: " << fine_boundary_offsets << eol
+ << " coarse_boundary_size: " << coarse_boundary_size << eol
+ << " fine_boundary_size: " << fine_boundary_size << eol
<< "}" << eol;
return os;
}
diff --git a/Carpet/CarpetLib/src/dh.hh b/Carpet/CarpetLib/src/dh.hh
index 3ee014006..fa3dbed40 100644
--- a/Carpet/CarpetLib/src/dh.hh
+++ b/Carpet/CarpetLib/src/dh.hh
@@ -80,6 +80,10 @@ public:
// Refluxing
vect<vect<ibset,2>,dim> coarse_boundary;
vect<vect<ibset,2>,dim> fine_boundary;
+ vect<vect<vector<int>,2>,dim> coarse_boundary_offsets;
+ vect<vect<vector<int>,2>,dim> fine_boundary_offsets;
+ vect<vect<int,2>,dim> coarse_boundary_size;
+ vect<vect<int,2>,dim> fine_boundary_size;
size_t memory () const CCTK_MEMBER_ATTRIBUTE_PURE;
istream & input (istream & is);