freeSurfacePressureFvPatchScalarField.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2019 Zeljko Tukovic, FSB Zagreb.
9 -------------------------------------------------------------------------------
10 License
11  This file is part of OpenFOAM.
12 
13  OpenFOAM is free software: you can redistribute it and/or modify it
14  under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21  for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 
26 \*---------------------------------------------------------------------------*/
27 
30 #include "fvPatchFieldMapper.H"
31 #include "volFields.H"
32 #include "gravityMeshObject.H"
36 
37 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
38 
41 (
42  const fvPatch& p,
44 )
45 :
46  fixedValueFvPatchScalarField(p, iF),
47  pa_(p.size(), Zero)
48 {}
49 
50 
53 (
54  const fvPatch& p,
56  const dictionary& dict
57 )
58 :
59  fixedValueFvPatchScalarField(p, iF, dict, IOobjectOption::NO_READ),
60  pa_("pa", dict, p.size())
61 {
62  if (!this->readValueEntry(dict))
63  {
65  }
66 }
67 
68 
71 (
73  const fvPatch& p,
75  const fvPatchFieldMapper& mapper
76 )
77 :
78  fixedValueFvPatchScalarField(ptf, p, iF, mapper),
79  pa_(ptf.pa_, mapper)
80 {}
81 
82 
85 (
87 )
88 :
89  fixedValueFvPatchScalarField(ptf),
90  pa_(ptf.pa_)
91 {}
92 
93 
96 (
99 )
100 :
101  fixedValueFvPatchScalarField(ptf, iF),
102  pa_(ptf.pa_)
103 {}
104 
105 
106 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
107 
109 (
110  const fvPatchFieldMapper& m
111 )
112 {
113  fixedValueFvPatchScalarField::autoMap(m);
114  pa_.autoMap(m);
115 }
116 
117 
119 (
120  const fvPatchScalarField& ptf,
121  const labelList& addr
122 )
123 {
124  fixedValueFvPatchScalarField::rmap(ptf, addr);
125 
127  refCast<const freeSurfacePressureFvPatchScalarField>(ptf);
128 
129  pa_.rmap(tiptf.pa_, addr);
130 }
131 
132 
134 {
135  if (updated())
136  {
137  return;
138  }
139 
140  // refCast<interfaceTrackingFvMesh>
141  auto* itm =
142  const_cast<interfaceTrackingFvMesh*>
143  (
144  isA<interfaceTrackingFvMesh>(patch().boundaryMesh().mesh())
145  );
146 
147  if (!itm)
148  {
149  // FatalError
150  }
151  else
152  {
153  operator==
154  (
155  pa_ + itm->freeSurfacePressureJump()
156  );
157  }
158 
159  fixedValueFvPatchScalarField::updateCoeffs();
160 }
161 
162 
164 {
166  pa_.writeEntry("pa", os);
168 }
169 
170 
171 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
172 
173 namespace Foam
174 {
176  (
179  );
180 }
181 
182 // ************************************************************************* //
dictionary dict
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:129
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition: fvPatch.H:70
void writeValueEntry(Ostream &os) const
Write *this field as a "value" entry.
Definition: fvPatchField.H:375
virtual void write(Ostream &) const
Write.
Definition: fvPatchField.C:372
Macros for easy insertion into run-time selection tables.
virtual void autoMap(const fvPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
This boundary condition provides static pressure condition for p_rgh, calculated as: ...
A FieldMapper for finite-volume patch fields.
virtual void rmap(const fvPatchScalarField &, const labelList &)
Reverse map the given fvPatchField onto this fvPatchField.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Definition: Ostream.H:56
OBJstream os(runTime.globalPath()/outputName)
freeSurfacePressureFvPatchScalarField(const fvPatch &, const DimensionedField< scalar, volMesh > &)
Construct from patch and internal field.
virtual void operator=(const UList< Type > &)
Definition: fvPatchField.C:391
A simple container of IOobject preferences. Can also be used for general handling of read/no-read/rea...
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Definition: areaFieldsFwd.H:42
const std::string patch
OpenFOAM patch number as a std::string.
volScalarField & p
makePatchTypeField(fvPatchScalarField, atmBoundaryLayerInletEpsilonFvPatchScalarField)
Namespace for OpenFOAM.
The interfaceTrackingFvMesh.
static constexpr const zero Zero
Global zero (0)
Definition: zero.H:127