# Class for parsing vasp log file # # Written by k-fleak # class ParseVaspLog def initialize(filename) @input = open(filename, "r") @input2 = open(filename, "r") checkCalcCondition parseData end def getFinalE0 @e0Array[(@e0Array.size) - 1] end def getNumIonicStep @nswArray[(@nswArray.size) - 1] end def getConvergence @converge end private def checkCalcCondition @converge = "FALSE" @input.each do |lines| if /reached required accuracy/ =~ lines then @converge = "TRUE" end end end def parseData @e0Array = Array.new() @nswArray = Array.new() @input2.each do |lines| if /E0=/ =~ lines then lineArr = lines.strip.split energyIndex = lineArr.index("E0=") + 1 @e0Array.push(lineArr[energyIndex].to_f) @nswArray.push(lineArr[0]) end end end end #parse = ParseVaspLog.new(ARGV[0]) #p parse.getFinalE0 #if open("log.relax4", "r") then # p "hoge" #end