3 // Calculating exceeding volume fractions
4 volScalarField alphaEx = max(alpha - alphaMax, scalar(0));
6 // Finding neighbouring cells of the whole domain
7 labelListList neighbour = mesh.cellCells();
8 scalarField cellVolumes = mesh.cellVolumes();
10 forAll (alphaEx, celli)
12 // Finding the labels of the neighbouring cells
13 labelList neighbourCell = neighbour[celli];
15 // Initializing neighbouring cells contribution
16 scalar neighboursEx = 0.0;
18 forAll (neighbourCell, cellj)
20 labelList neighboursNeighbour = neighbour[neighbourCell[cellj]];
21 scalar neighboursNeighbourCellVolumes = 0.0;
23 forAll (neighboursNeighbour, cellk)
25 neighboursNeighbourCellVolumes +=
26 cellVolumes[neighboursNeighbour[cellk]];
30 alphaEx[neighbourCell[cellj]]*cellVolumes[celli]
31 /neighboursNeighbourCellVolumes;
34 alpha[celli] += neighboursEx - alphaEx[celli];