FreeFOAM The Cross-Platform CFD Toolkit
createFluidFields.H
Go to the documentation of this file.
1  // Initialise fluid field pointer lists
2  PtrList<basicRhoThermo> thermoFluid(fluidRegions.size());
3  PtrList<volScalarField> rhoFluid(fluidRegions.size());
4  PtrList<volScalarField> KFluid(fluidRegions.size());
5  PtrList<volVectorField> UFluid(fluidRegions.size());
6  PtrList<surfaceScalarField> phiFluid(fluidRegions.size());
7  PtrList<uniformDimensionedVectorField> gFluid(fluidRegions.size());
8  PtrList<compressible::turbulenceModel> turbulence(fluidRegions.size());
9  PtrList<volScalarField> p_rghFluid(fluidRegions.size());
10  PtrList<volScalarField> ghFluid(fluidRegions.size());
11  PtrList<surfaceScalarField> ghfFluid(fluidRegions.size());
12 
13  List<scalar> initialMassFluid(fluidRegions.size());
14  List<label> pRefCellFluid(fluidRegions.size(),0);
15  List<scalar> pRefValueFluid(fluidRegions.size(),0.0);
16 
17  PtrList<dimensionedScalar> rhoMax(fluidRegions.size());
18  PtrList<dimensionedScalar> rhoMin(fluidRegions.size());
19 
20  // Populate fluid field pointer lists
22  {
23  Info<< "*** Reading fluid mesh thermophysical properties for region "
24  << fluidRegions[i].name() << nl << endl;
25 
26  Info<< " Adding to thermoFluid\n" << endl;
27 
28  thermoFluid.set
29  (
30  i,
31  basicRhoThermo::New(fluidRegions[i]).ptr()
32  );
33 
34  Info<< " Adding to rhoFluid\n" << endl;
35  rhoFluid.set
36  (
37  i,
38  new volScalarField
39  (
40  IOobject
41  (
42  "rho",
43  runTime.timeName(),
44  fluidRegions[i],
45  IOobject::NO_READ,
46  IOobject::AUTO_WRITE
47  ),
48  thermoFluid[i].rho()
49  )
50  );
51 
52  Info<< " Adding to KFluid\n" << endl;
53  KFluid.set
54  (
55  i,
56  new volScalarField
57  (
58  IOobject
59  (
60  "Kcond",
61  runTime.timeName(),
62  fluidRegions[i],
63  IOobject::NO_READ,
64  IOobject::NO_WRITE
65  ),
66  thermoFluid[i].Cp()*thermoFluid[i].alpha()
67  )
68  );
69 
70  Info<< " Adding to UFluid\n" << endl;
71  UFluid.set
72  (
73  i,
74  new volVectorField
75  (
76  IOobject
77  (
78  "U",
79  runTime.timeName(),
80  fluidRegions[i],
81  IOobject::MUST_READ,
82  IOobject::AUTO_WRITE
83  ),
84  fluidRegions[i]
85  )
86  );
87 
88  Info<< " Adding to phiFluid\n" << endl;
89  phiFluid.set
90  (
91  i,
93  (
94  IOobject
95  (
96  "phi",
97  runTime.timeName(),
98  fluidRegions[i],
99  IOobject::READ_IF_PRESENT,
100  IOobject::AUTO_WRITE
101  ),
103  & fluidRegions[i].Sf()
104  )
105  );
106 
107  Info<< " Adding to gFluid\n" << endl;
108  gFluid.set
109  (
110  i,
112  (
113  IOobject
114  (
115  "g",
116  runTime.constant(),
117  fluidRegions[i],
118  IOobject::MUST_READ,
119  IOobject::NO_WRITE
120  )
121  )
122  );
123 
124  Info<< " Adding to turbulence\n" << endl;
125  turbulence.set
126  (
127  i,
128  compressible::turbulenceModel::New
129  (
130  rhoFluid[i],
131  UFluid[i],
132  phiFluid[i],
133  thermoFluid[i]
134  ).ptr()
135  );
136 
137  Info<< " Adding to ghFluid\n" << endl;
138  ghFluid.set
139  (
140  i,
141  new volScalarField("gh", gFluid[i] & fluidRegions[i].C())
142  );
143 
144  Info<< " Adding to ghfFluid\n" << endl;
145  ghfFluid.set
146  (
147  i,
148  new surfaceScalarField("ghf", gFluid[i] & fluidRegions[i].Cf())
149  );
150 
151  p_rghFluid.set
152  (
153  i,
154  new volScalarField
155  (
156  IOobject
157  (
158  "p_rgh",
159  runTime.timeName(),
160  fluidRegions[i],
161  IOobject::MUST_READ,
162  IOobject::AUTO_WRITE
163  ),
164  fluidRegions[i]
165  )
166  );
167 
168  // Force p_rgh to be consistent with p
169  p_rghFluid[i] = thermoFluid[i].p() - rhoFluid[i]*ghFluid[i];
170 
172 
173  setRefCell
174  (
175  thermoFluid[i].p(),
176  p_rghFluid[i],
177  fluidRegions[i].solutionDict().subDict("SIMPLE"),
178  pRefCellFluid[i],
179  pRefValueFluid[i]
180  );
181 
182  rhoMax.set
183  (
184  i,
186  (
187  fluidRegions[i].solutionDict().subDict("SIMPLE").lookup("rhoMax")
188  )
189  );
190 
191  rhoMin.set
192  (
193  i,
195  (
196  fluidRegions[i].solutionDict().subDict("SIMPLE").lookup("rhoMin")
197  )
198  );
199  }