Add the OpenFOAM source tree

This commit is contained in:
Henry
2014-12-10 22:40:10 +00:00
parent ee487c860d
commit 446e5777f0
13379 changed files with 3983377 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,3 @@
adiabaticFlameT.C
EXE = $(FOAM_APPBIN)/adiabaticFlameT

View File

@ -0,0 +1,2 @@
EXE_INC = -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude
EXE_LIBS = -lspecie

View File

@ -0,0 +1,194 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
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/>.
Application
adiabaticFlameT
Description
Calculates the adiabatic flame temperature for a given fuel over a
range of unburnt temperatures and equivalence ratios.
\*---------------------------------------------------------------------------*/
#include "argList.H"
#include "Time.H"
#include "dictionary.H"
#include "IFstream.H"
#include "OSspecific.H"
#include "specie.H"
#include "perfectGas.H"
#include "thermo.H"
#include "janafThermo.H"
#include "absoluteEnthalpy.H"
using namespace Foam;
typedef species::thermo<janafThermo<perfectGas<specie> >, absoluteEnthalpy>
thermo;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
argList::validArgs.append("controlFile");
argList args(argc, argv);
const fileName controlFileName = args[1];
// Construct control dictionary
IFstream controlFile(controlFileName);
// Check controlFile stream is OK
if (!controlFile.good())
{
FatalErrorIn(args.executable())
<< "Cannot read file " << controlFileName
<< exit(FatalError);
}
dictionary control(controlFile);
scalar P(readScalar(control.lookup("P")));
scalar T0(readScalar(control.lookup("T0")));
const word fuelName(control.lookup("fuel"));
scalar n(readScalar(control.lookup("n")));
scalar m(readScalar(control.lookup("m")));
Info<< nl << "Reading thermodynamic data dictionary" << endl;
fileName thermoDataFileName(findEtcFile("thermoData/thermoData"));
// Construct control dictionary
IFstream thermoDataFile(thermoDataFileName);
// Check thermoData stream is OK
if (!thermoDataFile.good())
{
FatalErrorIn(args.executable())
<< "Cannot read file " << thermoDataFileName
<< exit(FatalError);
}
dictionary thermoData(thermoDataFile);
scalar stoicO2 = n + m/4.0;
scalar stoicN2 = (0.79/0.21)*(n + m/4.0);
scalar stoicCO2 = n;
scalar stoicH2O = m/2.0;
thermo fuel
(
"fuel",
thermo(thermoData.subDict(fuelName))
);
thermo oxidant
(
"oxidant",
stoicO2*thermo(thermoData.subDict("O2"))
+ stoicN2*thermo(thermoData.subDict("N2"))
);
dimensionedScalar stoichiometricAirFuelMassRatio
(
"stoichiometricAirFuelMassRatio",
dimless,
(oxidant.W()*oxidant.nMoles())/fuel.W()
);
Info<< "stoichiometricAirFuelMassRatio "
<< stoichiometricAirFuelMassRatio << ';' << endl;
for (int i=0; i<300; i++)
{
scalar equiv = (i + 1)*0.01;
scalar ft = 1/(1 + stoichiometricAirFuelMassRatio.value()/equiv);
Info<< "phi = " << equiv << nl
<< "ft = " << ft << endl;
scalar o2 = (1.0/equiv)*stoicO2;
scalar n2 = (0.79/0.21)*o2;
scalar fres = max(1.0 - 1.0/equiv, 0.0);
scalar ores = max(1.0/equiv - 1.0, 0.0);
scalar fburnt = 1.0 - fres;
thermo fuel
(
"fuel",
thermo(thermoData.subDict(fuelName))
);
Info<< "fuel " << fuel << ';' << endl;
thermo oxidant
(
"oxidant",
o2*thermo(thermoData.subDict("O2"))
+ n2*thermo(thermoData.subDict("N2"))
);
Info<< "oxidant " << (1/oxidant.nMoles())*oxidant << ';' << endl;
thermo reactants
(
"reactants",
fuel + oxidant
);
Info<< "reactants " << (1/reactants.nMoles())*reactants << ';' << endl;
thermo burntProducts
(
"burntProducts",
+ (n2 - (0.79/0.21)*ores*stoicO2)*thermo(thermoData.subDict("N2"))
+ fburnt*stoicCO2*thermo(thermoData.subDict("CO2"))
+ fburnt*stoicH2O*thermo(thermoData.subDict("H2O"))
);
Info<< "burntProducts "
<< (1/burntProducts.nMoles())*burntProducts << ';' << endl;
thermo products
(
"products",
fres*fuel
+ n2*thermo(thermoData.subDict("N2"))
+ fburnt*stoicCO2*thermo(thermoData.subDict("CO2"))
+ fburnt*stoicH2O*thermo(thermoData.subDict("H2O"))
+ ores*stoicO2*thermo(thermoData.subDict("O2"))
);
Info<< "products " << (1/products.nMoles())*products << ';' << endl;
scalar Tad = products.THa(reactants.Ha(P, T0), P, 1000.0);
Info<< "Tad = " << Tad << nl << endl;
}
Info<< nl << "end" << endl;
return 0;
}
// ************************************************************************* //

View File

@ -0,0 +1,67 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
note "settings for calculating the adiabatic flame temperature";
class dictionary;
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
P 1e5;
T0 300.0;
H2
{
fuel H2;
n 0;
m 2;
}
CH4
{
fuel CH4___ANHARMONIC;
n 1;
m 4;
}
ETHYLENE
{
fuel C2H4;
n 2;
m 4;
}
PROPANE
{
fuel C3H8;
n 3;
m 8;
}
OCTANE
{
fuel C8H18(L)_isooctane;
n 8;
m 18;
}
N-HEPTANE
{
fuel C7H16_n-heptane;
n 7;
m 16;
}
$H2;
// $CH4;
// $PROPANE;
// ************************************************************************* //

View File

@ -0,0 +1,4 @@
chemkinToFoam.C
EXE = $(FOAM_APPBIN)/chemkinToFoam

View File

@ -0,0 +1,8 @@
EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude
EXE_LIBS = \
-lreactionThermophysicalModels \
-lfluidThermophysicalModels \
-lspecie

View File

@ -0,0 +1,78 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
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/>.
Application
chemkinToFoam
Description
Converts CHEMKINIII thermodynamics and reaction data files into
OpenFOAM format.
\*---------------------------------------------------------------------------*/
#include "argList.H"
#include "chemkinReader.H"
#include "OFstream.H"
using namespace Foam;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
argList::validArgs.append("CHEMKINFile");
argList::validArgs.append("CHEMKINThermodynamicsFile");
argList::validArgs.append("FOAMChemistryFile");
argList::validArgs.append("FOAMThermodynamicsFile");
argList::addBoolOption
(
"newFormat",
"read Chemkin thermo file in new format"
);
argList args(argc, argv);
bool newFormat = args.optionFound("newFormat");
speciesTable species;
chemkinReader cr(args[1], species, args[2], newFormat);
OFstream reactionsFile(args[3]);
reactionsFile
<< "species" << cr.species() << token::END_STATEMENT << nl << nl;
cr.reactions().write(reactionsFile);
OFstream thermoFile(args[4]);
cr.speciesThermo().write(thermoFile);
Info<< "End\n" << endl;
return 0;
}
// ************************************************************************* //

View File

@ -0,0 +1,3 @@
equilibriumCO.C
EXE = $(FOAM_APPBIN)/equilibriumCO

