Go to the documentation of this file.
36 Info<<
"immersedBoundaryFvPatch::makeIbSamplingWeights() : "
37 <<
"making sampling point weights"
45 FatalErrorIn(
"void immersedBoundaryFvPatch::makeIbSamplingWeights()")
46 <<
"sampling point weights already exist"
59 forAll (cellWeights, cellI)
67 forAll (cellProcWeights, cellI)
69 cellProcWeights[cellI].
setSize(ibcProcC[cellI].
size(), 0);
82 forAll (samplingPoints, cellI)
84 const vector& curP = samplingPoints[cellI];
96 if (gammaIn[curCells[ccI]] > SMALL)
98 curCW[ccI] = 1/
mag(CIn[curCells[ccI]] - curP);
110 scalarList& curProcCW = cellProcWeights[cellI];
112 forAll (interpProcCells, cProcI)
118 interpProcCells[cProcI].first()
121 interpProcCells[cProcI].second()
130 interpProcCells[cProcI].first()
133 interpProcCells[cProcI].second()
137 sumW += curProcCW[cProcI];
141 curProcCW[cProcI] = 0;
150 "void immersedBoundaryFvPatch::makeIbSamplingWeights()"
151 ) <<
"Insufficient live neighbourhood for IB cell "
152 << ibc[cellI] <<
"." <<
nl
153 <<
"Please adjust radiusFactor, angleFactor or "
154 <<
"immersedBoundaryMaxCellCellRows "
155 <<
"in immersedBoundaryFvPatch."
165 curCW[ccI] = 1/
mag(CIn[curCells[ccI]] - curP);
175 forAll (curProcCW, cProcI)
177 curProcCW[cProcI] /= sumW;
186 if (!ibSamplingWeightsPtr_)
188 makeIbSamplingWeights();
191 return *ibSamplingWeightsPtr_;
198 if (!ibSamplingProcWeightsPtr_)
200 makeIbSamplingWeights();
203 return *ibSamplingProcWeightsPtr_;
#define InfoIn(functionName)
Report a information message using Foam::Info.
#define forAll(list, i)
Loop across all elements in list.
const List< List< labelPair > > & ibCellProcCells() const
Return neighbour cell addressing.
scalarListList * ibSamplingProcWeightsPtr_
Interpolation weights for sampling processor weights.
const FieldField< Field, scalar > & ibProcGamma() const
Return neighbour proc gamma.
const fvMesh & mesh_
Finite volume mesh reference.
void makeIbSamplingWeights() const
Make sampling point weights.
const vectorField & ibSamplingPoints() const
Return IB sampling points.
Ostream & endl(Ostream &os)
Add newline and flush stream.
dimensioned< scalar > mag(const dimensioned< Type > &)
const volScalarField & gamma() const
Get fluid cells indicator, marking only live fluid cells.
virtual label size() const
Return size.
Pre-declare SubField and related Field type.
const labelList & ibCells() const
Return list of fluid cells next to immersed boundary (IB cells)
const scalarListList & ibSamplingProcWeights() const
Processor interpolation weights for sampling points.
InternalField & internalField()
Return internal field.
errorManip< error > abort(error &err)
void setSize(const label)
Reset size of List.
const labelListList & ibCellCells() const
Return IB cell extended stencil.
const volVectorField & C() const
Return cell centres as volVectorField.
scalarListList * ibSamplingWeightsPtr_
Interpolation weights for sampling weights.
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
const scalarListList & ibSamplingWeights() const
Interpolation weights for sampling points.
#define FatalErrorIn(functionName)
Report an error message using Foam::FatalError.
void size(const label)
Override size to be inconsistent with allocated storage.
List< scalarList > scalarListList
const FieldField< Field, vector > & ibProcCentres() const
Return neighbour proc centres.