190 ConstBlockDataID flagFieldID, FlagUID boundaryFlagUID,
191 FlagUID domainFlagUID) {
192 for (
auto blockIt = blocks->begin(); blockIt != blocks->end(); ++blockIt)
193 fillFromFlagField<FlagField_T>(&*blockIt, flagFieldID, boundaryFlagUID,
199 FlagUID boundaryFlagUID, FlagUID domainFlagUID) {
205 auto *flagField =
block->getData<FlagField_T>(flagFieldID);
207 if (!(flagField->flagExists(boundaryFlagUID) and
208 flagField->flagExists(domainFlagUID)))
211 auto boundaryFlag = flagField->getFlag(boundaryFlagUID);
212 auto domainFlag = flagField->getFlag(domainFlagUID);
214 auto inner = flagField->xyzSize();
215 inner.expand(cell_idx_t(-1));
217 indexVectorAll.clear();
218 indexVectorInner.clear();
219 indexVectorOuter.clear();
221 auto flagWithGLayers = flagField->xyzSizeWithGhostLayer();
222 for (
auto it = flagField->beginWithGhostLayerXYZ(); it != flagField->end();
225 if (!isFlagSet(it, boundaryFlag))
227 if (flagWithGLayers.contains(it.x() + cell_idx_c(0),
228 it.y() + cell_idx_c(0),
229 it.z() + cell_idx_c(0)) &&
230 isFlagSet(it.neighbor(0, 0, 0, 0), domainFlag)) {
232 auto element =
IndexInfo(it.x(), it.y(), it.z(), 0);
234 indexVectorAll.emplace_back(element);
235 if (
inner.contains(it.x(), it.y(), it.z()))
236 indexVectorInner.emplace_back(element);
238 indexVectorOuter.emplace_back(element);