OpenFOAM logo
Open Source CFD Toolkit

wedgePolyPatch.H

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002   =========                 |
00003   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
00004    \\    /   O peration     |
00005     \\  /    A nd           | Copyright (C) 1991-2005 OpenCFD Ltd.
00006      \\/     M anipulation  |
00007 -------------------------------------------------------------------------------
00008 License
00009     This file is part of OpenFOAM.
00010 
00011     OpenFOAM is free software; you can redistribute it and/or modify it
00012     under the terms of the GNU General Public License as published by the
00013     Free Software Foundation; either version 2 of the License, or (at your
00014     option) any later version.
00015 
00016     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
00017     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00018     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
00019     for more details.
00020 
00021     You should have received a copy of the GNU General Public License
00022     along with OpenFOAM; if not, write to the Free Software Foundation,
00023     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
00024 
00025 Class
00026     wedgePolyPatch
00027 
00028 Description
00029     Wedge front and back plane patch.
00030 
00031 SourceFiles
00032     wedgePolyPatch.C
00033 
00034 \*---------------------------------------------------------------------------*/
00035 
00036 #ifndef wedgePolyPatch_H
00037 #define wedgePolyPatch_H
00038 
00039 #include "polyPatch.H"
00040 
00041 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00042 
00043 namespace Foam
00044 {
00045 
00046 /*---------------------------------------------------------------------------*\
00047                       Class wedgePolyPatch Declaration
00048 \*---------------------------------------------------------------------------*/
00049 
00050 class wedgePolyPatch
00051 :
00052     public polyPatch
00053 {
00054     // Private data
00055 
00056         //- Axis of the wedge
00057         vector axis_;
00058 
00059         //- Centre normal between the wedge boundaries
00060         vector centreNormal_;
00061 
00062         //- Face transformation tensor
00063         tensor faceT_;
00064 
00065         //- Neighbour-cell transformation tensor
00066         tensor cellT_;
00067 
00068         //- Calculate the above tensors
00069         void initTransforms();
00070 
00071 
00072 public:
00073 
00074     //- Runtime type information
00075     TypeName("wedge");
00076 
00077 
00078     // Constructors
00079 
00080         //- Construct from components
00081         wedgePolyPatch
00082         (
00083             const word& name,
00084             const label size,
00085             const label start,
00086             const label index,
00087             const polyBoundaryMesh& bm
00088         );
00089 
00090         //- Construct from Istream
00091         wedgePolyPatch(Istream&, const label index, const polyBoundaryMesh&);
00092 
00093         //- Construct from dictionary
00094         wedgePolyPatch
00095         (
00096             const word& name,
00097             const dictionary& dict,
00098             const label index,
00099             const polyBoundaryMesh& bm
00100         );
00101 
00102         //- Construct as copy, resetting the boundary mesh
00103         wedgePolyPatch(const wedgePolyPatch&, const polyBoundaryMesh&);
00104 
00105         //- Construct given the original patch and resetting the
00106         //  face list and boundary mesh information
00107         wedgePolyPatch
00108         (
00109             const wedgePolyPatch& pp,
00110             const polyBoundaryMesh& bm,
00111             const label index,
00112             const label newSize,
00113             const label newStart
00114         );
00115 
00116         //- Construct and return a clone, resetting the boundary mesh
00117         virtual autoPtr<polyPatch> clone(const polyBoundaryMesh& bm) const
00118         {
00119             return autoPtr<polyPatch>(new wedgePolyPatch(*this, bm));
00120         }
00121 
00122         //- Construct and return a clone, resetting the face list
00123         //  and boundary mesh
00124         virtual autoPtr<polyPatch> clone
00125         (
00126             const polyBoundaryMesh& bm,
00127             const label index,
00128             const label newSize,
00129             const label newStart
00130         ) const
00131         {
00132             return autoPtr<polyPatch>
00133             (
00134                 new wedgePolyPatch(*this, bm, index, newSize, newStart)
00135             );
00136         }
00137 
00138 
00139     // Member functions
00140 
00141         // Access
00142 
00143             //- Return axis of the wedge
00144             const vector& axis() const
00145             {
00146                 return axis_;
00147             }
00148 
00149             //- Return plane normal between the wedge boundaries
00150             const vector& centreNormal() const
00151             {
00152                 return centreNormal_;
00153             }
00154 
00155             //- Return face transformation tensor
00156             const tensor& faceT() const
00157             {
00158                 return faceT_;
00159             }
00160 
00161             //- Return neighbour-cell transformation tensor
00162             const tensor& cellT() const
00163             {
00164                 return cellT_;
00165             }
00166 };
00167 
00168 
00169 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00170 
00171 } // End namespace Foam
00172 
00173 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00174 
00175 #endif
00176 
00177 // ************************************************************************* //
For further information go to www.openfoam.org