Source code for py_atmosphere.temp_conversion

[docs] def temp_conversion(properties, property_to_change, desired_unit): """ Convert the units of a selected atmospheric property. Parameters: ------------ properties : List A three-element list that describes the inputed altitude (km), along with the temperature (Celsius) and pressure (KiloPascal) of the air. This is typically the output of `py_atmosphere` function. property_to_change : str Selected property for which units need to be changed. Valid inputs are: "altitude", "temperature", "pressure" desired_unit : str The desired units for the selected property. Valid units for temperature: C (Celsius), F (Fahrenheit), K (Kelvin), R (Rankine) Valid units for altitude: m (meters), km (kilometers), ft (feet), miles (miles) Valid units for pressure: bar (bar), kPa (KiloPascal), psia (Pounds over square inch) Returns: --------- list A three-element list with the selected property converted to the specified units. Examples ---------- >>> temp_conversion([0.0, 15.04, 101325], "temperature", "K") [0.0, 288.19, 101325] """ #Initialize list output_temp = properties[1] output_alt = properties[0] output_p = properties[2] # Check if property is 'temperature' if property_to_change == "temperature": temp_celsius = properties[1] # Temperature in Celsius if desired_unit == "F": output_temp = (temp_celsius * 9/5) + 32 # Convert Celsius to Fahrenheit elif desired_unit == "K": output_temp = temp_celsius + 273.15 # Convert Celsius to Kelvin elif desired_unit == "R": output_temp = (temp_celsius + 273.15) * 9/5 # Convert Celsius to Rankine elif desired_unit == "C": # If the desired unit is Celsius, no change needed pass else: raise ValueError("Invalid desired unit for temperature. Valid units are: 'C', 'F', 'K', 'R'.") # Check if property is 'altitude' elif property_to_change == "altitude": altitude_m = properties[0] # Altitude in meters if desired_unit == "m": # If the desired unit is meters, no change needed pass elif desired_unit == "km": output_alt = altitude_m / 1000 # Convert meters to kilometers elif desired_unit == "ft": output_alt = altitude_m * 3.28084 # Convert meters to feet elif desired_unit == "miles": output_alt = altitude_m * 0.000621371 # Convert meters to miles else: raise ValueError("Invalid desired unit for altitude. Valid units are: 'm', 'km', 'ft', 'miles'.") # Check if property is 'pressure' elif property_to_change == "pressure": pressure_pa = properties[2] # Pressure in Pascal if desired_unit == "kPa": # If the desired unit is KiloPascal, no change needed pass elif desired_unit == "bar": output_p = pressure_pa / 100 # Convert KiloPascal to bar elif desired_unit == "psia": output_p = pressure_pa * 0.1450377 # Convert KiloPascal to psia else: raise ValueError("Invalid desired unit for pressure. Valid units are: 'kPa', 'bar', 'psia'.") else: raise ValueError("Invalid property. Valid properties are: 'altitude', 'temperature', 'pressure'.") return [output_alt, output_temp, output_p]