cyclicAMIGAMGInterfaceField.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::cyclicAMIGAMGInterfaceField
26 
27 Description
28  GAMG agglomerated cyclic interface field.
29 
30 SourceFiles
31  cyclicAMIGAMGInterfaceField.C
32 
33 \*---------------------------------------------------------------------------*/
34 
35 #ifndef cyclicAMIGAMGInterfaceField_H
36 #define cyclicAMIGAMGInterfaceField_H
37 
38 #include "GAMGInterfaceField.H"
39 #include "cyclicAMIGAMGInterface.H"
41 
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 
44 namespace Foam
45 {
46 
47 /*---------------------------------------------------------------------------*\
48  Class cyclicAMIGAMGInterfaceField Declaration
49 \*---------------------------------------------------------------------------*/
50 
52 :
53  public GAMGInterfaceField,
55 {
56  // Private Data
57 
58  //- Local reference cast into the cyclic interface
59  const cyclicAMIGAMGInterface& cyclicAMIInterface_;
60 
61  //- Rank of component for transformation
62  int rank_;
63 
64 
65 public:
66 
67  //- Runtime type information
68  TypeName("cyclicAMI");
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  (
91  ) = delete;
92 
93 
94  //- Destructor
96 
97 
98  // Member Functions
99 
100  // Access
101 
102  //- Return size
103  label size() const
104  {
105  return cyclicAMIInterface_.size();
106  }
107 
108 
109  // Interface matrix update
110 
111  //- Update result field based on interface functionality
112  virtual void updateInterfaceMatrix
113  (
114  scalarField& result,
115  const scalarField& psiInternal,
116  const scalarField& coeffs,
117  const direction cmpt,
118  const Pstream::commsTypes commsType
119  ) const;
120 
121 
122  //- Cyclic interface functions
123 
124  //- Return transformation between the coupled patches
125  virtual const transformer& transform() const
126  {
127  return cyclicAMIInterface_.transform();
128  }
129 
130  //- Return rank of component for transform
131  virtual int rank() const
132  {
133  return rank_;
134  }
135 
136 
137  // Member Operators
138 
139  //- Disallow default bitwise assignment
140  void operator=(const cyclicAMIGAMGInterfaceField&) = delete;
141 };
142 
143 
144 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
145 
146 } // End namespace Foam
147 
148 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
149 
150 #endif
151 
152 // ************************************************************************* //
virtual label size() const
Return size.
GAMG agglomerated cyclic interface field.
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 and rotations in 3D space.
Definition: transformer.H:83
GAMG agglomerated cyclic AMI interface.
commsTypes
Types of communications.
Definition: UPstream.H:64
uint8_t direction
Definition: direction.H:45
virtual const transformer & transform() const
Return transformation between the coupled patches.
An abstract base class for implicitly-coupled interface fields e.g. processor and cyclic patch fields...
TypeName("cyclicAMI")
Runtime type information.
virtual int rank() const
Return rank of component for transform.
Abstract base class for cyclic AMI coupled interfaces.
virtual const transformer & transform() const
Cyclic interface functions.
cyclicAMIGAMGInterfaceField(const GAMGInterface &GAMGCp, const lduInterfaceField &fineInterfaceField)
Construct from GAMG interface and fine level interface field.
Abstract base class for GAMG agglomerated interfaces.
Definition: GAMGInterface.H:51
void operator=(const cyclicAMIGAMGInterfaceField &)=delete
Disallow default bitwise assignment.
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.
Abstract base class for GAMG agglomerated interface fields.
Namespace for OpenFOAM.