surface-tension-calculator/lib/scripts/juszas_equation.dart

467 lines
6.9 KiB
Dart

// ========== Juza's equation for 1/H ==========
import 'dart:math';
double HJuza(double _S_diamRatio, double _K) {
// LowerS, UpperS, Ke, Kex, Kep, K3, K2, K1, K0
// 0.82 - 0.999
List<List<double>> Coefficient8 = [
[
0.82,
0.83,
1791452.8,
533.85850,
170.55837,
-81676.15812,
202187.89690,
-166836.27680,
45888.22973,
],
[
0.83,
0.84,
189.07578,
272.52455,
72.730022,
-19963.60152,
50019.79936,
-41775.38186,
11629.85610,
],
[
0.84,
0.85,
7.1549709,
165.45945,
35.285687,
-6944.66848,
17609.43832,
-14883.84379,
4193.34232,
],
[
0.85,
0.87,
1.1496269,
95.066407,
12.600013,
-2158.91585,
5571.60176,
-4792.82331,
1374.26272,
],
[
0.87,
0.895,
0.47873040,
50.357240,
0.089787883,
-567.76534,
1503.51828,
-1327.11835,
390.45562,
],
[
0.895,
0.93,
0.35255000,
25.498893,
-5.4176608,
-165.99710,
454.58851,
-414.93772,
126.23908,
],
[
0.93,
0.97,
0.32002037,
6.8474560,
-8.0901766,
-102.84970,
293.25377,
-278.69176,
88.27639,
],
[
0.97,
0.99,
0.30845061,
-32.343947,
-10.455428,
-475.69091,
1398.86173,
-1371.17931,
448.00538,
],
[
0.99,
0.999,
0.30110729,
-333.50440,
-15.711260,
-11334.69334,
33822.93507,
-33642.61426,
11154.37157,
],
];
// 0.635 - 0.997
List<List<double>> Coefficient9 = [
[
0.635,
0.645,
58249804,
119.64583,
89.483167,
-28072.11478,
53918.28040,
-34519.94034,
7366.77050,
],
[
0.645,
0.66,
5100.2910,
70.920100,
46.811007,
-9051.10879,
17726.62108,
-15572.21470,
2518.10214,
],
[
0.66,
0.685,
19.518159,
38.509198,
19.951285,
-2338.00251,
4719.64936,
-3175.58038,
712.17229,
],
[
0.685,
0.72,
1.3823760,
20.055606,
5.9746092,
-522.67397,
1102.26575,
-774.75596,
181.49582,
],
[
0.72,
0.77,
0.49074291,
10.484929,
-0.31885445,
-111.99730,
250.54286,
-186.78287,
46.40581,
],
[
0.77,
0.84,
0.34607161,
5.4063548,
-2.9788620,
-24.21100,
58.53312,
-47.15244,
12.65668,
],
[
0.84,
0.93,
0.31342828,
2.1140055,
-4.1151543,
-9.16969,
24.37544,
-21.58758,
6.36954,
],
[
0.93,
0.98,
0.30397966,
-3.6334200,
-4.9395699,
-29.80626,
85.43510,
-81.61766,
25.98669,
],
[
0.98,
0.997,
0.30007321,
-34.095653,
-6.1531194,
-434.11439,
1287.65238,
-1273.10762,
419.56923,
],
];
// 0.17 - 0.983
List<List<double>> Coefficient10 = [
[
0.17,
0.30,
0.31081678,
-0.086278355,
-2.7023254,
-13.95071,
10.30398,
-2.49619,
0.19805,
],
[
0.30,
0.45,
0.30636442,
-0.094871613,
-2.7246428,
0.38766,
-0.44128,
0.16613,
-0.02068,
],
[
0.45,
0.68,
0.31156188,
-0.063734909,
-2.6789763,
0.41537,
-0.71168,
0.40321,
-0.07551,
],
[
0.68,
0.90,
0.31195754,
-0.092720991,
-2.6863859,
-0.44813,
1.06637,
-0.84260,
0.22106,
],
[
0.90,
0.983,
0.30712046,
-1.5619311,
-2.9809169,
-5.74538,
16.23781,
-15.29128,
4.79808,
],
];
// 0.06 - 0.953
List<List<double>> Coefficient11 = [
[
0.06,
0.08,
1.6030433,
0.043380701,
-0.15208454,
-1341.32950,
282.27311,
-19.71010,
0.45664,
],
[
0.08,
0.13,
0.85491410,
-0.056761738,
-0.65372414,
-160.97221,
50.59168,
-5.23625,
0.17842,
],
[
0.13,
0.20,
0.57401485,
-0.15265815,
-1.0443069,
-42.79943,
21.22139,
-3.47357,
0.18765,
],
[
0.20,
0.30,
0.41622542,
-0.27871823,
-1.4464670,
-14.08741,
10.58863,
-2.63159,
0.21621,
],
[
0.30,
0.44,
0.33587066,
-0.42674255,
-1.8022482,
-3.22540,
3.58964,
-1.32194,
0.16106,
],
[
0.44,
0.75,
0.31504207,
-0.51197565,
-1.9499037,
0.07609,
-0.13681,
0.08090,
-0.01572,
],
[
0.75,
0.953,
0.31658938,
-0.49808609,
-1.9290368,
-0.24018,
0.61450,
-0.52258,
0.14771,
],
];
// 0.10 - 0.902
List<List<double>> Coefficient12 = [
[
0.10,
0.12,
103.56308,
1.2019976,
4.4869062,
-6625.95443,
2292.46751,
-264.28560,
10.15218,
],
[
0.12,
0.14,
2.1585254,
0.34129627,
0.83653215,
-742.15388,
289.52312,
-37.59979,
1.62555,
],
[
0.14,
0.19,
0.65654048,
0.031877859,
-0.37693028,
-66.92134,
33.18430,
-5.45788,
0.29773,
],
[
0.19,
0.27,
0.45076908,
-0.10378254,
-0.82836350,
-10.66154,
7.36263,
-1.68453,
0.12768,
],
[
0.27,
0.40,
0.37085833,
-0.21965481,
-1.1287016,
-2.87493,
2.88810,
-0.95966,
0.10546,
],
[
0.40,
0.55,
0.33605594,
-0.33317467,
-1.3397591,
-0.70394,
1.00402,
-0.47492,
0.07450,
],
[
0.55,
0.902,
0.32790337,
-0.39597877,
-1.4180887,
0.00490,
-0.01070,
0.00769,
-0.00182,
],
];
List<List<double>> Coeff = [];
if (_K == 0.8) {
Coeff = Coefficient8;
}
if (_K == 0.9) {
Coeff = Coefficient9;
}
if (_K == 1.0) {
Coeff = Coefficient10;
}
if (_K == 1.1) {
Coeff = Coefficient11;
}
if (_K == 1.2) {
Coeff = Coefficient12;
}
// Juza 1996/1997 Equation: 8
for (var Entry_k in Coeff) {
if (Entry_k[0] <= _S_diamRatio && _S_diamRatio <= Entry_k[1]) {
double HInv =
Entry_k[2] *
pow(_S_diamRatio, (Entry_k[3] * log(_S_diamRatio) + Entry_k[4])) +
Entry_k[5] * pow(_S_diamRatio, 3.0) +
Entry_k[6] * pow(_S_diamRatio, 2.0) +
Entry_k[7] * _S_diamRatio +
Entry_k[8];
return HInv;
}
}
return 0;
}