Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / OpenFOAM / meshes / lduMesh / lduPrimitiveMesh.H
blobc84796da41a03f5728b6a0bde5687b5427de8fa0
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-2011 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
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
13     the Free Software Foundation, either version 3 of the License, or
14     (at your 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
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::lduPrimitiveMesh
27 Description
28     Simplest contrete lduMesh which stores the addressing needed by lduMatrix.
30 \*---------------------------------------------------------------------------*/
32 #ifndef lduPrimitiveMesh_H
33 #define lduPrimitiveMesh_H
35 #include "lduMesh.H"
36 #include "labelList.H"
38 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
40 namespace Foam
43 /*---------------------------------------------------------------------------*\
44                        Class lduPrimitiveMesh Declaration
45 \*---------------------------------------------------------------------------*/
47 class lduPrimitiveMesh
49     public lduMesh,
50     public lduAddressing
52     // Private data
54         //- Lower addressing
55         labelList lowerAddr_;
57         //- Upper addressing
58         labelList upperAddr_;
60         //- Patch to internal addressing
61         labelListList patchAddr_;
63         //- List of pointers for each patch
64         //  with only those pointing to interfaces being set
65         lduInterfacePtrsList interfaces_;
67         //- Patch field evaluation schedule.
68         //  Note this does not need to be held as a copy because it is invariant
69         const lduSchedule& patchSchedule_;
72     // Private Member Functions
74         //- Disallow default bitwise copy construct
75         lduPrimitiveMesh(const lduPrimitiveMesh&);
77         //- Disallow default bitwise assignment
78         void operator=(const lduPrimitiveMesh&);
81 public:
83     // Constructors
85         //- Construct from components as copies
86         lduPrimitiveMesh
87         (
88             const label nCells,
89             const labelUList& l,
90             const labelUList& u,
91             const labelListList& pa,
92             lduInterfacePtrsList interfaces,
93             const lduSchedule& ps
94         )
95         :
96             lduAddressing(nCells),
97             lowerAddr_(l),
98             upperAddr_(u),
99             patchAddr_(pa),
100             interfaces_(interfaces),
101             patchSchedule_(ps)
102         {}
105         //- Construct from components and  re-use storage as specified.
106         lduPrimitiveMesh
107         (
108             const label nCells,
109             labelList& l,
110             labelList& u,
111             labelListList& pa,
112             lduInterfacePtrsList interfaces,
113             const lduSchedule& ps,
114             bool reUse
115         )
116         :
117             lduAddressing(nCells),
118             lowerAddr_(l, reUse),
119             upperAddr_(u, reUse),
120             patchAddr_(pa, reUse),
121             interfaces_(interfaces, reUse),
122             patchSchedule_(ps)
123         {}
126     //- Destructor
127     virtual ~lduPrimitiveMesh()
128     {}
131     // Member Functions
133         // Access
135             //- Return ldu addressing
136             virtual const lduAddressing& lduAddr() const
137             {
138                 return *this;
139             }
141             //- Return a list of pointers for each patch
142             //  with only those pointing to interfaces being set
143             virtual lduInterfacePtrsList interfaces() const
144             {
145                 return interfaces_;
146             }
148             //- Return Lower addressing
149             virtual const labelUList& lowerAddr() const
150             {
151                 return lowerAddr_;
152             }
154             //- Return Upper addressing
155             virtual const labelUList& upperAddr() const
156             {
157                 return upperAddr_;
158             }
160             //- Return patch addressing
161             virtual const labelUList& patchAddr(const label i) const
162             {
163                 return patchAddr_[i];
164             }
166             //- Return patch evaluation schedule
167             virtual const lduSchedule& patchSchedule() const
168             {
169                 return patchSchedule_;
170             }
174 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
176 } // End namespace Foam
178 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
180 #endif
182 // ************************************************************************* //