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-------------------------------------------------------------------------------
10License
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
39Foam::freeSurfacePressureFvPatchScalarField::
40freeSurfacePressureFvPatchScalarField
41(
42 const fvPatch& p,
44)
45:
46 fixedValueFvPatchScalarField(p, iF),
47 pa_(p.size(), Zero)
48{}
49
50
51Foam::freeSurfacePressureFvPatchScalarField::
52freeSurfacePressureFvPatchScalarField
53(
54 const fvPatch& p,
56 const dictionary& dict
57)
58:
59 fixedValueFvPatchScalarField(p, iF, dict, false),
60 pa_("pa", dict, p.size())
61{
62 if (dict.found("value"))
63 {
65 (
66 scalarField("value", dict, p.size())
67 );
68 }
69 else
70 {
72 }
73}
74
75
76Foam::freeSurfacePressureFvPatchScalarField::
77freeSurfacePressureFvPatchScalarField
78(
80 const fvPatch& p,
82 const fvPatchFieldMapper& mapper
83)
84:
85 fixedValueFvPatchScalarField(ptf, p, iF, mapper),
86 pa_(ptf.pa_, mapper)
87{}
88
89
90Foam::freeSurfacePressureFvPatchScalarField::
91freeSurfacePressureFvPatchScalarField
92(
94)
95:
96 fixedValueFvPatchScalarField(ptf),
97 pa_(ptf.pa_)
98{}
99
100
101Foam::freeSurfacePressureFvPatchScalarField::
102freeSurfacePressureFvPatchScalarField
103(
106)
107:
108 fixedValueFvPatchScalarField(ptf, iF),
109 pa_(ptf.pa_)
110{}
111
112
113// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
114
116(
117 const fvPatchFieldMapper& m
118)
119{
120 fixedValueFvPatchScalarField::autoMap(m);
121 pa_.autoMap(m);
122}
123
124
126(
127 const fvPatchScalarField& ptf,
128 const labelList& addr
129)
130{
131 fixedValueFvPatchScalarField::rmap(ptf, addr);
132
134 refCast<const freeSurfacePressureFvPatchScalarField>(ptf);
135
136 pa_.rmap(tiptf.pa_, addr);
137}
138
139
141{
142 if (updated())
143 {
144 return;
145 }
146
147 const fvMesh& mesh = patch().boundaryMesh().mesh();
148
150 refCast<interfaceTrackingFvMesh>
151 (
152 const_cast<dynamicFvMesh&>
153 (
154 mesh.lookupObject<dynamicFvMesh>("fvSolution")
155 )
156 );
157
158 operator==
159 (
160 pa_ + itm.freeSurfacePressureJump()
161 );
162
163 fixedValueFvPatchScalarField::updateCoeffs();
164}
165
166
168{
170 pa_.writeEntry("pa", os);
171 writeEntry("value", os);
172}
173
174
175// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
176
177namespace Foam
178{
180 (
183 );
184}
185
186// ************************************************************************* //
Macros for easy insertion into run-time selection tables.
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:62
void size(const label n)
Older name for setAddressableSize.
Definition: UList.H:114
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
bool found(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
Search for an entry (const access) with the given keyword.
Definition: dictionaryI.H:87
Abstract base class for geometry and/or topology changing fvMesh.
Definition: dynamicFvMesh.H:81
This boundary condition provides static pressure condition for p_rgh, calculated as:
virtual void autoMap(const fvPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
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.
virtual bool write()
Write the output fields.
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:91
A FieldMapper for finite-volume patch fields.
virtual void operator=(const UList< Type > &)
Definition: fvPatchField.C:408
friend Ostream & operator(Ostream &, const fvPatchField< scalar > &)
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition: fvPatch.H:71
The interfaceTrackingFvMesh.
tmp< scalarField > freeSurfacePressureJump()
Return free surface pressure jump.
const Type & lookupObject(const word &name, const bool recursive=false) const
volScalarField & p
dynamicFvMesh & mesh
OBJstream os(runTime.globalPath()/outputName)
#define makePatchTypeField(PatchTypeField, typePatchTypeField)
Definition: fvPatchField.H:676
Namespace for OpenFOAM.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
static constexpr const zero Zero
Global zero (0)
Definition: zero.H:131
dictionary dict