class Crysna::Atom
Site with element info. This doesn’t have coordinates.
Attributes
element[R]
site[R]
Public Class Methods
new(element, sitename, global_vector)
click to toggle source
# File lib/crysna/atom.rb, line 12 def initialize(element, sitename, global_vector) @element = element @site = Crysna::Site.new(sitename, global_vector) end
Public Instance Methods
<=>(other)
click to toggle source
Mainly for sort
# File lib/crysna/atom.rb, line 50 def <=>(other) flag = @element <=> other.element return flag unless flag == 0 flag = @site.name <=> other.site.name return flag unless flag == 0 flag = @site.global_vector[0] <=> other.site.global_vector[0] return flag unless flag == 0 flag = @site.global_vector[1] <=> other.site.global_vector[1] return flag unless flag == 0 flag = @site.global_vector[2] <=> other.site.global_vector[2] return flag end
==(other)
click to toggle source
# File lib/crysna/atom.rb, line 17 def ==(other) return false unless self.element == other.element return false unless self.site == other.site return true end
centering()
click to toggle source
Return center-migrate atom. Therefore, global_vector becomes [0,0,0]
# File lib/crysna/atom.rb, line 36 def centering result = Marshal.load(Marshal.dump(self)) result.centering! result end
centering!()
click to toggle source
Destructive migrate to center cell. Therefore, global_vector becomes [0,0,0]
# File lib/crysna/atom.rb, line 44 def centering! self.migrate!(@site.name, @site.global_vector * (-1)) end
full_sitename()
click to toggle source
Return site name with suffix as global vector with the manner of cif. E.g., “B555”
# File lib/crysna/atom.rb, line 89 def full_sitename result = sitename @site.global_vector.each do |i| result += (i+5).to_i.to_s end result end
migrate(site_name, global_vector)
click to toggle source
# File lib/crysna/atom.rb, line 28 def migrate(site_name, global_vector) result = Marshal.load(Marshal.dump(self)) result.migrate!(site_name, global_vector) result end
migrate!(site_name, global_vector)
click to toggle source
# File lib/crysna/atom.rb, line 23 def migrate!(site_name, global_vector) new_gvec = @site.global_vector + global_vector.to_v3di @site = Crysna::Site.new(site_name, new_gvec) end
sitename()
click to toggle source
Return site name. E.g., “B”
# File lib/crysna/atom.rb, line 83 def sitename @site.name end