42 void Foam::MRFZone::setMRFFaces()
62 if (cellZoneID_ != -1)
67 zoneCell[cellLabels[i]] =
true;
76 if (zoneCell[own[faceI]] || zoneCell[nei[faceI]])
88 const polyPatch& pp = patches[patchI];
90 if (pp.coupled() || excludedPatches.found(patchI))
94 label faceI = pp.start()+i;
96 if (zoneCell[own[faceI]])
103 else if (!isA<emptyPolyPatch>(pp))
107 label faceI = pp.start()+i;
109 if (zoneCell[own[faceI]])
130 if (faceType[faceI] == 1)
132 internalFaces_[nInternal++] = faceI;
135 internalFaces_.
setSize(nInternal);
137 labelList nIncludedFaces(patches.size(), 0);
138 labelList nExcludedFaces(patches.size(), 0);
142 const polyPatch& pp = patches[
patchi];
146 label faceI = pp.start()+patchFacei;
148 if (faceType[faceI] == 1)
152 else if (faceType[faceI] == 2)
159 includedFaces_.
setSize(patches.size());
160 excludedFaces_.
setSize(patches.size());
171 const polyPatch& pp = patches[
patchi];
175 label faceI = pp.start()+patchFacei;
177 if (faceType[faceI] == 1)
179 includedFaces_[
patchi][nIncludedFaces[
patchi]++] = patchFacei;
181 else if (faceType[faceI] == 2)
183 excludedFaces_[
patchi][nExcludedFaces[
patchi]++] = patchFacei;
191 faceSet internalFaces(mesh_,
"internalFaces", internalFaces_);
192 Pout<<
"Writing " << internalFaces.size()
193 <<
" internal faces in MRF zone to faceSet "
195 internalFaces.
write();
197 faceSet MRFFaces(mesh_,
"includedFaces", 100);
198 forAll(includedFaces_, patchi)
200 forAll(includedFaces_[patchi], i)
202 label patchFacei = includedFaces_[
patchi][i];
203 MRFFaces.insert(patches[patchi].start()+patchFacei);
206 Pout<<
"Writing " << MRFFaces.size()
207 <<
" patch faces in MRF zone to faceSet "
211 faceSet excludedFaces(mesh_,
"excludedFaces", 100);
212 forAll(excludedFaces_, patchi)
214 forAll(excludedFaces_[patchi], i)
216 label patchFacei = excludedFaces_[
patchi][i];
217 excludedFaces.insert(patches[patchi].start()+patchFacei);
220 Pout<<
"Writing " << excludedFaces.size()
221 <<
" faces in MRF zone with special handling to faceSet "
223 excludedFaces.
write();
235 cellZoneID_(mesh_.cellZones().findZoneID(name_)),
238 dict_.lookupOrDefault(
"nonRotatingPatches",
wordList(0))
240 origin_(dict_.lookup(
"origin")),
241 axis_(dict_.lookup(
"axis")),
242 omega_(dict_.lookup(
"omega")),
243 Omega_(
"Omega", omega_*axis_)
245 if (dict_.
found(
"patches"))
247 WarningIn(
"MRFZone(const fvMesh&, Istream&)")
248 <<
"Ignoring entry 'patches'\n"
249 <<
" By default all patches within the rotating region rotate.\n"
250 <<
" Optionally supply excluded patches using 'nonRotatingPatches'."
256 axis_ = axis_/
mag(axis_);
257 Omega_ = omega_*axis_;
259 excludedPatchLabels_.
setSize(excludedPatchNames_.
size());
261 forAll(excludedPatchNames_, i)
263 excludedPatchLabels_[i] = patches.
findPatchID(excludedPatchNames_[i]);
265 if (excludedPatchLabels_[i] == -1)
269 "Foam::MRFZone::MRFZone(const fvMesh&, Istream&)"
270 ) <<
"cannot find MRF patch " << excludedPatchNames_[i]
276 bool cellZoneFound = (cellZoneID_ != -1);
283 "Foam::MRFZone::MRFZone(const fvMesh&, Istream&)"
284 ) <<
"cannot find MRF cellZone " << name_
296 if (cellZoneID_ == -1)
305 const vector& Omega = Omega_.value();
309 label celli = cells[i];
310 Usource[celli] -= V[celli]*(Omega ^ U[celli]);
321 if (cellZoneID_ == -1)
330 const vector& Omega = Omega_.value();
334 label celli = cells[i];
335 Usource[celli] -= V[celli]*rho[celli]*(Omega ^ U[celli]);
344 const vector& origin = origin_.value();
345 const vector& Omega = Omega_.value();
351 label celli = cells[i];
352 U[celli] -= (Omega ^ (C[celli] - origin));
356 forAll(includedFaces_, patchi)
358 forAll(includedFaces_[patchi], i)
360 label patchFacei = includedFaces_[
patchi][i];
366 forAll(excludedFaces_, patchi)
368 forAll(excludedFaces_[patchi], i)
370 label patchFacei = excludedFaces_[
patchi][i];
382 const vector& origin = origin_.value();
383 const vector& Omega = Omega_.value();
389 label celli = cells[i];
390 U[celli] += (Omega ^ (C[celli] - origin));
394 forAll(includedFaces_, patchi)
396 forAll(includedFaces_[patchi], i)
398 label patchFacei = includedFaces_[
patchi][i];
405 forAll(excludedFaces_, patchi)
407 forAll(excludedFaces_[patchi], i)
409 label patchFacei = excludedFaces_[
patchi][i];
429 relativeRhoFlux(rho, phi);
445 absoluteRhoFlux(rho, phi);
451 const vector& origin = origin_.value();
452 const vector& Omega = Omega_.value();
455 forAll(includedFaces_, patchi)
461 forAll(includedFaces_[patchi], i)
463 label patchFacei = includedFaces_[
patchi][i];
465 pfld[patchFacei] = (Omega ^ (patchC[patchFacei] - origin));