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-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::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 /*---------------------------------------------------------------------------*\
94  Class codedFixedValuePointPatchField Declaration
95 \*---------------------------------------------------------------------------*/
96 
97 template<class Type>
99 :
100  public fixedValuePointPatchField<Type>,
101  public codedBase
102 {
103  // Private Data
104 
105  mutable autoPtr<pointPatchField<Type>> redirectPatchFieldPtr_;
106 
107 
108  // Private Member Functions
109 
110  //- Get the keywords associated with source code
111  virtual wordList codeKeys() const;
112 
113  //- Adapt the context for the current object
114  virtual void prepare(dynamicCode&, const dynamicCodeContext&) const;
115 
116  //- Clear the ptr to the redirected object
117  virtual void clearRedirect() const;
118 
119 
120 public:
121 
122  //- Runtime type information
123  TypeName("codedFixedValue");
124 
125 
126  // Constructors
127 
128  //- Construct from patch and internal field
130  (
131  const pointPatch&,
133  );
134 
135  //- Construct from patch, internal field and dictionary
137  (
138  const pointPatch&,
140  const dictionary&
141  );
142 
143  //- Construct by mapping given codedFixedValuePointPatchField
144  // onto a new patch
146  (
148  const pointPatch&,
150  const pointPatchFieldMapper&
151  );
152 
153  //- Disallow copy without setting internal field reference
155  (
157  ) = delete;
158 
159  //- Copy constructor setting internal field reference
161  (
164  );
165 
166  //- Construct and return a clone setting internal field reference
168  (
170  ) const
171  {
173  (
175  (
176  *this,
177  iF
178  )
179  );
180  }
181 
182 
183  // Member Functions
184 
185  //- Get reference to the underlying patch
187 
188  //- Update the coefficients associated with the patch field
189  virtual void updateCoeffs();
190 
191  //- Evaluate the patch field, sets Updated to false
192  virtual void evaluate
193  (
195  );
196 
197  //- Write
198  virtual void write(Ostream&) const;
199 };
200 
201 
202 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
203 
204 } // End namespace Foam
205 
206 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
207 
208 #ifdef NoRepository
210 #endif
211 
212 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
213 
214 #endif
215 
216 // ************************************************************************* //
A list of keyword definitions, which are a keyword followed by any number of values (e...
Definition: dictionary.H:156
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.
virtual void evaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::blocking)
Evaluate the patch field, sets Updated to false.
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...
tmp< Field< Type > > clone() const
Clone.
Definition: Field.C:240
virtual void write(Ostream &) const
Write.
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
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.