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