summaryrefslogtreecommitdiff
path: root/ao-tools/lib/cc-convert.c
diff options
context:
space:
mode:
authorBdale Garbee <bdale@gag.com>2014-08-14 17:08:36 -0600
committerBdale Garbee <bdale@gag.com>2014-08-14 17:08:36 -0600
commit4828be0ca5252ac9cd6061209385dcd6c4c57965 (patch)
treedde4f86d893d280fbeef284120d6f967cdbfeaa5 /ao-tools/lib/cc-convert.c
parent17e894d1b65231d07df009bc4e8ca92864ccf790 (diff)
parent165b7dcf6fba90b15ff32b891cba4b9111c1965b (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.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 */