interrogateWallPatches.H 1.84 KB
Newer Older
shunbo's avatar
shunbo committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// Search for wall patches faces and store normals

label faceId(-1);
label patchId(-1);
label nWallFaces(0);
vector wallNormal(Zero);

const fvPatchList& patches = mesh.boundary();

forAll(patches, patchi)
{
    const fvPatch& currPatch = patches[patchi];

    if (isA<wallFvPatch>(currPatch))
    {
        const vectorField nf(currPatch.nf());

        forAll(nf, facei)
        {
            nWallFaces++;

            if (nWallFaces == 1)
            {
                wallNormal = -nf[facei];
                faceId = facei;
                patchId = patchi;
            }
            else if (nWallFaces == 2)
            {
                const vector wallNormal2 = -nf[facei];

                //- Check that wall faces are parallel
                if
                (
                    mag(wallNormal & wallNormal2) > 1.01
                 || mag(wallNormal & wallNormal2) < 0.99
                )
                {
                    FatalErrorInFunction
                        << "wall faces are not parallel for patches "
                        << patches[patchId].name() << " and "
                        << currPatch.name() << nl
                        << exit(FatalError);
                }
            }
            else
            {
                FatalErrorInFunction
                    << nl << exit(FatalError);
            }
        }
    }
}

if (nWallFaces == 0)
{
    FatalErrorInFunction
        << exit(FatalError);
}
else
{
    Info<< "Generating wall data for patch: " << patches[patchId].name()
        << endl;
}

// store local id of near-wall cell to process
label cellId = patches[patchId].faceCells()[faceId];

// create position array for graph generation
scalarField y
(
    wallNormal
  & (mesh.C().primitiveField() - mesh.C().boundaryField()[patchId][faceId])
);

Info<< "    Height to first cell centre y0 = " << y[cellId] << endl;