35 void Foam::fvMeshSubsetProxy::clearOut()
38 type_ = subsetType::NONE;
47 Foam::fvMeshSubsetProxy::fvMeshSubsetProxy(
fvMesh& baseMesh)
59 Foam::fvMeshSubsetProxy::fvMeshSubsetProxy
63 const word& selectionName,
69 exposedPatchId_(exposedPatchId),
70 type_(selectionName.empty() ? subsetType::NONE :
type),
75 if (type_ == subsetType::ZONES)
79 names_.first() = selectionName;
81 else if (type_ == subsetType::SET || type_ == subsetType::ZONE)
83 name_ = selectionName;
90 Foam::fvMeshSubsetProxy::fvMeshSubsetProxy
99 exposedPatchId_(exposedPatchId),
100 type_(subsetType::ZONES),
109 Foam::fvMeshSubsetProxy::fvMeshSubsetProxy
117 subsetter_(baseMesh),
118 exposedPatchId_(exposedPatchId),
119 type_(subsetType::ZONES),
121 names_(std::move(zoneNames)),
132 fvMeshSubsetProxy::clearOut();
134 if (!zoneNames.empty())
136 type_ = subsetType::ZONES;
145 if (type_ == subsetType::NONE)
148 selectedCells_.clearStorage();
152 const label nCells = baseMesh_.nCells();
156 if (type_ == subsetType::SET)
160 Info<<
"Subsetting mesh based on cellSet " << name_ <<
endl;
163 cellSet cset(baseMesh_, name_);
165 selectedCells.
resize(nCells);
166 for (
const label idx : cset)
168 selectedCells.
set(idx);
171 else if (type_ == subsetType::ZONE)
175 Info<<
"Subsetting mesh based on cellZone " << name_ <<
endl;
178 selectedCells.
resize(nCells);
179 selectedCells.
set(baseMesh_.cellZones()[name_]);
181 else if (type_ == subsetType::ZONES)
185 Info<<
"Subsetting mesh based on cellZones "
189 selectedCells = baseMesh_.cellZones().selection(names_);
193 const bool changed = (selectedCells_ != selectedCells);
196 selectedCells_.
transfer(selectedCells);
198 if (changed || selectedCells_.empty())
200 subsetter_.setCellSubset(selectedCells_, exposedPatchId_);