Sha256: 3670c3873351e1629617b1fd97710de3a3186a1c1ef256e5f11c8b66c9461bf5
Contents?: true
Size: 1.77 KB
Versions: 1
Compression:
Stored size: 1.77 KB
Contents
#! /usr/bin/env ruby # coding: utf-8 require "vasputils.rb" # see http://cms.mpi.univie.ac.at/vasp/vasp/INCAR_File.html # # INCAR のフォーマット # - 基本 1行 1項目。 # - = 区切りで左辺の項目名に対して右辺の値になる。 # - 半角# のあと、コメント # # TODO, Future feature # INCAR のフォーマット # - 右辺のあとの文字列は、セミコロンでなければ無視される。 # - ; 区切りで1行に複数の項目を設定できる。 # - \ で次の行に設定を続けることができる。 # Class to utilize INCAR file of VASP. # まず、自分で使う範囲だけ作る。 # あとで余力があれば精密化する。 module VaspUtils::Incar # #def initialize() #end # 与えられた IO を読み込み、INCAR として解析したハッシュを返す。 def self.parse(io) results = {} io.each_line do |line| line.sub!(/\#.*/, "") # コメント文字以降を削除 next unless /=/ =~ line if /(.*)=(.*)/ =~ line key = $1.strip val = $2.strip val.sub!(/\s.*$/, "") next if key.empty? results[key] = val end end return results end # 与えられた名前のファイルを INCAR として解析したハッシュを返す。 def self.load_file(file) io = File.open(file, "r") return self.parse(io) end # 与えられたデータ対(ハッシュ)を io に書き出す。 # io が nil の場合は INCAR 形式文字列を返す。 # (改行文字を埋め込んでおり、配列化していない) def self.dump(pairs, io = nil) result = pairs.map { |key, val| "#{key} = #{val}" }.join("\n") if io # is defined io.print result else return result end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
vasputils-0.0.11 | lib/vasputils/incar.rb |