diff --git a/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/CMakeLists.txt b/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/CMakeLists.txt
new file mode 100644
index 000000000..571a56d21
--- /dev/null
+++ b/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/CMakeLists.txt
@@ -0,0 +1,46 @@
+# --------------------------------------------------------------------------
+# ======== |
+# \ / F ield | foam-extend: Open Source CFD
+# \ / O peration | Version: 4.1
+# \ / A nd | Web: http://www.foam-extend.org
+# \/ M anipulation | For copyright notice see file Copyright
+# --------------------------------------------------------------------------
+# License
+# This file is part of foam-extend.
+#
+# foam-extend 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.
+#
+# foam-extend 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 foam-extend. If not, see .
+#
+# Description
+# CMakeLists.txt file for libraries and applications
+#
+# Author
+# Henrik Rusche, Wikki GmbH, 2017. All rights reserved
+#
+#
+# --------------------------------------------------------------------------
+
+list(APPEND SOURCES
+ buoyantWallHeatFlux.C
+)
+
+# Set minimal environment for external compilation
+if(NOT FOAM_FOUND)
+ cmake_minimum_required(VERSION 2.8)
+ find_package(FOAM REQUIRED)
+endif()
+
+add_foam_executable(buoyantWallHeatFlux
+ DEPENDS incompressibleRASModels incompressibleTransportModels incompressibleLESModels
+ SOURCES ${SOURCES}
+)
diff --git a/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/Make/files b/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/Make/files
new file mode 100644
index 000000000..12d7cd037
--- /dev/null
+++ b/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/Make/files
@@ -0,0 +1,3 @@
+buoyantWallHeatFlux.C
+
+EXE = $(FOAM_APPBIN)/buoyantWallHeatFlux
diff --git a/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/Make/options b/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/Make/options
new file mode 100644
index 000000000..a8459f127
--- /dev/null
+++ b/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/Make/options
@@ -0,0 +1,20 @@
+EXE_INC = \
+ -I$(LIB_SRC)/finiteVolume/lnInclude \
+ -I$(LIB_SRC)/turbulenceModels \
+ -I$(LIB_SRC)/turbulenceModels/LES/LESdeltas/lnInclude \
+ -I$(LIB_SRC)/turbulenceModels/LES/LESfilters/lnInclude \
+ -I$(LIB_SRC)/turbulenceModels/incompressible/RAS/lnInclude \
+ -I$(LIB_SRC)/turbulenceModels/incompressible/LES/lnInclude \
+ -I$(LIB_SRC)/transportModels \
+ -I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel
+
+EXE_LIBS = \
+ -lfiniteVolume \
+ -lmeshTools \
+ -lincompressibleTurbulenceModel \
+ -lincompressibleRASModels \
+ -lincompressibleLESModels \
+ -lincompressibleTransportModels \
+ -lLESdeltas \
+ -lLESfilters \
+ -llduSolvers
diff --git a/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/buoyantWallHeatFlux.C b/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/buoyantWallHeatFlux.C
new file mode 100644
index 000000000..8be247ee0
--- /dev/null
+++ b/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/buoyantWallHeatFlux.C
@@ -0,0 +1,116 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | foam-extend: Open Source CFD
+ \\ / O peration | Version: 4.1
+ \\ / A nd | Web: http://www.foam-extend.org
+ \\/ M anipulation | For copyright notice see file Copyright
+-------------------------------------------------------------------------------
+License
+ This file is part of foam-extend.
+
+ foam-extend 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.
+
+ foam-extend 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 foam-extend. If not, see .
+
+Application
+ buoyantWallHeatFlux
+
+Description
+ Calculates and writes the heat flux in incompressible flow with Boussinesq's
+ buoyancy assumption (e.g. buoyantBoussineqSimpleFoam) for all patches as the
+ boundary field of a volScalarField and also prints the integrated flux for
+ all wall patches.
+
+\*---------------------------------------------------------------------------*/
+
+#include "fvCFD.H"
+#include "RASModel.H"
+#include "LESModel.H"
+#include "singlePhaseTransportModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+int main(int argc, char *argv[])
+{
+ timeSelector::addOptions();
+ #include "setRootCase.H"
+ #include "createTime.H"
+ instantList timeDirs = timeSelector::select0(runTime, args);
+ #include "createMesh.H"
+
+ forAll(timeDirs, timeI)
+ {
+ runTime.setTime(timeDirs[timeI], timeI);
+ Info<< "Time = " << runTime.timeName() << endl;
+ mesh.readUpdate();
+
+ #include "createFields.H"
+
+ // Calculate effective kappa
+ const volScalarField kappaEff
+ (
+ "kappaEff",
+ turbulence->nu()/Pr + turbulence->nut()/Prt
+ );
+
+ // Calculate the heat flux
+ const surfaceScalarField heatFlux =
+ rhoRef*c*fvc::interpolate(kappaEff)*fvc::snGrad(T);
+
+ // Get the heat flux at the patch
+ const surfaceScalarField::GeometricBoundaryField& patchHeatFlux =
+ heatFlux.boundaryField();
+
+ Info<< "\nWall heat fluxes [W]" << endl;
+ forAll(patchHeatFlux, patchi)
+ {
+ if (mesh.boundary()[patchi].isWall())
+ {
+ Info<< mesh.boundary()[patchi].name()
+ << " "
+ << gSum
+ (
+ mesh.magSf().boundaryField()[patchi]
+ *patchHeatFlux[patchi]
+ )
+ << endl;
+ }
+ }
+ Info<< endl;
+
+ // Create the volScalarField which will have heat fluxes at the boundary
+ volScalarField buoyantWallHeatFlux
+ (
+ IOobject
+ (
+ "buoyantWallHeatFlux",
+ runTime.timeName(),
+ mesh
+ ),
+ mesh,
+ dimensionedScalar("buoyantWallHeatFlux", heatFlux.dimensions(), 0.0)
+ );
+
+ forAll(buoyantWallHeatFlux.boundaryField(), patchi)
+ {
+ buoyantWallHeatFlux.boundaryField()[patchi] = patchHeatFlux[patchi];
+ }
+
+ buoyantWallHeatFlux.write();
+ }
+
+ Info<< "End" << endl;
+
+ return 0;
+}
+
+// ************************************************************************* //
diff --git a/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/createFields.H b/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/createFields.H
new file mode 100644
index 000000000..aeb88fdf1
--- /dev/null
+++ b/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/createFields.H
@@ -0,0 +1,44 @@
+// Read velocity field for turbulence
+volVectorField U
+(
+ IOobject
+ (
+ "U",
+ runTime.timeName(),
+ mesh,
+ IOobject::MUST_READ,
+ IOobject::AUTO_WRITE
+ ),
+ mesh
+);
+
+// Read temperature field
+volScalarField T
+(
+ IOobject
+ (
+ "T",
+ runTime.timeName(),
+ mesh,
+ IOobject::MUST_READ,
+ IOobject::AUTO_WRITE
+ ),
+ mesh
+);
+
+// Create the flux for turbulence
+#include "createPhi.H"
+
+// Read transport properties and all necessary coefficients
+#include "readTransportProperties.H"
+
+// Create generic turbulence model (RAS/LES)
+autoPtr turbulence
+(
+ incompressible::turbulenceModel::New
+ (
+ U,
+ phi,
+ laminarTransport
+ )
+);
diff --git a/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/readTransportProperties.H b/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/readTransportProperties.H
new file mode 100644
index 000000000..4b40046a8
--- /dev/null
+++ b/applications/utilities/postProcessing/wall/buoyantWallHeatFlux/readTransportProperties.H
@@ -0,0 +1,13 @@
+ singlePhaseTransportModel laminarTransport(U, phi);
+
+ // Laminar Prandtl number
+ const dimensionedScalar Pr(laminarTransport.lookup("Pr"));
+
+ // Turbulent Prandtl number
+ const dimensionedScalar Prt(laminarTransport.lookup("Prt"));
+
+ // Reference density
+ const dimensionedScalar rhoRef(laminarTransport.lookup("rhoRef"));
+
+ // Specific heat capacity
+ const dimensionedScalar c(laminarTransport.lookup("c"));
diff --git a/src/turbulenceModels/incompressible/LES/Make/files b/src/turbulenceModels/incompressible/LES/Make/files
index ff17b596e..817f0520c 100644
--- a/src/turbulenceModels/incompressible/LES/Make/files
+++ b/src/turbulenceModels/incompressible/LES/Make/files
@@ -33,6 +33,7 @@ wallFunctions=derivedFvPatchFields/wallFunctions
derivedFvPatchFields/decayingTurbulence/decayingVorton.C
derivedFvPatchFields/decayingTurbulence/decayingTurbulenceFvPatchVectorField.C
+derivedFvPatchFields/fixedHeatFluxTemperature/fixedHeatFluxTemperatureFvPatchScalarField.C
nuSgsWallFunctions=$(wallFunctions)/nuSgsWallFunctions
$(nuSgsWallFunctions)/nuSgsWallFunction/nuSgsWallFunctionFvPatchScalarField.C
diff --git a/src/turbulenceModels/incompressible/LES/derivedFvPatchFields/fixedHeatFluxTemperature/fixedHeatFluxTemperatureFvPatchScalarField.C b/src/turbulenceModels/incompressible/LES/derivedFvPatchFields/fixedHeatFluxTemperature/fixedHeatFluxTemperatureFvPatchScalarField.C
new file mode 100644
index 000000000..afaa0a724
--- /dev/null
+++ b/src/turbulenceModels/incompressible/LES/derivedFvPatchFields/fixedHeatFluxTemperature/fixedHeatFluxTemperatureFvPatchScalarField.C
@@ -0,0 +1,329 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | foam-extend: Open Source CFD
+ \\ / O peration | Version: 4.0
+ \\ / A nd | Web: http://www.foam-extend.org
+ \\/ M anipulation | For copyright notice see file Copyright
+-------------------------------------------------------------------------------
+License
+ This file is part of foam-extend.
+
+ foam-extend 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.
+
+ foam-extend 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 foam-extend. If not, see .
+
+\*---------------------------------------------------------------------------*/
+
+#include "fixedHeatFluxTemperatureFvPatchScalarField.H"
+#include "incompressible/RAS/RASModel/RASModel.H"
+#include "incompressible/LES/LESModel/LESModel.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+fixedHeatFluxTemperatureFvPatchScalarField::
+fixedHeatFluxTemperatureFvPatchScalarField
+(
+ const fvPatch& p,
+ const DimensionedField& iF
+)
+:
+ fixedGradientFvPatchScalarField(p, iF),
+ heatFlux_(p.size(), 0.0),
+ Pr_(0.0),
+ Prt_(0.0),
+ rhoRef_(0.0),
+ c_(0.0)
+{}
+
+
+fixedHeatFluxTemperatureFvPatchScalarField::
+fixedHeatFluxTemperatureFvPatchScalarField
+(
+ const fvPatch& p,
+ const DimensionedField& iF,
+ const dictionary& dict
+)
+:
+ fixedGradientFvPatchScalarField(p, iF),
+ heatFlux_("heatFlux", dict, p.size()),
+ Pr_(0.0), // Initialized in constructor body
+ Prt_(0.0), // Initialized in constructor body
+ rhoRef_(0.0), // Initialized in constructor body
+ c_(0.0) // Initialized in constructor body
+{
+ // Read the gradient entry from the dictionary
+ if (dict.found("gradient"))
+ {
+ this->gradient() = scalarField("gradient", dict, p.size());
+ }
+
+ // Read the value entry from the dictionary
+ if (dict.found("value"))
+ {
+ fvPatchScalarField::operator=
+ (
+ scalarField("value", dict, p.size())
+ );
+ }
+ else
+ {
+ FatalIOErrorIn
+ (
+ "fixedHeatFluxTemperatureFvPatchScalarField::"
+ "fixedHeatFluxTemperatureFvPatchScalarField"
+ "("
+ "const fvPatch& p,"
+ "const DimensionedField& iF,"
+ "const dictionary& dict,"
+ "const bool valueRequired"
+ ")",
+ dict
+ ) << "Essential entry 'value' missing"
+ << exit(FatalIOError);
+ }
+
+ // Get mesh
+ const fvMesh& mesh = this->dimensionedInternalField().mesh();
+
+ // Create transportProperties dictionary
+ IOdictionary transportProperties
+ (
+ IOobject
+ (
+ "transportProperties",
+ mesh.time().constant(),
+ mesh,
+ IOobject::MUST_READ,
+ IOobject::NO_WRITE,
+ false // do not register in the database
+ )
+ );
+
+ // Read in all the necessary data as dimensioned scalars
+ const dimensionedScalar PrDim =
+ dimensionedScalar(transportProperties.lookup("Pr"));
+
+ const dimensionedScalar PrtDim =
+ dimensionedScalar(transportProperties.lookup("Prt"));
+
+ const dimensionedScalar rhoRefDim =
+ dimensionedScalar(transportProperties.lookup("rhoRef"));
+
+ const dimensionedScalar cDim =
+ dimensionedScalar(transportProperties.lookup("c"));
+
+ // Perform sanity checks for dimensions
+ if (PrDim.dimensions() != dimless)
+ {
+ FatalIOErrorIn
+ (
+ "fixedHeatFluxTemperatureFvPatchScalarField::"
+ "fixedHeatFluxTemperatureFvPatchScalarField"
+ "\n("
+ "\n const fvPatch& p,"
+ "\n const DimensionedField& iF,"
+ "\n const dictionary& dict"
+ "\n)",
+ dict
+ ) << "Wrong dimensions for Prandtl number (Pr) detected: "
+ << PrDim.dimensions()
+ << nl
+ << "They should be: " << dimless
+ << abort(FatalIOError);
+ }
+
+ if (PrtDim.dimensions() != dimless)
+ {
+ FatalIOErrorIn
+ (
+ "fixedHeatFluxTemperatureFvPatchScalarField::"
+ "fixedHeatFluxTemperatureFvPatchScalarField"
+ "\n("
+ "\n const fvPatch& p,"
+ "\n const DimensionedField& iF,"
+ "\n const dictionary& dict"
+ "\n)",
+ dict
+ ) << "Wrong dimensions for turbulent Prandtl number (Prt) detected: "
+ << PrtDim.dimensions()
+ << nl
+ << "They should be: " << dimless
+ << abort(FatalIOError);
+ }
+
+ if (rhoRefDim.dimensions() != dimDensity)
+ {
+ FatalIOErrorIn
+ (
+ "fixedHeatFluxTemperatureFvPatchScalarField::"
+ "fixedHeatFluxTemperatureFvPatchScalarField"
+ "\n("
+ "\n const fvPatch& p,"
+ "\n const DimensionedField& iF,"
+ "\n const dictionary& dict"
+ "\n)",
+ dict
+ ) << "Wrong dimensions for reference density (rhoRef) detected: "
+ << rhoRefDim.dimensions()
+ << nl
+ << "They should be: " << dimDensity
+ << abort(FatalIOError);
+ }
+
+ if (cDim.dimensions() != dimSpecificHeatCapacity)
+ {
+ FatalIOErrorIn
+ (
+ "fixedHeatFluxTemperatureFvPatchScalarField::"
+ "fixedHeatFluxTemperatureFvPatchScalarField"
+ "\n("
+ "\n const fvPatch& p,"
+ "\n const DimensionedField& iF,"
+ "\n const dictionary& dict"
+ "\n)",
+ dict
+ ) << "Wrong dimensions for specific heat capacity (c) detected: "
+ << cDim.dimensions()
+ << nl
+ << "They should be: " << dimSpecificHeatCapacity
+ << abort(FatalIOError);
+ }
+
+ // Store values in data members
+ Pr_ = PrDim.value();
+ Prt_ = PrtDim.value();
+ rhoRef_ = rhoRefDim.value();
+ c_ = cDim.value();
+}
+
+
+fixedHeatFluxTemperatureFvPatchScalarField::
+fixedHeatFluxTemperatureFvPatchScalarField
+(
+ const fixedHeatFluxTemperatureFvPatchScalarField& ptf,
+ const fvPatch& p,
+ const DimensionedField& iF,
+ const fvPatchFieldMapper& mapper
+)
+:
+ fixedGradientFvPatchScalarField(ptf, p, iF, mapper),
+ heatFlux_(ptf.heatFlux_),
+ Pr_(ptf.Pr_),
+ Prt_(ptf.Prt_),
+ rhoRef_(ptf.rhoRef_),
+ c_(ptf.c_)
+{}
+
+
+fixedHeatFluxTemperatureFvPatchScalarField::
+fixedHeatFluxTemperatureFvPatchScalarField
+(
+ const fixedHeatFluxTemperatureFvPatchScalarField& ptf
+)
+:
+ fixedGradientFvPatchScalarField(ptf),
+ heatFlux_(ptf.heatFlux_),
+ Pr_(ptf.Pr_),
+ Prt_(ptf.Prt_),
+ rhoRef_(ptf.rhoRef_),
+ c_(ptf.c_)
+{}
+
+
+fixedHeatFluxTemperatureFvPatchScalarField::
+fixedHeatFluxTemperatureFvPatchScalarField
+(
+ const fixedHeatFluxTemperatureFvPatchScalarField& ptf,
+ const DimensionedField& iF
+)
+:
+ fixedGradientFvPatchScalarField(ptf, iF),
+ heatFlux_(ptf.heatFlux_),
+ Pr_(ptf.Pr_),
+ Prt_(ptf.Prt_),
+ rhoRef_(ptf.rhoRef_),
+ c_(ptf.c_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+void fixedHeatFluxTemperatureFvPatchScalarField::updateCoeffs()
+{
+ if (this->updated())
+ {
+ return;
+ }
+
+ // Calculate the gradient depending on the turbulence model
+ const fvMesh& mesh = this->dimensionedInternalField().mesh();
+
+ // Get this patch index
+ const label patchID = this->patch().index();
+
+ if (mesh.foundObject("turbulenceModel"))
+ {
+ const incompressible::turbulenceModel& turb =
+ mesh.lookupObject
+ <
+ incompressible::turbulenceModel
+ >("turbulenceModel");
+
+ // Calculate effective kappa at the patch
+ const scalarField kappaEffp =
+ turb.nu().boundaryField()[patchID]/Pr_
+ + turb.nut()().boundaryField()[patchID]/Prt_;
+
+ // Calculate gradient at the boundary
+ this->gradient() = heatFlux_/(kappaEffp*rhoRef_*c_);
+ }
+ else
+ {
+ FatalErrorIn
+ (
+ "fixedHeatFluxTemperatureFvPatchScalarField::updateCoeffs()"
+ ) << " No valid model for effective kappa calculations."
+ << abort(FatalError);
+ }
+
+ fixedGradientFvPatchScalarField::updateCoeffs();
+}
+
+
+void fixedHeatFluxTemperatureFvPatchScalarField::write(Ostream& os) const
+{
+ fixedGradientFvPatchScalarField::write(os);
+ heatFlux_.writeEntry("heatFlux", os);
+ this->writeEntry("value", os);
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+makePatchTypeField
+(
+ fvPatchScalarField,
+ fixedHeatFluxTemperatureFvPatchScalarField
+);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/turbulenceModels/incompressible/LES/derivedFvPatchFields/fixedHeatFluxTemperature/fixedHeatFluxTemperatureFvPatchScalarField.H b/src/turbulenceModels/incompressible/LES/derivedFvPatchFields/fixedHeatFluxTemperature/fixedHeatFluxTemperatureFvPatchScalarField.H
new file mode 100644
index 000000000..fb3b0c70e
--- /dev/null
+++ b/src/turbulenceModels/incompressible/LES/derivedFvPatchFields/fixedHeatFluxTemperature/fixedHeatFluxTemperatureFvPatchScalarField.H
@@ -0,0 +1,172 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | foam-extend: Open Source CFD
+ \\ / O peration | Version: 4.0
+ \\ / A nd | Web: http://www.foam-extend.org
+ \\/ M anipulation | For copyright notice see file Copyright
+-------------------------------------------------------------------------------
+License
+ This file is part of foam-extend.
+
+ foam-extend 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.
+
+ foam-extend 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 foam-extend. If not, see .
+
+Class
+ Foam::fixedHeatFluxTemperatureFvPatchScalarField
+
+Description
+
+ Fixed temperature flux boundary condition. Assumes incompressible turbulent
+ flow. The normal temperature gradient is calculated as:
+
+ snGrad(T) = q/(kappaEff*rhoRef*c)
+
+ where:
+ - q is the prescribed heat flux [W/m^2],
+ - kappaEff is the effective diffusivity field: nu/Pr + nu_t/Pr_t,
+ - Pr and Prt are laminar and turbulent Prandtl number read from
+ transportProperties dictionary
+ - rhoRef is the reference density
+ - c is the specific heat capacity
+
+Author
+ Vuko Vukcevic, Wikki Ltd. All rights reserved
+
+SourceFiles
+ fixedHeatFluxTemperatureFvPatchScalarField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef fixedHeatFluxTemperatureFvPatchScalarField_H
+#define fixedHeatFluxTemperatureFvPatchScalarField_H
+
+#include "fixedGradientFvPatchFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+ Class fixedHeatFluxTemperatureFvPatchScalarField Declaration
+\*---------------------------------------------------------------------------*/
+
+class fixedHeatFluxTemperatureFvPatchScalarField
+:
+ public fixedGradientFvPatchScalarField
+{
+ // Private data
+
+ //- Fixed heat flux
+ scalarField heatFlux_;
+
+ //- Laminar Prandtl number
+ scalar Pr_;
+
+ //- Turbulent Prandtl number
+ scalar Prt_;
+
+ //- Reference density
+ scalar rhoRef_;
+
+ //- Specific heat capacity of the fluid
+ scalar c_;
+
+
+public:
+
+ //- Runtime type information
+ TypeName("fixedHeatFluxTemperature");
+
+
+ // Constructors
+
+ //- Construct from patch and internal field
+ fixedHeatFluxTemperatureFvPatchScalarField
+ (
+ const fvPatch&,
+ const DimensionedField&
+ );
+
+ //- Construct from patch, internal field and dictionary
+ fixedHeatFluxTemperatureFvPatchScalarField
+ (
+ const fvPatch&,
+ const DimensionedField&,
+ const dictionary&
+ );
+
+ //- Construct by mapping given
+ // fixedHeatFluxTemperatureFvPatchScalarField onto a new patch
+ fixedHeatFluxTemperatureFvPatchScalarField
+ (
+ const fixedHeatFluxTemperatureFvPatchScalarField&,
+ const fvPatch&,
+ const DimensionedField&,
+ const fvPatchFieldMapper&
+ );
+
+ //- Construct as copy
+ fixedHeatFluxTemperatureFvPatchScalarField
+ (
+ const fixedHeatFluxTemperatureFvPatchScalarField&
+ );
+
+ //- Construct and return a clone
+ virtual tmp clone() const
+ {
+ return tmp
+ (
+ new fixedHeatFluxTemperatureFvPatchScalarField(*this)
+ );
+ }
+
+ //- Construct as copy setting internal field reference
+ fixedHeatFluxTemperatureFvPatchScalarField
+ (
+ const fixedHeatFluxTemperatureFvPatchScalarField&,
+ const DimensionedField&
+ );
+
+ //- Construct and return a clone setting internal field reference
+ virtual tmp clone
+ (
+ const DimensionedField& iF
+ ) const
+ {
+ return tmp
+ (
+ new fixedHeatFluxTemperatureFvPatchScalarField(*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
+
+// ************************************************************************* //