Applies sources on turbulent kinetic energy (i.e. k
) and either turbulent kinetic energy dissipation rate (i.e. epsilon
) or specific dissipation rate (i.e. omega
) to incorporate effects of buoyancy on turbulence in incompressible and compressible flows.
More...
Public Member Functions | |
TypeName ("buoyancyTurbSource") | |
Runtime type information. More... | |
buoyancyTurbSource (const word &sourceName, const word &modelType, const dictionary &dict, const fvMesh &mesh) | |
Construct from explicit source name and mesh. More... | |
buoyancyTurbSource (const buoyancyTurbSource &)=delete | |
No copy construct. More... | |
void | operator= (const buoyancyTurbSource &)=delete |
No copy assignment. More... | |
virtual | ~buoyancyTurbSource ()=default |
Destructor. More... | |
virtual void | addSup (fvMatrix< scalar > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &rho, fvMatrix< scalar > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< scalar > &eqn, const label fieldi) |
virtual bool | read (const dictionary &dict) |
Read source dictionary - no-op. More... | |
Public Member Functions inherited from cellSetOption | |
TypeName ("cellSetOption") | |
Runtime type information. More... | |
cellSetOption (const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh) | |
Construct from components. More... | |
virtual | ~cellSetOption ()=default |
Destructor. More... | |
scalar | timeStart () const noexcept |
Return const access to the time start. More... | |
scalar | duration () const noexcept |
Return const access to the duration. More... | |
bool | inTimeLimits (const scalar timeValue) const |
True if within time limits. More... | |
selectionModeType | selectionMode () const noexcept |
Return the cell selection mode. More... | |
bool | useSubMesh () const noexcept |
True if sub-selection should be used. More... | |
const wordRe & | zoneName () const noexcept |
scalar | V () const noexcept |
Return const access to the total cell volume. More... | |
const labelList & | cells () const noexcept |
Return const access to the cell selection. More... | |
scalar | timeStart (scalar val) noexcept |
Adjust the time start, return the old value. More... | |
scalar | duration (scalar val) noexcept |
Adjust the duration, return the old value. More... | |
virtual bool | isActive () |
Is the source active? More... | |
virtual bool | read (const dictionary &dict) |
Read source dictionary. More... | |
const word & | cellSetName () const noexcept |
Public Member Functions inherited from option | |
TypeName ("option") | |
Runtime type information. More... | |
declareRunTimeSelectionTable (autoPtr, option, dictionary,(const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh),(name, modelType, dict, mesh)) | |
option (const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh) | |
Construct from components. More... | |
autoPtr< option > | clone () const |
Return clone. More... | |
virtual | ~option ()=default |
Destructor. More... | |
const word & | name () const noexcept |
Return const access to the source name. More... | |
const fvMesh & | mesh () const noexcept |
Return const access to the mesh database. More... | |
const dictionary & | coeffs () const noexcept |
Return dictionary. More... | |
bool | active () const noexcept |
True if source is active. More... | |
void | setApplied (const label fieldi) |
Set the applied flag to true for field index fieldi. More... | |
bool | active (const bool on) noexcept |
Change source active flag, return previous value. More... | |
virtual bool | isActive () |
Is the source active? More... | |
virtual label | applyToField (const word &fieldName) const |
Return index of field name if found in fieldNames list. More... | |
virtual void | checkApplied () const |
Check that the source has been applied. More... | |
virtual void | addSup (fvMatrix< scalar > &eqn, const label fieldi) |
virtual void | addSup (fvMatrix< vector > &eqn, const label fieldi) |
virtual void | addSup (fvMatrix< symmTensor > &eqn, const label fieldi) |
virtual void | addSup (fvMatrix< sphericalTensor > &eqn, const label fieldi) |
virtual void | addSup (fvMatrix< tensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &rho, fvMatrix< scalar > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &rho, fvMatrix< vector > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &rho, fvMatrix< symmTensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &rho, fvMatrix< sphericalTensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &rho, fvMatrix< tensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< scalar > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< vector > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< symmTensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< sphericalTensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< tensor > &eqn, const label fieldi) |
virtual void | constrain (fvMatrix< scalar > &eqn, const label fieldi) |
virtual void | constrain (fvMatrix< vector > &eqn, const label fieldi) |
virtual void | constrain (fvMatrix< sphericalTensor > &eqn, const label fieldi) |
virtual void | constrain (fvMatrix< symmTensor > &eqn, const label fieldi) |
virtual void | constrain (fvMatrix< tensor > &eqn, const label fieldi) |
virtual void | correct (volScalarField &field) |
virtual void | correct (volVectorField &field) |
virtual void | correct (volSphericalTensorField &field) |
virtual void | correct (volSymmTensorField &field) |
virtual void | correct (volTensorField &field) |
virtual void | postProcessSens (scalarField &sensField, const word &fieldName=word::null, const word &designVariablesName=word::null) |
virtual void | postProcessSens (vectorField &sensField, const word &fieldName=word::null, const word &designVariablesName=word::null) |
virtual void | postProcessSens (tensorField &sensField, const word &fieldName=word::null, const word &designVariablesName=word::null) |
virtual void | writeHeader (Ostream &) const |
Write the source header information. More... | |
virtual void | writeFooter (Ostream &) const |
Write the source footer information. More... | |
virtual void | writeData (Ostream &) const |
Write the source properties. More... | |
virtual bool | read (const dictionary &dict) |
Read source dictionary. More... | |
Additional Inherited Members | |
Public Types inherited from cellSetOption | |
enum | selectionModeType { smAll , smCellSet , smCellZone , smPoints , smGeometric } |
Enumeration for selection mode types. More... | |
Static Public Member Functions inherited from option | |
static autoPtr< option > | New (const word &name, const dictionary &dict, const fvMesh &mesh) |
Return a reference to the selected fvOption model. More... | |
Public Attributes inherited from option | |
bool | log |
Switch write log to Info. More... | |
Static Public Attributes inherited from cellSetOption | |
static const Enum< selectionModeType > | selectionModeTypeNames_ |
List of selection mode type names. More... | |
Protected Member Functions inherited from cellSetOption | |
void | setSelection (const dictionary &dict) |
Set cell selection name or points selection from dictionary input. More... | |
void | setCellSelection () |
Set the cell selection based on user input selection mode. More... | |
void | setVol () |
Recalculate the volume. More... | |
Protected Member Functions inherited from option | |
void | resetApplied () |
Resize/reset applied flag list for all fieldNames_ entries. More... | |
Protected Attributes inherited from cellSetOption | |
scalar | timeStart_ |
Start time of fvOption. More... | |
scalar | duration_ |
Duration of fvOption execution starting from timeStart. More... | |
selectionModeType | selectionMode_ |
Cell selection mode. More... | |
wordRe | zoneName_ |
Name of set/zone for "cellSet" and "cellZone" selectionMode. More... | |
List< point > | points_ |
List of points for "points" selectionMode. More... | |
dictionary | geometricSelection_ |
Dictionary entries for "geometric" (topoSetCellSource) selection. More... | |
labelList | cells_ |
Set of cells to apply source to. More... | |
scalar | V_ |
Sum of cell volumes. More... | |
Protected Attributes inherited from option | |
const word | name_ |
Source name. More... | |
const word | modelType_ |
Model type. More... | |
const fvMesh & | mesh_ |
Reference to the mesh database. More... | |
dictionary | dict_ |
Top level source dictionary. More... | |
dictionary | coeffs_ |
Dictionary containing source coefficients. More... | |
wordList | fieldNames_ |
Field names to apply source to - populated by derived models. More... | |
List< bool > | applied_ |
Applied flag list - corresponds to each fieldNames_ entry. More... | |
bool | active_ |
Source active flag. More... | |
Applies sources on turbulent kinetic energy (i.e. k
) and either turbulent kinetic energy dissipation rate (i.e. epsilon
) or specific dissipation rate (i.e. omega
) to incorporate effects of buoyancy on turbulence in incompressible and compressible flows.
For incompressible cases:
Sources applied to:
k | Turbulent kinetic energy [m2/s2]
Sources applied to either of the below, if exist:
epsilon | Turbulent kinetic energy dissipation rate [m2/s3] omega | Specific dissipation rate [1/s]
Required fields:
k | Turbulent kinetic energy [m2/s2] omega | Specific dissipation rate [1/s] alphat | Kinematic turbulent thermal conductivity [m2/s] T | Temperature [K]
For compressible cases:
Sources applied to:
k | Turbulent kinetic energy [m2/s2]
Required fields:
k | Turbulent kinetic energy [m2/s2] rho | Fluid density [kg/m3]
References:
Buoyancy modifier for incompressible flow cases (tag:BMA): Barakos, G., Mitsoulis, E., & Assimacopoulos, D. O. (1994). Natural convection flow in a square cavity revisited: laminar and turbulent models with wall functions. Int. J. for Numerical Methods in Fluids, 18(7), 695-719. DOI:10.1002/fld.1650180705 Buoyancy modifier for compressible flow cases (tag:DTR): Devolder, B., Troch, P., & Rauwoens, P. (2018). Performance of a buoyancy-modified k-ω and k-ω SST turbulence model for simulating wave breaking under regular waves using OpenFOAM. Coastal Engineering, 138, 49-65. DOI:10.1016/j.coastaleng.2018.04.011
constant/fvOptions
: buoyancyTurbSource1 { // Mandatory entries (unmodifiable) type buoyancyTurbSource; // Optional entries (unmodifiable) beta 3.3e-03; rho rho; alphat alphat; T T; // Mandatory/Optional (inherited) entries ... }
where the entries mean:
Property | Description | Type | Reqd | Dflt |
---|---|---|---|---|
type | Type name: buoyancyTurbSource | word | yes | - |
beta | Thermal expansion coefficient for incompressible cases | scalar | no | 3.3e-03 |
rho | Name of operand density field | word | no | rho |
alphat | Name of operand kinematic turbulent thermal conductivity field | word | no | alphat |
T | Name of operand temperature field | word | no | T |
The inherited entries are elaborated in:
"Eq. 21 of my publication is the buoyancy source term. This term appears when the transport equation for the TKE is fundamentally derived from the Favre-averaged (density weighted) low Mach number equations, as reported in: Van Maele, K., & Merci, B. (2006). Application of two buoyancy-modified k–ε turbulence models to different types of buoyant plumes. Fire Safety Journal, 41(2), 122-138. DOI:10.1016/j.firesaf.2005.11.003 Van Maele, K., & Merci, B. (2006). Importance of buoyancy and chemistry modelling in steady RANS simulations of well-ventilated tunnel fires. Turkish Jour. of Engineering and Environmental Sciences, 30(3), 145-155. Therefore, this term is generally applicable for applications where density gradients exist such as compressible heat transfer but also wave modelling due to the VoF method."
"Due to VoF, the interface between water and air is not a jump but it is rather smooth. This means that there is a finite density gradient and therefore I think that the density must be included inside the differential operators."
Definition at line 222 of file buoyancyTurbSource.H.
buoyancyTurbSource | ( | const word & | sourceName, |
const word & | modelType, | ||
const dictionary & | dict, | ||
const fvMesh & | mesh | ||
) |
Construct from explicit source name and mesh.
Definition at line 129 of file buoyancyTurbSource.C.
|
delete |
No copy construct.
|
virtualdefault |
Destructor.
TypeName | ( | "buoyancyTurbSource" | ) |
Runtime type information.
|
delete |
No copy assignment.
|
virtual |
Add explicit contribution to k and epsilon/omega equation for incompressible flow computations
Reimplemented from option.
Definition at line 216 of file buoyancyTurbSource.C.
|
virtual |
Add explicit contribution to k equation for compressible flow computations
Reimplemented from option.
Definition at line 239 of file buoyancyTurbSource.C.
References rho.
|
virtual |
Add explicit contribution to k equation for multiphase flow computations
Reimplemented from option.
Definition at line 254 of file buoyancyTurbSource.C.
|
inlinevirtual |
Read source dictionary - no-op.
Reimplemented from cellSetOption.
Definition at line 330 of file buoyancyTurbSource.H.