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-2024 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 SourceFiles
35  slicedFvsPatchField.C
36 
37 \*---------------------------------------------------------------------------*/
38 
39 #ifndef slicedFvsPatchField_H
40 #define slicedFvsPatchField_H
41 
42 #include "fvsPatchField.H"
43 
44 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 
46 namespace Foam
47 {
48 
49 /*---------------------------------------------------------------------------*\
50  Class slicedFvsPatch Declaration
51 \*---------------------------------------------------------------------------*/
52 
53 template<class Type>
55 :
56  public fvsPatchField<Type>
57 {
58 
59 public:
60 
61  //- Runtime type information
62  TypeName("sliced");
63 
64 
65  // Constructors
66 
67  //- Construct from patch, internal field and field to slice
69  (
70  const fvPatch&,
72  const Field<Type>&
73  );
74 
75  //- Construct from patch and internal field
77  (
78  const fvPatch&,
80  const fvsPatchField<Type>& pf
81  );
82 
83  //- Disallow copy without setting internal field reference
85 
86  //- Copy constructor setting internal field reference
88  (
91  );
92 
93  //- Construct and return a clone setting internal field reference
95  (
97  ) const;
98 
99 
100  //- Destructor
101  virtual ~slicedFvsPatchField();
102 
103 
104  // Member Functions
105 
106  // Access
107 
108  //- Return true if this patch field fixes a value.
109  // Needed to check if a level has to be specified while solving
110  // Poissons equations.
111  virtual bool fixesValue() const
112  {
113  return true;
114  }
115 
116 
117  //- Write
118  virtual void write(Ostream&) const;
119 
120 
121  // Member Operators
122 
123  virtual void operator=(const UList<Type>&) {}
124 
125  virtual void operator=(const fvsPatchField<Type>&) {}
126  virtual void operator+=(const fvsPatchField<Type>&) {}
127  virtual void operator-=(const fvsPatchField<Type>&) {}
128  virtual void operator*=(const fvsPatchField<scalar>&) {}
129  virtual void operator/=(const fvsPatchField<scalar>&) {}
130 
131  virtual void operator+=(const Field<Type>&) {}
132  virtual void operator-=(const Field<Type>&) {}
133 
134  virtual void operator*=(const Field<scalar>&) {}
135  virtual void operator/=(const Field<scalar>&) {}
136 
137  virtual void operator=(const Type&) {}
138  virtual void operator+=(const Type&) {}
139  virtual void operator-=(const Type&) {}
140  virtual void operator*=(const scalar) {}
141  virtual void operator/=(const scalar) {}
142 };
143 
144 
145 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
146 
147 } // End namespace Foam
148 
149 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
150 
151 #ifdef NoRepository
152  #include "slicedFvsPatchField.C"
153 #endif
154 
155 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
156 
157 #endif
158 
159 // ************************************************************************* //
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:83
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:86
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 > &)
virtual ~slicedFvsPatchField()
Destructor.
TypeName("sliced")
Runtime type information.
A class for managing temporary objects.
Definition: tmp.H:55
Namespace for OpenFOAM.