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  PtrList<volScalarField> DpDtFluid(fluidRegions.size());
13 
14  List<scalar> initialMassFluid(fluidRegions.size());
15 
16  // Populate fluid field pointer lists
18  {
19  Info<< "*** Reading fluid mesh thermophysical properties for region "
20  << fluidRegions[i].name() << nl << endl;
21 
22  Info<< " Adding to thermoFluid\n" << endl;
23  thermoFluid.set
24  (
25  i,
26  basicRhoThermo::New(fluidRegions[i]).ptr()
27  );
28 
29  Info<< " Adding to rhoFluid\n" << endl;
30  rhoFluid.set
31  (
32  i,
33  new volScalarField
34  (
35  IOobject
36  (
37  "rho",
38  runTime.timeName(),
39  fluidRegions[i],
40  IOobject::NO_READ,
41  IOobject::AUTO_WRITE
42  ),
43  thermoFluid[i].rho()
44  )
45  );
46 
47  Info<< " Adding to KFluid\n" << endl;
48  KFluid.set
49  (
50  i,
51  new volScalarField
52  (
53  IOobject
54  (
55  "Kcond",
56  runTime.timeName(),
57  fluidRegions[i],
58  IOobject::NO_READ,
59  IOobject::NO_WRITE
60  ),
61  thermoFluid[i].Cp()*thermoFluid[i].alpha()
62  )
63  );
64 
65  Info<< " Adding to UFluid\n" << endl;
66  UFluid.set
67  (
68  i,
69  new volVectorField
70  (
71  IOobject
72  (
73  "U",
74  runTime.timeName(),
75  fluidRegions[i],
76  IOobject::MUST_READ,
77  IOobject::AUTO_WRITE
78  ),
79  fluidRegions[i]
80  )
81  );
82 
83  Info<< " Adding to phiFluid\n" << endl;
84  phiFluid.set
85  (
86  i,
88  (
89  IOobject
90  (
91  "phi",
92  runTime.timeName(),
93  fluidRegions[i],
94  IOobject::READ_IF_PRESENT,
95  IOobject::AUTO_WRITE
96  ),
98  & fluidRegions[i].Sf()
99  )
100  );
101 
102  Info<< " Adding to gFluid\n" << endl;
103  gFluid.set
104  (
105  i,
107  (
108  IOobject
109  (
110  "g",
111  runTime.constant(),
112  fluidRegions[i],
113  IOobject::MUST_READ,
114  IOobject::NO_WRITE
115  )
116  )
117  );
118 
119  Info<< " Adding to turbulence\n" << endl;
120  turbulence.set
121  (
122  i,
123  autoPtr<compressible::turbulenceModel>
124  (
125  compressible::turbulenceModel::New
126  (
127  rhoFluid[i],
128  UFluid[i],
129  phiFluid[i],
130  thermoFluid[i]
131  )
132  ).ptr()
133  );
134 
135  Info<< " Adding to ghFluid\n" << endl;
136  ghFluid.set
137  (
138  i,
139  new volScalarField("gh", gFluid[i] & fluidRegions[i].C())
140  );
141 
142  Info<< " Adding to ghfFluid\n" << endl;
143  ghfFluid.set
144  (
145  i,
146  new surfaceScalarField("ghf", gFluid[i] & fluidRegions[i].Cf())
147  );
148 
149  p_rghFluid.set
150  (
151  i,
152  new volScalarField
153  (
154  IOobject
155  (
156  "p_rgh",
157  runTime.timeName(),
158  fluidRegions[i],
159  IOobject::MUST_READ,
160  IOobject::AUTO_WRITE
161  ),
162  fluidRegions[i]
163  )
164  );
165 
166  // Force p_rgh to be consistent with p
167  p_rghFluid[i] = thermoFluid[i].p() - rhoFluid[i]*ghFluid[i];
168 
170 
171  Info<< " Adding to DpDtFluid\n" << endl;
172  DpDtFluid.set
173  (
174  i,
175  new volScalarField
176  (
177  "DpDt",
178  fvc::DDt
179  (
181  (
182  "phiU",
184  ),
185  thermoFluid[i].p()
186  )
187  )
188  );
189  }