Commit graph

230 commits

Author SHA1 Message Date
Henry Weller
d2a62df7c4 externalWallHeatFluxTemperature: Added optional support for radiative flux to the outside
By specifying the optional outside surface emissivity radiative heat transfer to
the ambient conditions is enabled.  The far-field is assumed to have an
emissivity of 1 but this could be made an optional input in the future if
needed.

Relaxation of the surface temperature is now provided via the optional
"relaxation" which aids stability of steady-state runs with strong radiative
coupling to the boundary.
2017-04-26 12:32:23 +01:00
Henry Weller
5173e6b88f turbulenceModels: The "<type>Coeffs" sub-dictionary is now optional 2017-04-21 18:22:46 +01:00
Henry Weller
8aac0a1808 radiation: Corrected the name of the radiative heat flux from Qr to qr
The standard naming convention for heat flux is "q" and this is used for the
conductive and convective heat fluxes is OpenFOAM.  The use of "Qr" for
radiative heat flux is an anomaly which causes confusion, particularly for
boundary conditions in which "Q" is used to denote power in Watts.  The name of
the radiative heat flux has now been corrected to "qr" and all models, boundary
conditions and tutorials updated.
2017-04-08 22:23:40 +01:00
Henry Weller
e72e7c5625 externalWallHeatFluxTemperatureFvPatchScalarField: Added "power" heat source option
by combining with and rationalizing functionality from
turbulentHeatFluxTemperatureFvPatchScalarField.
externalWallHeatFluxTemperatureFvPatchScalarField now replaces
turbulentHeatFluxTemperatureFvPatchScalarField which is no longer needed and has
been removed.

Description
    This boundary condition applies a heat flux condition to temperature
    on an external wall in one of three modes:

      - fixed power: supply Q
      - fixed heat flux: supply q
      - fixed heat transfer coefficient: supply h and Ta

    where:
    \vartable
        Q  | Power [W]
        q  | Heat flux [W/m^2]
        h  | Heat transfer coefficient [W/m^2/K]
        Ta | Ambient temperature [K]
    \endvartable

    For heat transfer coefficient mode optional thin thermal layer resistances
    can be specified through thicknessLayers and kappaLayers entries.

    The thermal conductivity \c kappa can either be retrieved from various
    possible sources, as detailed in the class temperatureCoupledBase.

Usage
    \table
    Property     | Description                 | Required | Default value
    mode         | 'power', 'flux' or 'coefficient' | yes |
    Q            | Power [W]                   | for mode 'power'     |
    q            | Heat flux [W/m^2]           | for mode 'flux'     |
    h            | Heat transfer coefficient [W/m^2/K] | for mode 'coefficent' |
    Ta           | Ambient temperature [K]     | for mode 'coefficient' |
    thicknessLayers | Layer thicknesses [m] | no |
    kappaLayers  | Layer thermal conductivities [W/m/K] | no |
    qr           | Name of the radiative field | no | none
    qrRelaxation | Relaxation factor for radiative field | no | 1
    kappaMethod  | Inherited from temperatureCoupledBase | inherited |
    kappa        | Inherited from temperatureCoupledBase | inherited |
    \endtable

    Example of the boundary condition specification:
    \verbatim
    <patchName>
    {
        type            externalWallHeatFluxTemperature;

        mode            coefficient;

        Ta              uniform 300.0;
        h               uniform 10.0;
        thicknessLayers (0.1 0.2 0.3 0.4);
        kappaLayers     (1 2 3 4);

        kappaMethod     fluidThermo;

        value           $internalField;
    }
    \endverbatim
2017-04-08 22:06:41 +01:00
Henry Weller
160ad85b25 applyBoundaryLayer: Provide non-const access to nut, k and epsilon 2017-03-21 15:07:13 +00:00
Henry Weller
76213ac301 turbulenceModels::RAS: Corrected sign of "C3" dilatation term
Set default value of C3 to 0
Set C3 to -0.33 in the engineFoam/kivaTest tutorial.

