36 inline scalar
calcGexp(
const scalar expRatio,
const label nDiv)
38 return nDiv > 1 ?
pow(expRatio, 1.0/(nDiv - 1)) : 0.0;
56 divisions_[nDiv] = 1.0;
58 scalar secStart = divisions_[0];
62 if (nDiv >= gd.size())
67 label sumSecnDivs = 0;
68 label secnMaxDivs = 0;
72 scalar nDivFrac = gd[sectioni].nDivFraction();
73 secnDivs[sectioni] = label(nDivFrac*nDiv + 0.5);
74 sumSecnDivs += secnDivs[sectioni];
77 if (nDivFrac > gd[secnMaxDivs].nDivFraction())
79 secnMaxDivs = sectioni;
85 if (sumSecnDivs != nDiv)
87 secnDivs[secnMaxDivs] += (nDiv - sumSecnDivs);
92 scalar blockFrac = gd[sectioni].blockFraction();
93 scalar expRatio = gd[sectioni].expansionRatio();
95 label secnDiv = secnDivs[sectioni];
96 label secnEnd = secnStart + secnDiv;
99 if (
equal(expRatio, 1))
101 for (label i = secnStart; i < secnEnd; i++)
105 + blockFrac*scalar(i - secnStart + 1)/secnDiv;
111 const scalar expFact =
calcGexp(expRatio, secnDiv);
113 for (label i = secnStart; i < secnEnd; i++)
117 + blockFrac*(1.0 -
pow(expFact, i - secnStart + 1))
118 /(1.0 -
pow(expFact, secnDiv));
122 secStart = divisions_[secnEnd - 1];
129 for (label i=1; i < nDiv; i++)
131 divisions_[i] = scalar(i)/nDiv;
136 points_ = cedge.
position(divisions_);