FreeFOAM The Cross-Platform CFD Toolkit
slicedFvsPatchField.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
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  Specialization 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 
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  );
83 
84  //- Construct from patch, internal field and dictionary
86  (
87  const fvPatch&,
89  const dictionary&
90  );
91 
92  //- Construct by mapping the given slicedFvsPatchField<Type>
93  // onto a new patch
95  (
97  const fvPatch&,
99  const fvPatchFieldMapper&
100  );
101 
102  //- Construct as copy
104 
105  //- Construct and return a clone
106  virtual tmp<fvsPatchField<Type> > clone() const;
107 
108  //- Construct as copy setting internal field reference
110  (
113  );
114 
115  //- Construct and return a clone setting internal field reference
117  (
119  ) const;
120 
121 
122  // Destructor
123 
124  virtual ~slicedFvsPatchField<Type>();
125 
126 
127  // Member functions
128 
129  // Access
130 
131  //- Return true if this patch field fixes a value.
132  // Needed to check if a level has to be specified while solving
133  // Poissons equations.
134  virtual bool fixesValue() const
135  {
136  return true;
137  }
138 
139 
140  //- Write
141  virtual void write(Ostream&) const;
142 
143 
144  // Member operators
145 
146  virtual void operator=(const UList<Type>&) {}
147 
148  virtual void operator=(const fvsPatchField<Type>&) {}
149  virtual void operator+=(const fvsPatchField<Type>&) {}
150  virtual void operator-=(const fvsPatchField<Type>&) {}
151  virtual void operator*=(const fvsPatchField<scalar>&) {}
152  virtual void operator/=(const fvsPatchField<scalar>&) {}
153 
154  virtual void operator+=(const Field<Type>&) {}
155  virtual void operator-=(const Field<Type>&) {}
156 
157  virtual void operator*=(const Field<scalar>&) {}
158  virtual void operator/=(const Field<scalar>&) {}
159 
160  virtual void operator=(const Type&) {}
161  virtual void operator+=(const Type&) {}
162  virtual void operator-=(const Type&) {}
163  virtual void operator*=(const scalar) {}
164  virtual void operator/=(const scalar) {}
165 };
166 
167 
168 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
169 
170 } // End namespace Foam
171 
172 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
173 
174 #ifdef NoRepository
176 #endif
177 
178 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
179 
180 #endif
181 
182 // ************************ vim: set sw=4 sts=4 et: ************************ //