diff options
| author | Bdale Garbee <bdale@gag.com> | 2014-08-14 17:08:36 -0600 |
|---|---|---|
| committer | Bdale Garbee <bdale@gag.com> | 2014-08-14 17:08:36 -0600 |
| commit | 4828be0ca5252ac9cd6061209385dcd6c4c57965 (patch) | |
| tree | dde4f86d893d280fbeef284120d6f967cdbfeaa5 /ao-tools/lib/cc-convert.c | |
| parent | 17e894d1b65231d07df009bc4e8ca92864ccf790 (diff) | |
| parent | 165b7dcf6fba90b15ff32b891cba4b9111c1965b (diff) | |
Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
Diffstat (limited to 'ao-tools/lib/cc-convert.c')
| -rw-r--r-- | ao-tools/lib/cc-convert.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/ao-tools/lib/cc-convert.c b/ao-tools/lib/cc-convert.c index 8d6876a0..b82dd778 100644 --- a/ao-tools/lib/cc-convert.c +++ b/ao-tools/lib/cc-convert.c @@ -108,6 +108,29 @@ cc_altitude_to_pressure(double altitude) return pressure; } +double +cc_altitude_to_temperature(double altitude) +{ + + double base_temperature = LAYER0_BASE_TEMPERATURE; + double temperature; + + int layer_number; /* identifies layer in the atmosphere */ + double delta_z; /* difference between two altitudes */ + + /* calculate the base temperature for the atmospheric layer + associated with the inputted altitude */ + for(layer_number = 0; layer_number < NUMBER_OF_LAYERS - 1 && altitude > base_altitude[layer_number + 1]; layer_number++) { + delta_z = base_altitude[layer_number + 1] - base_altitude[layer_number]; + base_temperature += delta_z * lapse_rate[layer_number]; + } + + /* calculate the pressure at the inputted altitude */ + delta_z = altitude - base_altitude[layer_number]; + temperature = base_temperature + lapse_rate[layer_number] * delta_z; + + return temperature - 273.15; +} /* outputs the altitude associated with the given pressure. the altitude returned is measured with respect to the mean sea level */ |
