diff code_part1/OSTC_code_c_part2/p2_tables.romdata @ 338:b75564fb3d4b

Optimizing access to B?hlmann coefficient (speed). Define number of compartiments, stops and gases.
author JeanDo
date Tue, 17 May 2011 15:56:09 +0200
parents 1d98f30ed44e
children bdcc5a5aa8d5
line wrap: on
line diff
--- a/code_part1/OSTC_code_c_part2/p2_tables.romdata	Thu May 12 13:59:13 2011 +0200
+++ b/code_part1/OSTC_code_c_part2/p2_tables.romdata	Tue May 17 15:56:09 2011 +0200
@@ -18,236 +18,117 @@
 // HISTORY
 // 2011-01-20: jDG Cleanup addressing.
 // 2011-02-13: jDG Correct some typos.
+// 2011-05-17: jDG Optimized using interleaved arrays.
 //
 // **************************************************************
 
-rom const float buhlmann_a[32] =
-{	// Data ZH-L16C, from Bühlmann Tauchmedizin 2002, option 1a (4mn)
-//---a for N2 ----------------------------------------------------------------
-	1.2599,
-	1.0000,
-	0.8618,
-	0.7562,
-	0.6200,
-	0.5043,
-	0.4410,
-	0.4000,
-	0.3750,
-	0.3500,
-	0.3295,
-	0.3065,
-	0.2835,
-	0.2610,
-	0.2480,
-	0.2327,
-//---- a of He ---------------------------------------------------------------
-	1.7424,
-	1.3830,
-	1.1919,
-	1.0458,
-	.9220,
-	.8205,
-	.7305,
-	.6502,
-	.5950,
-	.5545,
-	.5333,
-	.5189,
-	.5181,
-	.5176,
-	.5172,
-	.5119
+rom const float buhlmann_ab[] = {
+// Data ZH-L16C, from Bühlmann Tauchmedizin 2002, option 1a (4mn)
+// a for N2    b for N2     a of He     b for He
+	1.2599,     0.5050,     1.7424,     0.4245,
+	1.0000,     0.6514,     1.3830,     0.5747,
+	0.8618,     0.7222,     1.1919,     0.6527,
+	0.7562,     0.7825,     1.0458,     0.7223,
+	0.6200,     0.8126,     0.9220,     0.7582,
+	0.5043,     0.8434,     0.8205,     0.7957,
+	0.4410,     0.8693,     0.7305,     0.8279,
+	0.4000,     0.8910,     0.6502,     0.8553,
+	0.3750,     0.9092,     0.5950,     0.8757,
+	0.3500,     0.9222,     0.5545,     0.8903,
+	0.3295,     0.9319,     0.5333,     0.8997,
+	0.3065,     0.9403,     0.5189,     0.9073,
+	0.2835,     0.9477,     0.5181,     0.9122,
+	0.2610,     0.9544,     0.5176,     0.9171,
+	0.2480,     0.9602,     0.5172,     0.9217,
+	0.2327,     0.9653,     0.5119,     0.9267
 };
 
-rom const float buhlmann_b[] =
-{
-//---- b for N2 --------------------------------------------------------------
-	0.5050,
-	0.6514,
-	0.7222,
-	0.7825,
-	0.8126,
-	0.8434,
-	0.8693,
-	0.8910,
-	0.9092,
-	0.9222,
-	0.9319,
-	0.9403,
-	0.9477,
-	0.9544,
-	0.9602,
-	0.9653,
-//---- b for He --------------------------------------------------------------
-	0.4245,
-	0.5747,
-	0.6527,
-	0.7223,
-	0.7582,
-	0.7957,
-	0.8279,
-	0.8553,
-	0.8757,
-	0.8903,
-	0.8997,
-	0.9073,
-	0.9122,
-	0.9171,
-	0.9217,
-	0.9267
-};
-
-rom const float buhlmann_ht[] =
-{
-//---- N2 --------------------------------------------------------------------
-	4,			// Compartiment half-life, in minute, for nitrogen.
-	8,
-	12,
-	18,
-	27,
-	39,
-	55,
-	77,
-	109,
-	146,
-	187,
-	239,
-	305,
-	390,
-	498,
-	635,
-//---- He --------------------------------------------------------------------
-	1.51,		// Compartiment half-life, in minute, for helium.
-	3.02,
-	4.72,
-	6.99,
-	10.21,
-	14.48,
-	20.53,
-	29.11,
-	41.20,
-	55.19,
-	70.69,
-	90.34,
-	115.29,
-	147.42,
-	188.24,
-	240.03
+rom const float buhlmann_ht[] = {
+// Compartiment half-life, in minute
+//-- N2 ---- He ---------------------------------------------------------------------
+	4,	    1.51,
+	8,      3.02,
+	12,     4.72,
+	18,     6.99,
+	27,    10.21,
+	39,    14.48,
+	55,    20.53,
+	77,    29.11,
+	109,   41.20,
+	146,   55.19,
+	187,   70.69,
+	239,   90.34,
+	305,  115.29,
+	390,  147.42,
+	498,  188.24,
+	635,  240.03
 };
 
-rom const float e2secs[] =
-{ 
-//---- N2 --------------------------------------------------------------------
-	5.75958E-03,  // result of  1 - 2^(-1/(30sec*HT))
-	2.88395E-03,
-	1.92356E-03,
-    1.28278E-03,
-    8.55371E-04,
-    5.92258E-04,
-    4.20001E-04,
-    3.00019E-04,
-    2.11949E-04,
-    1.58240E-04,
-    1.23548E-04,
-    9.66686E-05,
-    7.57509E-05,
-    5.92416E-05,
-    4.63943E-05,
-    3.63850E-05,
-//---- He --------------------------------------------------------------------
-	1.51848E-02,
-    7.62144E-03,
-    4.88315E-03,
-    3.29997E-03,
-    2.26041E-03,
-    1.59437E-03,
-    1.12479E-03,
-    7.93395E-04,
-    5.60641E-04,
-    4.18555E-04,
-    3.26795E-04,
-    2.55722E-04,
-    2.00387E-04,
-    1.56716E-04,
-    1.22734E-04,
-    9.62538E-05
+rom const float e2secs[] = {
+// result of  1 - 2^(-1/(30sec*HT))
+//---- N2 ------------- He ------------
+	5.75958E-03,    1.51848E-02,  
+	2.88395E-03,    7.62144E-03,
+	1.92356E-03,    4.88315E-03,
+    1.28278E-03,    3.29997E-03,
+    8.55371E-04,    2.26041E-03,
+    5.92258E-04,    1.59437E-03,
+    4.20001E-04,    1.12479E-03,
+    3.00019E-04,    7.93395E-04,
+    2.11949E-04,    5.60641E-04,
+    1.58240E-04,    4.18555E-04,
+    1.23548E-04,    3.26795E-04,
+    9.66686E-05,    2.55722E-04,
+    7.57509E-05,    2.00387E-04,
+    5.92416E-05,    1.56716E-04,
+    4.63943E-05,    1.22734E-04,
+    3.63850E-05,    9.62538E-05
+//-------------------------------------
 };
 
-rom const float e1min[] =
-{
-//---- N2 --------------------------------------------------------------------
-	1.59104E-01,     	// Integration constant for 1 minute,
-    8.29960E-02,        // Ie. 1- 2^(-1/HT)
-    5.61257E-02,
-    3.77762E-02,
-    2.53454E-02,
-    1.76160E-02,
-    1.25236E-02,
-    8.96152E-03,
-    6.33897E-03,
-    4.73633E-03,
-    3.69981E-03,
-    2.89600E-03,
-    2.27003E-03,
-    1.77572E-03,
-    1.39089E-03,
-    1.09097E-03,
-//---- e 1min He -------------------------------------------------------------
-	3.68109E-01,
-	2.05084E-01,
-    1.36579E-01,
-    9.44046E-02,
-    6.56359E-02,
-    4.67416E-02,
-    3.31991E-02,
-    2.35301E-02,
-    1.66832E-02,
-    1.24808E-02,
-    9.75753E-03,
-    7.64329E-03,
-    5.99417E-03,
-    4.69082E-03,
-    3.67548E-03,
-    2.88359E-03
+rom const float e1min[] = {
+// Integration constant for 1 minute,
+// Ie. 1- 2^(-1/HT)
+//----- N2 --------- e 1min He --------
+	1.59104E-01,    3.68109E-01,  	
+    8.29960E-02,   	2.05084E-01,     
+    5.61257E-02,    1.36579E-01,
+    3.77762E-02,    9.44046E-02,
+    2.53454E-02,    6.56359E-02,
+    1.76160E-02,    4.67416E-02,
+    1.25236E-02,    3.31991E-02,
+    8.96152E-03,    2.35301E-02,
+    6.33897E-03,    1.66832E-02,
+    4.73633E-03,    1.24808E-02,
+    3.69981E-03,    9.75753E-03,
+    2.89600E-03,    7.64329E-03,
+    2.27003E-03,    5.99417E-03,
+    1.77572E-03,    4.69082E-03,
+    1.39089E-03,    3.67548E-03,
+    1.09097E-03,    2.88359E-03
+//-------------------------------------
 };
 
-rom const float e10min[] =
-{
-//---- N2 --------------------------------------------------------------------
+rom const float e10min[] = {
 // The 10 min Value in float notation:
 //  result of 1 - 2^(-10/ht)
-	8.23223E-01,			// 1 - 2^(-10/4.0)
-	5.79552E-01,
-    4.38769E-01,
-    3.19605E-01,
-    2.26416E-01,
-    1.62832E-01,
-    1.18409E-01,
-    8.60863E-02,
-    6.16117E-02,
-    4.63665E-02,
-    3.63881E-02,
-    2.85855E-02,
-    2.24698E-02,
-    1.76160E-02,
-    1.38222E-02,
-    1.08563E-02,
-//---- He --------------------------------------------------------------------
-	9.89851E-01,
-	8.99258E-01,
-    7.69737E-01,
-    6.29027E-01,
-    4.92821E-01,
-    3.80407E-01,
-    2.86538E-01,
-    2.11886E-01,
-    1.54849E-01,
-    1.18026E-01,
-    9.34005E-02,
-    7.38569E-02,
-    5.83504E-02,
-    4.59303E-02,
-    3.61528E-02,
-    2.84646E-02
+//---- N2 -------------- He -----------
+	8.23223E-01,    9.89851E-01,  
+	5.79552E-01,  	8.99258E-01,
+    4.38769E-01,    7.69737E-01,
+    3.19605E-01,    6.29027E-01,
+    2.26416E-01,    4.92821E-01,
+    1.62832E-01,    3.80407E-01,
+    1.18409E-01,    2.86538E-01,
+    8.60863E-02,    2.11886E-01,
+    6.16117E-02,    1.54849E-01,
+    4.63665E-02,    1.18026E-01,
+    3.63881E-02,    9.34005E-02,
+    2.85855E-02,    7.38569E-02,
+    2.24698E-02,    5.83504E-02,
+    1.76160E-02,    4.59303E-02,
+    1.38222E-02,    3.61528E-02,
+    1.08563E-02,    2.84646E-02
+//-------------------------------------
 };