# Class for generating POSCAR for specified cluster # # Written by k-fleak # #require "#{ENV["HOME"]}/myRuby/parseSplitClusterOut.rb" require "./parseSplitClusterOut.rb" class GetClusterPOSCAR def initialize(coutFile, clusterIndex) @cout = ParseClusterOut.new(coutFile) @axis = @cout.getAxis @cIndex = clusterIndex @cluster = (@cout.getCluster)[clusterIndex] @atom = @cout.getAtomPosition @numAtom = @atom.size start end private def start print "# Cluster-POSCAR : index #{@cIndex} (#{@cluster.size}-body)\n" print " 1.0 \n" @axis.each do |axis| axis.each do |ax| print " #{ax}" end print "\n" end print " #{@cluster.size} #{@numAtom - @cluster.size} \n" print "Direct \n" @cluster.each do |cluster| atom = @atom[cluster.to_i] print sprintf("%15.11s %15.11s %15.11s", "#{atom[0][0]}", "#{atom[0][1]}", "#{atom[0][2]}") print "\n" @atom.delete(cluster.to_i) end @atom.each do |atom| print sprintf("%15.11s %15.11s %15.11s", "#{atom[1][0][0]}", "#{atom[1][0][1]}", "#{atom[1][0][2]}") print "\n" end end end gc = GetClusterPOSCAR.new(ARGV[0], ARGV[1].to_i)