View File

@ -0,0 +1,2 @@
EXE_INC = -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude
EXE_LIBS = -lspecie

View File

@ -0,0 +1,136 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
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/>.
Application
equilibriumCO
Description
Calculates the equilibrium level of carbon monoxide.
\*---------------------------------------------------------------------------*/
#include "argList.H"
#include "Time.H"
#include "dictionary.H"
#include "IFstream.H"
#include "OSspecific.H"
#include "IOmanip.H"
#include "specie.H"
#include "perfectGas.H"
#include "thermo.H"
#include "janafThermo.H"
#include "absoluteEnthalpy.H"
#include "SLPtrList.H"
using namespace Foam;
typedef species::thermo<janafThermo<perfectGas<specie> >, absoluteEnthalpy>
thermo;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
#include "setRootCase.H"
#include "createTime.H"
Info<< nl << "Reading thermodynamic data IOdictionary" << endl;
IOdictionary thermoData
(
IOobject
(
"thermoData",
runTime.constant(),
runTime,
IOobject::MUST_READ_IF_MODIFIED,
IOobject::NO_WRITE,
false
)
);
scalar P = 1e5;
scalar T = 3000.0;
SLPtrList<thermo> EQreactions;
EQreactions.append
(
new thermo
(
thermo(thermoData.subDict("CO2"))
==
thermo(thermoData.subDict("CO"))
+ 0.5*thermo(thermoData.subDict("O2"))
)
);
EQreactions.append
(
new thermo
(
thermo(thermoData.subDict("O2"))
==
2.0*thermo(thermoData.subDict("O"))
)
);
EQreactions.append
(
new thermo
(
thermo(thermoData.subDict("H2O"))
==
thermo(thermoData.subDict("H2"))
+ 0.5*thermo(thermoData.subDict("O2"))
)
);
EQreactions.append
(
new thermo
(
thermo(thermoData.subDict("H2O"))
==
thermo(thermoData.subDict("H"))
+ thermo(thermoData.subDict("OH"))
)
);
forAllConstIter(SLPtrList<thermo>, EQreactions, iter)
{
Info<< "Kc(EQreactions) = " << iter().Kc(P, T) << endl;
}
Info<< nl << "end" << endl;
return 0;
}
// ************************************************************************* //

View File

