196 ConstBlockDataID flagFieldID, FlagUID boundaryFlagUID,
197 FlagUID domainFlagUID) {
198 for (
auto &
block : *blocks)
199 fillFromFlagField<FlagField_T>(&
block, flagFieldID, boundaryFlagUID,
205 FlagUID boundaryFlagUID, FlagUID domainFlagUID) {
211 auto *flagField =
block->getData<FlagField_T>(flagFieldID);
213 if (!(flagField->flagExists(boundaryFlagUID) and
214 flagField->flagExists(domainFlagUID)))
217 auto boundaryFlag = flagField->getFlag(boundaryFlagUID);
218 auto domainFlag = flagField->getFlag(domainFlagUID);
220 auto inner = flagField->xyzSize();
221 inner.expand(cell_idx_t(-1));
223 indexVectorAll.clear();
224 indexVectorInner.clear();
225 indexVectorOuter.clear();
227 auto flagWithGLayers = flagField->xyzSizeWithGhostLayer();
228 for (
auto it = flagField->beginWithGhostLayerXYZ(); it != flagField->end();
231 if (!isFlagSet(it, boundaryFlag))
233 if (flagWithGLayers.contains(it.x() + cell_idx_c(0),
234 it.y() + cell_idx_c(0),
235 it.z() + cell_idx_c(0)) &&
236 isFlagSet(it.neighbor(0, 0, 0, 0), domainFlag)) {
238 auto element =
IndexInfo(it.x(), it.y(), it.z(), 0);
240 indexVectorAll.emplace_back(element);
241 if (
inner.contains(it.x(), it.y(), it.z()))
242 indexVectorInner.emplace_back(element);
244 indexVectorOuter.emplace_back(element);