Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / engine / include / StCorr.H
blobc3bdc5771f76dad77aa156605d6cdec82a4397fb
1     dimensionedScalar StCorr("StCorr", dimless, 1.0);
3     if (ign.igniting())
4     {
5         // Calculate volume of ignition kernel
6         dimensionedScalar Vk("Vk", dimVolume, gSum(c*mesh.V().field()));
7         dimensionedScalar Ak("Ak", dimArea, 0.0);
9         if (Vk.value() > SMALL)
10         {
11             // Calculate kernel area from its volume
12             // and the dimensionality of the case
14             switch(mesh.nGeometricD())
15             {
16                 case 3:
17                 {
18                     // Assume it is part-spherical
19                     scalar sphereFraction
20                     (
21                         readScalar
22                         (
23                             combustionProperties.lookup
24                             (
25                                 "ignitionSphereFraction"
26                             )
27                         )
28                     );
30                     Ak = sphereFraction*4.0*constant::mathematical::pi
31                        *pow
32                         (
33                             3.0*Vk
34                            /(sphereFraction*4.0*constant::mathematical::pi),
35                             2.0/3.0
36                         );
37                 }
38                 break;
40                 case 2:
41                 {
42                     // Assume it is part-circular
43                     dimensionedScalar thickness
44                     (
45                         combustionProperties.lookup("ignitionThickness")
46                     );
48                     scalar circleFraction
49                     (
50                         readScalar
51                         (
52                             combustionProperties.lookup
53                             (
54                                 "ignitionCircleFraction"
55                             )
56                         )
57                     );
59                     Ak = circleFraction*constant::mathematical::pi*thickness
60                        *sqrt
61                         (
62                             4.0*Vk
63                            /(
64                                circleFraction
65                               *thickness
66                               *constant::mathematical::pi
67                             )
68                         );
69                 }
70                 break;
72                 case 1:
73                     // Assume it is plane or two planes
74                     Ak = dimensionedScalar
75                     (
76                         combustionProperties.lookup("ignitionKernelArea")
77                     );
78                 break;
79             }
81             // Calculate kernel area from b field consistent with the
82             // discretisation of the b equation.
83             const volScalarField mgb
84             (
85                 fvc::div(nf, b, "div(phiSt,b)") - b*fvc::div(nf) + dMgb
86             );
87             dimensionedScalar AkEst = gSum(mgb*mesh.V().field());
89             StCorr.value() = max(min((Ak/AkEst).value(), 10.0), 1.0);
91             Info<< "StCorr = " << StCorr.value() << endl;
92         }
93     }