@ -0,0 +1,481 @@
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
Build : dev-27a117d1f441
Exec : equilibriumFlameT controlDict
Date : Jan 16 2013
Time : 15:40:39
Host : "dm"
PID : 4638
Case : /home/dm2/henry/OpenFOAM/OpenFOAM-dev/applications/utilities/thermophysical/equilibriumFlameT
nProcs : 1
sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
SetNaN : Initialising allocated memory to NaN (FOAM_SETNAN).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster
allowSystemOperations : Allowing user-supplied system call operations
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Reading thermodynamic data dictionary
Reading thermodynamic data for relevant species
stoichiometricAirFuelMassRatio stoichiometricAirFuelMassRatio [0 0 0 0 0 0 0] 34.0741;
Equilibrium flame temperature data (1 bar)
Phi ft T0 Tad Teq Terror O2res (mole frac)
0.6 0.017304 300 1849.36 1848.92 0.441261 0.0746347
0.6 0.017304 400 1932.16 1931.28 0.879009 0.0746693
0.6 0.017304 500 2015.31 2013.66 1.6553 0.0747311
0.6 0.017304 600 2099.1 2096.14 2.96655 0.074836
0.6 0.017304 700 2183.84 2178.76 5.08632 0.0750065
0.6 0.017304 800 2269.77 2261.4 8.37223 0.0752722
0.6 0.017304 900 2356.97 2343.72 13.2521 0.0756689
0.6 0.017304 1000 2445.26 2425.09 20.1747 0.0762341
0.6 0.017304 1100 2534.41 2504.86 29.5499 0.077003
0.6 0.017304 1200 2624.41 2582.69 41.7235 0.0780054
0.6 0.017304 1300 2715.19 2658.28 56.9132 0.0792609
0.6 0.017304 1400 2806.69 2731.49 75.1966 0.0807775
0.6 0.017304 1500 2898.84 2802.32 96.5198 0.0825522
0.6 0.017304 1600 2991.6 2870.87 120.724 0.0845729
0.6 0.017304 1700 3084.9 2937.32 147.577 0.0868217
0.6 0.017304 1800 3178.71 3001.9 176.81 0.0892764
0.6 0.017304 1900 3272.98 3064.84 208.131 0.0919138
0.6 0.017304 2000 3367.66 3126.4 241.253 0.09471
0.6 0.017304 2100 3462.72 3186.82 275.903 0.0976445
0.6 0.017304 2200 3558.12 3246.2 311.925 0.100726
0.6 0.017304 2300 3653.84 3303.74 350.096 0.104207
0.6 0.017304 2400 3749.83 3350.89 398.934 0.110203
0.6 0.017304 2500 3846.07 3351.34 494.73 0.126061
0.6 0.017304 2600 3942.53 3291.95 650.58 0.151488
0.6 0.017304 2700 4039.19 3236.21 802.988 0.17406
0.6 0.017304 2800 4136.03 3245.34 890.687 0.186501
0.6 0.017304 2900 4233.03 3344.34 888.683 0.186501
0.6 0.017304 3000 4330.16 3443.39 886.77 0.186501
0.65 0.018719 300 1944.33 1943.23 1.10762 0.0647597
0.65 0.018719 400 2026.59 2024.53 2.05315 0.0648355
0.65 0.018719 500 2109.23 2105.61 3.62082 0.0649618
0.65 0.018719 600 2192.53 2186.42 6.10504 0.065163
0.65 0.018719 700 2276.78 2266.9 9.88012 0.0654705
0.65 0.018719 800 2362.23 2346.84 15.3867 0.0659212
0.65 0.018719 900 2448.96 2425.87 23.0886 0.0665545
0.65 0.018719 1000 2536.81 2503.41 33.3941 0.0674057
0.65 0.018719 1100 2625.53 2578.93 46.5953 0.0685004
0.65 0.018719 1200 2715.11 2652.24 62.8776 0.0698558
0.65 0.018719 1300 2805.51 2723.23 82.2781 0.0714767
0.65 0.018719 1400 2896.63 2791.92 104.71 0.0733571
0.65 0.018719 1500 2988.44 2858.44 129.993 0.0754833
0.65 0.018719 1600 3080.86 2922.97 157.886 0.0778362
0.65 0.018719 1700 3173.85 2985.73 188.117 0.0803935
0.65 0.018719 1800 3267.36 3046.95 220.404 0.0831323
0.65 0.018719 1900 3361.34 3106.87 254.469 0.0860297
0.65 0.018719 2000 3455.75 3165.68 290.067 0.0890703
0.65 0.018719 2100 3550.55 3223.35 327.196 0.0923026
0.65 0.018719 2200 3645.71 3278.01 367.698 0.0962479
0.65 0.018719 2300 3741.18 3314.72 426.463 0.104431
0.65 0.018719 2400 3836.94 3292.03 544.908 0.124389
0.65 0.018719 2500 3932.96 3229.29 703.673 0.149514
0.65 0.018719 2600 4029.21 3177.81 851.399 0.170937
0.65 0.018719 2700 4125.67 3175.22 950.445 0.184778
0.65 0.018719 2800 4222.31 3274.1 948.203 0.184778
0.65 0.018719 2900 4319.11 3373.04 946.07 0.184778
0.65 0.018719 3000 4416.05 3472.02 944.031 0.184778
0.7 0.0201299 300 2035.76 2033.25 2.51585 0.0551272
0.7 0.0201299 400 2117.53 2113.15 4.37823 0.0552783
0.7 0.0201299 500 2199.71 2192.43 7.27913 0.0555149
0.7 0.0201299 600 2282.56 2270.96 11.6037 0.0558696
0.7 0.0201299 700 2366.37 2348.58 17.7905 0.0563794
0.7 0.0201299 800 2451.38 2425.09 26.2928 0.0570833
0.7 0.0201299 900 2537.69 2500.17 37.5154 0.0580165
0.7 0.0201299 1000 2625.11 2573.39 51.7294 0.0592034
0.7 0.0201299 1100 2713.43 2644.39 69.0438 0.0606547
0.7 0.0201299 1200 2802.64 2713.17 89.4684 0.062373
0.7 0.0201299 1300 2892.67 2779.78 112.888 0.06435
0.7 0.0201299 1400 2983.45 2844.35 139.106 0.0665705
0.7 0.0201299 1500 3074.93 2907.05 167.878 0.0690147
0.7 0.0201299 1600 3167.04 2968.1 198.938 0.0716609
0.7 0.0201299 1700 3259.73 3027.72 232.012 0.0744866
0.7 0.0201299 1800 3352.96 3086.12 266.841 0.0774712
0.7 0.0201299 1900 3446.67 3143.43 303.236 0.0806124
0.7 0.0201299 2000 3540.82 3199.29 341.528 0.0840445
0.7 0.0201299 2100 3635.38 3249.5 385.874 0.0888593
0.7 0.0201299 2200 3730.29 3268.93 461.361 0.100608
0.7 0.0201299 2300 3825.54 3223.58 601.959 0.124079
0.7 0.0201299 2400 3921.08 3163.25 757.829 0.147885
0.7 0.0201299 2500 4016.89 3115.4 901.49 0.168314
0.7 0.0201299 2600 4112.93 3104.31 1008.62 0.183086
0.7 0.0201299 2700 4209.19 3203.06 1006.13 0.183086
0.7 0.0201299 2800 4305.63 3301.88 1003.76 0.183086
0.7 0.0201299 2900 4402.25 3400.75 1001.5 0.183086
0.7 0.0201299 3000 4499.01 3499.67 999.336 0.183086
0.75 0.0215368 300 2123.87 2118.6 5.26414 0.0457828
0.75 0.0215368 400 2205.19 2196.54 8.64652 0.0460605
0.75 0.0215368 500 2286.96 2273.35 13.6024 0.0464696
0.75 0.0215368 600 2369.39 2348.84 20.555 0.0470463
0.75 0.0215368 700 2452.79 2422.87 29.9229 0.0478271
0.75 0.0215368 800 2537.4 2495.33 42.0731 0.0488441
0.75 0.0215368 900 2623.32 2566.06 57.2623 0.0501209
0.75 0.0215368 1000 2710.36 2634.79 75.5739 0.0516661
0.75 0.0215368 1100 2798.31 2701.37 96.9358 0.0534755
0.75 0.0215368 1200 2887.16 2765.93 121.226 0.0555401
0.75 0.0215368 1300 2976.85 2828.61 148.241 0.0578437
0.75 0.0215368 1400 3067.31 2889.57 177.736 0.0603667
0.75 0.0215368 1500 3158.48 2949.02 209.456 0.063088
0.75 0.0215368 1600 3250.3 3007.15 243.145 0.0659865
0.75 0.0215368 1700 3342.71 3064.14 278.571 0.069047
0.75 0.0215368 1800 3435.67 3119.98 315.691 0.0723035
0.75 0.0215368 1900 3529.12 3173.54 355.588 0.0760823
0.75 0.0215368 2000 3623.03 3215.17 407.865 0.0827504
0.75 0.0215368 2100 3717.35 3207.15 510.202 0.0997809
0.75 0.0215368 2200 3812.04 3147 665.038 0.124757
0.75 0.0215368 2300 3907.07 3092.14 814.923 0.146832
0.75 0.0215368 2400 4002.4 3047.13 955.268 0.166424
0.75 0.0215368 2500 4098 3032.67 1065.33 0.181425
0.75 0.0215368 2600 4193.84 3131.28 1062.56 0.181425
0.75 0.0215368 2700 4289.91 3229.97 1059.94 0.181425
0.75 0.0215368 2800 4386.16 3328.72 1057.44 0.181425
0.75 0.0215368 2900 4482.59 3427.53 1055.06 0.181425
0.75 0.0215368 3000 4579.17 3526.39 1052.78 0.181425
0.8 0.0229397 300 2208.84 2198.55 10.2856 0.0368016
0.8 0.0229397 400 2289.76 2273.78 15.9817 0.0372748
0.8 0.0229397 500 2371.15 2347.32 23.8229 0.0379294
0.8 0.0229397 600 2453.21 2419.04 34.1694 0.0387973
0.8 0.0229397 700 2536.24 2488.92 47.3167 0.039905
0.8 0.0229397 800 2620.48 2557.01 63.4684 0.0412715
0.8 0.0229397 900 2706.03 2623.32 82.7038 0.0429054
0.8 0.0229397 1000 2792.71 2687.77 104.941 0.0448014
0.8 0.0229397 1100 2880.31 2750.32 129.984 0.0469441
0.8 0.0229397 1200 2968.83 2811.18 157.651 0.0493193
0.8 0.0229397 1300 3058.2 2870.49 187.709 0.0519078
0.8 0.0229397 1400 3148.36 2928.44 219.918 0.05469
0.8 0.0229397 1500 3239.24 2985.19 254.048 0.0576479
0.8 0.0229397 1600 3330.78 3040.84 289.946 0.0607847
0.8 0.0229397 1700 3422.93 3094.94 327.986 0.0642431
0.8 0.0229397 1800 3515.63 3144.62 371.018 0.0687801
0.8 0.0229397 1900 3608.84 3166.57 442.271 0.0796671
0.8 0.0229397 2000 3702.52 3123.82 578.694 0.102453
0.8 0.0229397 2100 3796.61 3062.37 734.239 0.126254
0.8 0.0229397 2200 3891.08 3012.82 878.258 0.146769
0.8 0.0229397 2300 3985.9 2969.95 1015.95 0.165648
0.8 0.0229397 2400 4081.02 2960.34 1120.68 0.179795
0.8 0.0229397 2500 4176.43 3058.81 1117.62 0.179795
0.8 0.0229397 2600 4272.08 3157.36 1114.72 0.179795
0.8 0.0229397 2700 4367.96 3255.99 1111.97 0.179795
0.8 0.0229397 2800 4464.03 3354.68 1109.35 0.179795
0.8 0.0229397 2900 4560.28 3453.43 1106.85 0.179795
0.8 0.0229397 3000 4656.69 3552.23 1104.46 0.179795
0.85 0.0243385 300 2290.86 2271.89 18.9685 0.0282998
0.85 0.0243385 400 2371.41 2343.55 27.8685 0.0290475
0.85 0.0243385 500 2452.45 2413.1 39.3563 0.0300172
0.85 0.0243385 600 2534.18 2480.55 53.6235 0.0312269
0.85 0.0243385 700 2616.86 2546.07 70.7851 0.0326882
0.85 0.0243385 800 2700.75 2609.87 90.8809 0.0344063
0.85 0.0243385 900 2785.96 2672.1 113.86 0.0363784
0.85 0.0243385 1000 2872.32 2732.77 139.549 0.0385908
0.85 0.0243385 1100 2959.59 2791.88 167.705 0.041024
0.85 0.0243385 1200 3047.8 2849.65 198.145 0.043663
0.85 0.0243385 1300 3136.87 2906.22 230.656 0.0464908
0.85 0.0243385 1400 3226.75 2961.68 265.07 0.0495028
0.85 0.0243385 1500 3317.35 3015.81 301.538 0.0527804
0.85 0.0243385 1600 3408.63 3066.84 341.787 0.0568065
0.85 0.0243385 1700 3500.53 3104.48 396.051 0.0640162
0.85 0.0243385 1800 3592.99 3084.34 508.645 0.0828878
0.85 0.0243385 1900 3685.97 3019.83 666.138 0.107717
0.85 0.0243385 2000 3779.41 2965.44 813.977 0.129098
0.85 0.0243385 2100 3873.29 2919.57 953.72 0.148417
0.85 0.0243385 2200 3967.55 2878.14 1089.41 0.166695
0.85 0.0243385 2300 4062.16 2887.39 1174.78 0.178193
0.85 0.0243385 2400 4157.09 2985.7 1171.39 0.178193
0.85 0.0243385 2500 4252.31 3084.1 1168.2 0.178193
0.85 0.0243385 2600 4347.77 3182.59 1165.18 0.178193
0.85 0.0243385 2700 4443.47 3281.16 1162.31 0.178193
0.85 0.0243385 2800 4539.37 3379.79 1159.58 0.178193
0.85 0.0243385 2900 4635.44 3478.48 1156.96 0.178193
0.85 0.0243385 3000 4731.69 3577.23 1154.46 0.178193
0.9 0.0257334 300 2370.09 2336.78 33.3173 0.0204491
0.9 0.0257334 400 2450.31 2404.16 46.1529 0.0215394
0.9 0.0257334 500 2531.04 2469.35 61.6865 0.0228649
0.9 0.0257334 600 2612.44 2532.52 79.921 0.0244277
0.9 0.0257334 700 2694.8 2593.97 100.836 0.0262275
0.9 0.0257334 800 2778.38 2653.99 124.39 0.0282621
0.9 0.0257334 900 2863.28 2712.78 150.491 0.030525
0.9 0.0257334 1000 2949.32 2770.36 178.952 0.0330009
0.9 0.0257334 1100 3036.28 2826.74 209.547 0.035672
0.9 0.0257334 1200 3124.2 2882.03 242.174 0.0385401
0.9 0.0257334 1300 3212.99 2935.98 277.011 0.0416893
0.9 0.0257334 1400 3302.6 2986.9 315.702 0.045578
0.9 0.0257334 1500 3392.94 3028.82 364.12 0.0515944
0.9 0.0257334 1600 3483.97 3019.41 464.567 0.068226
0.9 0.0257334 1700 3575.63 2951.2 624.433 0.0935821
0.9 0.0257334 1800 3667.86 2892.42 775.443 0.115391
0.9 0.0257334 1900 3760.61 2843.56 917.05 0.134916
0.9 0.0257334 2000 3853.85 2799.75 1054.09 0.153338
0.9 0.0257334 2100 3947.51 2759.06 1188.45 0.171094
0.9 0.0257334 2200 4041.57 2813.86 1227.71 0.176619
0.9 0.0257334 2300 4135.99 2912 1223.99 0.176619
0.9 0.0257334 2400 4230.73 3010.24 1220.48 0.176619
0.9 0.0257334 2500 4325.76 3108.59 1217.17 0.176619
0.9 0.0257334 2600 4421.04 3207.02 1214.03 0.176619
0.9 0.0257334 2700 4516.56 3305.52 1211.04 0.176619
0.9 0.0257334 2800 4612.29 3404.1 1208.19 0.176619
0.9 0.0257334 2900 4708.2 3502.73 1205.47 0.176619
0.9 0.0257334 3000 4804.28 3601.43 1202.85 0.176619
0.95 0.0271242 300 2446.69 2390.47 56.2165 0.0135013
0.95 0.0271242 400 2526.6 2453.56 73.0446 0.014947
0.95 0.0271242 500 2607.03 2514.76 92.2714 0.016606
0.95 0.0271242 600 2688.14 2574.31 113.833 0.0184742
0.95 0.0271242 700 2770.21 2632.51 137.7 0.0205501
0.95 0.0271242 800 2853.49 2689.64 163.85 0.0228334
0.95 0.0271242 900 2938.09 2745.85 192.246 0.0253261
0.95 0.0271242 1000 3023.84 2800.95 222.894 0.0280617
0.95 0.0271242 1100 3110.52 2854.04 256.478 0.0312581
0.95 0.0271242 1200 3198.16 2901.95 296.209 0.0357143
0.95 0.0271242 1300 3286.69 2937.18 349.506 0.0429733
0.95 0.0271242 1400 3376.04 2901.93 474.111 0.0635068
0.95 0.0271242 1500 3466.14 2818.66 647.478 0.0895965
0.95 0.0271242 1600 3556.93 2756.28 800.654 0.110895
0.95 0.0271242 1700 3648.36 2703.85 944.503 0.130251
0.95 0.0271242 1800 3740.37 2656.95 1083.42 0.148612
0.95 0.0271242 1900 3832.91 2615.22 1217.69 0.165993
0.95 0.0271242 2000 3925.93 2641.98 1283.95 0.175073
0.95 0.0271242 2100 4019.4 2739.8 1279.6 0.175073
0.95 0.0271242 2200 4113.26 2837.76 1275.51 0.175073
0.95 0.0271242 2300 4207.49 2935.83 1271.66 0.175073
0.95 0.0271242 2400 4302.04 3034.02 1268.03 0.175073
0.95 0.0271242 2500 4396.89 3132.3 1264.59 0.175073
0.95 0.0271242 2600 4492 3230.67 1261.33 0.175073
0.95 0.0271242 2700 4587.35 3329.12 1258.23 0.175073
0.95 0.0271242 2800 4682.91 3427.64 1255.27 0.175073
0.95 0.0271242 2900 4778.66 3526.22 1252.44 0.175073
0.95 0.0271242 3000 4874.58 3624.86 1249.72 0.175073
1 0.0285111 300 2520.79 2428.95 91.8415 0.00783223
1 0.0285111 400 2600.42 2489.16 111.262 0.00954474
1 0.0285111 500 2680.58 2547.46 133.116 0.0115427
1 0.0285111 600 2761.42 2603.06 158.358 0.0140645
1 0.0285111 700 2843.21 2656.82 186.389 0.0169302
1 0.0285111 800 2926.22 2705.82 220.398 0.0208555
1 0.0285111 900 3010.54 2717.47 293.073 0.031931
1 0.0285111 1000 3096.01 2308.21 787.803 0.102583
1 0.0285111 1100 3182.42 2231.26 951.156 0.118119
1 0.0285111 1200 3269.8 2192.08 1077.72 0.134773
1 0.0285111 1300 3358.08 2047.07 1311.01 0.173419
1 0.0285111 1400 3447.18 2082.4 1364.79 0.173554
1 0.0285111 1500 3537.05 2179.02 1358.03 0.173554
1 0.0285111 1600 3627.61 2275.87 1351.74 0.173554
1 0.0285111 1700 3718.82 2372.94 1345.88 0.173554
1 0.0285111 1800 3810.62 2470.21 1340.41 0.173554
1 0.0285111 1900 3902.95 2567.65 1335.3 0.173554
1 0.0285111 2000 3995.78 2665.26 1330.52 0.173554
1 0.0285111 2100 4089.05 2763.02 1326.03 0.173554
1 0.0285111 2200 4182.73 2860.91 1321.82 0.173554
1 0.0285111 2300 4276.77 2958.92 1317.85 0.173554
1 0.0285111 2400 4371.14 3057.05 1314.1 0.173554
1 0.0285111 2500 4465.82 3155.27 1310.54 0.173554
1 0.0285111 2600 4560.76 3253.59 1307.17 0.173554
1 0.0285111 2700 4655.94 3351.98 1303.96 0.173554
1 0.0285111 2800 4751.34 3450.45 1300.89 0.173554
1 0.0285111 2900 4846.93 3548.98 1297.95 0.173554
1 0.0285111 3000 4942.7 3647.57 1295.13 0.173554
1.05 0.029894 300 2492.46 2407.6 84.8585 0.00720339
1.05 0.029894 400 2572.23 2468.77 103.454 0.00882851
1.05 0.029894 500 2652.51 2528.16 124.356 0.0107005
1.05 0.029894 600 2733.46 2585.15 148.303 0.0130117
1.05 0.029894 700 2815.33 2639.93 175.395 0.0157578
1.05 0.029894 800 2898.38 2693.11 205.275 0.0188396
1.05 0.029894 900 2982.74 2723.45 259.288 0.0266549
1.05 0.029894 1000 3068.23 2622.42 445.805 0.0547019
1.05 0.029894 1100 3154.64 2157.67 996.976 0.129741
1.05 0.029894 1200 3242.02 2280.98 961.044 0.127053
1.05 0.029894 1300 3330.29 2050.85 1279.44 0.170376
1.05 0.029894 1400 3419.38 2125.13 1294.25 0.16278
1.05 0.029894 1500 3509.23 2169.74 1339.48 0.170593
1.05 0.029894 1600 3599.77 2266.59 1333.18 0.170593
1.05 0.029894 1700 3690.96 2363.65 1327.3 0.170593
1.05 0.029894 1800 3782.73 2460.91 1321.82 0.170593
1.05 0.029894 1900 3875.03 2558.35 1316.69 0.170593
1.05 0.029894 2000 3967.83 2655.94 1311.88 0.170593
1.05 0.029894 2100 4061.07 2753.69 1307.38 0.170593
1.05 0.029894 2200 4154.72 2851.57 1303.14 0.170593
1.05 0.029894 2300 4248.73 2949.58 1299.15 0.170593
1.05 0.029894 2400 4343.07 3047.69 1295.38 0.170593
1.05 0.029894 2500 4437.72 3145.91 1291.81 0.170593
1.05 0.029894 2600 4532.63 3244.21 1288.42 0.170593
1.05 0.029894 2700 4627.79 3342.6 1285.19 0.170593
1.05 0.029894 2800 4723.16 3441.06 1282.11 0.170593
1.05 0.029894 2900 4818.73 3539.58 1279.15 0.170593
1.05 0.029894 3000 4914.48 3638.16 1276.32 0.170593
1.1 0.031273 300 2464.87 2386.5 78.3786 0.00662398
1.1 0.031273 400 2544.79 2448.61 96.1825 0.00816896
1.1 0.031273 500 2625.2 2508.98 116.227 0.0099387
1.1 0.031273 600 2706.25 2567.32 138.926 0.0120454
1.1 0.031273 700 2788.2 2623.15 165.049 0.0146643
1.1 0.031273 800 2871.31 2677.34 193.962 0.017615
1.1 0.031273 900 2955.7 2719.78 235.92 0.0231087
1.1 0.031273 1000 3041.21 2693.5 347.71 0.0402781
1.1 0.031273 1100 3127.63 2167.25 960.385 0.125446
1.1 0.031273 1200 3215.01 2111.06 1103.96 0.14489
1.1 0.031273 1300 3303.28 2053.83 1249.45 0.167407
1.1 0.031273 1400 3392.36 2173.47 1218.89 0.15138
1.1 0.031273 1500 3482.19 2160.73 1321.46 0.167732
1.1 0.031273 1600 3572.72 2257.57 1315.15 0.167732
1.1 0.031273 1700 3663.88 2354.63 1309.25 0.167732
1.1 0.031273 1800 3755.63 2451.88 1303.75 0.167732
1.1 0.031273 1900 3847.91 2549.3 1298.61 0.167732
1.1 0.031273 2000 3940.68 2646.89 1293.79 0.167732
1.1 0.031273 2100 4033.89 2744.63 1289.26 0.167732
1.1 0.031273 2200 4127.51 2842.51 1285.01 0.167732
1.1 0.031273 2300 4221.5 2940.5 1281 0.167732
1.1 0.031273 2400 4315.82 3038.61 1277.21 0.167732
1.1 0.031273 2500 4410.43 3136.81 1273.62 0.167732
1.1 0.031273 2600 4505.32 3235.11 1270.21 0.167732
1.1 0.031273 2700 4600.46 3333.49 1266.97 0.167732
1.1 0.031273 2800 4695.81 3431.94 1263.87 0.167732
1.1 0.031273 2900 4791.36 3530.45 1260.9 0.167732
1.1 0.031273 3000 4887.08 3629.03 1258.05 0.167732
1.15 0.0326481 300 2438.01 2365.65 72.3675 0.00608988
1.15 0.0326481 400 2518.07 2428.67 89.4064 0.00755975
1.15 0.0326481 500 2598.61 2489.96 108.651 0.00924133
1.15 0.0326481 600 2679.76 2549.42 130.344 0.0112026
1.15 0.0326481 700 2761.79 2606.41 155.383 0.0136615
1.15 0.0326481 800 2844.96 2661.52 183.443 0.0165071
1.15 0.0326481 900 2929.39 2711.04 218.35 0.0205875
1.15 0.0326481 1000 3014.93 2720.02 294.911 0.0321946
1.15 0.0326481 1100 3101.36 2251.55 849.815 0.109583
1.15 0.0326481 1200 3188.75 2233.94 954.807 0.119285
1.15 0.0326481 1300 3277.01 2056.18 1220.83 0.164505
1.15 0.0326481 1400 3366.09 2095.8 1270.29 0.164884
1.15 0.0326481 1500 3455.91 2151.97 1303.94 0.164965
1.15 0.0326481 1600 3546.42 2248.81 1297.61 0.164965
1.15 0.0326481 1700 3637.57 2345.86 1291.71 0.164965
1.15 0.0326481 1800 3729.29 2443.1 1286.19 0.164965
1.15 0.0326481 1900 3821.55 2540.52 1281.03 0.164965
1.15 0.0326481 2000 3914.3 2638.1 1276.2 0.164965
1.15 0.0326481 2100 4007.49 2735.83 1271.66 0.164965
1.15 0.0326481 2200 4101.08 2833.69 1267.39 0.164965
1.15 0.0326481 2300 4195.04 2931.68 1263.36 0.164965
1.15 0.0326481 2400 4289.34 3029.78 1259.56 0.164965
1.15 0.0326481 2500 4383.93 3127.98 1255.95 0.164965
1.15 0.0326481 2600 4478.8 3226.27 1252.53 0.164965
1.15 0.0326481 2700 4573.91 3324.64 1249.27 0.164965
1.15 0.0326481 2800 4669.24 3423.08 1246.16 0.164965
1.15 0.0326481 2900 4764.77 3521.59 1243.18 0.164965
1.15 0.0326481 3000 4860.48 3620.16 1240.32 0.164965
1.2 0.0340193 300 2411.84 2345.05 66.7936 0.00559749
1.2 0.0340193 400 2492.05 2408.96 83.0903 0.00699607
1.2 0.0340193 500 2572.72 2471.14 101.574 0.00859836
1.2 0.0340193 600 2653.97 2531.58 122.394 0.010447
1.2 0.0340193 700 2736.08 2589.76 146.318 0.012734
1.2 0.0340193 800 2819.31 2645.91 173.4 0.0154441
1.2 0.0340193 900 2903.78 2699.56 204.22 0.0187
1.2 0.0340193 1000 2989.35 2727.81 261.538 0.0270303
1.2 0.0340193 1100 3075.8 2577.07 498.722 0.0617691
1.2 0.0340193 1200 3163.19 2290.04 873.153 0.105911
1.2 0.0340193 1300 3251.46 2053.86 1197.6 0.159385
1.2 0.0340193 1400 3340.53 2100.7 1239.83 0.162141
1.2 0.0340193 1500 3430.34 2143.45 1286.89 0.162287
1.2 0.0340193 1600 3520.84 2240.28 1280.56 0.162287
1.2 0.0340193 1700 3611.98 2337.33 1274.65 0.162287
1.2 0.0340193 1800 3703.68 2434.56 1269.12 0.162287
1.2 0.0340193 1900 3795.92 2531.98 1263.95 0.162287
1.2 0.0340193 2000 3888.65 2629.55 1259.1 0.162287
1.2 0.0340193 2100 3981.82 2727.27 1254.54 0.162287
1.2 0.0340193 2200 4075.39 2825.13 1250.26 0.162287
1.2 0.0340193 2300 4169.33 2923.11 1246.22 0.162287
1.2 0.0340193 2400 4263.6 3021.2 1242.4 0.162287
1.2 0.0340193 2500 4358.17 3119.39 1238.78 0.162287
1.2 0.0340193 2600 4453.02 3217.67 1235.34 0.162287
1.2 0.0340193 2700 4548.11 3316.04 1232.07 0.162287
1.2 0.0340193 2800 4643.42 3414.48 1228.95 0.162287
1.2 0.0340193 2900 4738.94 3512.98 1225.96 0.162287
1.2 0.0340193 3000 4834.63 3611.54 1223.09 0.162287
1.25 0.0353866 300 2386.33 2324.71 61.6276 0.00514364
1.25 0.0353866 400 2466.68 2389.48 77.2031 0.00647404
1.25 0.0353866 500 2547.49 2452.53 94.9548 0.00800299
1.25 0.0353866 600 2628.85 2513.87 114.979 0.00975815
1.25 0.0353866 700 2711.04 2573.29 137.745 0.0118577
1.25 0.0353866 800 2794.33 2630.39 163.932 0.0144522
1.25 0.0353866 900 2878.85 2685.7 193.145 0.0174261
1.25 0.0353866 1000 2964.44 2726.14 238.301 0.0235026
1.25 0.0353866 1100 3050.91 2678.75 372.156 0.0437591
1.25 0.0353866 1200 3138.31 2278.54 859.767 0.105907
1.25 0.0353866 1300 3226.58 2199 1027.58 0.135896
1.25 0.0353866 1400 3315.66 2103.52 1212.14 0.159473
1.25 0.0353866 1500 3405.47 2140.38 1265.09 0.159689
1.25 0.0353866 1600 3495.96 2231.99 1263.97 0.159696
1.25 0.0353866 1700 3587.08 2329.03 1258.05 0.159696
1.25 0.0353866 1800 3678.77 2426.26 1252.51 0.159696
1.25 0.0353866 1900 3771 2523.67 1247.33 0.159696
1.25 0.0353866 2000 3863.7 2621.24 1242.47 0.159696
1.25 0.0353866 2100 3956.85 2718.95 1237.9 0.159696
1.25 0.0353866 2200 4050.4 2816.8 1233.6 0.159696
1.25 0.0353866 2300 4144.32 2914.78 1229.55 0.159696
1.25 0.0353866 2400 4238.57 3012.86 1225.72 0.159696
1.25 0.0353866 2500 4333.13 3111.04 1222.08 0.159696
1.25 0.0353866 2600 4427.96 3209.32 1218.64 0.159696
1.25 0.0353866 2700 4523.03 3307.68 1215.35 0.159696
1.25 0.0353866 2800 4618.33 3406.11 1212.22 0.159696
1.25 0.0353866 2900 4713.83 3504.61 1209.22 0.159696
1.25 0.0353866 3000 4809.51 3603.17 1206.34 0.159696
1.3 0.0367501 300 2361.46 2304.62 56.8423 0.0047254
1.3 0.0367501 400 2441.96 2370.24 71.7168 0.00599037
1.3 0.0367501 500 2522.89 2434.13 88.7599 0.00745029
1.3 0.0367501 600 2604.36 2496.32 108.04 0.00912394
1.3 0.0367501 700 2686.63 2556.78 129.858 0.011087
1.3 0.0367501 800 2769.99 2614.93 155.053 0.0135382
1.3 0.0367501 900 2854.55 2671.11 183.441 0.0164082
1.3 0.0367501 1000 2940.18 2719.34 220.839 0.020966
1.3 0.0367501 1100 3026.67 2716.03 310.638 0.0345757
1.3 0.0367501 1200 3114.09 2299.17 814.917 0.0995504
1.3 0.0367501 1300 3202.36 2339.63 862.738 0.100832
1.3 0.0367501 1400 3291.44 2105.72 1185.72 0.156866
1.3 0.0367501 1500 3381.25 2198.32 1182.93 0.146587
1.3 0.0367501 1600 3471.74 2223.91 1247.82 0.157186
1.3 0.0367501 1700 3562.85 2320.95 1241.9 0.157186
1.3 0.0367501 1800 3654.53 2418.18 1236.35 0.157186
1.3 0.0367501 1900 3746.74 2515.58 1231.16 0.157186
1.3 0.0367501 2000 3839.43 2613.14 1226.29 0.157186
1.3 0.0367501 2100 3932.56 2710.86 1221.71 0.157186
1.3 0.0367501 2200 4026.1 2808.7 1217.4 0.157186
1.3 0.0367501 2300 4120 2906.67 1213.33 0.157186
1.3 0.0367501 2400 4214.23 3004.75 1209.49 0.157186
1.3 0.0367501 2500 4308.77 3102.92 1205.85 0.157186
1.3 0.0367501 2600 4403.58 3201.19 1202.39 0.157186
1.3 0.0367501 2700 4498.64 3299.55 1199.09 0.157186
1.3 0.0367501 2800 4593.92 3397.98 1195.95 0.157186
1.3 0.0367501 2900 4689.41 3496.47 1192.94 0.157186
1.3 0.0367501 3000 4785.08 3595.03 1190.05 0.157186
1.35 0.0381097 300 2337.2 2284.79 52.412 0.00434014
1.35 0.0381097 400 2417.84 2351.24 66.6057 0.00554218
1.35 0.0381097 500 2498.91 2415.95 82.9607 0.00693641
1.35 0.0381097 600 2580.49 2478.96 101.531 0.00853635
1.35 0.0381097 700 2662.85 2540.32 122.523 0.0103923
1.35 0.0381097 800 2746.26 2599.53 146.737 0.0126998
1.35 0.0381097 900 2830.88 2656.73 174.152 0.0154295
1.35 0.0381097 1000 2916.54 2709.67 206.872 0.019057
1.35 0.0381097 1100 3003.05 2730.09 272.96 0.0288177
1.35 0.0381097 1200 3090.48 2251.76 838.725 0.106808
1.35 0.0381097 1300 3178.77 2336.41 842.362 0.0992999
1.35 0.0381097 1400 3267.85 2107.34 1160.51 0.154319
1.35 0.0381097 1500 3357.67 2235.58 1122.08 0.13749
1.35 0.0381097 1600 3448.15 2216.05 1232.1 0.154753
1.35 0.0381097 1700 3539.25 2313.09 1226.17 0.154753
1.35 0.0381097 1800 3630.93 2410.31 1220.62 0.154753
1.35 0.0381097 1900 3723.12 2507.71 1215.42 0.154753
1.35 0.0381097 2000 3815.8 2605.27 1210.53 0.154753
1.35 0.0381097 2100 3908.92 2702.97 1205.95 0.154753
1.35 0.0381097 2200 4002.44 2800.81 1201.63 0.154753
1.35 0.0381097 2300 4096.33 2898.78 1197.55 0.154753
1.35 0.0381097 2400 4190.55 2996.85 1193.7 0.154753
1.35 0.0381097 2500 4285.07 3095.02 1190.04 0.154753
1.35 0.0381097 2600 4379.86 3193.29 1186.58 0.154753
1.35 0.0381097 2700 4474.91 3291.64 1183.27 0.154753
1.35 0.0381097 2800 4570.18 3390.06 1180.12 0.154753
1.35 0.0381097 2900 4665.65 3488.55 1177.1 0.154753
1.35 0.0381097 3000 4761.31 3587.1 1174.21 0.154753
end

