Sha256: 52a743d523e56edb60998416e25df0cbcb9707d04a9fc723e46ac2d435686b2f

Contents?: true

Size: 1.58 KB

Versions: 6

Compression:

Stored size: 1.58 KB

Contents

#! /usr/bin/env ruby
# coding: utf-8

# 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 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 dump(pairs, io = nil)
  #end

end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
vasputils-0.0.9 lib/vasputils/incar.rb
vasputils-0.0.8 lib/vasputils/incar.rb
vasputils-0.0.7 lib/vasputils/incar.rb
vasputils-0.0.6 lib/vasputils/incar.rb
vasputils-0.0.5 lib/vasputils/incar.rb
vasputils-0.0.4 lib/vasputils/incar.rb