ENH: Time: access to libs
[OpenFOAM-2.0.x.git] / applications / solvers / multiphase / twoPhaseEulerFoam / packingLimiter.H
blobe5d9d86a559f4faba98dfe26d0aca8f25b07cc6f
1     if (packingLimiter)
2     {
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)
11         {
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)
19             {
20                 labelList neighboursNeighbour = neighbour[neighbourCell[cellj]];
21                 scalar neighboursNeighbourCellVolumes = 0.0;
23                 forAll (neighboursNeighbour, cellk)
24                 {
25                     neighboursNeighbourCellVolumes +=
26                         cellVolumes[neighboursNeighbour[cellk]];
27                 }
29                 neighboursEx +=
30                     alphaEx[neighbourCell[cellj]]*cellVolumes[celli]
31                    /neighboursNeighbourCellVolumes;
32             }
34             alpha[celli] += neighboursEx - alphaEx[celli];
35         }
36     }