Class: CrystalCell::Element

Inherits:
Object
  • Object
show all
Defined in:
lib/crystalcell/element.rb

Overview

元素(原子種)に関する情報を集めたクラス基本理念として、原子番号を最もネイティブなデータとして ID 付けをする。原子番号は人間がいなかったとしてもそれで区分できるが、原子記号は人間がつけたものだから。

Instance Method Summary collapse

Constructor Details

#initializeElement

全データを生成しておく。



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/crystalcell/element.rb', line 9

def initialize
    #原子記号, 原子番号, 周期, 族, 質量数(平均), イオン半径
    @symbol = Array.new #; @mass = Array.new @radius = Array.new
    #i =     1; @symbol[i], @mass[i], @radius[i] = 'H', 1.008, nil
    i =     0; @symbol[i] = nil
    i =     1; @symbol[i] = 'H'
    i =     2; @symbol[i] = 'He'
    i =     3; @symbol[i] = 'Li'
    i =     4; @symbol[i] = 'Be'
    i =     5; @symbol[i] = 'B'
    i =     6; @symbol[i] = 'C'
    i =     7; @symbol[i] = 'N'
    i =     8; @symbol[i] = 'O'
    i =     9; @symbol[i] = 'F'
    i =  10; @symbol[i] = 'Ne'
    i =  11; @symbol[i] = 'Na'
    i =  12; @symbol[i] = 'Mg'
    i =  13; @symbol[i] = 'Al'
    i =  14; @symbol[i] = 'Si'
    i =  15; @symbol[i] = 'P'
    i =  16; @symbol[i] = 'S'
    i =  17; @symbol[i] = 'Cl'
    i =  18; @symbol[i] = 'Ar'
    i =  19; @symbol[i] = 'K'
    i =  20; @symbol[i] = 'Ca'
    i =  21; @symbol[i] = 'Sc'
    i =  22; @symbol[i] = 'Ti'
    i =  23; @symbol[i] = 'V'
    i =  24; @symbol[i] = 'Cr'
    i =  25; @symbol[i] = 'Mn'
    i =  26; @symbol[i] = 'Fe'
    i =  27; @symbol[i] = 'Co'
    i =  28; @symbol[i] = 'Ni'
    i =  29; @symbol[i] = 'Cu'
    i =  30; @symbol[i] = 'Zn'
    i =  31; @symbol[i] = 'Ga'
    i =  32; @symbol[i] = 'Ge'
    i =  33; @symbol[i] = 'As'
    i =  34; @symbol[i] = 'Se'
    i =  35; @symbol[i] = 'Br'
    i =  36; @symbol[i] = 'Kr'
    i =  37; @symbol[i] = 'Rb'
    i =  38; @symbol[i] = 'Sr'
    i =  39; @symbol[i] = 'Y'
    i =  40; @symbol[i] = 'Zr'
    i =  41; @symbol[i] = 'Nb'
    i =  42; @symbol[i] = 'Mo'
    i =  43; @symbol[i] = 'Tc'
    i =  44; @symbol[i] = 'Ru'
    i =  45; @symbol[i] = 'Rh'
    i =  46; @symbol[i] = 'Pd'
    i =  47; @symbol[i] = 'Ag'
    i =  48; @symbol[i] = 'Cd'
    i =  49; @symbol[i] = 'In'
    i =  50; @symbol[i] = 'Sn'
    i =  51; @symbol[i] = 'Sb'
    i =  52; @symbol[i] = 'Te'
    i =  53; @symbol[i] = 'I'
    i =  54; @symbol[i] = 'Xe'
    i =  55; @symbol[i] = 'Cs'
    i =  56; @symbol[i] = 'Ba'
    i =  57; @symbol[i] = 'La'
    i =  58; @symbol[i] = 'Ce'
    i =  59; @symbol[i] = 'Pr'
    i =  60; @symbol[i] = 'Nd'
    i =  61; @symbol[i] = 'Pm'
    i =  62; @symbol[i] = 'Sm'
    i =  63; @symbol[i] = 'Eu'
    i =  64; @symbol[i] = 'Gd'
    i =  65; @symbol[i] = 'Tb'
    i =  66; @symbol[i] = 'Dy'
    i =  67; @symbol[i] = 'Ho'
    i =  68; @symbol[i] = 'Er'
    i =  69; @symbol[i] = 'Tm'
    i =  70; @symbol[i] = 'Yb'
    i =  71; @symbol[i] = 'Lu'
    i =  72; @symbol[i] = 'Hf'
    i =  73; @symbol[i] = 'Ta'
    i =  74; @symbol[i] = 'W'
    i =  75; @symbol[i] = 'Re'
    i =  76; @symbol[i] = 'Os'
    i =  77; @symbol[i] = 'Ir'
    i =  78; @symbol[i] = 'Pt'
    i =  79; @symbol[i] = 'Au'
    i =  80; @symbol[i] = 'Hg'
    i =  81; @symbol[i] = 'Tl'
    i =  82; @symbol[i] = 'Pb'
    i =  83; @symbol[i] = 'Bi'
    i =  84; @symbol[i] = 'Po'
    i =  85; @symbol[i] = 'At'
    i =  86; @symbol[i] = 'Rn'
    i =  87; @symbol[i] = 'Fr'
    i =  88; @symbol[i] = 'Ra'
    i =  89; @symbol[i] = 'Ac'
    i =  90; @symbol[i] = 'Th'
    i =  91; @symbol[i] = 'Pa'
    i =  92; @symbol[i] = 'U'
    i =  93; @symbol[i] = 'Np'
    i =  94; @symbol[i] = 'Pu'
    i =  95; @symbol[i] = 'Am'
    i =  96; @symbol[i] = 'Cm'
    i =  97; @symbol[i] = 'Bk'
    i =  98; @symbol[i] = 'Cf'
    i =  99; @symbol[i] = 'Es'
    i = 100; @symbol[i] = 'Fm'
    i = 101; @symbol[i] = 'Md'
    i = 102; @symbol[i] = 'No'
    i = 103; @symbol[i] = 'Lr'
end

Instance Method Details

#getAtomicNumber(name) ⇒ Object

原子記号から原子番号を取得。e.g., H から 1 与えられたものが原子番号ならそのまま返す、ようにしたいがまだできてない。リストに存在しなければ raise する。



122
123
124
125
126
# File 'lib/crystalcell/element.rb', line 122

def getAtomicNumber( name )
    symbol = @symbol.index( name )
    raise "Symbol #{name} not found." if (symbol == nil || symbol == 0)
    symbol
end

#getSymbol(num) ⇒ Object

原子番号から原子記号を取得。e.g., 1 から H 与えられたものが原子記号ならそのまま返す、ようにしたいがまだできてない。リストに存在しなければ raise する。



131
132
133
134
135
# File 'lib/crystalcell/element.rb', line 131

def getSymbol( num )
    raise "getSymbol(num) requires Fixnum, but #{num}" if (num.class != Fixnum)
    raise "Atomic number is out of range." if (num <= 0 || @symbol.size <= num)
    @symbol[num]
end

#include?(symbol) ⇒ Boolean

引数 id がリストに含まれているか?id は原子番号でも原子記号でも可にしたいが、とりあえず symbol だけ。

Returns:

  • (Boolean)


139
140
141
142
# File 'lib/crystalcell/element.rb', line 139

def include?( symbol )
    return false if symbol == nil
    @symbol.include?( symbol )
end