In most boundary conditions, fvOptions etc. required and optional fields
to be looked-up from the objectRegistry are selected by setting the
keyword corresponding to the standard field name in the BC etc. to the
appropriate name in the objectRegistry. Usually a default is provided
with sets the field name to the keyword name, e.g. in the
totalPressureFvPatchScalarField the velocity is selected by setting the
keyword 'U' to the appropriate name which defaults to 'U':
Property | Description | Required | Default value
U | velocity field name | no | U
phi | flux field name | no | phi
.
.
.
However, in some BCs and functionObjects and many fvOptions another
convention is used in which the field name keyword is appended by 'Name'
e.g.
Property | Description | Required | Default value
pName | pressure field name | no | p
UName | velocity field name | no | U
This difference in convention is unnecessary and confusing, hinders code
and dictionary reuse and complicates code maintenance. In this commit
the appended 'Name' is removed from the field selection keywords
standardizing OpenFOAM on the first convention above.
229 lines
6.9 KiB
C++
229 lines
6.9 KiB
C++
/*---------------------------------------------------------------------------*\
|
|
========= |
|
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
\\ / O peration |
|
|
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
|
\\/ M anipulation |
|
|
-------------------------------------------------------------------------------
|
|
License
|
|
This file is part of OpenFOAM.
|
|
|
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
|
under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
Class
|
|
Foam::flowRateInletVelocityFvPatchVectorField
|
|
|
|
Group
|
|
grpInletBoundaryConditions
|
|
|
|
Description
|
|
This boundary condition provides a velocity boundary condition, derived
|
|
from the flux (volumetric or mass-based), whose direction is assumed
|
|
to be normal to the patch.
|
|
|
|
For a mass-based flux:
|
|
- the flow rate should be provided in kg/s
|
|
- if \c rho is "none" the flow rate is in m3/s
|
|
- otherwise \c rho should correspond to the name of the density field
|
|
- if the density field cannot be found in the database, the user must
|
|
specify the inlet density using the \c rhoInlet entry
|
|
|
|
For a volumetric-based flux:
|
|
- the flow rate is in m3/s
|
|
|
|
\heading Patch usage
|
|
|
|
\table
|
|
Property | Description | Required | Default value
|
|
massFlowRate | mass flow rate [kg/s] | no |
|
|
volumetricFlowRate | volumetric flow rate [m3/s]| no |
|
|
rhoInlet | inlet density | no |
|
|
extrapolateProfile | Extrapolate velocity profile | no | false
|
|
\endtable
|
|
|
|
Example of the boundary condition specification for a volumetric flow rate:
|
|
\verbatim
|
|
myPatch
|
|
{
|
|
type flowRateInletVelocity;
|
|
volumetricFlowRate 0.2;
|
|
extrapolateProfile yes;
|
|
value uniform (0 0 0);
|
|
}
|
|
\endverbatim
|
|
|
|
Example of the boundary condition specification for a mass flow rate:
|
|
\verbatim
|
|
myPatch
|
|
{
|
|
type flowRateInletVelocity;
|
|
massFlowRate 0.2;
|
|
extrapolateProfile yes;
|
|
rho rho;
|
|
rhoInlet 1.0;
|
|
value uniform (0 0 0);
|
|
}
|
|
\endverbatim
|
|
|
|
The \c flowRate entry is a \c Function1 of time, see Foam::Function1Types.
|
|
|
|
Note
|
|
- \c rhoInlet is required for the case of a mass flow rate, where the
|
|
density field is not available at start-up
|
|
- The value is positive into the domain (as an inlet)
|
|
- May not work correctly for transonic inlets
|
|
- Strange behaviour with potentialFoam since the U equation is not solved
|
|
|
|
SeeAlso
|
|
Foam::fixedValueFvPatchField
|
|
Foam::Function1Types
|
|
|
|
SourceFiles
|
|
flowRateInletVelocityFvPatchVectorField.C
|
|
|
|
\*---------------------------------------------------------------------------*/
|
|
|
|
#ifndef flowRateInletVelocityFvPatchVectorField_H
|
|
#define flowRateInletVelocityFvPatchVectorField_H
|
|
|
|
#include "fixedValueFvPatchFields.H"
|
|
#include "Function1.H"
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
namespace Foam
|
|
{
|
|
|
|
/*---------------------------------------------------------------------------*\
|
|
Class flowRateInletVelocityFvPatchVectorField Declaration
|
|
\*---------------------------------------------------------------------------*/
|
|
|
|
class flowRateInletVelocityFvPatchVectorField
|
|
:
|
|
public fixedValueFvPatchVectorField
|
|
{
|
|
// Private data
|
|
|
|
//- Inlet integral flow rate
|
|
autoPtr<Function1<scalar>> flowRate_;
|
|
|
|
//- Is volumetric?
|
|
bool volumetric_;
|
|
|
|
//- Name of the density field used to normalize the mass flux
|
|
word rhoName_;
|
|
|
|
//- Rho initialisation value (for start; if value not supplied)
|
|
scalar rhoInlet_;
|
|
|
|
//- Set true to extrapolate the velocity profile from the interior
|
|
Switch extrapolateProfile_;
|
|
|
|
|
|
// Private member functions
|
|
|
|
//- Update the patch values given the appropriate density type and value
|
|
template<class RhoType>
|
|
void updateValues(const RhoType& rho);
|
|
|
|
|
|
public:
|
|
|
|
//- Runtime type information
|
|
TypeName("flowRateInletVelocity");
|
|
|
|
|
|
// Constructors
|
|
|
|
//- Construct from patch and internal field
|
|
flowRateInletVelocityFvPatchVectorField
|
|
(
|
|
const fvPatch&,
|
|
const DimensionedField<vector, volMesh>&
|
|
);
|
|
|
|
//- Construct from patch, internal field and dictionary
|
|
flowRateInletVelocityFvPatchVectorField
|
|
(
|
|
const fvPatch&,
|
|
const DimensionedField<vector, volMesh>&,
|
|
const dictionary&
|
|
);
|
|
|
|
//- Construct by mapping given
|
|
// flowRateInletVelocityFvPatchVectorField
|
|
// onto a new patch
|
|
flowRateInletVelocityFvPatchVectorField
|
|
(
|
|
const flowRateInletVelocityFvPatchVectorField&,
|
|
const fvPatch&,
|
|
const DimensionedField<vector, volMesh>&,
|
|
const fvPatchFieldMapper&
|
|
);
|
|
|
|
//- Construct as copy
|
|
flowRateInletVelocityFvPatchVectorField
|
|
(
|
|
const flowRateInletVelocityFvPatchVectorField&
|
|
);
|
|
|
|
//- Construct and return a clone
|
|
virtual tmp<fvPatchVectorField> clone() const
|
|
{
|
|
return tmp<fvPatchVectorField>
|
|
(
|
|
new flowRateInletVelocityFvPatchVectorField(*this)
|
|
);
|
|
}
|
|
|
|
//- Construct as copy setting internal field reference
|
|
flowRateInletVelocityFvPatchVectorField
|
|
(
|
|
const flowRateInletVelocityFvPatchVectorField&,
|
|
const DimensionedField<vector, volMesh>&
|
|
);
|
|
|
|
//- Construct and return a clone setting internal field reference
|
|
virtual tmp<fvPatchVectorField> clone
|
|
(
|
|
const DimensionedField<vector, volMesh>& iF
|
|
) const
|
|
{
|
|
return tmp<fvPatchVectorField>
|
|
(
|
|
new flowRateInletVelocityFvPatchVectorField(*this, iF)
|
|
);
|
|
}
|
|
|
|
|
|
// Member functions
|
|
|
|
//- Update the coefficients associated with the patch field
|
|
virtual void updateCoeffs();
|
|
|
|
//- Write
|
|
virtual void write(Ostream&) const;
|
|
};
|
|
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
} // End namespace Foam
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
#endif
|
|
|
|
// ************************************************************************* //
|