cyclicGAMGInterfaceField.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
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.
15 
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.
20 
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/>.
23 
24 Class
25  Foam::cyclicGAMGInterfaceField
26 
27 Description
28  GAMG agglomerated cyclic interface field.
29 
30 SourceFiles
31  cyclicGAMGInterfaceField.C
32 
33 \*---------------------------------------------------------------------------*/
34 
35 #ifndef cyclicGAMGInterfaceField_H
36 #define cyclicGAMGInterfaceField_H
37 
38 #include "GAMGInterfaceField.H"
39 #include "cyclicGAMGInterface.H"
41 
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 
44 namespace Foam
45 {
46 
47 /*---------------------------------------------------------------------------*\
48  Class cyclicGAMGInterfaceField Declaration
49 \*---------------------------------------------------------------------------*/
50 
52 :
53  public GAMGInterfaceField,
55 {
56  // Private Data
57 
58  //- Local reference cast into the cyclic interface
59  const cyclicGAMGInterface& cyclicInterface_;
60 
61  //- Rank of component for transformation
62  int rank_;
63 
64 
65 public:
66 
67  //- Runtime type information
68  TypeName("cyclic");
69 
70 
71  // Constructors
72 
73  //- Construct from GAMG interface and fine level interface field
75  (
76  const GAMGInterface& GAMGCp,
77  const lduInterfaceField& fineInterfaceField
78  );
79 
80  //- Construct from GAMG interface and fine level interface field
82  (
83  const GAMGInterface& GAMGCp,
84  const int rank
85  );
86 
87  //- Disallow default bitwise copy construction
89 
90 
91  //- Destructor
92  virtual ~cyclicGAMGInterfaceField();
93 
94 
95  // Member Functions
96 
97  // Access
98 
99  //- Return size
100  label size() const
101  {
102  return cyclicInterface_.size();
103  }
104 
105 
106  //- Cyclic interface functions
107 
108  //- Return the transformation
109  virtual const transformer& transform() const
110  {
111  return cyclicInterface_.transform();
112  }
113 
114  //- Return rank of component for transform
115  virtual int rank() const
116  {
117  return rank_;
118  }
119 
120 
121  // Interface matrix update
122 
123  //- Update result field based on interface functionality
124  virtual void updateInterfaceMatrix
125  (
126  scalarField& result,
127  const scalarField& psiInternal,
128  const scalarField& coeffs,
129  const direction cmpt,
130  const Pstream::commsTypes commsType
131  ) const;
132 
133 
134  // Member Operators
135 
136  //- Disallow default bitwise assignment
137  void operator=(const cyclicGAMGInterfaceField&) = delete;
138 };
139 
140 
141 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
142 
143 } // End namespace Foam
144 
145 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
146 
147 #endif
148 
149 // ************************************************************************* //
void operator=(const cyclicGAMGInterfaceField &)=delete
Disallow default bitwise assignment.
virtual label size() const
Return size.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
Vector-tensor class used to perform translations, rotations and scaling operations in 3D space...
Definition: transformer.H:83
GAMG agglomerated cyclic interface field.
commsTypes
Types of communications.
Definition: UPstream.H:64
uint8_t direction
Definition: direction.H:45
An abstract base class for implicitly-coupled interface fields e.g. processor and cyclic patch fields...
virtual ~cyclicGAMGInterfaceField()
Destructor.
cyclicGAMGInterfaceField(const GAMGInterface &GAMGCp, const lduInterfaceField &fineInterfaceField)
Construct from GAMG interface and fine level interface field.
virtual int rank() const
Return rank of component for transform.
TypeName("cyclic")
Runtime type information.
Abstract base class for GAMG agglomerated interfaces.
Definition: GAMGInterface.H:51
virtual void updateInterfaceMatrix(scalarField &result, const scalarField &psiInternal, const scalarField &coeffs, const direction cmpt, const Pstream::commsTypes commsType) const
Update result field based on interface functionality.
virtual const transformer & transform() const
Cyclic interface functions.
virtual const transformer & transform() const
Return face transformation tensor.
Abstract base class for GAMG agglomerated interface fields.
Abstract base class for cyclic coupled interfaces.
Namespace for OpenFOAM.
GAMG agglomerated cyclic interface.