OpenFOAM logo
Open Source CFD Toolkit

lduAddressingFaMesh.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     lduAddressingFaMesh
00027 
00028 Description
00029 
00030 SourceFiles
00031     lduAddressingFaMesh.C
00032 
00033 \*---------------------------------------------------------------------------*/
00034 
00035 #ifndef lduAddressingFaMesh_H
00036 #define lduAddressingFaMesh_H
00037 
00038 #include "lduAddressing.H"
00039 #include "faMesh.H"
00040 
00041 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00042 
00043 namespace Foam
00044 {
00045 
00046 /*---------------------------------------------------------------------------*\
00047                         Class lduAddressingFaMesh Declaration
00048 \*---------------------------------------------------------------------------*/
00049 
00050 class lduAddressingFaMesh
00051 :
00052     public lduAddressing
00053 {
00054     // Private data
00055 
00056         //- Lower as a subList of allOwner
00057         labelList::subList lowerAddr_;
00058 
00059         //- Upper as a reference to neighbour
00060         const labelList& upperAddr_;
00061 
00062         //- Patch addressing as a list of sublists
00063         PtrList<labelList::subList> patchAddr_;
00064 
00065     // Private Member Functions
00066 
00067         //- Disallow default bitwise copy construct
00068         lduAddressingFaMesh(const lduAddressingFaMesh&);
00069 
00070         //- Disallow default bitwise assignment
00071         void operator=(const lduAddressingFaMesh&);
00072 
00073 
00074 public:
00075 
00076     // Constructors
00077 
00078         //- Construct from components
00079         lduAddressingFaMesh(const faMesh& m)
00080         :
00081             lduAddressing(m.nFaces()),
00082             lowerAddr_
00083             (
00084                 labelList::subList
00085                 (
00086                     m.edgeOwner(),
00087                     m.nInternalEdges()
00088                 )
00089             ),
00090             upperAddr_(m.edgeNeighbour()),
00091             patchAddr_(m.boundary().size())
00092         {
00093             forAll (m.boundary(), patchI)
00094             {
00095                 patchAddr_.hook
00096                 (
00097                     new labelList::subList(m.boundary()[patchI].edgeFaces())
00098                 );
00099             }
00100         }
00101 
00102 
00103     // Destructor
00104 
00105         ~lduAddressingFaMesh()
00106         {}
00107 
00108 
00109     // Member Functions
00110 
00111         //- Return lower addressing (i.e. lower label = upper triangle)
00112         const unallocLabelList& lowerAddr() const
00113         {
00114             return lowerAddr_;
00115         }
00116 
00117         //- Return upper addressing (i.e. upper label)
00118         const unallocLabelList& upperAddr() const
00119         {
00120             return upperAddr_;
00121         }
00122 
00123         //- Return patch addressing
00124         const unallocLabelList& patchAddr(const label i) const
00125         {
00126             return patchAddr_[i];
00127         }
00128 
00129 };
00130 
00131 
00132 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00133 
00134 } // End namespace Foam
00135 
00136 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00137 
00138 #endif
00139 
00140 // ************************************************************************* //
For further information go to www.openfoam.org