class Pulo::Steam::Boiler

Attributes

blowdown[R]
blowdown_rate[R]
boiler_power[R]
combustion_efficiency[R]
feedwater[R]
fuel_power[R]
steam[R]

Public Class Methods

new(feedwater_pressure: nil,blowdown_rate: nil,combustion_efficiency:nil,steam_pressure: nil, steam_temperature: nil,fuel_power: nil, steam_massflow: nil,feedwater_massflow: nil) click to toggle source
# File lib/pulo/machine/steam/boiler.rb, line 10
def initialize(feedwater_pressure: nil,blowdown_rate: nil,combustion_efficiency:nil,steam_pressure: nil,
               steam_temperature: nil,fuel_power: nil,
               steam_massflow: nil,feedwater_massflow: nil)

  raise "Need all parameters" unless
      feedwater_pressure && blowdown_rate &&
      combustion_efficiency && steam_pressure &&
      (steam_temperature || fuel_power) &&
      (steam_massflow || feedwater_massflow)

  #steam_massflow=steam_massflow
  @blowdown_rate=blowdown_rate
  @combustion_efficiency=combustion_efficiency
  @steam_temperature=steam_temperature
  @feedwater_pressure=feedwater_pressure
  @steam_pressure=steam_pressure
  @fuel_power=fuel_power
  #feedwater_massflow=feedwater_massflow

  @blowdown=WaterSteam.new(pressure: @steam_pressure, quality: Dimensionless.new(0))
  if steam_massflow
    feedwater_massflow=steam_massflow/(1-@blowdown_rate)
  else
    steam_massflow=feedwater_massflow*(1-@blowdown_rate)
  end

  @blowdown.mass_flow=feedwater_massflow*@blowdown_rate
  #@blowdown_power=@blowdown.specific_enthalpy*@blowdown_massflow

  @feedwater=WaterSteam.new(pressure: @feedwater_pressure, quality: Dimensionless.new(0))
  @feedwater.mass_flow=feedwater_massflow
  #@feedwater_power=@feedwater.specific_enthalpy*@feedwater_massflow


  if @steam_temperature
    @steam=WaterSteam.new(pressure: @steam_pressure, temperature: @steam_temperature)
    @steam.mass_flow=steam_massflow
    #@steam_power=@steam.specific_enthalpy*@steam_massflow
    @boiler_power=@steam.energy_flow + @blowdown.energy_flow - @feedwater.energy_flow
    @fuel_power=@boiler_power/@combustion_efficiency
  else
    @boiler_power=@fuel_power*@combustion_efficiency
    steam_power=@boiler_power-@blowdown.energy_flow+@feedwater.energy_flow
    specific_enthalpy=steam_power/steam_massflow
    @steam=WaterSteam.new(pressure: @steam_pressure, specific_enthalpy: specific_enthalpy)
    @steam.mass_flow=steam_massflow
    raise "Boiler not boiling!" if @steam.if97_region=="1"
  end
end