codedFixedValueFvPatchField.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-2021 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::codedFixedValueFvPatchField
26 
27 Description
28  Constructs on-the-fly a new boundary condition (derived from
29  fixedValueFvPatchField) which is then used to evaluate.
30 
31 Usage
32  Example:
33  \verbatim
34  <patchName>
35  {
36  type codedFixedValue;
37  value uniform 0;
38  name rampedFixedValue; // name of generated BC
39 
40  code
41  #{
42  operator==(min(10, 0.1*this->db().time().value()));
43  #};
44 
45  // codeInclude
46  //#{
47  // #include "fvCFD.H"
48  //#};
49 
50  // codeOptions
51  //#{
52  // -I$(LIB_SRC)/finiteVolume/lnInclude
53  //#};
54  }
55  \endverbatim
56 
57  A special form is if the 'code' section is not supplied. In this case
58  the code is read from a (runTimeModifiable!) dictionary system/codeDict
59  which would have a corresponding entry:
60 
61  \verbatim
62  <patchName>
63  {
64  code
65  #{
66  operator==(min(10, 0.1*this->db().time().value()));
67  #};
68  }
69  \endverbatim
70 
71 See also
72  Foam::dynamicCode
73  Foam::functionEntries::codeStream
74 
75 SourceFiles
76  codedFixedValueFvPatchField.C
77 
78 \*---------------------------------------------------------------------------*/
79 
80 #ifndef codedFixedValueFvPatchField_H
81 #define codedFixedValueFvPatchField_H
82 
84 #include "codedBase.H"
85 
86 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
87 
88 namespace Foam
89 {
90 
91 /*---------------------------------------------------------------------------*\
92  Class codedFixedValueFvPatchField Declaration
93 \*---------------------------------------------------------------------------*/
94 
95 template<class Type>
97 :
98  public fixedValueFvPatchField<Type>,
99  public codedBase
100 {
101  // Private Data
102 
103  mutable autoPtr<fvPatchField<Type>> redirectPatchFieldPtr_;
104 
105 
106  // Private Member Functions
107 
108  //- Get the keywords associated with source code
109  virtual wordList codeKeys() const;
110 
111  //- Adapt the context for the current object
112  virtual void prepare(dynamicCode&, const dynamicCodeContext&) const;
113 
114  //- Clear the ptr to the redirected object
115  virtual void clearRedirect() const;
116 
117 
118 public:
119 
120  //- Runtime type information
121  TypeName("codedFixedValue");
122 
123 
124  // Constructors
125 
126  //- Construct from patch and internal field
128  (
129  const fvPatch&,
131  );
132 
133  //- Construct from patch, internal field and dictionary
135  (
136  const fvPatch&,
138  const dictionary&
139  );
140 
141  //- Construct by mapping given codedFixedValueFvPatchField
142  // onto a new patch
144  (
146  const fvPatch&,
148  const fvPatchFieldMapper&
149  );
150 
151 
152  //- Disallow copy without setting internal field reference
154  (
156  ) = delete;
157 
158  //- Copy constructor setting internal field reference
160  (
163  );
164 
165  //- Construct and return a clone setting internal field reference
167  (
169  ) const
170  {
171  return tmp<fvPatchField<Type>>
172  (
173  new codedFixedValueFvPatchField<Type>(*this, iF)
174  );
175  }
176 
177 
178  // Member Functions
179 
180  //- Get reference to the underlying patch
181  const fvPatchField<Type>& redirectPatchField() const;
182 
183  //- Update the coefficients associated with the patch field
184  virtual void updateCoeffs();
185 
186  //- Evaluate the patch field, sets Updated to false
187  virtual void evaluate
188  (
190  );
191 
192  //- Write
193  virtual void write(Ostream&) const;
194 };
195 
196 
197 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
198 
199 } // End namespace Foam
200 
201 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
202 
203 #ifdef NoRepository
205 #endif
206 
207 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
208 
209 #endif
210 
211 // ************************************************************************* //
This boundary condition supplies a fixed value constraint, and is the base class for a number of othe...
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
TypeName("codedFixedValue")
Runtime type information.
A list of keyword definitions, which are a keyword followed by any number of values (e...
Definition: dictionary.H:156
commsTypes
Types of communications.
Definition: UPstream.H:64
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition: fvPatch.H:63
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
Definition: fvPatchField.H:66
virtual void evaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::blocking)
Evaluate the patch field, sets Updated to false.
Foam::fvPatchFieldMapper.
Base class for function objects and boundary conditions using dynamic code.
Definition: codedBase.H:53
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Definition: Ostream.H:54
Constructs on-the-fly a new boundary condition (derived from fixedValueFvPatchField) which is then us...
Tools for handling dynamic code compilation.
Definition: dynamicCode.H:56
Encapsulation of dynamic code dictionaries.
codedFixedValueFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &)
Construct from patch and internal 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
virtual void write(Ostream &) const
Write.
A class for managing temporary objects.
Definition: PtrList.H:53
tmp< fvPatchField< Type > > clone() const
Disallow clone without setting internal field reference.
Definition: fvPatchField.H:199
Namespace for OpenFOAM.
const fvPatchField< Type > & redirectPatchField() const
Get reference to the underlying patch.