class Pulo::Steam::BoilerDeaerator

Attributes

boiler[R]
deaerator[R]

Public Class Methods

new( header_pressure: nil,header_temperature: nil,outlet_massflow: nil,deaerator_pressure: nil,deaerator_vent_rate: nil, condensate_massflow: nil, boiler_efficiency: nil,boiler_blowdown_rate: nil,condensate_temperature: nil,condensate_pressure: nil, makeup_temperature: nil,fuel_power: nil,additional_makeup: nil) click to toggle source
# File lib/pulo/machine/steam/boiler_deaerator.rb, line 8
def initialize (
  header_pressure: nil,header_temperature:  nil,outlet_massflow: nil,deaerator_pressure: nil,deaerator_vent_rate: nil, condensate_massflow: nil,
  boiler_efficiency: nil,boiler_blowdown_rate: nil,condensate_temperature: nil,condensate_pressure: nil,
  makeup_temperature: nil,fuel_power: nil,additional_makeup: nil)

  raise "Need all params" unless header_pressure && outlet_massflow && deaerator_pressure && condensate_pressure && condensate_massflow
  deaerator_vent_rate && boiler_efficiency && boiler_blowdown_rate && condensate_temperature && makeup_temperature && additional_makeup &&
  (header_temperature || fuel_power)

  condensate=WaterSteam.new(pressure: condensate_pressure, temperature: condensate_temperature)
  makeup=WaterSteam.new(temperature: makeup_temperature, pressure: Pressure.psig(0.0))

  boiler_feed_massflow=outlet_massflow+outlet_massflow*(deaerator_vent_rate+boiler_blowdown_rate) #Starting assumption

  begin
    boiler_feed_massflow+=MassFlow.pounds_per_hour(50)
    if fuel_power
      b=Boiler.new(
          feedwater_pressure: deaerator_pressure,
          blowdown_rate: boiler_blowdown_rate,
          combustion_efficiency: boiler_efficiency,
          steam_pressure: header_pressure,
          fuel_power: fuel_power,
          feedwater_massflow: boiler_feed_massflow)
      header_temperature=b.steam.temperature
    else
      b=Boiler.new(
          feedwater_pressure: deaerator_pressure,
          blowdown_rate: boiler_blowdown_rate,
          combustion_efficiency: boiler_efficiency,
          steam_pressure: header_pressure,
          steam_temperature: header_temperature,
          feedwater_massflow: boiler_feed_massflow)
    end

    makeup_massflow=boiler_feed_massflow*(deaerator_vent_rate+boiler_blowdown_rate)+additional_makeup
    #condensate_massflow=outlet_massflow*condensate_return_rate
    deaerator_feed_enthalpy=(
            condensate.specific_enthalpy*condensate_massflow+
            makeup.specific_enthalpy*makeup_massflow)/(makeup_massflow+condensate_massflow)

    deaerator_feed=WaterSteam.new(pressure: deaerator_pressure, specific_enthalpy: deaerator_feed_enthalpy)
    d=Deaerator.new(
        deaerator_pressure: deaerator_pressure,vent_rate: deaerator_vent_rate,
        feedwater_massflow: boiler_feed_massflow,inlet_pressure: deaerator_feed.pressure,
        inlet_temperature: deaerator_feed.temperature,steam_pressure:header_pressure,
        steam_temperature: header_temperature)

    test_outlet_massflow=b.steam.mass_flow-d.steam.mass_flow
  end while (outlet_massflow-test_outlet_massflow)/outlet_massflow>Dimensionless.percent(0.1)
  @boiler=b
  @deaerator=d
end