Porting to alc_barometric_pressure() PHP was easy:
PHP Code:
<?php
/* =============================================================================== */
/* SUBROUTINE CALC_BAROMETRIC_PRESSURE */
/* Purpose: This sub calculates barometric pressure at altitude based on the */
/* publication "U.S. Standard Atmosphere, 1976", U.S. Government Printing */
/* Office, Washington, D.C. The source for this code is a Fortran 90 program */
/* written by Ralph L. Carmichael (retired NASA researcher) and endorsed by */
/* the National Geophysical Data Center of the National Oceanic and */
/* Atmospheric Administration. It is available for download free from */
/* Public Domain Aeronautical Software at: http://www.pdas.com/atmos.htm */
/* =============================================================================== */
/* INITIAL PORT TO PHP VERSION 0.1 */
/* https://www.unix.com/whats-your-mind/185211-port-vpm-decompression-algorithm-php-then-dive-computer.html */
/* =============================================================================== */
function calc_barometric_pressure($altitude, $options)
{
$radius_of_earth = 6369.0; /* ki */
$acceleration_of_operation = 9.80665; /* meters/ */
$molecular_weight_of_air = 28.9644;
$gas_constant_r = 8.31432; /* Joules/mol*de */
$temp_at_sea_level = 288.15; /* degree */
$pressure_at_sea_level_fsw = 33.0; /* at sea level (Standard Atm */
/* feet of seawater based on 1 */
$pressure_at_sea_level_msw = 10.0; /* at sea level (European */
/* meters of seawater based on 1 */
$temp_gradient = -6.5; /* change in geopotential a */
/* valid for first layer of at */
/* up to 11 kilometers or 36, */
/* Change in Temp deg Kel */
$gmr_factor =
$acceleration_of_operation * $molecular_weight_of_air / $gas_constant_r;
if ($options['units_equal_fsw']) {
$altitude_feet = $altitude;
$altitude_kilometers = $altitude_feet / 3280.839895;
$pressure_at_sea_level = $pressure_at_sea_level_fsw;
}
else { /* Default to meters */
$altitude_meters = $altitude;
$altitude_kilometers = $altitude_meters / 1000;
$pressure_at_sea_level = $pressure_at_sea_level_msw;
}
$geopotential_altitude =
$altitude_kilometers * $radius_of_earth / ($altitude_kilometers + $radius_of_earth);
$temp_at_geopotential_altitude =
$temp_at_sea_level + $temp_gradient * $geopotential_altitude;
$barometric_pressure =
$pressure_at_sea_level *
exp(log($temp_at_sea_level / $temp_at_geopotential_altitude) * $gmr_factor / $temp_gradient);
return $barometric_pressure;
} /* calc_barometric_pressure */
?>
Quote:
WARNING: Breathing compressed gas underwater, whether with conventional open-circuit scuba or closed-circuit rebreathers, is a potentially dangerous activity that requires specialized training. Breathing gas mixtures other than air underwater and especially using rebreather technology underwater, are activities which require considerable specialized training and certification. No one should ever attempt these activities without professional training. The information and software related to scuba diving, decompression theory and software code in this forum is provided for informational purposes only; and this information does not constitute adequate or proper training!