View File

@ -0,0 +1,3 @@
equilibriumFlameT.C
EXE = $(FOAM_APPBIN)/equilibriumFlameT

View File

@ -0,0 +1,2 @@
EXE_INC = -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude
EXE_LIBS = -lspecie

View File

@ -0,0 +1,66 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
note "settings for calculating the equilibrium flame temperature";
class dictionary;
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
P 1e5;
H2
{
fuel H2;
n 0;
m 2;
}
CH4
{
fuel CH4___ANHARMONIC;
n 1;
m 4;
}
ETHYLENE
{
fuel C2H4;
n 2;
m 4;
}
PROPANE
{
fuel C3H8;
n 3;
m 8;
}
OCTANE
{
fuel C8H18(L)_isooctane;
n 8;
m 18;
}
N-HEPTANE
{
fuel C7H16_n-heptane;
n 7;
m 16;
}
$H2;
// $CH4;
// $PROPANE;
// ************************************************************************* //

View File

@ -0,0 +1,282 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
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/>.
Application
equilibriumFlameT
Description
Calculates the equilibrium flame temperature for a given fuel and
pressure for a range of unburnt gas temperatures and equivalence
ratios; the effects of dissociation on O2, H2O and CO2 are included.
\*---------------------------------------------------------------------------*/
#include "argList.H"
#include "Time.H"
#include "dictionary.H"
#include "IFstream.H"
#include "OSspecific.H"
#include "IOmanip.H"
#include "specie.H"
#include "perfectGas.H"
#include "thermo.H"
#include "janafThermo.H"
#include "absoluteEnthalpy.H"
using namespace Foam;
typedef species::thermo<janafThermo<perfectGas<specie> >, absoluteEnthalpy>
thermo;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
argList::validArgs.append("controlFile");
argList args(argc, argv);
const fileName controlFileName = args[1];
// Construct control dictionary
IFstream controlFile(controlFileName);
// Check controlFile stream is OK
if (!controlFile.good())
{
FatalErrorIn(args.executable())
<< "Cannot read file " << controlFileName
<< abort(FatalError);
}
dictionary control(controlFile);
scalar P(readScalar(control.lookup("P")));
const word fuelName(control.lookup("fuel"));
scalar n(readScalar(control.lookup("n")));
scalar m(readScalar(control.lookup("m")));
Info<< nl << "Reading thermodynamic data dictionary" << endl;
fileName thermoDataFileName(findEtcFile("thermoData/thermoData"));
// Construct control dictionary
IFstream thermoDataFile(thermoDataFileName);
// Check thermoData stream is OK
if (!thermoDataFile.good())
{
FatalErrorIn(args.executable())
<< "Cannot read file " << thermoDataFileName
<< abort(FatalError);
}
dictionary thermoData(thermoDataFile);
Info<< nl << "Reading thermodynamic data for relevant species"
<< nl << endl;
// Reactants
thermo FUEL(thermoData.subDict(fuelName));
thermo O2(thermoData.subDict("O2"));
thermo N2(thermoData.subDict("N2"));
// Products
thermo CO2(thermoData.subDict("CO2"));
thermo H2O(thermoData.subDict("H2O"));
// Product fragments
thermo CO(thermoData.subDict("CO"));
thermo H2(thermoData.subDict("H2"));
// Product dissociation reactions
thermo CO2BreakUp
(
CO2 == CO + 0.5* O2
);
thermo H2OBreakUp
(
H2O == H2 + 0.5*O2
);
// Stoiciometric number of moles of species for one mole of fuel
scalar stoicO2 = n + m/4.0;
scalar stoicN2 = (0.79/0.21)*(n + m/4.0);
scalar stoicCO2 = n;
scalar stoicH2O = m/2.0;
// Oxidant
thermo oxidant
(
"oxidant",
stoicO2*O2
+ stoicN2*N2
);
dimensionedScalar stoichiometricAirFuelMassRatio
(
"stoichiometricAirFuelMassRatio",
dimless,
(oxidant.W()*oxidant.nMoles())/FUEL.W()
);
Info<< "stoichiometricAirFuelMassRatio "
<< stoichiometricAirFuelMassRatio << ';' << endl;
Info<< "Equilibrium flame temperature data ("
<< P/1e5 << " bar)" << nl << nl
<< setw(3) << "Phi"
<< setw(12) << "ft"
<< setw(7) << "T0"
<< setw(12) << "Tad"
<< setw(12) << "Teq"
<< setw(12) << "Terror"
<< setw(20) << "O2res (mole frac)" << nl
<< endl;
// Loop over equivalence ratios
for (int i=0; i<16; i++)
{
scalar equiv = 0.6 + i*0.05;
scalar ft = 1/(1 + stoichiometricAirFuelMassRatio.value()/equiv);
// Loop over initial temperatures
for (int j=0; j<28; j++)
{
scalar T0 = 300.0 + j*100.0;
// Number of moles of species for one mole of fuel
scalar o2 = (1.0/equiv)*stoicO2;
scalar n2 = (0.79/0.21)*o2;
scalar fres = max(1.0 - 1.0/equiv, 0.0);
scalar fburnt = 1.0 - fres;
// Initial guess for number of moles of product species
// ignoring product dissociation
scalar oresInit = max(1.0/equiv - 1.0, 0.0)*stoicO2;
scalar co2Init = fburnt*stoicCO2;
scalar h2oInit = fburnt*stoicH2O;
scalar ores = oresInit;
scalar co2 = co2Init;
scalar h2o = h2oInit;
scalar co = 0.0;
scalar h2 = 0.0;
// Total number of moles in system
scalar N = fres + n2 + co2 + h2o + ores;
// Initial guess for adiabatic flame temperature
scalar adiabaticFlameTemperature =
T0
+ (fburnt/(1.0 + o2 + n2))/(1.0/(1.0 + (1.0 + 0.79/0.21)*stoicO2))
*2000.0;
scalar equilibriumFlameTemperature = adiabaticFlameTemperature;
// Iteration loop for adiabatic flame temperature
for (int j=0; j<20; j++)
{
if (j > 0)
{
co = co2*
min
(
CO2BreakUp.Kn(P, equilibriumFlameTemperature, N)
/::sqrt(max(ores, 0.001)),
1.0
);
h2 = h2o*
min
(
H2OBreakUp.Kn(P, equilibriumFlameTemperature, N)
/::sqrt(max(ores, 0.001)),
1.0
);
co2 = co2Init - co;
h2o = h2oInit - h2;
ores = oresInit + 0.5*co + 0.5*h2;
}
thermo reactants
(
FUEL + o2*O2 + n2*N2
);
thermo products
(
fres*FUEL + ores*O2 + n2*N2
+ co2*CO2 + h2o*H2O + co*CO + h2*H2
);
scalar equilibriumFlameTemperatureNew =
products.THa(reactants.Ha(P, T0), P, adiabaticFlameTemperature);
if (j==0)
{
adiabaticFlameTemperature = equilibriumFlameTemperatureNew;
}
else
{
equilibriumFlameTemperature = 0.5*
(
equilibriumFlameTemperature
+ equilibriumFlameTemperatureNew
);
}
}
Info<< setw(3) << equiv
<< setw(12) << ft
<< setw(7) << T0
<< setw(12) << adiabaticFlameTemperature
<< setw(12) << equilibriumFlameTemperature
<< setw(12)
<< adiabaticFlameTemperature - equilibriumFlameTemperature
<< setw(12) << ores/N
<< endl;
}
}
Info<< nl << "end" << endl;
return 0;
}
// ************************************************************************* //

