47 const scalar isoAlpha,
61 if (i != iAndCutPsis_.first())
63 const face&
f = fValues_.f_;
64 const labelPair& fCut = fValues_.fCuts_[i];
66 iAndCutPsis_.first() = i;
68 forAll(iAndCutPsis_.second(), j)
70 iAndCutPsis_.second()[j] =
81 return iAndCutPsis_.second();
89 const face&
f = fValues_.f_;
90 const List<labelPair>& fCuts = fValues_.fCuts_;
92 const labelPair& fCut1 = fCuts[(i + 1) % fCuts.size()];
97 : fCut1[0] - fCut0[1];
99 return 2 + ((dfCut +
f.size()) %
f.size());
110 const face&
f = fValues_.f_;
111 const labelPair& fCut = fValues_.fCuts_[i];
116 return cutPsis(i)[fCutj];
121 return fValues_.pPsis_[
f[(j - 2 + fCut[fCutj] + 1) %
f.size()]];
133 const label iStar = i % cValues_.cCuts_.size();
134 const label jStar = j % cValues_.cCuts_[iStar].size();
136 const label cei = cValues_.cCuts_[iStar][jStar];
137 const label cfi = cValues_.cAddr_.ceiToCfiAndFei()[cei][0][0];
138 const label fei = cValues_.cAddr_.ceiToCfiAndFei()[cei][0][1];
143 cValues_.fs_[cValues_.c_[cfi]].faceEdge(fei),
175 const scalar isoAlpha,
199 psis_(
psi(i, j),
psi(i, j + 1))
212 const scalar isoAlpha
230 const label j = (j_ + 1) % size(i_);
232 return i == fValues_.fCuts_.size() ?
psi(0, 0) :
psi(i, j);
255 return psis_.second();
283 return it.i_ == i_ && it.j_ == j_;
293 return !(it == *
this);
308 j_ = (j_ + 1) % size(i_);
330 return it.i_ == i_ && it.j_ == j_;
339 return !(it == *
this);
347 return psis_.first();
357 if (j_ == cValues_.cCuts_[i_].size())
361 psis_.first() =
psi(i_, j_);
365 psis_.first() = psis_.second();
368 psis_.second() =
psi(i_, j_ + 1);
#define forAll(list, i)
Loop across all elements in list.
Pre-declare SubField and related Field type.
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
An ordered pair of two objects of type <T> with first() and second() elements.
A cell is defined as a list of faces with extra functionality.
const Type & operator*() const
Dereference.
const Type & next() const
Get the next value around the loop.
const_iterator & operator++()
Increment.
const_iterator(const CellCutValues< Type > &cValues, const label i, const label j)
Construct from components.
const_iterator begin() const
Get the beginning of the iteration over the values.
const_iterator end() const
Get the end of the iteration over the values.
CellCutValues(const cell &c, const cellEdgeAddressing &cAddr, const labelListList &cCuts, const faceList &fs, const Field< Type > &pPsis, const scalarField &pAlphas, const scalar isoAlpha)
Construct from components.
const_iterator(const FaceCutValues< Type > &fValues, const label i, const label j)
Construct from components.
const_iterator & operator++()
Increment.
Type next() const
Get the next value around the sub-face.
Type operator*() const
Dereference.
const_iterator end() const
Get the end of the iteration over the values.
const_iterator begin() const
Get the beginning of the iteration over the values.
FaceCutValues(const face &f, const List< labelPair > &fCuts, const Field< Type > &pPsis, const scalarField &pAlphas, const scalar isoAlpha, const bool below)
Construct from components.
An edge is a list of two point labels. The functionality it provides supports the discretisation on a...
A face is a list of labels corresponding to mesh vertices.
const volScalarField & psi
dimensionedScalar lambda(viscosity->lookup("lambda"))
const dimensionedScalar e
Elementary charge.
const dimensionedScalar c
Speed of light in a vacuum.
scalar edgeCutLambda(const edge &e, const scalarField &pAlphas, const scalar isoAlpha)
Get the local coordinate within an edge, given end point values and an.
Type edgeCutValue(const edge &e, const scalar lambda, const Field< Type > &pPsis)
Linearly interpolate a value from the end points to the cut point of an.
static const bool separatedBelow
This flag determines which side of the iso-surface is separated into.
Pair< label > labelPair
Label pair.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.