155 ConstBlockDataID flagFieldID, FlagUID boundaryFlagUID,
156 FlagUID domainFlagUID) {
157 for (
auto blockIt = blocks->begin(); blockIt != blocks->end(); ++blockIt)
158 fillFromFlagField<FlagField_T>(&*blockIt, flagFieldID, boundaryFlagUID,
164 FlagUID boundaryFlagUID, FlagUID domainFlagUID) {
170 auto *flagField =
block->getData<FlagField_T>(flagFieldID);
172 if (!(flagField->flagExists(boundaryFlagUID) and
173 flagField->flagExists(domainFlagUID)))
176 auto boundaryFlag = flagField->getFlag(boundaryFlagUID);
177 auto domainFlag = flagField->getFlag(domainFlagUID);
179 auto inner = flagField->xyzSize();
180 inner.expand(cell_idx_t(-1));
182 indexVectorAll.clear();
183 indexVectorInner.clear();
184 indexVectorOuter.clear();
186 auto flagWithGLayers = flagField->xyzSizeWithGhostLayer();
187 for (
auto it = flagField->beginWithGhostLayerXYZ(); it != flagField->end();
190 if (!isFlagSet(it, boundaryFlag))
192 if (flagWithGLayers.contains(it.x() + cell_idx_c(0),
193 it.y() + cell_idx_c(0),
194 it.z() + cell_idx_c(0)) &&
195 isFlagSet(it.neighbor(0, 0, 0, 0), domainFlag)) {
197 auto element =
IndexInfo(it.x(), it.y(), it.z(), 0);
199 indexVectorAll.emplace_back(element);
200 if (
inner.contains(it.x(), it.y(), it.z()))
201 indexVectorInner.emplace_back(element);
203 indexVectorOuter.emplace_back(element);