157 ConstBlockDataID flagFieldID, FlagUID boundaryFlagUID,
158 FlagUID domainFlagUID) {
159 for (
auto &
block : *blocks)
160 fillFromFlagField<FlagField_T>(&
block, flagFieldID, boundaryFlagUID,
166 FlagUID boundaryFlagUID, FlagUID domainFlagUID) {
172 auto *flagField =
block->getData<FlagField_T>(flagFieldID);
174 if (!(flagField->flagExists(boundaryFlagUID) and
175 flagField->flagExists(domainFlagUID)))
178 auto boundaryFlag = flagField->getFlag(boundaryFlagUID);
179 auto domainFlag = flagField->getFlag(domainFlagUID);
181 auto inner = flagField->xyzSize();
182 inner.expand(cell_idx_t(-1));
184 indexVectorAll.clear();
185 indexVectorInner.clear();
186 indexVectorOuter.clear();
188 auto flagWithGLayers = flagField->xyzSizeWithGhostLayer();
189 for (
auto it = flagField->beginWithGhostLayerXYZ(); it != flagField->end();
192 if (!isFlagSet(it, boundaryFlag))
194 if (flagWithGLayers.contains(it.x() + cell_idx_c(0),
195 it.y() + cell_idx_c(0),
196 it.z() + cell_idx_c(0)) &&
197 isFlagSet(it.neighbor(0, 0, 0, 0), domainFlag)) {
199 auto element =
IndexInfo(it.x(), it.y(), it.z(), 0);
201 indexVectorAll.emplace_back(element);
202 if (
inner.contains(it.x(), it.y(), it.z()))
203 indexVectorInner.emplace_back(element);
205 indexVectorOuter.emplace_back(element);