FaceCellWave.C: handleCyclicPatches() is called once for each cell
currently I am doing a research in turbulent plane channel flow using the kwSST_lowRe model from the extend-branch. I use a 1D grid, and for grid-independence studies I want to go to really high numbers of cells i.e. 1e3..1e5. While 1e3 cells are calculated quite fast, the larger grids are processed terribly slow, e.g. 2min for one outer iteration.
I tracked the problem down using valgrind/cachegrind which tells me, that most of the time is being spent in Foam::FaceCellWave<Foam::wallPoint>::handleCyclicP atches() and Foam::List<Foam::wallPoint>::List(int). The reason for this is that the check
// Transfer changed faces across cyclic halves
is located within
const cellList& cells = mesh_.cells();
label changedCellI = 0;
changedCellI < nChangedCells_;
so it is called once for each cell instead of once for each patch, causing the massive slowdown. Can anyone think of a better location for the transfer of changed faces?
The handleCyclicPatches call is outside the cell loop. Can you post a testcase for 1.6.x which exhibits this slowdown?
Admitting I was wrong
Seems like the slowdown actually comes from something else (I'll doublecheck my fvSolutionDict), sorry for bothering you guys.
The described problem only occurs at the initialization of the case (taking one second or so). The iterations are not affected. I came to the wrong conclusion when I checked with cachegrind, where I did only one iteration, and assumed that the slowdown came from the iteration-loop.
|All times are GMT -4. The time now is 23:00.|