summaryrefslogtreecommitdiff
path: root/ao-tools/lib/cc-convert.c
diff options
context:
space:
mode:
authorBdale Garbee <bdale@gag.com>2014-09-09 23:28:39 -0600
committerBdale Garbee <bdale@gag.com>2014-09-09 23:28:39 -0600
commit16405fd3eb6f82ef3a709e3ed30fc48faef7b547 (patch)
treec111819b3ba0c9357af41c81b798326b9df7adad /ao-tools/lib/cc-convert.c
parent5a2f6ed6210844f7284fbf9f7ecba68c8a14fa52 (diff)
parent28bd5057252e61bc5b1a35a00bc1f9fdfde097f7 (diff)
Merge branch 'branch-1.5' into debian
Conflicts: ChangeLog Releasing altosui/Instdrv/NSIS/Includes/java.nsh altosui/altos-windows.nsi.in configure.ac doc/Makefile doc/altusmetrum.xsl micropeak/micropeak-windows.nsi.in telegps/telegps-windows.nsi.in
Diffstat (limited to 'ao-tools/lib/cc-convert.c')
-rw-r--r--ao-tools/lib/cc-convert.c23
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 */