waveAlphaFvPatchScalarField.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) 2017-2023 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::waveAlphaFvPatchScalarField
26 
27 Description
28  This boundary condition provides a waveAlpha condition. This sets the phase
29  fraction to that specified by a superposition of wave models. All the
30  wave modelling parameters are obtained from a centrally registered
31  waveSuperposition class.
32 
33 Usage
34  \table
35  Property | Description | Req'd? | Default
36  phi | Name of the flux field | no | phi
37  liquid | Is the alpha field that of the liquid? | no | true
38  \endtable
39 
40  Example of the boundary condition specification:
41  \verbatim
42  <patchName>
43  {
44  type waveAlpha;
45  libs ("libwaves.so");
46  liquid true;
47  }
48  \endverbatim
49 
50 See also
51  Foam::waveSuperposition
52 
53 SourceFiles
54  waveAlphaFvPatchScalarField.C
55 
56 \*---------------------------------------------------------------------------*/
57 
58 #ifndef waveAlphaFvPatchScalarField_H
59 #define waveAlphaFvPatchScalarField_H
60 
62 #include "waveSuperposition.H"
63 
64 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
65 
66 namespace Foam
67 {
68 
69 class fvMeshSubset;
70 
71 /*---------------------------------------------------------------------------*\
72  Class waveAlphaFvPatchScalarField Declaration
73 \*---------------------------------------------------------------------------*/
74 
75 class waveAlphaFvPatchScalarField
76 :
77  public fixedValueInletOutletFvPatchField<scalar>
78 {
79  // Private Data
80 
81  //- Is this alpha field that of the liquid under the wave?
82  const Switch liquid_;
83 
84  //- Mesh subset corresponding to the patch adjacent cells
85  mutable autoPtr<fvMeshSubset> faceCellSubset_;
86 
87  //- Time index for keeping the subset up to date
88  mutable label faceCellSubsetTimeIndex_;
89 
90 
91 public:
92 
93  //- Runtime type information
94  TypeName("waveAlpha");
95 
96 
97  // Constructors
98 
99  //- Construct from patch, internal field and dictionary
101  (
102  const fvPatch&,
104  const dictionary&
105  );
106 
107  //- Construct by mapping given fixedValueTypeFvPatchField onto a new
108  // patch
110  (
112  const fvPatch&,
114  const fvPatchFieldMapper&
115  );
116 
117  //- Disallow copy without setting internal field reference
119  (
121  ) = delete;
122 
123  //- Copy constructor setting internal field reference
125  (
128  );
129 
130  //- Construct and return a clone setting internal field reference
132  (
134  ) const
135  {
137  (
138  new waveAlphaFvPatchScalarField(*this, iF)
139  );
140  }
141 
142 
143  // Member Functions
144 
145  // Access
146 
147  //- Access the liquid flag
148  bool liquid() const
149  {
150  return liquid_;
151  }
152 
153  //- Access the face-cell subset
154  const fvMeshSubset& faceCellSubset() const;
155 
156 
157  // Evaluation functions
158 
159  //- Return the current modelled phase fraction field on the patch
160  // faces at the given time
161  tmp<scalarField> alpha(const scalar t) const;
162 
163  //- Return the current modelled phase fraction field in the
164  // neighbour cells at the given time
165  tmp<scalarField> alphan(const scalar t) const;
166 
167  //- Update the coefficients associated with the patch field
168  virtual void updateCoeffs();
169 
170 
171  //- Write
172  virtual void write(Ostream&) const;
173 };
174 
175 
176 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
177 
178 } // End namespace Foam
179 
180 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
181 
182 
183 #endif
184 
185 // ************************************************************************* //
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:57
A list of keyword definitions, which are a keyword followed by any number of values (e....
Definition: dictionary.H:160
Post-processing mesh subset tool. Given the original mesh and the list of selected cells,...
Definition: fvMeshSubset.H:74
Foam::fvPatchFieldMapper.
tmp< fvPatchField< Type > > clone() const
Disallow clone without setting internal field reference.
Definition: fvPatchField.H:203
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition: fvPatch.H:64
A class for managing temporary objects.
Definition: tmp.H:55
This boundary condition provides a waveAlpha condition. This sets the phase fraction to that specifie...
tmp< scalarField > alpha(const scalar t) const
Return the current modelled phase fraction field on the patch.
virtual void write(Ostream &) const
Write.
TypeName("waveAlpha")
Runtime type information.
bool liquid() const
Access the liquid flag.
waveAlphaFvPatchScalarField(const fvPatch &, const DimensionedField< scalar, volMesh > &, const dictionary &)
Construct from patch, internal field and dictionary.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
tmp< scalarField > alphan(const scalar t) const
Return the current modelled phase fraction field in the.
const fvMeshSubset & faceCellSubset() const
Access the face-cell subset.
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