Resolves bug-report https://bugs.openfoam.org/view.php?id=2496
2017-03-13 18:01:39 +00:00
Henry Weller
1e6c9a0a54 Updated UPstream::commsTypes to use the C++11 enum class 2017-03-10 19:54:55 +00:00
Henry Weller
0573d5771b turbulenceModels::LES::dynamicLagrangian: Converted advection to compressible convection form
Formally this is equivalent to the previous formulation but more convenient to
use given that for compressible flow the mass flux rather than the volume flux
is available.
2017-03-10 11:07:41 +00:00
Henry Weller
a600a2c91a LES::dynamicLagrangian: Corrected access to the volumetric flux for compressible flow
Resolves bug-report https://bugs.openfoam.org/view.php?id=2489
2017-03-09 09:37:59 +00:00
Henry Weller
655fc78748 rhoSimpleFoam: added support for compressible liquid flows
rhoSimpleFoam now instantiates the lower-level fluidThermo which instantiates
either a psiThermo or rhoThermo according to the 'type' specification in
thermophysicalProperties, e.g.

thermoType
{
    type            hePsiThermo;
    mixture         pureMixture;
    transport       sutherland;
    thermo          janaf;
    equationOfState perfectGas;
    specie          specie;
    energy          sensibleInternalEnergy;
}

instantiates a psiThermo for a perfect gas with JANAF thermodynamics, whereas

thermoType
{
    type            heRhoThermo;
    mixture         pureMixture;
    properties      liquid;
    energy          sensibleInternalEnergy;
}

mixture
{
    H2O;
}

instantiates a rhoThermo for water, see new tutorial
compressible/rhoSimpleFoam/squareBendLiq.

In order to support complex equations of state the pressure can no longer be
unlimited and rhoSimpleFoam now limits the pressure rather than the density to
handle start-up more robustly.

For backward compatibility 'rhoMin' and 'rhoMax' can still be used in the SIMPLE
sub-dictionary of fvSolution which are converted into 'pMax' and 'pMin' but it
is better to set either 'pMax' and 'pMin' directly or use the more convenient
'pMinFactor' and 'pMinFactor' from which 'pMax' and 'pMin' are calculated using
the fixed boundary pressure or reference pressure e.g.

