Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / foam / matrices / lduMatrix / solvers / GAMG / interfaces / cyclicGAMGInterface / cyclicGAMGInterface.H
blob7416f5a0dff17c54e529862ddbbdbd2e63446278
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend 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 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::cyclicGAMGInterface
27 Description
28     GAMG agglomerated cyclic interface.
30 SourceFiles
31     cyclicGAMGInterface.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef cyclicGAMGInterface_H
36 #define cyclicGAMGInterface_H
38 #include "GAMGInterface.H"
39 #include "cyclicLduInterface.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 /*---------------------------------------------------------------------------*\
47                       Class cyclicGAMGInterface Declaration
48 \*---------------------------------------------------------------------------*/
50 class cyclicGAMGInterface
52     public GAMGInterface,
53     virtual public cyclicLduInterface
55     // Private data
57         //- Reference tor the cyclicLduInterface from which this is
58         //  agglomerated
59         const cyclicLduInterface& fineCyclicInterface_;
62     // Private Member Functions
64         //- Disallow default bitwise copy construct
65         cyclicGAMGInterface(const cyclicGAMGInterface&);
67         //- Disallow default bitwise assignment
68         void operator=(const cyclicGAMGInterface&);
71 public:
73     //- Runtime type information
74     TypeName("cyclic");
77     // Constructors
79         //- Construct from fine level interface,
80         //  local and neighbour restrict addressing
81         cyclicGAMGInterface
82         (
83             const lduPrimitiveMesh& lduMesh,
84             const lduInterface& fineInterface,
85             const labelField& localRestrictAddressing,
86             const labelField& neighbourRestrictAddressing
87         );
90     // Destructor
92         virtual ~cyclicGAMGInterface();
95     // Member Functions
97         // Access
99             //- Return true if interface is coupled
100             virtual bool coupled() const
101             {
102                 return true;
103             }
106         // Interface transfer functions
108             //- Transfer and return neighbour field
109             virtual tmp<labelField> transfer
110             (
111                 const Pstream::commsTypes commsType,
112                 const unallocLabelList& interfaceData
113             ) const;
115             //- Transfer and return internal field adjacent to the interface
116             virtual tmp<labelField> internalFieldTransfer
117             (
118                 const Pstream::commsTypes commsType,
119                 const unallocLabelList& iF
120             ) const;
123         //- Cyclic interface functions
125             //- Return face transformation tensor
126             virtual const tensorField& forwardT() const
127             {
128                 return fineCyclicInterface_.forwardT();
129             }
131             //- Return neighbour-cell transformation tensor
132             virtual const tensorField& reverseT() const
133             {
134                 return fineCyclicInterface_.reverseT();
135             }
139 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
141 } // End namespace Foam
143 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
145 #endif
147 // ************************************************************************* //