class GasBlender::Fill
Attributes
fO2_want[R]
fill_mix[R]
mix[R]
tank[R]
top_off_mix[R]
Public Class Methods
new(attributes)
click to toggle source
# File lib/gas-blender/fill.rb, line 8 def initialize(attributes) @mix = attributes.delete(:mix) || Mix.new(0.21) @tank = attributes.delete(:tank) @fill_mix = attributes.delete(:fill_mix) || Mix.new(1.0) @top_off_mix = attributes.delete(:top_off_mix) || Mix.new(0.21) raise RuntimeError, "Invalid attributes: #{attributes.keys.inspect}" unless attributes == {} end
Public Instance Methods
mod(max_ppO2)
click to toggle source
# File lib/gas-blender/fill.rb, line 24 def mod(max_ppO2) case tank.service_pressure when GasBlender::PSI mod_fsw(max_ppO2) when GasBlender::Bar mod_msw(max_ppO2) else raise TypeError, "Unknown tank service pressure, #{tank.inspect}" end end
mod_fsw(max_ppO2)
click to toggle source
# File lib/gas-blender/fill.rb, line 35 def mod_fsw(max_ppO2) mod_atm(max_ppO2).to_fsw - GasBlender::ATM.new(1.0).to_fsw end
mod_msw(max_ppO2)
click to toggle source
# File lib/gas-blender/fill.rb, line 39 def mod_msw(max_ppO2) mod_atm(max_ppO2).to_msw - GasBlender::ATM.new(1.0).to_msw end
pressure()
click to toggle source
# File lib/gas-blender/fill.rb, line 16 def pressure if !pressure_need.zero? (pressure_need * ((fO2_need - top_off_mix) / (fill_mix - top_off_mix))) + pressure_have else (pressure_want * (fO2_want - top_off_mix)) / (fO2_have - top_off_mix) end end
Private Instance Methods
fO2_have()
click to toggle source
# File lib/gas-blender/fill.rb, line 47 def fO2_have Mix.new(tank.current_mix) end
fO2_need()
click to toggle source
# File lib/gas-blender/fill.rb, line 51 def fO2_need Mix.new(ppO2_need / pressure_need) end
mod_atm(max_ppO2)
click to toggle source
# File lib/gas-blender/fill.rb, line 79 def mod_atm(max_ppO2) GasBlender::ATM.new((max_ppO2.to_bar / mix) / Bar.new(1.0)) end
ppO2_have()
click to toggle source
# File lib/gas-blender/fill.rb, line 59 def ppO2_have tank.current_pressure * fO2_have end
ppO2_need()
click to toggle source
# File lib/gas-blender/fill.rb, line 63 def ppO2_need ppO2_want - ppO2_have end
ppO2_want()
click to toggle source
# File lib/gas-blender/fill.rb, line 55 def ppO2_want tank.service_pressure * fO2_want end
pressure_have()
click to toggle source
# File lib/gas-blender/fill.rb, line 71 def pressure_have tank.current_pressure end
pressure_need()
click to toggle source
# File lib/gas-blender/fill.rb, line 75 def pressure_need pressure_want - pressure_have end
pressure_want()
click to toggle source
# File lib/gas-blender/fill.rb, line 67 def pressure_want tank.service_pressure end