1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
5 \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
7 -------------------------------------------------------------------------------
9 This file is part of OpenFOAM.
11 OpenFOAM is free software; you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by the
13 Free Software Foundation; either version 2 of the License, or (at your
14 option) any later version.
16 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 You should have received a copy of the GNU General Public License
22 along with OpenFOAM; if not, write to the Free Software Foundation,
23 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 \*---------------------------------------------------------------------------*/
27 #include "nearWallDist.H"
29 #include "cellDistFuncs.H"
30 #include "wallFvPatch.H"
31 #include "surfaceFields.H"
33 // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
35 void Foam::nearWallDist::doAll()
37 cellDistFuncs wallUtils(mesh_);
39 // Get patch ids of walls
40 labelHashSet wallPatchIDs
44 wallPolyPatch::typeName
48 // Size neighbours array for maximum possible
50 labelList neighbours(wallUtils.maxPatchSize(wallPatchIDs));
53 // Correct all cells with face on wall
55 const volVectorField& cellCentres = mesh_.C();
57 forAll(mesh_.boundary(), patchI)
59 fvPatchScalarField& ypatch = operator[](patchI);
61 const fvPatch& patch = mesh_.boundary()[patchI];
63 if (patch.type() == wallFvPatch::typeName)
65 const polyPatch& pPatch = patch.patch();
67 const unallocLabelList& faceCells = patch.faceCells();
69 // Check cells with face on wall
70 forAll(patch, patchFaceI)
72 label nNeighbours = wallUtils.getPointNeighbours
81 ypatch[patchFaceI] = wallUtils.smallestDist
83 cellCentres[faceCells[patchFaceI]],
99 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
101 Foam::nearWallDist::nearWallDist(const Foam::fvMesh& mesh)
103 volScalarField::GeometricBoundaryField
106 mesh.V(), // Dummy internal field,
107 calculatedFvPatchScalarField::typeName
115 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
117 Foam::nearWallDist::~nearWallDist()
121 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
123 void Foam::nearWallDist::correct()
125 if (mesh_.changing())
127 // Update size of GeometricBoundaryField
128 forAll(mesh_.boundary(), patchI)
130 operator[](patchI).setSize(mesh_.boundary()[patchI].size());
138 // ************************************************************************* //