FreeFOAM The Cross-Platform CFD Toolkit
packingLimiter.H
Go to the documentation of this file.
2  {
3  // Calculating exceeding volume fractions
4  volScalarField alphaEx = max(alpha - alphaMax, scalar(0));
5 
6  // Finding neighbouring cells of the whole domain
7  labelListList neighbour = mesh.cellCells();
8  scalarField cellVolumes = mesh.cellVolumes();
9 
10  forAll (alphaEx, celli)
11  {
12  // Finding the labels of the neighbouring cells
13  labelList neighbourCell = neighbour[celli];
14 
15  // Initializing neighbouring cells contribution
16  scalar neighboursEx = 0.0;
17 
18  forAll (neighbourCell, cellj)
19  {
20  labelList neighboursNeighbour = neighbour[neighbourCell[cellj]];
21  scalar neighboursNeighbourCellVolumes = 0.0;
22 
23  forAll (neighboursNeighbour, cellk)
24  {
25  neighboursNeighbourCellVolumes +=
26  cellVolumes[neighboursNeighbour[cellk]];
27  }
28 
29  neighboursEx +=
30  alphaEx[neighbourCell[cellj]]*cellVolumes[celli]
31  /neighboursNeighbourCellVolumes;
32  }
33 
34  alpha[celli] += neighboursEx - alphaEx[celli];
35  }
36  }
37 
38 // ************************ vim: set sw=4 sts=4 et: ************************ //