ENH: Adding thermal multi layers to externalWallHeatFluxTemperatureFvPatchScalarField

This commit is contained in:
Sergio Ferraris
2013-09-12 10:01:52 +01:00
parent fede5058d3
commit 6e59e9a75f
2 changed files with 41 additions and 22 deletions

View File

@ -69,8 +69,8 @@ externalWallHeatFluxTemperatureFvPatchScalarField
q_(p.size(), 0.0),
h_(p.size(), 0.0),
Ta_(p.size(), 0.0),
thicknessLayer_(0),
kappaLayer_(0)
thicknessLayers_(),
kappaLayers_()
{
this->refValue() = 0.0;
this->refGrad() = 0.0;
@ -93,8 +93,8 @@ externalWallHeatFluxTemperatureFvPatchScalarField
q_(ptf.q_, mapper),
h_(ptf.h_, mapper),
Ta_(ptf.Ta_, mapper),
thicknessLayer_(ptf.thicknessLayer_),
kappaLayer_(ptf.kappaLayer_)
thicknessLayers_(ptf.thicknessLayers_),
kappaLayers_(ptf.kappaLayers_)
{}
@ -112,8 +112,8 @@ externalWallHeatFluxTemperatureFvPatchScalarField
q_(p.size(), 0.0),
h_(p.size(), 0.0),
Ta_(p.size(), 0.0),
thicknessLayer_(dict.lookupOrDefault<scalar>("thicknessLayer", 0.0)),
kappaLayer_(dict.lookupOrDefault<scalar>("kappaLayer", 0.0))
thicknessLayers_(),
kappaLayers_()
{
if (dict.found("q") && !dict.found("h") && !dict.found("Ta"))
{
@ -125,6 +125,11 @@ externalWallHeatFluxTemperatureFvPatchScalarField
mode_ = fixedHeatTransferCoeff;
h_ = scalarField("h", dict, p.size());
Ta_ = scalarField("Ta", dict, p.size());
if (dict.found("thicknessLayers"))
{
dict.lookup("thicknessLayers") >> thicknessLayers_;
dict.lookup("kappaLayers") >> kappaLayers_;
}
}
else
{
@ -176,8 +181,8 @@ externalWallHeatFluxTemperatureFvPatchScalarField
q_(tppsf.q_),
h_(tppsf.h_),
Ta_(tppsf.Ta_),
thicknessLayer_(tppsf.thicknessLayer_),
kappaLayer_(tppsf.kappaLayer_)
thicknessLayers_(tppsf.thicknessLayers_),
kappaLayers_(tppsf.kappaLayers_)
{}
@ -194,8 +199,8 @@ externalWallHeatFluxTemperatureFvPatchScalarField
q_(tppsf.q_),
h_(tppsf.h_),
Ta_(tppsf.Ta_),
thicknessLayer_(tppsf.thicknessLayer_),
kappaLayer_(tppsf.kappaLayer_)
thicknessLayers_(tppsf.thicknessLayers_),
kappaLayers_(tppsf.kappaLayers_)
{}
@ -252,7 +257,19 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs()
}
case fixedHeatTransferCoeff:
{
q = (Ta_ - Tp)*(1.0/h_ + thicknessLayer_/(kappaLayer_ + VSMALL));
scalar totalSolidRes = 0.0;
if (thicknessLayers_.size() > 0)
{
forAll (thicknessLayers_, iLayer)
{
const scalar l = thicknessLayers_[iLayer];
if (l > 0.0)
{
totalSolidRes += kappaLayers_[iLayer]/l;
}
}
}
q = (Ta_ - Tp)*(1.0/h_ + totalSolidRes);
break;
}
default:
@ -308,9 +325,6 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::write
{
mixedFvPatchScalarField::write(os);
temperatureCoupledBase::write(os);
os.writeKeyword("thicknessLayer")<< thicknessLayer_
<< token::END_STATEMENT << nl;
os.writeKeyword("kappaLayer")<< kappaLayer_ << token::END_STATEMENT << nl;
switch (mode_)
{
@ -323,6 +337,10 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::write
{
h_.writeEntry("h", os);
Ta_.writeEntry("Ta", os);
os.writeKeyword("thicknessLayers")<< thicknessLayers_
<< token::END_STATEMENT << nl;
os.writeKeyword("kappaLayers")<< kappaLayers_
<< token::END_STATEMENT << nl;
break;
}
default:

View File

@ -26,8 +26,9 @@ Class
Description
This boundary condition supplies a heat flux condition for temperature
on an external wall.Optional thin thermal layer resistance can be
specified through thicknessLayer and kappaLayer entries.
on an external wall. Optional thin thermal layer resistances can be
specified through thicknessLayers and kappaLayers entries for the
fixed heat transfer coefficient mode.
The condition can operate in two modes:
\li fixed heat transfer coefficient: supply h and Ta
@ -52,8 +53,8 @@ Description
q uniform 1000; // heat flux / [W/m2]
Ta uniform 300.0; // ambient temperature /[K]
h uniform 10.0; // heat transfer coeff /[W/Km2]
thicknessLayer 0.001 // thickness of layer [m]
kappaLayer 0.0 // thermal conductivity of
thicknessLayers (0.1 0.2 0.3 0.4); // thickness of layer [m]
kappaLayers (1 2 3 4) // thermal conductivity of
// layer [W/m/K]
value uniform 300.0; // initial temperature / [K]
kappaName none;
@ -118,11 +119,11 @@ private:
//- Ambient temperature / [K]
scalarField Ta_;
//- Thickness of the thin wall
scalar thicknessLayer_;
//- Thickness of layers
scalarList thicknessLayers_;
//- Thermal conductivity of the thin wall
scalar kappaLayer_;
//- Conductivity of layers
scalarList kappaLayers_;
public: