functionObjects::comfort: extended to calculate the draught rate (DR)

The draught rate determines the percentage of affected people by an airflow
caused due to room ventilation or buoyancy effects (cold windows). The draught
rate calculation is valid for room temperatures between 20 and 26 degrees
Celsius and airspeed less than 0.5 m/s.  This quantity is used widely for
quantifying offices, auditoriums, or similar rooms in which persons are working.

Patch contributed by Tobias Holzmann
This commit is contained in:
Henry Weller
2021-09-03 19:38:16 +01:00
parent 531904ebae
commit 19950fa3b8
2 changed files with 72 additions and 11 deletions

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2019-2021 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -407,7 +407,7 @@ bool Foam::functionObjects::comfort::execute()
Info<< "Calculating the predicted percentage of dissatisfaction (PPD)\n";
// Equation (5) in EN ISO
// Equation (5)
tmp<volScalarField> PPD
(
volScalarField::New
@ -417,13 +417,68 @@ bool Foam::functionObjects::comfort::execute()
)
);
return store(PMV) && store(PPD);
Info<< "Calculating the draught rating (DR)\n";
const dimensionedScalar Umin("Umin", dimVelocity, 0.05);
const dimensionedScalar Umax("Umax", dimVelocity, 0.5);
const dimensionedScalar pre("preU", dimless, 0.37);
const dimensionedScalar C1("C1", dimVelocity, 3.14);
// Limit the velocity field to the values given in EN ISO 7733
volScalarField Umag = mag(lookupObject<volVectorField>("U"));
Umag.maxMin(Umin, Umax);
// Calculate the turbulent intensity if turbulent kinetic energy field k
// exists
volScalarField TI
(
IOobject
(
"TI",
mesh_.time().timeName(),
mesh_
),
mesh_,
dimensionedScalar(dimensionSet(0, 0, 0, 0, 0, 0, 0), 0)
);
if (foundObject<volScalarField>("k"))
{
const volScalarField& k = lookupObject<volScalarField>("k");
TI = sqrt(2/3*k)/Umag;
}
// For unit correctness
const dimensionedScalar correctUnit
(
"correctUnit",
dimensionSet(0,- 1.62, 1.62, -1, 0, 0, 0),
1
);
// Equation (6)
tmp<volScalarField> DR
(
volScalarField::New
(
"DR",
correctUnit*(factor12 - T)*pow(Umag - Umin, 0.62)*(pre*Umag*TI + C1)
)
);
return
store(PMV)
&& store(PPD)
&& store(DR);
}
bool Foam::functionObjects::comfort::write()
{
return writeObject("PMV") && writeObject("PPD");
return
writeObject("PMV")
&& writeObject("PPD")
&& writeObject("DR");
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2019-2020 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2019-2021 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -25,8 +25,14 @@ Class
Foam::functionObjects::comfort
Description
Calculates the thermal comfort quantities predicted mean vote (PMV) and
predicted percentage of dissatisfaction (PPD) based on DIN ISO EN 7730:2005.
Calculates the thermal comfort quantities predicted mean vote (PMV),
predicted percentage of dissatisfaction (PPD) and the draught rate (DR)
based on DIN ISO EN 7730:2005.
The draught rate is defined for velocities between 0 m/s and 0.5 m/s. Values
larger than 0.5 m/s will be set to 0.5 m/s. Furthermore, the draught rate is
defined between 20 degC and 26 degC. A temperature limitation is not
implemented. The draught rate is mainly used for HVAC analysis in rooms.
Usage
\table
@ -34,11 +40,11 @@ Usage
clothing | The insulation value of the cloth | no | 0
metabolicRate | The metabolic rate | no | 0.8
extWork | The external work | no | 0
Trad | Radiation temperature | no | -1
relHumidity | Relative humidity of the air | no | 50
Trad | Radiation temperature | no | 0
relHumidity | Relative humidity of the air | no | 0.5
pSat | Saturation pressure of water | no | -1
tolerance | Residual control for the cloth temperature | no | 1e-5
maxClothIter | Maximum number of iterations | no | 0
tolerance | Residual control for the cloth temperature | no | 1e-4
maxClothIter | Maximum number of iterations | no | 100
meanVelocity | Use a constant mean velocity in the whole domain | no |\
false
\endtable