Forward compatibility: flex
[foam-extend-3.2.git] / src / thermophysicalModels / thermophysicalFunctions / APIfunctions / APIdiffCoefFunc / APIdiffCoefFunc.H
blob77d0724536b4897956951fe51dee750c710cb540
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend 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 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::APIdiffCoefFunc
27 Description
28     API function for vapour mass diffusivity
30     Source:
31     @verbatim
32             API (American Petroleum Institute)
33                     Technical Data Book
34     @endverbatim
36 \*---------------------------------------------------------------------------*/
38 #ifndef APIdiffCoefFunc_H
39 #define APIdiffCoefFunc_H
41 #include "thermophysicalFunction.H"
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 namespace Foam
48 /*---------------------------------------------------------------------------*\
49                       Class APIdiffCoefFunc Declaration
50 \*---------------------------------------------------------------------------*/
52 class APIdiffCoefFunc
54     public thermophysicalFunction
56     // Private data
58         // API vapour mass diffusivity function coefficients
59         scalar a_, b_, wf_, wa_;
61         // Helper variables
62         scalar alpha_, beta_;
65 public:
67     //- Runtime type information
68     TypeName("APIdiffCoefFunc");
71     // Constructors
73         //- Construct from components
74         APIdiffCoefFunc(scalar a, scalar b, scalar wf, scalar wa)
75         :
76             a_(a),
77             b_(b),
78             wf_(wf),
79             wa_(wa),
80             alpha_(sqrt(1/wf_ + 1/wa_)),
81             beta_(sqr(cbrt(a_) + cbrt(b_)))
82         {}
84         //- Construct from Istream
85         APIdiffCoefFunc(Istream& is)
86         :
87             a_(readScalar(is)),
88             b_(readScalar(is)),
89             wf_(readScalar(is)),
90             wa_(readScalar(is)),
91             alpha_(sqrt(1/wf_ + 1/wa_)),
92             beta_(sqr((cbrt(a_) + cbrt(b_))))
93         {}
96     // Member Functions
98         //- API vapour mass diffusivity function using properties from
99         //  construction
100         scalar f(scalar p, scalar T) const
101         {
102             return 3.6059e-3*(pow(1.8*T, 1.75))*alpha_/(p*beta_);
103         }
105         //- API vapour mass diffusivity function using properties from
106         //  construction - with specified binary pair
107         scalar f(scalar p, scalar T, scalar  Wa) const
108         {
109             const scalar alphaBinary = sqrt(1/wf_ + 1/Wa);
110             return 3.6059e-3*(pow(1.8*T, 1.75))*alphaBinary/(p*beta_);
111         }
113         //- Write the function coefficients
114         void writeData(Ostream& os) const
115         {
116             os  << a_ << token::SPACE
117                 << b_ << token::SPACE
118                 << wf_ << token::SPACE
119                 << wa_;
120         }
123     // Ostream Operator
125         friend Ostream& operator<<(Ostream& os, const APIdiffCoefFunc& f)
126         {
127             f.writeData(os);
128             return os;
129         }
133 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
135 } // End namespace Foam
137 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
139 #endif
141 // ************************************************************************* //