Newer
Older
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
Henry Weller
committed
\\ / A nd | Copyright (C) 2011-2017 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/>.
Foam::externalWallHeatFluxTemperatureFvPatchScalarField
Group
grpThermoBoundaryConditions grpWallBoundaryConditions
Henry Weller
committed
This boundary condition applies a heat flux condition to temperature
on an external wall in one of three modes:
Henry Weller
committed
- fixed power: supply Q
- fixed heat flux: supply q
Henry Weller
committed
- fixed heat transfer coefficient: supply h and Ta
Henry Weller
committed
Q | Power [W]
q | Heat flux [W/m^2]
h | Heat transfer coefficient [W/m^2/K]
Ta | Ambient temperature [K]
Henry Weller
committed
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.
Henry Weller
committed
Usage
Henry Weller
committed
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 |
Henry Weller
committed
relaxation | Relaxation for the wall temperature | no | 1
emissivity | Surface emissivity for radiative flux to ambient | no | 0
Henry Weller
committed
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 |
Example of the boundary condition specification:
\verbatim
Henry Weller
committed
mode coefficient;
Ta uniform 300.0;
h uniform 10.0;
thicknessLayers (0.1 0.2 0.3 0.4);
Henry Weller
committed
kappaMethod fluidThermo;
value $internalField;
Henry Weller
committed
Foam::temperatureCoupledBase
Henry Weller
committed
Foam::mixedFvPatchScalarField
externalWallHeatFluxTemperatureFvPatchScalarField.C
\*---------------------------------------------------------------------------*/
#ifndef solidWallHeatFluxTemperatureFvPatchScalarField_H
#define solidWallHeatFluxTemperatureFvPatchScalarField_H
#include "mixedFvPatchFields.H"
#include "temperatureCoupledBase.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class externalWallHeatFluxTemperatureFvPatchScalarField Declaration
\*---------------------------------------------------------------------------*/
class externalWallHeatFluxTemperatureFvPatchScalarField
public mixedFvPatchScalarField,
public temperatureCoupledBase
// Public data
//- Operation mode enumeration
enum operationMode
{
Henry Weller
committed
fixedPower,
fixedHeatFlux,
Henry Weller
committed
fixedHeatTransferCoeff
static const NamedEnum<operationMode, 3> operationModeNames;
private:
// Private data
//- Operation mode
Henry Weller
committed
//- Heat power [W]
scalar Q_;
//- Heat flux [W/m2]
Henry Weller
committed
//- Heat transfer coefficient [W/m2K]
scalarField h_;
Henry Weller
committed
//- Ambient temperature [K]
scalarField Ta_;
Henry Weller
committed
//- Relaxation for the wall temperature (thermal inertia)
scalar relaxation_;
//- Optional surface emissivity for radiative transfer to ambient
scalar emissivity_;
//- Cache qr for relaxation
Henry Weller
committed
scalarField qrPrevious_;
Henry
committed
Henry Weller
committed
//- Relaxation for qr
scalar qrRelaxation_;
Henry
committed
//- Name of the radiative heat flux
Henry Weller
committed
const word qrName_;
Sergio Ferraris
committed
//- Thickness of layers
scalarList thicknessLayers_;
Sergio Ferraris
committed
Sergio Ferraris
committed
//- Conductivity of layers
scalarList kappaLayers_;
Sergio Ferraris
committed
public:
//- Runtime type information
TypeName("externalWallHeatFluxTemperature");
// Constructors
//- Construct from patch and internal field
externalWallHeatFluxTemperatureFvPatchScalarField
(
const fvPatch&,
const DimensionedField<scalar, volMesh>&
);
//- Construct from patch, internal field and dictionary
externalWallHeatFluxTemperatureFvPatchScalarField
(
const fvPatch&,
const DimensionedField<scalar, volMesh>&,
const dictionary&
);
//- Construct by mapping given
Henry Weller
committed
// externalWallHeatFluxTemperatureFvPatchScalarField
// onto a new patch
externalWallHeatFluxTemperatureFvPatchScalarField
const externalWallHeatFluxTemperatureFvPatchScalarField&,
const fvPatch&,
const DimensionedField<scalar, volMesh>&,
const fvPatchFieldMapper&
);
//- Construct as copy
externalWallHeatFluxTemperatureFvPatchScalarField
const externalWallHeatFluxTemperatureFvPatchScalarField&
);
//- Construct and return a clone
virtual tmp<fvPatchScalarField> clone() const
{
return tmp<fvPatchScalarField>
(
new externalWallHeatFluxTemperatureFvPatchScalarField(*this)
);
}
//- Construct as copy setting internal field reference
externalWallHeatFluxTemperatureFvPatchScalarField
const externalWallHeatFluxTemperatureFvPatchScalarField&,
const DimensionedField<scalar, volMesh>&
);
//- Construct and return a clone setting internal field reference
virtual tmp<fvPatchScalarField> clone
(
const DimensionedField<scalar, volMesh>& iF
) const
{
return tmp<fvPatchScalarField>
(
new externalWallHeatFluxTemperatureFvPatchScalarField(*this, iF)
);
}
// Member functions
// Mapping functions
//- Map (and resize as needed) from self given a mapping object
virtual void autoMap
(
const fvPatchFieldMapper&
);
//- Reverse map the given fvPatchField onto this fvPatchField
virtual void rmap
(
const fvPatchScalarField&,
const labelList&
);
// Evaluation functions
//- Update the coefficients associated with the patch field
virtual void updateCoeffs();
// I-O
//- Write
void write(Ostream&) const;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //