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-2019 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  //- Is the transform required
62  bool doTransform_;
63 
64  //- Rank of component for transformation
65  int rank_;
66 
67 
68 public:
69 
70  //- Runtime type information
71  TypeName("cyclic");
72 
73 
74  // Constructors
75 
76  //- Construct from GAMG interface and fine level interface field
78  (
79  const GAMGInterface& GAMGCp,
80  const lduInterfaceField& fineInterfaceField
81  );
82 
83  //- Construct from GAMG interface and fine level interface field
85  (
86  const GAMGInterface& GAMGCp,
87  const bool doTransform,
88  const int rank
89  );
90 
91  //- Disallow default bitwise copy construction
93 
94 
95  //- Destructor
96  virtual ~cyclicGAMGInterfaceField();
97 
98 
99  // Member Functions
100 
101  // Access
102 
103  //- Return size
104  label size() const
105  {
106  return cyclicInterface_.size();
107  }
108 
109 
110  //- Cyclic interface functions
111 
112  //- Does the interface field perform the transformation
113  virtual bool doTransform() const
114  {
115  return doTransform_;
116  }
117 
118  //- Return face transformation tensor
119  virtual const tensorField& forwardT() const
120  {
121  return cyclicInterface_.forwardT();
122  }
123 
124  //- Return neighbour-cell transformation tensor
125  virtual const tensorField& reverseT() const
126  {
127  return cyclicInterface_.reverseT();
128  }
129 
130  //- Return rank of component for transform
131  virtual int rank() const
132  {
133  return rank_;
134  }
135 
136 
137  // Interface matrix update
138 
139  //- Update result field based on interface functionality
140  virtual void updateInterfaceMatrix
141  (
142  scalarField& result,
143  const scalarField& psiInternal,
144  const scalarField& coeffs,
145  const direction cmpt,
146  const Pstream::commsTypes commsType
147  ) const;
148 
149 
150  // Member Operators
151 
152  //- Disallow default bitwise assignment
153  void operator=(const cyclicGAMGInterfaceField&) = delete;
154 };
155 
156 
157 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
158 
159 } // End namespace Foam
160 
161 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
162 
163 #endif
164 
165 // ************************************************************************* //
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
GAMG agglomerated cyclic interface field.
commsTypes
Types of communications.
Definition: UPstream.H:64
virtual const tensorField & reverseT() const
Return neighbour-cell transformation tensor.
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.
virtual const tensorField & reverseT() const
Return neighbour-cell transformation tensor.
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 tensorField & forwardT() const
Return face transformation tensor.
Abstract base class for GAMG agglomerated interface fields.
Abstract base class for cyclic coupled interfaces.
virtual bool doTransform() const
Cyclic interface functions.
virtual const tensorField & forwardT() const
Return face transformation tensor.
Namespace for OpenFOAM.
GAMG agglomerated cyclic interface.