view code_part1/OSTC_code_c_part2/p2_tables.romdata @ 167:cb055a7d75f3

+ Use overlay local vars. + Make all private functions static. + Merge calc_tissue 2sec and 1min + Merge sim_tissue 1min and 10min + Expose basic display utilities for c-code. + Prepare stand-alone utilities for p2_main.c testing platform. + New c utility: int read_custom_function(cf#)
author JeanDo
date Mon, 24 Jan 2011 23:31:57 +0100
parents 8b5b848db4cd
children f15e804ff67f
line wrap: on
line source

// **************************************************************
// OSTC - diving computer code
// Copyright (C) 2008 HeinrichsWeikamp GbR
//
//    This program 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.
//
//    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
//
// HISTORY
// 2011-01-20; jDG Cleanup addressing.
//
// **************************************************************

rom const float buhlmann_a[32] =
{	// ??? Data ZH-L16A, from Tauchmedizin 1995 ???
//---a for N2 ----------------------------------------------------------------
	1.2599,		/// WARNING ZH-L16c-1990 gives different values: 1.3318
	1.0000,		/// ... 1.0048
	0.8618,		/// ... 0.8653
	0.7562,		/// ... 0.7520
	0.6200,		/// ... 0.6194
	0.5043,		/// ... 0.5043
	0.4410,		/// ... 0.4396
	0.4000,		/// ... 0.3977
	0.3750,		/// ... 0.3701
	0.3500,		/// ... 0.3456
	0.3295,		/// ... 0.3269
	0.3065,		/// ... 0.3065
	0.2835,		/// ... 0.2848
	0.2610,		/// ... 0.2622
	0.2480,		/// ... 0.2486
	0.2327,		/// ... 0.2341
//---- a of He ---------------------------------------------------------------
	1.7424,		/// ... 1,7443
	1.3830,		/// ... 1,3800
	1.1919,		/// ... 1,1879
	1.0458,		/// ... 1,0455
	.9220,		/// ... 0,9211
	.8205,		/// ... 0,8232
	.7305,		/// ... 0,7321
	.6502,		/// ... 0,6508
	.5950,		/// ... 0,5981
	.5545,		/// ... 0,5568
	.5333,		/// ... 0,5285
	.5189,		/// ... 0,5178
	.5181,		/// ... 0,5137
	.5176,		/// ... 0,5196
	.5172,		/// ... 0,5150
	.5119		/// ... 0,5109
};

rom const float buhlmann_b[] =
{
//---- b for N2 --------------------------------------------------------------
	0.5050, 	/// WARNING ZH-L16c gives a different value: 0.5241
	0.6514,		/// All the other values matches ZH-L16c-1990
	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 length, 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 e2secs[] =
{ 
//---- N2 --------------------------------------------------------------------
	5.7596E-03,  // und zwar  1 - 2^(-2sec/HT)
	2.8839E-03,
	1.8467e-03,
	1.2481e-03,
	8.5537E-04,
	6.0308E-04,
	4.2541E-04, 
	3.0002E-04,
	2.1195E-04,
	1.5824E-04,
	1.2355E-04,
	9.6669E-05,
	7.5751E-05,
	5.92E-05,
	4.64E-05,
	3.64E-05,
//---- He --------------------------------------------------------------------
	0.01518479275,
	0.007621439546,
	0.004883145696,
	0.003299965996,
	0.002260409686,
	0.00159437032,
	0.001124788578,
	0.0007933953673,
	0.0005606414716,
	0.0004185553604,
	0.0003267948866,
	0.0002557222899,
	0.0002003867723,
	0.0001567161546,
	0.0001227342122,
	9.625377675E-5
};

rom const float e1min[] =
{
//---- N2 --------------------------------------------------------------------
	0.1591036,			// Integration constant for 1 minute,
	0.08299596,			// ie. 1 - 2^(-1/ht)
	0.053942353,
	0.036774196,
	0.02534539,
	0.017935055,
	0.012684012,
	8.961515534E-3,
	6.338971845E-3,
	4.73633146E-3,	
	3.699808187E-3,
	2.89599589E-3,
	2.270033275E-3,
	1.775722E-3,
	1.390893611E-3,
	1.090974815E-3,
//---- e 1min He -------------------------------------------------------------
	0.368108684,
	0.2050840824,
	0.1365792957,
	0.09440463235,
	0.06563586265,
	0.04674161154,
	0.03319905126,
	0.02353005571,
	0.0166832282,
	0.01248075064,
	0.009757532198,
	0.007643290133,
	0.005994168431,
	0.004690816669,
	0.003675481163,
	0.002883586737
};

rom const float e10min[] =
{
//---- N2 --------------------------------------------------------------------
// Die 10 min Werte in float Notation:
//  und zwar 1 - 2^(-10/ht)
	0.823223,			// 1 - 2^(-10/4.0)
	0.579552,
	0.425651,
	0.312487,
	0.226416,
	0.165547,
	0.11984,
	0.0860863,
	0.0616117,
	0.0463665,
	0.0363881,
	0.0285855,
	0.0224698,
	0.017616,
	0.0138222,
	0.0108563,
//---- He --------------------------------------------------------------------
	0.989851,
	0.899258,
	0.769737,
	0.629027,
	0.492821,
	0.380407,
	0.286538,
	0.211886,
	0.154849,
	0.118026,
	0.0934005,
	0.0738569,
	0.0583504,
	0.0459303,
	0.0361528,
	0.0284646,
};