comfortFoam.C
Go to the documentation of this file.
1 #/*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright held by original author
6  \\/ M anipulation |
7  -------------------------------------------------------------------------------
8  License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software; you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by the
13  Free Software Foundation; either version 2 of the License, or (at your
14  option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM; if not, write to the Free Software Foundation,
23  Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
24 
25  Application
26  comfortFoam
27 
28  Description
29  Das Comfort-Tool berechnet folgende Kennwerte:
30  - Operative Raumlufttemperatur (TOp)
31  - DR (Draugth Rating oder Draft Risk), Wertebereich: 0 bis 100% (DR)
32  - PMV (Predicted Percentage of Dissatisfied), Wertebereich: 0 bis 100% (PMV)
33  - PPD (Predicted Mean Vote), Wertebereich: -3 (kalt) bis 3 (warm) (PPD)
34  - Mittlere Verweildauer der Luft - Mean Age of Air (AoA)
35  - Lüftungseffektivität (AE)
36  - Berechnet die relative Raumluftfeuchtigkeit (Humidity), Wertebereich: 0 bis 100%
37 
38  内容描述
39       舒适性工具需要计算以下参数:
40           -1.操作室空气温度(TOp)
41           -2.DR(危险等级或风险草案),值范围:0到100%(DR)
42           -3.PMV(预测平均投票),取值范围:-3(冷)至3(暖)(PPD)
43           -4.PPD(预测的不满意百分比),值范围:0到100%(PMV)
44           -4.APMV(自适应PMV),值范围:0到100%(PMV)
45           -5.平均空气年龄(AoA,AirAge)
46           -6.通风效率(AE,air effecitve)
47           -7.计算房间的相对湿度(湿度),值范围:0到100%
48 
49 Grundlage: "DIN EN ISO 7730"
50 Autor: "Dipl.-Ing. Thomas Tian"
51 Version: "1.5"
52 
53 Source files:
54 createFields.H
55 
56 \*---------------------------------------------------------------------------*/
57 
58 #include "fvCFD.H"
60 #include "wallFvPatch.H"
61 
62 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
63 //计算平均风速
65 {
66  //获取体向量U
67  const volVectorField& U = mesh_.lookupObject<volVectorField>("U");
68  vector midU(0,0,0);
69  scalar cellsum(0);
70  scalar volume(0);
71 
72  //所有网格loop
73  forAll (mesh_.cells(), cellI)
74  {
75  //sum 累加所有单个cell的速度*体积
76  midU += U[cellI] * mesh_.V()[cellI];
77  //累加每个cel的体积
78  volume += mesh_.V()[cellI];
79  };
80 
81  //将累加速度/累加体积,然后取标量获取大小值,获取速度大小.也就是使用提平均来计算风速平均值
82  Info<< "Average velocity = "<< mag(midU/volume) << " m/s" << nl;
83  //但是这里返回的居然还是平均风速的三个矢量
84  return midU/(volume);
85 }
86 
87 Foam::scalar Taverage(const Foam::fvMesh& mesh_)
88 {
89  const volScalarField& T = mesh_.lookupObject<volScalarField>("T");
90  scalar midT(0);
91  scalar cellsum(0);
92  scalar volume(0);
93 
94  forAll (mesh_.cells(), cellI)
95  {
96  //if (T[cellI]>283)
97  // {
98  midT += T[cellI] * mesh_.V()[cellI];
99  volume += mesh_.V()[cellI];
100  // }
101 
102  };
103  Info<< "Average Temperature = "<< (midT/volume)-273.15 << " °C" << nl;
104 
105  return (midT/volume);
106 }
107 
108 Foam::scalar radiationTemperature(const Foam::fvMesh& mesh_, const Foam::fvPatchList& Patches_)
109 {
110  // Berechnet die Strahlungstemperatur der Umgebung
111  // radiationTemperatur = Sum(Mittlere Wandoberflächentemperaturen / Anzahl Flächen)
112  // Rückgabe: Temperatur in Kelvin
113  //获取环境温度,是个标量
114  const volScalarField& T = mesh_.lookupObject<volScalarField>("T");
115  // 边界温度累计值,面积值
116  scalar PatchSumTemp(0), area(0);
117  //计数器
118  int counter = 0;
119  //循环所有的边界,每一个小的patch
120  forAll (Patches_, patchI)
121  {
122  //当前patch的索引,是个整型数
123  const label curPatch = Patches_[patchI].index();
124  //如果类型是wall的patch
125  //if (isType<wallFvPatch>( Patches_[patchI] ))
126  if (isType<wallFvPatch>( Patches_[patchI] ))
127  {
128  //mesh_.magSf() 返回一个面face的面积标量大小
129  //boundaryField()
130  area = gSum(mesh_.magSf().boundaryField()[curPatch]);
131  //如果面积不等于0
132  if (area != 0)
133  {
134  PatchSumTemp +=
135  gSum
136  (
137  mesh_.magSf().boundaryField()[curPatch]
138  * T.boundaryField()[curPatch]
139  ) / area;
140 
141  counter++;
142  }
143  }
144  }
145  //return (T+PatchSumTemp / counter)/2 - 273.15;
146  return PatchSumTemp / counter - 273.15;
147 }
148 
149 int main(int argc, char *argv[])
150 {
151 
152 //# argList::noParallel();
153 
154 # include "addTimeOptions.H"
155 # include "setRootCase.H"
156 # include "createTime.H"
157 
158  // Get times list
159  instantList Times = runTime.times();
160 
161  // set startTime and endTime depending on -time and -latestTime options
162 # include "checkTimeOptions.H"
163 
164  runTime.setTime(Times[startTime], startTime);
166 
167 # include "createMesh.H"
168 
169  forAll(timeDirs, timeI)
170  {
171  runTime.setTime(timeDirs[timeI], timeI);
172 
173  Info<< "Time = " << runTime.timeName() << endl;
174 
175 #include "createFields.H"
176 
177  // Operative Raumluftemperatur Top
179  const fvPatchList& Patches = T.mesh().boundary();
180 
181  scalar STemp(20);
182 
183  if ((w.headerOk()==1) )
184  {
185  RHswitch = true;
186  }
187 
188  if (QrHeader.headerOk()==1 )
189  {
191  const fvPatchList& Patches_ = Qr.mesh().boundary();
192  scalar PatchSumTemp(0);
193 
194  forAll (Patches_, patchI)
195  {
196  const label curPatch = Patches_[patchI].index();
197 
198  if (isType<wallFvPatch>( Patches_[patchI] ))
199  {
200  PatchSumTemp +=
201  gSum
202  (
203  mesh.magSf().boundaryField()[curPatch]
204  * Qr.boundaryField()[curPatch]
205  );
206  }
207  }
208  Info<< "Sum of all heat flows: "<< PatchSumTemp-273.15 << " oC" << endl;
209  }
210  else
211  {
212  STemp = radiationTemperature(mesh, Patches);
213  Info << "function for Average Radiation Temperature: " << STemp << " oC" << endl;
214  };
215 
216  if (AoAHeader.headerOk()==1 )
217  {
218 
220  scalar cellsum(0);
221  scalar midAoA(0);
222 
223  forAll (mesh.cells(), cellI)
224  {
225  midAoA += AoA[cellI];
226  cellsum++;
227  };
228 
229  scalar maxValue = max(AoA).value();
230 
231  Info << "Average age of air " << (midAoA/cellsum) << " s" << endl;
232  Info << "Maximum age of air " << maxValue << " s" << endl;
233 
234 
235  // Lüftungseffektivität AE = (Tn/2TM) x 100 %
236  Info << "Room volume " << gSum( mesh.V() ) << " m3" << endl;
237  Info << "Ventilation efficiency AE = " << ( gSum( mesh.V() ) / sumZuluft ) / (2 * ( maxValue / 3600) ) << " %" << endl;
238  };
239 
241  vector wl = Uaverage(mesh);
242  scalar Tr = Taverage(mesh);
244 
245  scalar cellsum(0);
246  scalar P1(0), P2(0), P3(0), P4(0), P5(0), XN(0), XF(0), HCN(0), HCF(0), HC(0), PA(0), FCL(0), EPS(0), ICL(0);
247  scalar Tu(0), HL1(0), HL2(0), HL3(0), HL4(0), HL5(0), HL6(0), TCL(0), TS(0), TCLA(0), midPMV(0), midPPD(0),midAPMV(0), midDR(0), midTO(0), midRH(0);
248  scalar p_w(0), p_ws(0.01);
249 
250  scalar volume(0);
251 
252  int N;
253  double a_korr; // Korrekturfaktor a nach DIN EN 7730;
254 
255  // FANGER - Gleichungen (PMV)
256 
257  forAll (mesh.cells(), cellI)
258  {
259 
260  // Zum Testen
261  /*
262  STemp= 21;
263  Tr = 23.0+273.15;
264  T[cellI] = Tr;
265  U[cellI].x() = 0.3;
266  U[cellI].y() = 0;
267  U[cellI].z() = 0;
268  */
269 
270  if (T[cellI] < 0)
271  T[cellI] = 273;
272 
273  if (T[cellI] > 350)
274  T[cellI] = 350;
275 
276 
277  if (RHswitch)
278  {
279  // Berechne die Raumluftfeuchte
280  p_w = ((101325 + p_rgh[cellI] ) * w[cellI])/(0.62198 + 0.37802 * w[cellI]);
281 
282  p_ws = Foam::exp(-0.58002206*Foam::pow(10.0,4)*Foam::pow(T[cellI],-1)
283  +0.13914993*10
284  -0.48640239*Foam::pow(10.0,-1)*T[cellI]
285  +0.41764768*Foam::pow(10.0,-4)*Foam::pow(T[cellI],2)
286  -0.14452093*Foam::pow(10.0,-7)*Foam::pow(T[cellI],3)
287  +0.65459673*10*Foam::log(T[cellI]) );
288 
289  RH[cellI] = p_w/p_ws*100;
290  PA = RH[cellI] * 10 * Foam::exp( 16.6563 - (4030.183 / (T[cellI] - 273.15 + 235) )); // water vapour pressure, Pa
291  midRH += RH[cellI];
292  } else {
293  PA = RH1 * 10 * Foam::exp( 16.6563 - (4030.183 / (T[cellI] - 273.15 + 235) )); // water vapour pressure, Pa
294  midRH += RH1;
295  }
296 
297  // Berechne den Turbulenzgrad %
298  // Tu = Wurzel ( 1/3 * (Ux'² + Uy'² + Uz'²) ) / Mittelwert U
299  if ( mag(wl) >0 )
300  {
301  Tu = (Foam::sqrt(scalar(1)/scalar(3) * (
302  Foam::pow( U[cellI].x() ,2) +
303  Foam::pow( U[cellI].y() ,2) +
304  Foam::pow( U[cellI].z() ,2)
305  )) / mag(wl)) * 100;
306  // ToDo!!!!
307  Tu = 40;
308 
309  }
310  else
311  {
312  Tu = 0;
313  };
314 
315  // Berechne DR-Wert
316  // bei wl<0,05 m/s ist wl=0,05 m/s einzusetzen!
317  if (mag(U[cellI]) >= 0.05)
318  {
319  DR[cellI] = ( 34 - (T[cellI] - 273.15) ) * ( Foam::pow( mag(U[cellI]) - 0.05 ,0.62 ) * ( (0.37 * mag(U[cellI]) * Tu) + 3.14) );
320  }
321  else
322  {
323  DR[cellI] = (34 - T[cellI] - 273.15) * Foam::pow( 0.05 ,0.6223) * ((0.37 * 0.05 * Tu) + 3.14);
324  };
325  if (DR[cellI] > 100)
326  {
327  DR[cellI] = 100;
328  };
329  if (DR[cellI] < 0)
330  {
331  DR[cellI] = 0;
332  };
333 
334 
335 
336  ICL = 0.155 * clo;
337 
338  if (ICL < 0.078) // ok
339  { FCL = 1 + 1.29 * ICL; } // ok
340  else
341  { FCL = 1.05 + 0.645 * ICL; }; // clothing area factor
342 
343  HCF = 12.1 * Foam::sqrt(mag( U[cellI] )); // heat transf. coeff. by forced convection
344 
345  TCLA = T[cellI] + (35.5 - (T[cellI] - 273.15)) / (3.5 * 6.45 * ( ICL + 0.1));
346  XN = TCLA / 100; // ok
347 
348  P1 = ICL * FCL; // ok
349  P2 = P1 * 3.96; // ok
350  P3 = P1 * 100; // ok
351  P4 = P1 * T[cellI]; // ok
352  P5 = 308.7 - 0.028 * (met*58.15 - wme*58.15) + P2 * Foam::pow( (STemp + 273.0)/100, 4);
353 
354  // geändert Tian 06.10.2012
355  // XF = XN;
356  XF = TCLA / 50;
357  EPS = 0.0015;
358 
359  N=0;
360 
361  do
362  {
363 
364  N++;
365  XF = (XF + XN)/2; // stop criteria by iteration
366  HCF = 12.1 * Foam::sqrt(mag( U[cellI] ));
367  HCN = 2.38 * Foam::pow( mag( 100 * XF - T[cellI] ), 0.25); // heat transf. coeff. by natural convection;
368 
369  if (HCF>HCN) { HC = HCF; } else { HC = HCN; }; // ok
370  XN = (P5 + P4 * HC - P2 * Foam::pow(XF,4.0) ) / (100 + P3 * HC);
371  if (N>150) { break; };
372  } while (mag(XN-XF)>EPS);
373 
374 
375  TCL = 100 * XN - 273; // surface temperature of clothing
376  HL1 = 3.05 * 0.001 * (5733 - (6.99 * (met*58.15 - wme*58.15)) - PA); // heat loss diff. through skin
377  if ( (met*58.15 - wme*58.15) > 58.15) { HL2 = 0.42 * ( (met*58.15 - wme*58.15) - 58.15); }
378  else { HL2 = 0; }; // heat loss by sweating (comfort)
379  HL3 = 1.7 * 0.00001 * met * 58.15 * (5867 - PA); // latent respiration heat loss
380  HL4 = 0.0014 * met * 58.15 * (34 - (T[cellI] - 273.15) ); // dry respiration heat loss
381  HL5 = 3.96 * FCL * (Foam::pow(XN,4) - Foam::pow( (((STemp+Troom)/2 + 273.0)/100),4)) ; // heat lose by radiation
382  HL6 = FCL * HC * (TCL - (T[cellI] - 273.15)); // heat lose by convection
383  TS = 0.303 * Foam::exp(-0.036 * met * 58.15) + 0.028; // thermal sensation trans coeff
384 
385  // Berechne PMV-Wert
386  PMV[cellI] = TS * ( (met*58.15 - wme*58.15) - HL1 - HL2 - HL3 - HL4 - HL5 - HL6 );
387 
388 //if (T[cellI]>290)
389 //{
390 //Info << " thermal sensation trans coedd == " << TS <<endl;
391 //Info << " wm == " << (met*58.15 - wme*58.15) <<endl;
392 //Info << " TCL == " << TCL <<endl;
393 //Info << " TS == " << TS <<endl;
394 //Info << " XN == " << XN <<endl;
395 //Info << " Stemp == " << STemp <<endl;
396 //Info << " T == " << T[cellI] <<endl;
397 //Info << " HC == " << HC <<endl;
398 //Info << " FCL == " << FCL <<endl;
399 //Info << " HL1 == " << HL1 <<endl;
400 //Info << " HL2 == " << HL2 <<endl;
401 //Info << " HL3 == " << HL3 <<endl;
402 //Info << " HL4 == " << HL4 <<endl;
403 //Info << " HL5 == " << HL5 <<endl;
404 //Info << " HL6 == " << HL6 <<endl;
405 //Info << " PMV of this cell == " << PMV[cellI] <<endl;
406 //}
407 
408  // Berechne PPD-Wert
409  PPD[cellI] = 100 - 95 * Foam::exp( -0.03353*pow(PMV[cellI],4) - 0.2179 * pow(PMV[cellI],2) );
410 
411  scalar new_lamda=0.24;
412  if (PMV[cellI]>= 0)
413  {
414  new_lamda=0.24;
415  }
416  else
417  {
418  new_lamda=-0.5;
419  }
420  APMV[cellI] =PMV[cellI]/(1+new_lamda*PMV[cellI]);
421 
422  if (mag(U[cellI])<0.2) { a_korr=0.5; };
423  if ( (mag(U[cellI])>=0.2) || (mag(U[cellI])<=0.6) ) { a_korr=0.6; };
424  if (mag(U[cellI])>0.6) { a_korr=0.7; };
425  // Berechne die operative Raumlufttemperatur
426  TOp[cellI] = a_korr * T[cellI] + (1 - a_korr) * (STemp+273.15);
427 
428  midPMV += PMV[cellI];
429  midPPD += PPD[cellI];
430  midAPMV += APMV[cellI];
431  midDR += DR[cellI];
432  midTO += TOp[cellI];
433 
434  volume += mesh.V()[cellI];
435  cellsum++;
436 
437 
438  };
439 
440  DR.write();
441  PMV.write();
442  PPD.write();
443  APMV.write();
444  TOp.write();
445  RH.write();
446 
447  Info<< "Mean Radiation temperature "<< STemp << " °C" << endl;
448  Info<< "Water vapour pressure "<< PA << " Pa" <<nl;
449  Info << "Average PMV-Value = " << (midPMV/cellsum) << nl;
450  Info << "Average PPD-Value = " << (midPPD/cellsum) << " %" << nl;
451  Info << "Average APMV-Value = " << (midAPMV/cellsum) << " %" << nl;
452  Info << "Average DR-Value = " << (midDR/cellsum) << " %" << nl;
453  Info<< "Average air velocity = "<< mag(wl) << " m/s" << nl;
454  Info<< "Average room temperature = "<< mag(Tr)-273.15 << " °C" << nl;
455  Info<< "Average relative room humidity = "<< mag(midRH/cellsum) << " %" << nl;
456  Info << "Average operative temperature = " << (midTO/cellsum)-273.15 << " °C" << endl;
457 
458  if ( ((midPMV/cellsum > -0.2) || (midPMV/cellsum < 0.2)) && (midDR/cellsum < 10) && (midPPD/cellsum < 6))
459  {
460  Info << "Analysis: Category A" << endl;
461  } else {
462  if ( ((midPMV/cellsum > -0.5) || (midPMV/cellsum < 0.5)) && (midDR/cellsum < 20) && (midPPD/cellsum < 10))
463  {
464  Info << "Analysis: Category B" << endl;
465  } else {
466  if ( ((midPMV/cellsum > -0.7) || (midPMV/cellsum < 0.7)) && (midDR/cellsum < 30) && (midPPD/cellsum < 15))
467  {
468  Info << "Analysis: Category C" << endl;
469  } else
470  {
471  Info << "Analysis: Category D" << endl;
472  }}};
473 
474  // Info<< "Average Ux = "<< midUx / cellsum << endl;
475  // Info<< "Average Uy = "<< midUy / cellsum << endl;
476  // Info<< "Average Uz = "<< midUz / cellsum << endl;
477  }
478 
479  Info<< "\nEnd\n" << endl;
480 
481  return(0);
482 }
483 
484 
485 // ************************************************************************* //
486 
w
volScalarField w(IOobject("w", runTime.timeName(), mesh, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE), mesh, dimensionedScalar("w", dimensionSet(0, 0, 0, 0, 0, 0, 0), 0.0))
PMV
volScalarField PMV(IOobject("PMV", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE), mesh, dimensionedScalar("PMV", dimensionSet(0, 0, 0, 0, 0, 0, 0), 0.0))
RHswitch
bool RHswitch
Definition: createFields.H:177
createFields.H
forAll
#define forAll(list, i)
Loop across all elements in list.
Definition: UList.H:406
singlePhaseTransportModel.H
Uaverage
Foam::vector Uaverage(const Foam::fvMesh &mesh_)
Definition: comfortFoam.C:64
Foam::primitiveMesh::cells
const cellList & cells() const
Definition: primitiveMeshCells.C:136
AoAHeader
IOobject AoAHeader("AoA", runTime.timeName(), mesh, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE)
wallFvPatch.H
main
int main(int argc, char *argv[])
Definition: comfortFoam.C:149
Foam::GeometricField::boundaryField
GeometricBoundaryField & boundaryField()
Return reference to GeometricBoundaryField.
Definition: GeometricField.C:735
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:251
Foam::dimensioned::value
const Type & value() const
Return const reference to value.
Definition: dimensionedType.C:261
Foam::gSum
Type gSum(const FieldField< Field, Type > &f)
Definition: FieldFieldFunctions.C:564
Foam::exp
dimensionedScalar exp(const dimensionedScalar &ds)
Definition: dimensionedScalar.C:252
Foam::mag
dimensioned< scalar > mag(const dimensioned< Type > &)
addTimeOptions.H
wme
const scalar wme(readScalar(comfortFoamDict.lookup("wme")))
U
U
Definition: pEqn.H:46
Foam::fvMesh::magSf
const surfaceScalarField & magSf() const
Return cell face area magnitudes.
Definition: fvMeshGeometry.C:358
Foam::IOobject::headerOk
bool headerOk()
Read and check header info.
Definition: IOobject.C:439
APMV
volScalarField APMV(IOobject("APMV", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE), mesh, dimensionedScalar("APMV", dimensionSet(0, 0, 0, 0, 0, 0, 0), 0.0))
UHeader
IOobject UHeader("U", runTime.timeName(), mesh, IOobject::MUST_READ)
Foam::fvMesh::V
const DimensionedField< scalar, volMesh > & V() const
Return cell volumes.
Definition: fvMeshGeometry.C:199
Foam::label
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
RH
volScalarField RH(IOobject("RH", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE), mesh, dimensionedScalar("RH", dimensionSet(0, 0, 0, 0, 0, 0, 0), 0.0))
Foam::nl
static const char nl
Definition: Ostream.H:260
Foam::Info
messageStream Info
RH1
const scalar RH1(readScalar(comfortFoamDict.lookup("RH")))
Taverage
Foam::scalar Taverage(const Foam::fvMesh &mesh_)
Definition: comfortFoam.C:87
THeader
IOobject THeader("T", runTime.timeName(), mesh, IOobject::MUST_READ)
radiationTemperature
Foam::scalar radiationTemperature(const Foam::fvMesh &mesh_, const Foam::fvPatchList &Patches_)
Definition: comfortFoam.C:108
Qr
volScalarField Qr(IOobject("Qr", runTime.timeName(), mesh, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE), mesh, dimensionedScalar("Qr", dimMass/pow3(dimTime), 0.0))
Foam::PtrList
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
Definition: List.H:61
p_rghHeader
IOobject p_rghHeader("p_rgh", runTime.timeName(), mesh, IOobject::MUST_READ)
Foam::pow
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
Definition: dimensionedScalar.C:73
Troom
const scalar Troom(readScalar(comfortFoamDict.lookup("Troom")))
Foam::log
dimensionedScalar log(const dimensionedScalar &ds)
Definition: dimensionedScalar.C:253
mesh
dynamicFvMesh & mesh
Definition: createDynamicFvMesh.H:18
met
const scalar met(readScalar(comfortFoamDict.lookup("met")))
Foam::fvMesh
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:78
checkTimeOptions.H
clo
const scalar clo(readScalar(comfortFoamDict.lookup("clo")))
Foam::max
dimensioned< Type > max(const dimensioned< Type > &, const dimensioned< Type > &)
setRootCase.H
timeDirs
static instantList timeDirs
Definition: globalFoam.H:44
T
const volScalarField & T
Definition: createFields.H:25
Foam::Vector
Templated 3D Vector derived from VectorSpace adding construction from 3 components,...
Definition: Vector.H:57
Foam::List
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Definition: HashTable.H:59
Foam::sqrt
dimensionedScalar sqrt(const dimensionedScalar &ds)
Definition: dimensionedScalar.C:142
createMesh.H
createTime.H
x
x
Definition: LISASMDCalcMethod2.H:52
TOp
volScalarField TOp(IOobject("TOp", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE), mesh, dimensionedScalar("TOp", dimensionSet(0, 0, 0, 1, 0, 0, 0), 0.0))
fvCFD.H
startTime
Foam::label startTime
Definition: checkTimeOptions.H:5
DR
volScalarField DR(IOobject("DR", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE), mesh, dimensionedScalar("DR", dimensionSet(0, 1,-1, 0, 0, 0, 0), 0.0))
Foam::objectRegistry::lookupObject
const Type & lookupObject(const word &name) const
Lookup and return the object of the given Type.
Definition: objectRegistryTemplates.C:165
Foam::timeSelector::select0
static instantList select0(Time &runTime, const argList &args)
Return the set of times selected based on the argList options.
Definition: timeSelector.C:253
Foam::GeometricField
Generic GeometricField class.
Definition: surfaceFieldsFwd.H:52
args
Foam::argList args(argc, argv)
p_rgh
volScalarField & p_rgh
Definition: setRegionFluidFields.H:31
sumZuluft
const scalar sumZuluft(readScalar(comfortFoamDict.lookup("Zuluft")))
y
scalar y
Definition: LISASMDCalcMethod1.H:14
maxValue
scalar maxValue
Definition: LISASMDCalcMethod1.H:5
PPD
volScalarField PPD(IOobject("PPD", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE), mesh, dimensionedScalar("PPD", dimensionSet(0, 0, 0, 0, 0, 0, 0), 0.0))
QrHeader
IOobject QrHeader("Qr", runTime.timeName(), mesh, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE)
N
label N
Definition: createFields.H:22