Mercurial > public > ostc4
view Small_CPU/Inc/vpm.h @ 855:012f94ec2fe0 Evo_2_23
Redefine Deco gas creation function:
The old function needed a lot of iteration to get through all gases. With the change to define the first gas in PSCR mode as deco gas for calculation (because the actual gas could be not breathable close to surface => deco planing would be based on > 80% nitrogen increasing the deco prediction higher than necessary) the need showed up to somehow define the first gas as deco gas. Instead of manipulating the gas attribute the deco list creation function was changed to create the list based on gas line pointer information instead of index lists. The new function needs less iterations for sorting and is more flexible regarding gas handling.
author | Ideenmodellierer |
---|---|
date | Mon, 18 Mar 2024 21:52:25 +0100 |
parents | 5f11787b4f42 |
children |
line wrap: on
line source
/* * vpm.h * * Created: 23.04.2013 11:38:19 * Author: produktion04 */ #ifndef VPM_H #define VPM_H #include "data_central.h" extern long vpm_time_calc_begin; enum DECOLIST{DECOSTOPS,FUTURESTOPS,BAILOUTSTOPS,NULLZEIT,OFF = -1}; // order is important!! enum VPM_CALC_STATUS{CALC_END, CALC_BEGIN, CALC_CRITICAL, CALC_FINAL_DECO, CALC_NULLZEIT }; //int calc_crushing_pressure(float *starting_depth, float *ending_depth, float *rate); //void vpm_check_calc(unsigned short* stoplist); //void vpm_init(void); //_Bool vpm_crush(void); void vpm_reset_variables(void); _Bool vpm_build_variables_from_file(unsigned long in_sdram_start); int vpm_store_variables_in_sdram_for_transfer(unsigned long in_sdram_start); void vpm_calc_crushing_pressure(float starting_ambient_pressure, float ending_ambient_pressure, float rate); void vpm_deco_plan(unsigned short divetime,unsigned short * divetime_first_stop, float* first_stop_depth); float schreiner_equation__2(float *initial_inspired_gas_pressure,float *rate_change_insp_gas_pressure,float *interval_time_minutes, const float *gas_time_constant,float *initial_gas_pressure); int vpm_calc(SLifeData* pINPUT, SVpm* pVPM, SDecoinfo* pDECOINFO); void vpm_saturation_after_ascent(SLifeData* input); extern const float helium_time_constant[16]; extern const float nitrogen_time_constant[16]; #endif /* VPM_H */