class EnergyPlus::SlabGtpFile

Attributes

averageTemps[RW]
convergence[RW]
months[RW]

Public Class Methods

new(path) click to toggle source
# File lib/energyplus/SlabGtpFile.rb, line 28
def initialize(path)
  @path = Pathname.new(path)
  @convergence = false
  @months = []
  @averageTemps = []
  init
end

Public Instance Methods

getGroundTemps() click to toggle source
# File lib/energyplus/SlabGtpFile.rb, line 36
def getGroundTemps
  result = "Site:GroundTemperature:BuildingSurface,\n"
  result+= "  #{@averageTemps[0]},  !- January Ground Temperature {C}\n"
  result+= "  #{@averageTemps[1]},  !- February Ground Temperature {C}\n"
  result+= "  #{@averageTemps[2]},  !- March Ground Temperature {C}\n"
  result+= "  #{@averageTemps[3]},  !- April Ground Temperature {C}\n"
  result+= "  #{@averageTemps[4]},  !- May Ground Temperature {C}\n"
  result+= "  #{@averageTemps[5]},  !- June Ground Temperature {C}\n"
  result+= "  #{@averageTemps[6]},  !- July Ground Temperature {C}\n"
  result+= "  #{@averageTemps[7]},  !- August Ground Temperature {C}\n"
  result+= "  #{@averageTemps[8]},  !- September Ground Temperature {C}\n"
  result+= "  #{@averageTemps[9]},  !- October Ground Temperature {C}\n"
  result+= "  #{@averageTemps[10]},  !- November Ground Temperature {C}\n"
  result+= "  #{@averageTemps[11]};  !- December Ground Temperature {C}\n"
  return result
end

Private Instance Methods

init() click to toggle source
# File lib/energyplus/SlabGtpFile.rb, line 55
def init
  if @path.exist?
    File.open(@path) do |f|
      text = f.read
      parse(text)
    end
  end
end
parse(text) click to toggle source
# File lib/energyplus/SlabGtpFile.rb, line 64
def parse(text)
  # check for convergence
  regex = /(Convergence has been gained.).*\n/
  if text.match(regex) then
    @convergence = true
  end

  #parse out the monthly values
  startRegex = /\s*Month\s*TAverage\s*TPerimeter\s*TCore\s*TInside\s*AverageFlux\s*PerimeterFlux\s*CoreFlux/
  readingTable = false
  numRowsRead = 0
  text.each_line do |line|
    if readingTable

      # split each row and count as read
      data = line.strip.split(/\s+/)
      numRowsRead += 1

      # insert into members
      @months << data[2]
      @averageTemps << data[1]

      # only read 12 months
      if numRowsRead == 12
        break
      end
    end

    # have we started reading the table yet
    if line.match(startRegex)
      readingTable = true
    end
  end
end