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