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  const fvMesh& mesh = patch().boundaryMesh().mesh();
141 
143  refCast<interfaceTrackingFvMesh>
144  (
145  const_cast<dynamicFvMesh&>
146  (
147  mesh.lookupObject<dynamicFvMesh>("fvSolution")
148  )
149  );
150 
151  operator==
152  (
153  pa_ + itm.freeSurfacePressureJump()
154  );
155 
156  fixedValueFvPatchScalarField::updateCoeffs();
157 }
158 
159 
161 {
163  pa_.writeEntry("pa", os);
165 }
166 
167 
168 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
169 
170 namespace Foam
171 {
173  (
176  );
177 }
178 
179 // ************************************************************************* //
dictionary dict
const Type & lookupObject(const word &name, const bool recursive=false) const
Lookup and return const reference to the object of the given Type. Fatal if not found or the wrong ty...
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:120
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:372
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: ...
dynamicFvMesh & mesh
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:55
OBJstream os(runTime.globalPath()/outputName)
freeSurfacePressureFvPatchScalarField(const fvPatch &, const DimensionedField< scalar, volMesh > &)
Construct from patch and internal field.
Abstract base class for geometry and/or topology changing fvMesh.
Definition: dynamicFvMesh.H:74
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:79
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:133