basicMultiComponentMixture.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 (C) 2011-2017 OpenFOAM Foundation
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
13  the Free Software Foundation, either version 3 of the License, or
14  (at your 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, see <http://www.gnu.org/licenses/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
27 
28 // * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
29 
30 namespace Foam
31 {
32  defineTypeNameAndDebug(basicMultiComponentMixture, 0);
33 }
34 
35 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
36 
38 (
39  const dictionary& thermoDict,
40  const wordList& specieNames,
41  const fvMesh& mesh,
42  const word& phaseName
43 )
44 :
45  species_(specieNames),
46  active_(species_.size(), true),
47  Y_(species_.size())
48 {
49  tmp<volScalarField> tYdefault;
50 
51  forAll(species_, i)
52  {
53  IOobject header
54  (
55  IOobject::groupName(species_[i], phaseName),
56  mesh.time().timeName(),
57  mesh,
59  );
60 
61  // check if field exists and can be read
62  if (header.typeHeaderOk<volScalarField>(true))
63  {
64  Y_.set
65  (
66  i,
67  new volScalarField
68  (
69  IOobject
70  (
71  IOobject::groupName(species_[i], phaseName),
72  mesh.time().timeName(),
73  mesh,
76  ),
77  mesh
78  )
79  );
80  }
81  else
82  {
83  // Read Ydefault if not already read
84  if (!tYdefault.valid())
85  {
86  word YdefaultName(IOobject::groupName("Ydefault", phaseName));
87 
88  IOobject timeIO
89  (
90  YdefaultName,
91  mesh.time().timeName(),
92  mesh,
95  );
96 
97  IOobject constantIO
98  (
99  YdefaultName,
100  mesh.time().constant(),
101  mesh,
104  );
105 
106  IOobject time0IO
107  (
108  YdefaultName,
109  Time::timeName(0),
110  mesh,
111  IOobject::MUST_READ,
113  );
114 
115  if (timeIO.typeHeaderOk<volScalarField>(true))
116  {
117  tYdefault = new volScalarField(timeIO, mesh);
118  }
119  else if (constantIO.typeHeaderOk<volScalarField>(true))
120  {
121  tYdefault = new volScalarField(constantIO, mesh);
122  }
123  else
124  {
125  tYdefault = new volScalarField(time0IO, mesh);
126  }
127  }
128 
129  Y_.set
130  (
131  i,
132  new volScalarField
133  (
134  IOobject
135  (
136  IOobject::groupName(species_[i], phaseName),
137  mesh.time().timeName(),
138  mesh,
141  ),
142  tYdefault()
143  )
144  );
145  }
146  }
147 
148  // Do not enforce constraint of sum of mass fractions to equal 1 here
149  // - not applicable to all models
150 }
151 
152 
153 // ************************************************************************* //
#define forAll(list, i)
Loop across all elements in list.
Definition: UList.H:428
A list of keyword definitions, which are a keyword followed by any number of values (e...
Definition: dictionary.H:137
basicMultiComponentMixture(const dictionary &, const wordList &specieNames, const fvMesh &, const word &)
Construct from dictionary, species names, mesh and phase name.
static word timeName(const scalar, const int precision=precision_)
Return time name of given scalar time.
Definition: Time.C:644
const Time & time() const
Return the top-level database.
Definition: fvMesh.H:243
virtual word timeName() const
Return current time name.
Definition: Time.C:654
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:52
dynamicFvMesh & mesh
bool valid() const
Is this temporary object valid,.
Definition: tmpI.H:160
A class for handling words, derived from string.
Definition: word.H:59
static word groupName(Name name, const word &group)
const word & constant() const
Return constant name.
Definition: TimePaths.H:124
defineTypeNameAndDebug(combustionModel, 0)
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:78
A class for managing temporary objects.
Definition: PtrList.H:53
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
Definition: IOobject.H:92
Namespace for OpenFOAM.