View File

@ -0,0 +1,3 @@
mixtureAdiabaticFlameT.C
EXE = $(FOAM_APPBIN)/mixtureAdiabaticFlameT

View File

@ -0,0 +1,5 @@
EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude
EXE_LIBS = \
-lspecie

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
note "settings for calculating the adiabatic flame temperature";
class dictionary;
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
P 1e5;
T0 300;
reactants
3
(
//reactant volume fraction
H2 0.29577
O2 0.14788
N2 0.55635
)
hydrogen;
products
2
(
H2O 0.3471
N2 0.6529
)
waterVapour;
// ************************************************************************* //

View File

@ -0,0 +1,109 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
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::mixture
Description
SourceFiles
mixtureI.H
mixture.C
mixtureIO.C
\*---------------------------------------------------------------------------*/
#ifndef mixture_H
#define mixture_H
#include "error.H"
#include "List.H"
#include "substance.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class mixture Declaration
\*---------------------------------------------------------------------------*/
class mixture
:
public List<substance>
{
// Private data
word name_;
public:
// Constructors
//- Construct from Istream
mixture(Istream& is)
:
List<substance>(is),
name_(is)
{
scalar volTot = 0;
for (label i = 0; i < size(); i++)
{
volTot += operator[](i).volFrac();
}
if (volTot > 1.001 || volTot < 0.999)
{
FatalErrorIn("mixture::mixture(istream& is)")
<< "Sum of volume fractions for Mixture " << name_
<< " = " << volTot << endl
<< "Should equal one."
<< abort(FatalError);
}
}
// Member Functions
// Access
const word& name() const
{
return name_;
}
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -0,0 +1,127 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
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/>.
Application
mixtureAdiabaticFlameT
Description
Calculates the adiabatic flame temperature for a given mixture
at a given temperature.
\*---------------------------------------------------------------------------*/
#include "argList.H"
#include "dictionary.H"
#include "IFstream.H"
#include "OSspecific.H"
#include "specie.H"
#include "perfectGas.H"
#include "thermo.H"
#include "janafThermo.H"
#include "absoluteEnthalpy.H"
#include "mixture.H"
using namespace Foam;
typedef species::thermo<janafThermo<perfectGas<specie> >, absoluteEnthalpy>
thermo;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
argList::validArgs.append("controlFile");
argList args(argc, argv);
const fileName controlFileName(args[1]);
// Construct control dictionary
IFstream controlFile(controlFileName);
// Check controlFile stream is OK
if (!controlFile.good())
{
FatalErrorIn(args.executable())
<< "Cannot read file " << controlFileName
<< abort(FatalError);
}
dictionary control(controlFile);
scalar P(readScalar(control.lookup("P")));
scalar T0(readScalar(control.lookup("T0")));
mixture rMix(control.lookup("reactants"));
mixture pMix(control.lookup("products"));
Info<< nl << "Reading thermodynamic data dictionary" << endl;
fileName thermoDataFileName(findEtcFile("thermoData/thermoData"));
// Construct control dictionary
IFstream thermoDataFile(thermoDataFileName);
// Check thermoData stream is OK
if (!thermoDataFile.good())
{
FatalErrorIn(args.executable())
<< "Cannot read file " << thermoDataFileName
<< abort(FatalError);
}
dictionary thermoData(thermoDataFile);
thermo reactants
(
rMix[0].volFrac()*thermo(thermoData.subDict(rMix[0].name()))
);
for (label i = 1; i < rMix.size(); i++)
{
reactants = reactants
+ rMix[i].volFrac()*thermo(thermoData.subDict(rMix[i].name()));
}
thermo products
(
2*pMix[0].volFrac()*thermo(thermoData.subDict(pMix[0].name()))
);
for (label i = 1; i < pMix.size(); i++)
{
products = products
+ 2*pMix[i].volFrac()*thermo(thermoData.subDict(pMix[i].name()));
}
Info<< "Adiabatic flame temperature of mixture " << rMix.name() << " = "
<< products.THa(reactants.Ha(P, T0), P, 1000.0) << " K" << endl;
return 0;
}
// ************************************************************************* //

View File

@ -0,0 +1,118 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
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::substance
Description
SourceFiles
substanceI.H
substance.C
substanceIO.C
\*---------------------------------------------------------------------------*/
#ifndef substance_H
#define substance_H
#include "scalar.H"
#include "word.H"
#include "Istream.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class substance Declaration
\*---------------------------------------------------------------------------*/
class substance
{
// Private data
word name_;
scalar volFrac_;
public:
// Constructors
//- Construct null
substance()
{}
// Member Functions
// Access
const word& name() const
{
return name_;
}
scalar volFrac() const
{
return volFrac_;
}
bool operator==(const substance& s) const
{
return name_ == s.name_ && volFrac_ == s.volFrac_;
}
bool operator!=(const substance& s) const
{
return !operator==(s);
}
// IOstream Operators
friend Istream& operator>>(Istream& is, substance& s)
{
is >> s.name_ >> s.volFrac_;
return is;
}
friend Ostream& operator<<(Ostream& os, const substance& s)
{
os << s.name_ << token::SPACE << s.volFrac_;
return os;
}
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //