/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2018 OpenFOAM Foundation
Copyright (C) 2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
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 .
Class
Foam::freestreamFvPatchField
Group
grpInletBoundaryConditions grpOutletBoundaryConditions
Description
This boundary condition provides a free-stream condition. It is a 'mixed'
condition derived from the \c inletOutlet condition, whereby the mode of
operation switches between fixed (free stream) value and zero gradient
based on the sign of the flux.
Usage
\table
Property | Description | Required | Default value
freestreamValue | freestream velocity | no |
freestreamBC | patchField providing the inlet field | no |
phi | flux field name | no | phi
\endtable
Example of the boundary condition specification using a fixed value
inlet condition:
\verbatim
{
type freestream;
freestreamValue uniform (300 0 0);
}
\endverbatim
Example of the boundary condition specification using a separate condition
to proveide the inlet condition:
\verbatim
{
type freestream;
freestreamBC
{
type atmBoundaryLayerInletVelocity;
flowDir (1 0 0);
zDir (0 0 1);
Uref 20;
Zref 20;
z0 uniform 0.1;
zGround uniform 935;
}
}
\endverbatim
See also
Foam::mixedFvPatchField
Foam::inletOutletFvPatchField
SourceFiles
freestreamFvPatchField.C
\*---------------------------------------------------------------------------*/
#ifndef Foam_freestreamFvPatchField_H
#define Foam_freestreamFvPatchField_H
#include "inletOutletFvPatchField.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class freestreamFvPatchField Declaration
\*---------------------------------------------------------------------------*/
template
class freestreamFvPatchField
:
public inletOutletFvPatchField
{
// Private Data
//- BC to supply the freestream value
tmp> freestreamBCPtr_;
public:
//- Runtime type information
TypeName("freestream");
// Constructors
//- Construct from patch and internal field
freestreamFvPatchField
(
const fvPatch&,
const DimensionedField&
);
//- Construct from patch, internal field and dictionary
freestreamFvPatchField
(
const fvPatch&,
const DimensionedField&,
const dictionary&
);
//- Construct by mapping given freestreamFvPatchField onto a new patch
freestreamFvPatchField
(
const freestreamFvPatchField&,
const fvPatch&,
const DimensionedField&,
const fvPatchFieldMapper&
);
//- Construct as copy
freestreamFvPatchField
(
const freestreamFvPatchField&
);
//- Construct as copy setting internal field reference
freestreamFvPatchField
(
const freestreamFvPatchField&,
const DimensionedField&
);
//- Return a clone
virtual tmp> clone() const
{
return fvPatchField::Clone(*this);
}
//- Clone with an internal field reference
virtual tmp> clone
(
const DimensionedField& iF
) const
{
return fvPatchField::Clone(*this, iF);
}
// Member Functions
//- Same as refValue()
const Field& freestreamValue() const { return this->refValue(); }
//- Same as refValue()
Field& freestreamValue() { return this->refValue(); }
// Mapping Functions
//- Map (and resize as needed) from self given a mapping object
virtual void autoMap(const fvPatchFieldMapper& mapper);
//- Reverse map the given fvPatchField onto this fvPatchField
virtual void rmap
(
const fvPatchField& ptf,
const labelList& addr
);
//- Update the coefficients associated with the patch field
virtual void updateCoeffs();
//- Write
virtual void write(Ostream&) const;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#ifdef NoRepository
#include "freestreamFvPatchField.C"
#endif
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //