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
29 Takes a set of patches to start MeshWave from.
31 Holds after construction distance at cells and distance at patches
32 (like patchWave), but also additional transported data.
33 It is used, for example, in the y+ calculation.
41 \*---------------------------------------------------------------------------*/
43 #ifndef patchDataWave_H
44 #define patchDataWave_H
46 #include <meshTools/cellDistFuncs.H>
47 #include <OpenFOAM/FieldField.H>
48 #include <OpenFOAM/UPtrList.H>
50 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
55 // Forward declaration of classes
58 template<class Type> class MeshWave;
60 /*---------------------------------------------------------------------------*\
61 Class patchDataWave Declaration
62 \*---------------------------------------------------------------------------*/
64 template<class TransferType>
72 typedef typename TransferType::dataType Type;
75 // Private Member Data
77 //- Current patch subset (stored as patchIDs)
78 labelHashSet patchIDs_;
80 //- Reference to initial extra data at patch faces
81 const UPtrList<Field<Type> >& initialPatchValuePtrs_;
83 //- Do accurate distance calculation for near-wall cells.
87 // After construction:
90 //- Number of cells/faces unset after MeshWave has finished
93 //- Distance at cell centres
94 scalarField distance_;
96 //- Distance at patch faces
97 FieldField<Field, scalar> patchDistance_;
99 //- Extra data at cell centres
100 Field<Type> cellData_;
102 //- Extra data at patch faces
103 FieldField<Field, Type> patchData_;
106 // Private Member Functions
108 //- Set initial set of changed faces
111 const labelHashSet& patchIDs,
116 //- Copy MeshWave values into *this
117 label getValues(const MeshWave<TransferType>&);
124 //- Construct from mesh, information on patches to initialize and flag
125 // whether or not to correct wall.
126 // Calculate for all cells. correctWalls : correct wall (face&point)
127 // cells for correct distance, searching neighbours.
130 const polyMesh& mesh,
131 const labelHashSet& patchIDs,
132 const UPtrList<Field<Type> >& initialPatchValuePtrs,
133 bool correctWalls = true
139 virtual ~patchDataWave();
144 //- Correct for mesh geom/topo changes
145 virtual void correct();
148 const scalarField& distance() const
153 //- Non const access so we can 'transfer' contents for efficiency.
154 scalarField& distance()
159 const FieldField<Field, scalar>& patchDistance() const
161 return patchDistance_;
164 FieldField<Field, scalar>& patchDistance()
166 return patchDistance_;
169 const Field<Type>& cellData() const
174 Field<Type>& cellData()
179 const FieldField<Field, Type>& patchData() const
184 FieldField<Field, Type>& patchData()
196 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
198 } // End namespace Foam
200 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
203 # include "patchDataWave.C"
206 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
210 // ************************ vim: set sw=4 sts=4 et: ************************ //