fanDirectionLagrangianVectorFieldSource.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) 2025-2026 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::fanDirectionLagrangianVectorFieldSource
26 
27 Description
28  Mix-in for source conditions that provides a random injection direction
29  between two fan angles
30 
31 SourceFiles
32  fanDirectionLagrangianVectorFieldSource.C
33 
34 \*---------------------------------------------------------------------------*/
35 
36 #ifndef fanDirectionLagrangianVectorFieldSource_H
37 #define fanDirectionLagrangianVectorFieldSource_H
38 
39 #include "LagrangianInjection.H"
40 #include "Function1.H"
42 
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 
45 namespace Foam
46 {
47 
48 class LagrangianFieldSourceBase;
49 
50 /*---------------------------------------------------------------------------*\
51  Class fanDirectionLagrangianVectorFieldSource Declaration
52 \*---------------------------------------------------------------------------*/
53 
55 {
56 private:
57 
58  // Private Data
59 
60  //- Reference to the field source
61  const LagrangianFieldSourceBase& field_;
62 
63  //- Direction normal to the plane of the fan
64  const autoPtr<Function1<vector>> normal_;
65 
66  //- Inner half-fan angle
67  const autoPtr<Function1<scalar>> thetaInner_;
68 
69  //- Outer half-fan angle
70  const autoPtr<Function1<scalar>> thetaOuter_;
71 
72  //- A random number generator
73  mutable restartableRandomGenerator rndGen_;
74 
75  //- The time index
76  mutable label timeIndex_;
77 
78 
79 public:
80 
81  // Constructors
82 
83  //- Construct from a dictionary
85  (
87  const dictionary& dict
88  );
89 
90  //- Copy constructor
92  (
95  );
96 
97 
98  //- Destructor
100 
101 
102  // Member Functions
103 
104  //- Return the value for an instantaneous injection
106  (
107  const LagrangianSubVectorField& axis
108  ) const;
109 
110  //- Write
111  void write(Ostream&) const;
112 };
113 
114 
115 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
116 
117 } // End namespace Foam
118 
119 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
120 
121 #endif
122 
123 // ************************************************************************* //
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Base class for Lagrangian source conditions.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:57
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
Definition: autoPtr.H:51
A list of keywords followed by any number of values (e.g. words and numbers) or sub-dictionaries.
Definition: dictionary.H:162
Mix-in for source conditions that provides a random injection direction between two fan angles.
fanDirectionLagrangianVectorFieldSource(const LagrangianFieldSourceBase &, const dictionary &dict)
Construct from a dictionary.
tmp< LagrangianSubVectorField > direction(const LagrangianSubVectorField &axis) const
Return the value for an instantaneous injection.
Random number generator with the additional ability to go back to an earlier stored state....
A class for managing temporary objects.
Definition: tmp.H:55
Namespace for OpenFOAM.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
dictionary dict