SCOPELaminarFlameSpeed.H 6.25 KB
Newer Older
shunbo's avatar
shunbo committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
/*---------------------------------------------------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     |
    \\  /    A nd           | www.openfoam.com
     \\/     M anipulation  |
-------------------------------------------------------------------------------
    Copyright (C) 2011-2012 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
    This file is part of OpenFOAM.

    OpenFOAM is free software: you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    for more details.

    You should have received a copy of the GNU General Public License
    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.

Class
    Foam::laminarFlameSpeedModels::SCOPE

Description
    Laminar flame speed obtained from the SCOPE correlation.

    Seven parameters are specified in terms of polynomial functions of
    stoichiometry. Two polynomials are fitted, covering different parts of the
    flammable range. If the mixture is outside the fitted range, linear
    interpolation is used between the extreme of the polynomio and the upper or
    lower flammable limit with the Markstein number constant.

    Variations of pressure and temperature from the reference values are taken
    into account through \f$ pexp \f$ and \f$ texp \f$

    The laminar burning velocity fitting polynomial is:

    \f$ Su = a_{0}(1+a_{1}x+K+..a_{i}x^{i}..+a_{6}x^{6}) (p/p_{ref})^{pexp}
    (T/T_{ref})^{texp} \f$

    where:

        \f$ a_{i} \f$ are the polinomial coefficients.

        \f$ pexp \f$ and \f$ texp \f$ are the pressure and temperature factors
        respectively.

        \f$ x \f$ is the equivalence ratio.

        \f$ T_{ref} \f$ and \f$ p_{ref} \f$ are the temperature and pressure
        references for the laminar burning velocity.


SourceFiles
    SCOPELaminarFlameSpeed.C

\*---------------------------------------------------------------------------*/

#ifndef SCOPE_H
#define SCOPE_H

#include "laminarFlameSpeed.H"

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

namespace Foam
{
namespace laminarFlameSpeedModels
{

/*---------------------------------------------------------------------------*\
                           Class SCOPE Declaration
\*---------------------------------------------------------------------------*/

class SCOPE
:
    public laminarFlameSpeed
{
    // Private Data

        class polynomial
        :
            public FixedList<scalar, 7>
        {
        public:

            //- Lower limit
            scalar ll;

            //- Upper polynomial limit
            scalar ul;

            //- Value at lower limit
            scalar llv;

            //- Value at upper limit
            scalar ulv;

            //- Changeover point from lower to upper polynomial
            scalar lu;

            //- Construct from dictionary
            polynomial(const dictionary& polyDict);
        };


        dictionary coeffsDict_;

        //- Lower flammability limit
        scalar LFL_;

        //- Upper flammability limit
        scalar UFL_;

        //- Lower Su polynomial
        polynomial SuPolyL_;

        //- Upper Su polynomial
        polynomial SuPolyU_;

        //- Temperature correction exponent
        scalar Texp_;

        //- Pressure correction exponent
        scalar pexp_;

        //- Lower Ma polynomial
        polynomial MaPolyL_;

        //- Upper Ma polynomial
        polynomial MaPolyU_;


    // Private member functions

        //- Polynomial evaluated from the given equivalence ratio
        //  and polynomial coefficients
        static inline scalar polyPhi(scalar phi, const polynomial& a);

        //- Laminar flame speed evaluated from the given equivalence ratio
        //  at the reference temperature and pressure
        inline scalar SuRef(scalar phi) const;

        //- Markstein evaluated from the given equivalence ratio
        inline scalar Ma(scalar phi) const;

        //- Laminar flame speed evaluated from the given equivalence ratio
        //  corrected for temperature and pressure dependence
        inline scalar Su0pTphi(scalar p, scalar Tu, scalar phi) const;

        //- Laminar flame speed evaluated from the given uniform
        //  equivalence ratio corrected for temperature and pressure dependence
        tmp<volScalarField> Su0pTphi
        (
            const volScalarField& p,
            const volScalarField& Tu,
            scalar phi
        ) const;

        //- Laminar flame speed evaluated from the given equivalence ratio
        //  distribution corrected for temperature and pressure dependence
        tmp<volScalarField> Su0pTphi
        (
            const volScalarField& p,
            const volScalarField& Tu,
            const volScalarField& phi
        ) const;

        //- Return the Markstein number
        //  evaluated from the given equivalence ratio
        tmp<volScalarField> Ma(const volScalarField& phi) const;

        //- Construct as copy (not implemented)
        SCOPE(const SCOPE&);

        void operator=(const SCOPE&);


public:

    //- Runtime type information
    TypeName("SCOPE");

    // Constructors

        //- Construct from dictionary and psiuReactionThermo
        SCOPE
        (
            const dictionary&,
            const psiuReactionThermo&
        );


    //- Destructor
    ~SCOPE();


    // Member functions

        //- Return the Markstein number
        tmp<volScalarField> Ma() const;

        //- Return the laminar flame speed [m/s]
        tmp<volScalarField> operator()() const;
};


// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

} // End laminarFlameSpeedModels
} // End namespace Foam

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

#endif

// ************************************************************************* //