slicedFvsPatchField.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-2023 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::slicedFvsPatchField
26 
27 Description
28  Specialisation of fvsPatchField which creates the underlying
29  fvsPatchField as a slice of the given complete field.
30 
31  The destructor is wrapped to avoid deallocation of the storage of the
32  complete fields when this is destroyed.
33 
34  Should only used as a template argument for SlicedGeometricField.
35 
36 SourceFiles
37  slicedFvsPatchField.C
38 
39 \*---------------------------------------------------------------------------*/
40 
41 #ifndef slicedFvsPatchField_H
42 #define slicedFvsPatchField_H
43 
44 #include "fvsPatchField.H"
45 
46 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 
48 namespace Foam
49 {
50 
51 /*---------------------------------------------------------------------------*\
52  Class slicedFvsPatch Declaration
53 \*---------------------------------------------------------------------------*/
54 
55 template<class Type>
57 :
58  public fvsPatchField<Type>
59 {
60 
61 public:
62 
63  //- Runtime type information
64  TypeName("sliced");
65 
66 
67  // Constructors
68 
69  //- Construct from patch, internal field and field to slice
71  (
72  const fvPatch&,
74  const Field<Type>&
75  );
76 
77  //- Construct from patch and internal field
79  (
80  const fvPatch&,
82  const fvsPatchField<Type>& pf
83  );
84 
85  //- Disallow copy without setting internal field reference
87 
88  //- Copy constructor setting internal field reference
90  (
93  );
94 
95  //- Construct and return a clone setting internal field reference
97  (
99  ) const;
100 
101 
102  //- Destructor
103  virtual ~slicedFvsPatchField<Type>();
104 
105 
106  // Member Functions
107 
108  // Access
109 
110  //- Return true if this patch field fixes a value.
111  // Needed to check if a level has to be specified while solving
112  // Poissons equations.
113  virtual bool fixesValue() const
114  {
115  return true;
116  }
117 
118 
119  //- Write
120  virtual void write(Ostream&) const;
121 
122 
123  // Member Operators
124 
125  virtual void operator=(const UList<Type>&) {}
126 
127  virtual void operator=(const fvsPatchField<Type>&) {}
128  virtual void operator+=(const fvsPatchField<Type>&) {}
129  virtual void operator-=(const fvsPatchField<Type>&) {}
130  virtual void operator*=(const fvsPatchField<scalar>&) {}
131  virtual void operator/=(const fvsPatchField<scalar>&) {}
132 
133  virtual void operator+=(const Field<Type>&) {}
134  virtual void operator-=(const Field<Type>&) {}
135 
136  virtual void operator*=(const Field<scalar>&) {}
137  virtual void operator/=(const Field<scalar>&) {}
138 
139  virtual void operator=(const Type&) {}
140  virtual void operator+=(const Type&) {}
141  virtual void operator-=(const Type&) {}
142  virtual void operator*=(const scalar) {}
143  virtual void operator/=(const scalar) {}
144 };
145 
146 
147 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
148 
149 } // End namespace Foam
150 
151 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
152 
153 #ifdef NoRepository
154  #include "slicedFvsPatchField.C"
155 #endif
156 
157 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
158 
159 #endif
160 
161 // ************************************************************************* //
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Pre-declare SubField and related Field type.
Definition: Field.H:82
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:57
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition: fvPatch.H:64
An abstract base class with a fat-interface to all derived classes covering all possible ways in whic...
Definition: fvsPatchField.H:82
tmp< fvsPatchField< Type > > clone() const
Disallow clone without setting internal field reference.
Specialisation of fvsPatchField which creates the underlying fvsPatchField as a slice of the given co...
virtual bool fixesValue() const
Return true if this patch field fixes a value.
slicedFvsPatchField(const fvPatch &, const DimensionedField< Type, surfaceMesh > &, const Field< Type > &)
Construct from patch, internal field and field to slice.
virtual void operator-=(const fvsPatchField< Type > &)
virtual void write(Ostream &) const
Write.
virtual void operator*=(const fvsPatchField< scalar > &)
virtual void operator=(const UList< Type > &)
virtual void operator+=(const fvsPatchField< Type > &)
virtual void operator/=(const fvsPatchField< scalar > &)
TypeName("sliced")
Runtime type information.
A class for managing temporary objects.
Definition: tmp.H:55
Namespace for OpenFOAM.