codedFixedValuePointPatchField.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) 2012-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::codedFixedValuePointPatchField
26 
27 Description
28  Constructs on-the-fly a new boundary condition (derived from
29  fixedValuePointPatchField) which is then used to evaluate.
30 
31  Example:
32  \verbatim
33  movingWall
34  {
35  type codedFixedValue;
36  value uniform 0;
37  name rampedFixedValue; // name of generated bc
38 
39  code
40  #{
41  operator==
42  (
43  vector(0,0,1)
44  *min(10, 0.1*this->db().time().value())
45  );
46  #};
47 
48  // codeInclude
49  //#{
50  // #include "fvCFD.H"
51  //#};
52 
53  // codeOptions
54  //#{
55  // -I$(LIB_SRC)/finiteVolume/lnInclude
56  //#};
57  }
58  \endverbatim
59 
60  A special form is if the \c code section is not supplied. In this case
61  the code gets read from a (runTimeModifiable!) dictionary system/codeDict
62  which would have a corresponding entry
63 
64  \verbatim
65  rampedFixedValue
66  {
67  code
68  #{
69  operator==(min(10, 0.1*this->db().time().value()));
70  #};
71  }
72  \endverbatim
73 
74 See also
75  codedFixedValueFvPatchField
76 
77 SourceFiles
78  codedFixedValuePointPatchField.C
79 
80 \*---------------------------------------------------------------------------*/
81 
82 #ifndef codedFixedValuePointPatchField_H
83 #define codedFixedValuePointPatchField_H
84 
86 #include "codedBase.H"
87 
88 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
89 
90 namespace Foam
91 {
92 
93 // Forward declaration of classes
94 class dynamicCode;
95 class dynamicCodeContext;
96 class IOdictionary;
97 
98 /*---------------------------------------------------------------------------*\
99  Class codedFixedValuePointPatchField Declaration
100 \*---------------------------------------------------------------------------*/
101 
102 template<class Type>
104 :
105  public fixedValuePointPatchField<Type>,
106  public codedBase
107 {
108  // Private static data
109 
110  //- The keywords associated with source code
111  static const wordList codeKeys_;
112 
113 
114  // Private Data
115 
116  //- Dictionary contents for the boundary condition
117  mutable dictionary dict_;
118 
119  const word name_;
120 
121  mutable autoPtr<pointPatchField<Type>> redirectPatchFieldPtr_;
122 
123 
124  // Private Member Functions
125 
126  const IOdictionary& dict() const;
127 
128  //- Set the rewrite vars controlling the Type
129  static void setFieldTemplates(dynamicCode& dynCode);
130 
131  //- Get the loaded dynamic libraries
132  virtual dlLibraryTable& libs() const;
133 
134  //- Adapt the context for the current object
135  virtual void prepare(dynamicCode&, const dynamicCodeContext&) const;
136 
137  //- Return a description (type + name) for the output
138  virtual string description() const;
139 
140  //- Clear the ptr to the redirected object
141  virtual void clearRedirect() const;
142 
143  //- Get the dictionary to initialize the codeContext
144  virtual const dictionary& codeDict() const;
145 
146  //- Get the keywords associated with source code
147  virtual const wordList& codeKeys() const;
148 
149 
150 public:
151 
152  // Static Data Members
153 
154  //- Name of the C code template to be used
155  static const word codeTemplateC;
156 
157  //- Name of the H code template to be used
158  static const word codeTemplateH;
159 
160 
161  //- Runtime type information
162  TypeName("codedFixedValue");
163 
164 
165  // Constructors
166 
167  //- Construct from patch and internal field
169  (
170  const pointPatch&,
172  );
173 
174  //- Construct from patch, internal field and dictionary
176  (
177  const pointPatch&,
179  const dictionary&
180  );
181 
182  //- Construct by mapping given codedFixedValuePointPatchField
183  // onto a new patch
185  (
187  const pointPatch&,
189  const pointPatchFieldMapper&
190  );
191 
192  //- Copy constructor
194  (
196  );
197 
198  //- Construct and return a clone
199  virtual autoPtr<pointPatchField<Type>> clone() const
200  {
202  (
204  );
205  }
206 
207  //- Copy constructor setting internal field reference
209  (
212  );
213 
214  //- Construct and return a clone setting internal field reference
216  (
218  ) const
219  {
221  (
223  (
224  *this,
225  iF
226  )
227  );
228  }
229 
230 
231  // Member Functions
232 
233  //- Get reference to the underlying patch
235 
236  //- Update the coefficients associated with the patch field
237  virtual void updateCoeffs();
238 
239  //- Evaluate the patch field, sets Updated to false
240  virtual void evaluate
241  (
243  );
244 
245  //- Write
246  virtual void write(Ostream&) const;
247 };
248 
249 
250 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
251 
252 } // End namespace Foam
253 
254 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
255 
256 #ifdef NoRepository
258 #endif
259 
260 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
261 
262 #endif
263 
264 // ************************************************************************* //
A list of keyword definitions, which are a keyword followed by any number of values (e...
Definition: dictionary.H:158
static const word codeTemplateH
Name of the H code template to be used.
codedFixedValuePointPatchField(const pointPatch &, const DimensionedField< Type, pointMesh > &)
Construct from patch and internal field.
commsTypes
Types of communications.
Definition: UPstream.H:64
A FixedValue boundary condition for pointField.
const pointPatchField< Type > & redirectPatchField() const
Get reference to the underlying patch.
Foam::pointPatchFieldMapper.
static const word codeTemplateC
Name of the C code template to be used.
virtual void evaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::blocking)
Evaluate the patch field, sets Updated to false.
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
Definition: IOdictionary.H:52
Abstract base class for point-mesh patch fields.
TypeName("codedFixedValue")
Runtime type information.
Constructs on-the-fly a new boundary condition (derived from fixedValuePointPatchField) which is then...
A class for handling words, derived from string.
Definition: word.H:59
virtual void write(Ostream &) const
Write.
Base class for function objects and boundary conditions using dynamic code.
Definition: codedBase.H:53
A table of dynamically loaded libraries.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Definition: Ostream.H:53
virtual autoPtr< pointPatchField< Type > > clone() const
Construct and return a clone.
Tools for handling dynamic code compilation.
Definition: dynamicCode.H:56
Encapsulation of dynamic code dictionaries.
Basic pointPatch represents a set of points from the mesh.
Definition: pointPatch.H:56
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
Definition: PtrList.H:52
Namespace for OpenFOAM.