SIMPLE
{
    nNonOrthogonalCorrectors 0;

    pMinFactor      0.1;
    pMaxFactor      1.5;

    transonic       yes;
    consistent      yes;

    residualControl
    {
        p               1e-3;
        U               1e-4;
        e               1e-3;
        "(k|epsilon|omega)" 1e-3;
    }
}
2017-02-24 11:18:01 +00:00
Henry Weller
abc50e214c thermophysicalModels: Changed specie thermodynamics from mole to mass basis
The fundamental properties provided by the specie class hierarchy were
mole-based, i.e. provide the properties per mole whereas the fundamental
properties provided by the liquidProperties and solidProperties classes are
mass-based, i.e. per unit mass.  This inconsistency made it impossible to
instantiate the thermodynamics packages (rhoThermo, psiThermo) used by the FV
transport solvers on liquidProperties.  In order to combine VoF with film and/or
Lagrangian models it is essential that the physical propertied of the three
representations of the liquid are consistent which means that it is necessary to
instantiate the thermodynamics packages on liquidProperties.  This requires
either liquidProperties to be rewritten mole-based or the specie classes to be
rewritten mass-based.  Given that most of OpenFOAM solvers operate
mass-based (solve for mass-fractions and provide mass-fractions to sub-models it
is more consistent and efficient if the low-level thermodynamics is also
mass-based.

This commit includes all of the changes necessary for all of the thermodynamics
in OpenFOAM to operate mass-based and supports the instantiation of
thermodynamics packages on liquidProperties.

Note that most users, developers and contributors to OpenFOAM will not notice
any difference in the operation of the code except that the confusing

    nMoles     1;

entries in the thermophysicalProperties files are no longer needed or used and
have been removed in this commet.  The only substantial change to the internals
is that species thermodynamics are now "mixed" with mass rather than mole
fractions.  This is more convenient except for defining reaction equilibrium
thermodynamics for which the molar rather than mass composition is usually know.
The consequence of this can be seen in the adiabaticFlameT, equilibriumCO and
equilibriumFlameT utilities in which the species thermodynamics are
pre-multiplied by their molecular mass to effectively convert them to mole-basis
to simplify the definition of the reaction equilibrium thermodynamics, e.g. in
equilibriumCO

    // Reactants (mole-based)
    thermo FUEL(thermoData.subDict(fuelName)); FUEL *= FUEL.W();

    // Oxidant (mole-based)
    thermo O2(thermoData.subDict("O2")); O2 *= O2.W();
    thermo N2(thermoData.subDict("N2")); N2 *= N2.W();

    // Intermediates (mole-based)
    thermo H2(thermoData.subDict("H2")); H2 *= H2.W();

    // Products (mole-based)
    thermo CO2(thermoData.subDict("CO2")); CO2 *= CO2.W();
    thermo H2O(thermoData.subDict("H2O")); H2O *= H2O.W();
    thermo CO(thermoData.subDict("CO")); CO *= CO.W();

    // Product dissociation reactions

    thermo CO2BreakUp
    (
        CO2 == CO + 0.5*O2
    );

    thermo H2OBreakUp
    (
        H2O == H2 + 0.5*O2
    );

Please report any problems with this substantial but necessary rewrite of the
thermodynamic at https://bugs.openfoam.org

Henry G. Weller
CFD Direct Ltd.
2017-02-17 11:22:14 +00:00
Henry Weller
3b671f5681 kOmegaSSTSato: removed debug message 2017-02-03 11:37:56 +00:00
Henry Weller
c1031e9678 kOmegaSSTBase: make correctNut(S2, F2) virtual
kOmegaSSTSato: Change correctNut() to correctNut(S2, F2)

Resolves bug-report https://bugs.openfoam.org/view.php?id=2450
2017-02-03 10:52:35 +00:00
Henry Weller
78f6aebb99 realizableKE: Removed unused Cmu coefficient
Patch contributed by Bruno Santos
Resolves bug-report https://bugs.openfoam.org/view.php?id=2431
2017-01-13 14:08:41 +00:00
Henry Weller
4a45e4f519 thermalBaffle: ensure mappedPatchBase is updated following mesh topology changes
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2323
2016-12-05 08:44:43 +00:00
Henry Weller
ea67173330 Updated member type comments
Resolves bug-report http://bugs.openfoam.org/view.php?id=2356
2016-11-28 21:23:00 +00:00
Henry Weller
c696e71fce TurbulenceModels::ReynoldsStress: Added support for incompressible VoF solvers
and other incompressible mixture-based multiphase solvers.
2016-11-14 17:59:07 +00:00
Henry Weller
6f4908ed00 TurbulenceModels::ReynoldsStress: remove the spherical part of the wall-function Reynolds stress
The spherical part of the Reynolds stress is included in the pressure so
that the wall boundary condition for the pressure is zeroGradient.

Resolves bug-report http://bugs.openfoam.org/view.php?id=2325
2016-11-14 15:03:08 +00:00
Henry Weller
48e3fb7805 Allwmake: Remove 'set -x' which generates a lot of noise
'set -x' should be used for debugging.

Added command printing into wmake and Allwmake as a replacement for
'set -x' to log current target.
2016-11-13 18:08:22 +00:00
Henry Weller
c3fdc191c2 kOmegaSSTBase: Corrected read() to re-read the base-class settings
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2318
2016-11-05 23:25:58 +00:00
Henry Weller
667dc10af6 SpalartAllmarasDES: Recalculate fv1 for the update of nut
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2292
2016-10-20 09:08:48 +01:00
Henry Weller
164540eb3d reactingTwoPhaseEulerFoam::IATE: Added wallBoiling sub-model
to handle the size of bubbles created by boiling.  To be used in
conjunction with the alphatWallBoilingWallFunction boundary condition.

The IATE variant of the wallBoiling tutorial case is provided to
demonstrate the functionality:

tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoilingIATE
2016-10-06 12:40:58 +01:00
Henry Weller
4603a8b253 fvPatchFields: Constructors from dictionary now call the corresponding constructor of the fvPatchField base-class
to ensure 'patchType' is set as specified.

Required substantial change to the organization of the reading of the
'value' entry requiring careful testing and there may be some residual
issues remaining.  Please report any problems with the reading and
initialization of patch fields.

Resolves bug-report http://bugs.openfoam.org/view.php?id=2266
2016-09-25 09:11:53 +01:00
Henry Weller
2fd4b6bce4 turbulentTransportModels: Add new Maxwell model 2016-09-20 21:11:41 +01:00
Chris Greenshields
3264ba7ad5 Maxwell model for viscoelasticity using the upper-convected time
derivative of the stress tensor.  See
http://en.wikipedia.org/wiki/Upper-convected_Maxwell_model

The model includes an additional viscosity (nu) from the transport
model from which it is instantiated, which makes it equivalent to the
Oldroyd-B model for the case of an incompressible transport model.
See https://en.wikipedia.org/wiki/Oldroyd-B_model
2016-09-20 18:38:15 +01:00
Henry Weller
855f424635 TurbulenceModels: Created a general base-class and selection mechanism for laminar stress models
Renamed the original 'laminar' model to 'Stokes' to indicate it is a
linear stress model supporting both Newtonian and non-Newtonian
viscosity.

This general framework will support linear, non-linear, visco-elastic
etc. laminar transport models.

For backward compatibility the 'Stokes' laminar stress model can be
selected either the original 'laminar' 'simulationType'
specification in turbulenceProperties:

    simulationType laminar;

or using the new more general 'laminarModel' specification:

    simulationType laminar;

    laminar
    {
        laminarModel        Stokes;
    }

which allows other laminar stress models to be selected.
2016-09-20 15:05:43 +01:00
Henry Weller
b74d95b2a9 Corrected documentation in classes derived from temperatureCoupleBase
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2207
2016-08-22 14:31:40 +01:00
Henry Weller
7a674dbc07 epsilonWallFunction, omegaWallFunction: Removed unused variabl 2016-08-18 08:23:54 +01:00
Henry Weller
5c11aa1007 kOmegaSSTLM: Corrected coefficient in Fsublayer 2016-08-09 13:54:10 +01:00
Henry Weller
7656c076c8 C++11: Replaced the C NULL with the safer C++11 nullptr
Requires gcc version 4.7 or higher
2016-08-05 17:19:38 +01:00
Henry Weller
47c6b9e12e epsilonWallFunction, omegaWallFunction: Set generation to zero in laminar sub-layer
Improves stability for complex flows
2016-08-04 22:25:27 +01:00
Henry Weller
f260780b73 omegaWallFunction: Improved low-Reynolds number behavior and consistency with the epsilonWallFunction
Changed default mode of operation to use standard y+ based switching
rather than the previous ad hoc blending and added consistent handling
of the near-wall generation term.

This boundary condition provides a wall constraint on turbulnce specific
dissipation, omega for both low and high Reynolds number turbulence models.

The near-wall omega may be either blended between the viscous region and
logarithmic region values using:

    \f[
        \omega = sqrt(\omega_{vis}^2 + \omega_{log}^2)
    \f]

where

\vartable
    \omega_{vis} | omega in viscous region
    \omega_{log} | omega in logarithmic region
\endvartable

see eq.(15) of:
\verbatim
    Menter, F., Esch, T.
    "Elements of Industrial Heat Transfer Prediction"
    16th Brazilian Congress of Mechanical Engineering (COBEM),
    Nov. 2001
\endverbatim

or switched between these values based on the laminar-to-turbulent y+ value
derived from kappa and E.  Recent tests have shown that the standard
switching method provides more accurate results for 10 < y+ < 30 when used
with high Reynolds number wall-functions and both methods provide accurate
results when used with continuous wall-functions.  Based on this the
standard switching method is used by default.
2016-08-04 10:59:23 +01:00
Henry Weller
ffa363b328 epsilonWallFunction: Updated to work with both low- and high-Reynolds number turbulence models
This boundary condition provides a turbulence dissipation wall constraint
for low- and high-Reynolds number turbulence models.

The condition can be applied to wall boundaries for which it
- calculates \c epsilon and \c G
- specifies the near-wall epsilon value

where

\vartable
    epsilon | turblence dissipation field
    G       | turblence generation field
\endvartable

The model switches between laminar and turbulent functions based on the
laminar-to-turbulent y+ value derived from kappa and E.

Recent tests have shown that this formulation is more accurate than
the standard high-Reynolds number form for 10 < y+ < 30 with both
standard and continuous wall-functions.

Replaces epsilonLowReWallFunction and should be used for all
low-Reynolds number models for which the epsilonLowReWallFunction BC was
recommended.
2016-08-04 10:52:12 +01:00
Henry Weller
1405a31064 TurbulenceModels::derivedFvPatchFields: standardized the cell index of the 'faceCell' 2016-08-04 10:51:09 +01:00
Henry Weller
028617c30c TurbulenceModels: Reorganized support macros to simplify the creation of additional turbulence model libraries 2016-07-29 15:59:09 +01:00
Henry Weller
4ad0f529a0 TurbulenceModels::kOmegaSSTLM: New correlation-based turbulent transition model
Description
    Langtry-Menter 4-equation transitional SST model
    based on the k-omega-SST RAS model.

    References:
        Langtry, R. B., & Menter, F. R. (2009).
        Correlation-based transition modeling for unstructured parallelized
        computational fluid dynamics codes.
        AIAA journal, 47(12), 2894-2906.

        Menter, F. R., Langtry, R., & Volker, S. (2006).
        Transition modelling for general purpose CFD codes.
        Flow, turbulence and combustion, 77(1-4), 277-303.

        Langtry, R. B. (2006).
        A correlation-based transition model using local variables for
        unstructured parallelized CFD codes.
        Phd. Thesis, Universität Stuttgart.

Implemented by Henry G. Weller, CFD Direct in collaboration with Florian
Schwertfirm, Kreuzinger und Manhart Turbulenz GmbH.
2016-07-29 10:45:49 +01:00
Henry Weller
2105fa6e91 kOmegaSSTSAS: Updated header 2016-07-28 13:50:58 +01:00
Henry Weller
02dd85167e TurbulenceModels::kOmegaSST.*: Updated source-terms and associated functions to use volScalarField::Internal
This is more efficient, avoids divide-by-0 when evaluating unnecessary
boundary values and avoids unnecessary communications when running in parallel.
2016-07-28 13:48:38 +01:00
Henry Weller
2cb97ec2ef wmake/Allwmake: Completed support for targetType 'objects'
Patch contributed by Mattijs Janssens
2016-06-24 15:25:11 +01:00
Henry Weller
9f67acdc53 Updated header documentation processed by Doxygen 2016-06-19 21:23:54 +01:00
Henry Weller
8a5304edf6 Doxygen documentation: Standardized the 'See also' heading 2016-06-17 17:31:34 +01:00
Henry Weller
2ca0a6f362 Doxygen documentation: Use the standard 'Usage' rather than the '\heading....' 2016-06-17 17:22:24 +01:00
Henry Weller
19ef39741b Simplify and correct Doxygen lists using '-' rather than '\li \c' 2016-06-16 20:10:39 +01:00
Henry Weller
39fd82ea84 fvPatchField, cyclicACMI: Renamed weighted updateCoeffs
updateCoeffs(const scalarField&) -> updateWeightedCoeffs(const scalarField&)

to avoid confusion with other specialized forms of updateCoeffs.

Patch contributed by Mattijs Janssens
2016-06-15 09:06:16 +01:00
Henry Weller
f4cbde2d12 kOmegaSSTDES: New DES model based on the k-omega SST RAS model
Description
    Implementation of the k-omega-SST-DES turbulence model for
    incompressible and compressible flows.

    DES model described in:
    \verbatim
        Menter, F. R., Kuntz, M., and Langtry, R. (2003).
        Ten Years of Industrial Experience with the SST Turbulence Model.
        Turbulence, Heat and Mass Transfer 4, ed: K. Hanjalic, Y. Nagano,
        & M. Tummers, Begell House, Inc., 625 - 632.
    \endverbatim

    Optional support for zonal filtering based on F1 or F2 is provided as
    described in the paper.

    For further details of the implementation of the base k-omega-SST model
    see Foam::kOmegaSST.

    The DES coefficient 'CDES' defaults to 0.61 but may be changed as
    necessary.

    The zonal filter filter defaults to '2' which uses "(1 - F2)" as
    suggested in the paper but '0' (no filtering) and '1' which uses
    "(1 - F1)" are also supported.
2016-06-06 08:56:54 +01:00
Henry Weller
76a91bc81a Minor reformatting 2016-06-02 15:14:01 +01:00
Henry Weller
2f1bc368e5 LESfilters: Ensure the coupled BCs of the field are updated before filtering
Resolves bug-report http://bugs.openfoam.org/view.php?id=2108
2016-06-02 12:14:51 +01:00
Henry Weller
ddfbaa7fa4 Updated header 2016-05-21 20:27:29 +01:00
Henry Weller
96f4d7d66f temperatureCoupledBase: Rationalized the selection of the method for obtaining the thermal conductivity
kappa -> kappaMethod
kappaName -> kappa
2016-05-21 20:26:23 +01:00
Henry Weller
4500971827 Further standardization of loop index naming: pointI -> pointi, patchI -> patchi 2016-05-18 21:20:42 +01:00