Skip to content
Snippets Groups Projects
Commit 4fad84b6 authored by Henry Weller's avatar Henry Weller
Browse files

blockMesh: Improve multi-grading so that the divisions are independent of section ordering

Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=1809
parent 19dcf83b
No related merge requests found
...@@ -59,17 +59,38 @@ Foam::lineDivide::lineDivide ...@@ -59,17 +59,38 @@ Foam::lineDivide::lineDivide
// Check that there are more divisions than sections // Check that there are more divisions than sections
if (nDiv >= gd.size()) if (nDiv >= gd.size())
{ {
// Calculate distribution of divisions to be independent
// of the order of the sections
labelList secnDivs(gd.size());
label sumSecnDivs = 0;
label secnMaxDivs = 0;
forAll(gd, sectioni) forAll(gd, sectioni)
{ {
scalar blockFrac = gd[sectioni].blockFraction();
scalar nDivFrac = gd[sectioni].nDivFraction(); scalar nDivFrac = gd[sectioni].nDivFraction();
scalar expRatio = gd[sectioni].expansionRatio(); secnDivs[sectioni] = label(nDivFrac*nDiv + 0.5);
sumSecnDivs += secnDivs[sectioni];
label secnDiv = label(nDivFrac*nDiv + 0.5); // Find the section with the largest number of divisions
if (sectioni == gd.size() - 1) if (nDivFrac > gd[secnMaxDivs].nDivFraction())
{ {
secnDiv = nDiv - secnStart + 1; secnMaxDivs = sectioni;
} }
}
// Adjust the number of divisions on the section with the largest
// number so that the total is nDiv
if (sumSecnDivs != nDiv)
{
secnDivs[secnMaxDivs] += (nDiv - sumSecnDivs);
}
forAll(gd, sectioni)
{
scalar blockFrac = gd[sectioni].blockFraction();
scalar expRatio = gd[sectioni].expansionRatio();
label secnDiv = secnDivs[sectioni];
label secnEnd = secnStart + secnDiv; label secnEnd = secnStart + secnDiv;
// Calculate the spacing // Calculate the spacing
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment