Class: EngineTune::Calculations
- Inherits:
-
Object
- Object
- EngineTune::Calculations
- Defined in:
- lib/engine-tune/calculations.rb
Overview
After getting instantiated with a set of meterological and geological observations, a Calculations object can determine a number of calculations related to engine efficiency.
Constant Summary collapse
- OBSERVATION_ATTRS =
Names of observations required for calculations to compute
[:temperature, :dew_point, :altitude, :altimeter]
Instance Attribute Summary collapse
-
#metric ⇒ Object
writeonly
Sets the attribute metric.
Instance Method Summary collapse
-
#==(object) ⇒ Object
Objects are equal if their observations are identical.
- #absolute_pressure ⇒ Object
- #density ⇒ Object
- #density_altitude ⇒ Object
- #dyno_correction_factor ⇒ Object
-
#english? ⇒ Boolean
Returns true if calculations should be returned using the English system.
-
#initialize(observations) ⇒ Calculations
constructor
Instantiates a new instance with a hash of observations that must include temperature, dew_point, altimeter and altitude.
-
#metric? ⇒ Boolean
Returns true if calculations should be returned using the metric system.
-
#observations ⇒ Object
Returns a hash of observations for this set of calculations.
- #relative_density ⇒ Object
- #relative_horsepower ⇒ Object
- #relative_humidity ⇒ Object
- #vapor_pressure ⇒ Object
- #virtual_temperature ⇒ Object
Constructor Details
#initialize(observations) ⇒ Calculations
Instantiates a new instance with a hash of observations that must include temperature, dew_point, altimeter and altitude. These observations are the only required data to calculate all the engine tuning metrics exposed in this object.
21 22 23 24 |
# File 'lib/engine-tune/calculations.rb', line 21 def initialize(observations) observations.each { |method, value| send("#{method}=", value) } @metric = true end |
Instance Attribute Details
#metric=(value) ⇒ Object (writeonly)
Sets the attribute metric
14 15 16 |
# File 'lib/engine-tune/calculations.rb', line 14 def metric=(value) @metric = value end |
Instance Method Details
#==(object) ⇒ Object
Objects are equal if their observations are identical
29 30 31 |
# File 'lib/engine-tune/calculations.rb', line 29 def ==(object) self.observations == object.observations end |
#absolute_pressure ⇒ Object
67 68 69 70 71 |
# File 'lib/engine-tune/calculations.rb', line 67 def absolute_pressure @absolute_air_pressure ||= EngineTune::Calculator.absolute_pressure(altimeter, altitude) @absolute_air_pressure_inches ||= EngineTune::Calculator.(@absolute_air_pressure) metric? ? @absolute_air_pressure : @absolute_air_pressure_inches end |
#density ⇒ Object
73 74 75 |
# File 'lib/engine-tune/calculations.rb', line 73 def density @density ||= EngineTune::Calculator.density(altimeter, altitude, dew_point, temperature) end |
#density_altitude ⇒ Object
91 92 93 94 95 |
# File 'lib/engine-tune/calculations.rb', line 91 def density_altitude @density_altitude ||= EngineTune::Calculator.density_altitude(altimeter, altitude, dew_point, temperature) @density_altitude_feet ||= EngineTune::Calculator.meters_to_feet(@density_altitude) metric? ? @density_altitude : @density_altitude_feet end |
#dyno_correction_factor ⇒ Object
81 82 83 |
# File 'lib/engine-tune/calculations.rb', line 81 def dyno_correction_factor @dyno_correction_factor ||= EngineTune::Calculator.dyno_correction_factor(altimeter, altitude, dew_point, temperature) end |
#english? ⇒ Boolean
Returns true if calculations should be returned using the English system
53 54 55 |
# File 'lib/engine-tune/calculations.rb', line 53 def english? !@metric end |
#metric? ⇒ Boolean
Returns true if calculations should be returned using the metric system
46 47 48 |
# File 'lib/engine-tune/calculations.rb', line 46 def metric? @metric end |
#observations ⇒ Object
Returns a hash of observations for this set of calculations
36 37 38 39 40 41 |
# File 'lib/engine-tune/calculations.rb', line 36 def observations OBSERVATION_ATTRS.inject({}) do |result, o| result[o] = send(o) result end end |
#relative_density ⇒ Object
77 78 79 |
# File 'lib/engine-tune/calculations.rb', line 77 def relative_density @relative_density ||= EngineTune::Calculator.relative_density(altimeter, altitude, dew_point, temperature) end |
#relative_horsepower ⇒ Object
97 98 99 |
# File 'lib/engine-tune/calculations.rb', line 97 def relative_horsepower @relative_horsepower ||= EngineTune::Calculator.relative_horsepower(altimeter, altitude, dew_point, temperature) end |
#relative_humidity ⇒ Object
63 64 65 |
# File 'lib/engine-tune/calculations.rb', line 63 def relative_humidity @relative_humidity ||= EngineTune::Calculator.relative_humidity(temperature, dew_point) end |
#vapor_pressure ⇒ Object
57 58 59 60 61 |
# File 'lib/engine-tune/calculations.rb', line 57 def vapor_pressure @vapor_pressure ||= EngineTune::Calculator.vapor_pressure(dew_point) @vapor_pressure_inches ||= EngineTune::Calculator.(@vapor_pressure) metric? ? @vapor_pressure : @vapor_pressure_inches end |
#virtual_temperature ⇒ Object
85 86 87 88 89 |
# File 'lib/engine-tune/calculations.rb', line 85 def virtual_temperature @virtual_temperature ||= EngineTune::Calculator.virtual_temperature(altimeter, altitude, dew_point, temperature) @virtual_temperature_f ||= EngineTune::Calculator.celsius_to_fahrenheit(@virtual_temperature) metric? ? @virtual_temperature : @virtual_temperature_f end |