mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
bugfix: multiple edge gradings per block
This commit is contained in:
@ -41,23 +41,23 @@ namespace Foam
|
|||||||
void block::blockPoints()
|
void block::blockPoints()
|
||||||
{
|
{
|
||||||
// set local variables for mesh specification
|
// set local variables for mesh specification
|
||||||
label ni = blockDef_.n().x();
|
const label ni = blockDef_.n().x();
|
||||||
label nj = blockDef_.n().y();
|
const label nj = blockDef_.n().y();
|
||||||
label nk = blockDef_.n().z();
|
const label nk = blockDef_.n().z();
|
||||||
|
|
||||||
point start = blockDef_.points()[blockDef_.blockShape()[0]];
|
const point p000 = blockDef_.points()[blockDef_.blockShape()[0]];
|
||||||
point xEnd = blockDef_.points()[blockDef_.blockShape()[1]];
|
const point p100 = blockDef_.points()[blockDef_.blockShape()[1]];
|
||||||
point xyEnd = blockDef_.points()[blockDef_.blockShape()[2]];
|
const point p110 = blockDef_.points()[blockDef_.blockShape()[2]];
|
||||||
point yEnd = blockDef_.points()[blockDef_.blockShape()[3]];
|
const point p010 = blockDef_.points()[blockDef_.blockShape()[3]];
|
||||||
|
|
||||||
point zEnd = blockDef_.points()[blockDef_.blockShape()[4]];
|
const point p001 = blockDef_.points()[blockDef_.blockShape()[4]];
|
||||||
point xzEnd = blockDef_.points()[blockDef_.blockShape()[5]];
|
const point p101 = blockDef_.points()[blockDef_.blockShape()[5]];
|
||||||
point xyzEnd = blockDef_.points()[blockDef_.blockShape()[6]];
|
const point p111 = blockDef_.points()[blockDef_.blockShape()[6]];
|
||||||
point yzEnd = blockDef_.points()[blockDef_.blockShape()[7]];
|
const point p011 = blockDef_.points()[blockDef_.blockShape()[7]];
|
||||||
|
|
||||||
// set reference to the list of edge point and weighting factors
|
// list of edge point and weighting factors
|
||||||
const List<List<point> >& edgePoints = blockDef_.blockEdgePoints();
|
const List<List<point> >& p = blockDef_.blockEdgePoints();
|
||||||
const scalarListList& edgeWeights = blockDef_.blockEdgeWeights();
|
const scalarListList& w = blockDef_.blockEdgeWeights();
|
||||||
|
|
||||||
// generate vertices
|
// generate vertices
|
||||||
|
|
||||||
@ -69,193 +69,138 @@ void block::blockPoints()
|
|||||||
{
|
{
|
||||||
label vertexNo = vtxLabel(i, j, k);
|
label vertexNo = vtxLabel(i, j, k);
|
||||||
|
|
||||||
vector edgex1 = start*(1.0 - edgeWeights[0][i])
|
// points on edges
|
||||||
+ xEnd*edgeWeights[0][i];
|
vector edgex1 = p000 + (p100 - p000)*w[0][i];
|
||||||
|
vector edgex2 = p010 + (p110 - p010)*w[1][i];
|
||||||
|
vector edgex3 = p011 + (p111 - p011)*w[2][i];
|
||||||
|
vector edgex4 = p001 + (p101 - p001)*w[3][i];
|
||||||
|
|
||||||
vector edgex2 = yEnd*(1.0 - edgeWeights[1][i])
|
vector edgey1 = p000 + (p010 - p000)*w[4][j];
|
||||||
+ xyEnd*edgeWeights[1][i];
|
vector edgey2 = p100 + (p110 - p100)*w[5][j];
|
||||||
|
vector edgey3 = p101 + (p111 - p101)*w[6][j];
|
||||||
|
vector edgey4 = p001 + (p011 - p001)*w[7][j];
|
||||||
|
|
||||||
vector edgex3 = yzEnd*(1.0 - edgeWeights[2][i])
|
vector edgez1 = p000 + (p001 - p000)*w[8][k];
|
||||||
+ xyzEnd*edgeWeights[2][i];
|
vector edgez2 = p100 + (p101 - p100)*w[9][k];
|
||||||
|
vector edgez3 = p110 + (p111 - p110)*w[10][k];
|
||||||
vector edgex4 = zEnd*(1.0 - edgeWeights[3][i])
|
vector edgez4 = p010 + (p011 - p010)*w[11][k];
|
||||||
+ xzEnd*edgeWeights[3][i];
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
vector edgey1 = start*(1.0 - edgeWeights[4][j])
|
|
||||||
+ yEnd*edgeWeights[4][j];
|
|
||||||
|
|
||||||
vector edgey2 = xEnd*(1.0 - edgeWeights[5][j])
|
|
||||||
+ xyEnd*edgeWeights[5][j];
|
|
||||||
|
|
||||||
vector edgey3 = xzEnd*(1.0 - edgeWeights[6][j])
|
|
||||||
+ xyzEnd*edgeWeights[6][j];
|
|
||||||
|
|
||||||
vector edgey4 = zEnd*(1.0 - edgeWeights[7][j])
|
|
||||||
+ yzEnd*edgeWeights[7][j];
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
vector edgez1 = start*(1.0 - edgeWeights[8][k])
|
|
||||||
+ zEnd*edgeWeights[8][k];
|
|
||||||
|
|
||||||
vector edgez2 = xEnd*(1.0 - edgeWeights[9][k])
|
|
||||||
+ xzEnd*edgeWeights[9][k];
|
|
||||||
|
|
||||||
vector edgez3 = xyEnd*(1.0 - edgeWeights[10][k])
|
|
||||||
+ xyzEnd*edgeWeights[10][k];
|
|
||||||
|
|
||||||
vector edgez4 = yEnd*(1.0 - edgeWeights[11][k])
|
|
||||||
+ yzEnd*edgeWeights[11][k];
|
|
||||||
|
|
||||||
// calculate the importance factors for all edges
|
// calculate the importance factors for all edges
|
||||||
// x - direction
|
// x - direction
|
||||||
scalar impx1 =
|
scalar impx1 =
|
||||||
(
|
(
|
||||||
(1.0 - edgeWeights[0][i])
|
(1.0 - w[0][i])*(1.0 - w[4][j])*(1.0 - w[8][k])
|
||||||
*(1.0 - edgeWeights[4][j])
|
+ w[0][i]*(1.0 - w[5][j])*(1.0 - w[9][k])
|
||||||
*(1.0 - edgeWeights[8][k])
|
|
||||||
+ edgeWeights[0][i]
|
|
||||||
*(1.0 - edgeWeights[5][j])
|
|
||||||
*(1.0 - edgeWeights[9][k])
|
|
||||||
);
|
);
|
||||||
|
|
||||||
scalar impx2 =
|
scalar impx2 =
|
||||||
(
|
(
|
||||||
(1.0 - edgeWeights[1][i])
|
(1.0 - w[1][i])*w[4][j]*(1.0 - w[11][k])
|
||||||
*edgeWeights[4][j]
|
+ w[1][i]*w[5][j]*(1.0 - w[10][k])
|
||||||
*(1.0 - edgeWeights[11][k])
|
|
||||||
+ edgeWeights[1][i]
|
|
||||||
*edgeWeights[5][j]
|
|
||||||
*(1.0 - edgeWeights[10][k])
|
|
||||||
);
|
);
|
||||||
|
|
||||||
scalar impx3 =
|
scalar impx3 =
|
||||||
(
|
(
|
||||||
(1.0 - edgeWeights[2][i])
|
(1.0 - w[2][i])*w[7][j]*w[11][k]
|
||||||
*edgeWeights[7][j]
|
+ w[2][i]*w[6][j]*w[10][k]
|
||||||
*edgeWeights[11][k]
|
);
|
||||||
+ edgeWeights[2][i]
|
|
||||||
*edgeWeights[6][j]
|
|
||||||
*edgeWeights[10][k]
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
scalar impx4 =
|
scalar impx4 =
|
||||||
(
|
(
|
||||||
(1.0 - edgeWeights[3][i])
|
(1.0 - w[3][i])*(1.0 - w[7][j])*w[8][k]
|
||||||
*(1.0 - edgeWeights[7][j])
|
+ w[3][i]*(1.0 - w[6][j])*w[9][k]
|
||||||
*edgeWeights[8][k]
|
);
|
||||||
+ edgeWeights[3][i]
|
|
||||||
*(1.0 - edgeWeights[6][j])
|
|
||||||
*edgeWeights[9][k]
|
|
||||||
);
|
|
||||||
|
|
||||||
|
scalar magImpx = impx1 + impx2 + impx3 + impx4;
|
||||||
|
impx1 /= magImpx;
|
||||||
|
impx2 /= magImpx;
|
||||||
|
impx3 /= magImpx;
|
||||||
|
impx4 /= magImpx;
|
||||||
|
|
||||||
|
|
||||||
// y - direction
|
// y - direction
|
||||||
scalar impy1 =
|
scalar impy1 =
|
||||||
(
|
(
|
||||||
(1.0 - edgeWeights[4][j])
|
(1.0 - w[4][j])*(1.0 - w[0][i])*(1.0 - w[8][k])
|
||||||
*(1.0 - edgeWeights[0][i])
|
+ w[4][j]*(1.0 - w[1][i])*(1.0 - w[11][k])
|
||||||
*(1.0 - edgeWeights[8][k])
|
|
||||||
+ edgeWeights[4][j]
|
|
||||||
*(1.0 - edgeWeights[1][i])
|
|
||||||
*(1.0 - edgeWeights[11][k])
|
|
||||||
);
|
);
|
||||||
|
|
||||||
scalar impy2 =
|
scalar impy2 =
|
||||||
(
|
(
|
||||||
(1.0 - edgeWeights[5][j])
|
(1.0 - w[5][j])*w[0][i]*(1.0 - w[9][k])
|
||||||
*edgeWeights[0][i]
|
+ w[5][j]*w[1][i]*(1.0 - w[10][k])
|
||||||
*(1.0 - edgeWeights[9][k])
|
|
||||||
+ edgeWeights[5][j]
|
|
||||||
*edgeWeights[1][i]
|
|
||||||
*(1.0 - edgeWeights[10][k])
|
|
||||||
);
|
);
|
||||||
|
|
||||||
scalar impy3 =
|
scalar impy3 =
|
||||||
(
|
(
|
||||||
(1.0 - edgeWeights[6][j])
|
(1.0 - w[6][j])*w[3][i]*w[9][k]
|
||||||
*edgeWeights[3][i]
|
+ w[6][j]*w[2][i]*w[10][k]
|
||||||
*edgeWeights[9][k]
|
|
||||||
+ edgeWeights[6][j]
|
|
||||||
*edgeWeights[2][i]
|
|
||||||
*edgeWeights[10][k]
|
|
||||||
);
|
);
|
||||||
|
|
||||||
scalar impy4 =
|
scalar impy4 =
|
||||||
(
|
(
|
||||||
(1.0 - edgeWeights[7][j])
|
(1.0 - w[7][j])*(1.0 - w[3][i])*w[8][k]
|
||||||
*(1.0 - edgeWeights[3][i])
|
+ w[7][j]*(1.0 - w[2][i])*w[11][k]
|
||||||
*edgeWeights[8][k]
|
|
||||||
+ edgeWeights[7][j]
|
|
||||||
*(1.0 - edgeWeights[2][i])
|
|
||||||
*edgeWeights[11][k]
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
scalar magImpy = impy1 + impy2 + impy3 + impy4;
|
||||||
|
impy1 /= magImpy;
|
||||||
|
impy2 /= magImpy;
|
||||||
|
impy3 /= magImpy;
|
||||||
|
impy4 /= magImpy;
|
||||||
|
|
||||||
|
|
||||||
// z - direction
|
// z - direction
|
||||||
scalar impz1 =
|
scalar impz1 =
|
||||||
(
|
(
|
||||||
(1.0 - edgeWeights[8][k])
|
(1.0 - w[8][k])*(1.0 - w[0][i])*(1.0 - w[4][j])
|
||||||
*(1.0 - edgeWeights[0][i])
|
+ w[8][k]*(1.0 - w[3][i])*(1.0 - w[7][j])
|
||||||
*(1.0 - edgeWeights[4][j])
|
|
||||||
+ edgeWeights[8][k]
|
|
||||||
*(1.0 - edgeWeights[3][i])
|
|
||||||
*(1.0 - edgeWeights[7][j])
|
|
||||||
);
|
);
|
||||||
|
|
||||||
scalar impz2 =
|
scalar impz2 =
|
||||||
(
|
(
|
||||||
(1.0 - edgeWeights[9][k])
|
(1.0 - w[9][k])*w[0][i]*(1.0 - w[5][j])
|
||||||
*edgeWeights[0][i]
|
+ w[9][k]*w[3][i]*(1.0 - w[6][j])
|
||||||
*(1.0 - edgeWeights[5][j])
|
|
||||||
+ edgeWeights[9][k]
|
|
||||||
*edgeWeights[3][i]
|
|
||||||
*(1.0 - edgeWeights[6][j])
|
|
||||||
);
|
);
|
||||||
|
|
||||||
scalar impz3 =
|
scalar impz3 =
|
||||||
(
|
(
|
||||||
(1.0 - edgeWeights[10][k])
|
(1.0 - w[10][k])*w[1][i]*w[5][j]
|
||||||
*edgeWeights[1][i]
|
+ w[10][k]*w[2][i]*w[6][j]
|
||||||
*edgeWeights[5][j]
|
|
||||||
+ edgeWeights[10][k]
|
|
||||||
*edgeWeights[2][i]
|
|
||||||
*edgeWeights[6][j]
|
|
||||||
);
|
);
|
||||||
|
|
||||||
scalar impz4 =
|
scalar impz4 =
|
||||||
(
|
(
|
||||||
(1.0 - edgeWeights[11][k])
|
(1.0 - w[11][k])*(1.0 - w[1][i])*w[4][j]
|
||||||
*(1.0 - edgeWeights[1][i])
|
+ w[11][k]*(1.0 - w[2][i])*w[7][j]
|
||||||
*edgeWeights[4][j]
|
|
||||||
+ edgeWeights[11][k]
|
|
||||||
*(1.0 - edgeWeights[2][i])
|
|
||||||
*edgeWeights[7][j]
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
scalar magImpz = impz1 + impz2 + impz3 + impz4;
|
||||||
|
impz1 /= magImpz;
|
||||||
|
impz2 /= magImpz;
|
||||||
|
impz3 /= magImpz;
|
||||||
|
impz4 /= magImpz;
|
||||||
|
|
||||||
// calculate the correction vectors
|
// calculate the correction vectors
|
||||||
vector corx1 = impx1*(edgePoints[0][i] - edgex1);
|
vector corx1 = impx1*(p[0][i] - edgex1);
|
||||||
vector corx2 = impx2*(edgePoints[1][i] - edgex2);
|
vector corx2 = impx2*(p[1][i] - edgex2);
|
||||||
vector corx3 = impx3*(edgePoints[2][i] - edgex3);
|
vector corx3 = impx3*(p[2][i] - edgex3);
|
||||||
vector corx4 = impx4*(edgePoints[3][i] - edgex4);
|
vector corx4 = impx4*(p[3][i] - edgex4);
|
||||||
|
|
||||||
vector cory1 = impy1*(edgePoints[4][j] - edgey1);
|
vector cory1 = impy1*(p[4][j] - edgey1);
|
||||||
vector cory2 = impy2*(edgePoints[5][j] - edgey2);
|
vector cory2 = impy2*(p[5][j] - edgey2);
|
||||||
vector cory3 = impy3*(edgePoints[6][j] - edgey3);
|
vector cory3 = impy3*(p[6][j] - edgey3);
|
||||||
vector cory4 = impy4*(edgePoints[7][j] - edgey4);
|
vector cory4 = impy4*(p[7][j] - edgey4);
|
||||||
|
|
||||||
vector corz1 = impz1*(edgePoints[8][k] - edgez1);
|
vector corz1 = impz1*(p[8][k] - edgez1);
|
||||||
vector corz2 = impz2*(edgePoints[9][k] - edgez2);
|
vector corz2 = impz2*(p[9][k] - edgez2);
|
||||||
vector corz3 = impz3*(edgePoints[10][k] - edgez3);
|
vector corz3 = impz3*(p[10][k] - edgez3);
|
||||||
vector corz4 = impz4*(edgePoints[11][k] - edgez4);
|
vector corz4 = impz4*(p[11][k] - edgez4);
|
||||||
|
|
||||||
|
|
||||||
// multiply by the importance factor
|
// multiply by the importance factor
|
||||||
|
|
||||||
// x - direction
|
// x - direction
|
||||||
edgex1 *= impx1;
|
edgex1 *= impx1;
|
||||||
edgex2 *= impx2;
|
edgex2 *= impx2;
|
||||||
@ -285,7 +230,6 @@ void block::blockPoints()
|
|||||||
vertices_[vertexNo] += corx1 + corx2 + corx3 + corx4;
|
vertices_[vertexNo] += corx1 + corx2 + corx3 + corx4;
|
||||||
vertices_[vertexNo] += cory1 + cory2 + cory3 + cory4;
|
vertices_[vertexNo] += cory1 + cory2 + cory3 + cory4;
|
||||||
vertices_[vertexNo] += corz1 + corz2 + corz3 + corz4;
|
vertices_[vertexNo] += corz1 + corz2 + corz3 + corz4;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user