この前台風19号が来たとき、雨と風が強すぎて予備校も閉まり、外にも出れなかった。一日中何もすることがなく、暇を極めていた。なんか雨の日は気分がだるくて、とても勉強をする気分にはなれない。本も少し読んだらすぐ飽きた。筋トレをするのもだるい。ヨーヨーとかゲームも少しやったがまだ暇だ。まだ午前だ。暇だ。暇すぎる。何もすることがない。
そうだ、結晶格子を作ろう!
そう思い立った矢先、おれはMathematicaという数学ソフトを用いて早速結晶格子の作成に取り掛かった。
まずは面心立方格子を作る。適当に座標軸を取って格子点に粒子を配置していく。
その格子点に粒子がある条件を数式で表したい。面心立方格子は1格子点おきに粒子があるから、2で割った余りで判断すればいいかな?格子点の座標のx、y、z座標を足し合わせて、2で割って0なら粒子なし、1なら粒子ありとしよう。
できた。rとnの値を変化させれば、いろいろな半径の、いろいろな数の面心立方格子ができる!
こんな感じでほかの結晶構造も作った。どれがどれだかわかるかな?
答えは上から、ダイアモンド型、体心立方格子、六方最密構造だ。
ちなみにコードはこちら
体心立方格子
Manipulate[ Graphics3D[Table[ If[Mod[x, 2] == Mod[y, 2] == Mod[z, 2], Sphere[{x, y, z}, r]], {x, -n, n}, {y, -n, n}, {z, -n, n}] ], {r, 0.2, Sqrt[3]/2}, {n, 1, 5, 1} ]
六方最密構造
Manipulate[ Graphics3D[ Table[If[Mod[z, 2] == 0, Table[ If[Mod[x + y, 2] == 0, Sphere[{x, Sqrt[3]*(y - 2/3) , 2 Sqrt[2/3]*z}, r]], {x, -2 n + 1, 2 n - 1}, {y, -n + 1, n}], Table[ If[Mod[x + y, 2] == 0, Sphere[{x, Sqrt[3]*y , 2 Sqrt[2/3]*z}, r]], {x, -2 n, 2 n}, {y, -n, n}] ], {z, -n, n}]], {r, 0.2, 1}, {n, 1, 5, 1} ]
ダイアモンド型
Manipulate[ Graphics3D[Table[ Which[ Mod[x, 2] == 0 && Mod[y, 2] == 0 && Mod[z, 2] == 0 && Mod[x + y + z, 4] == 2, Sphere[{x, y, z}, r], Mod[x y z, 2] == 1 && Mod[x + y + z, 4] == 3, Sphere[{x, y, z}, r] ], {x, -2 n, 2 n}, {y, -2 n, 2 n}, {z, -2 n, 2 n}]], {r, 0.2, Sqrt[3]/2}, {n, 1, 5, 1} ]
結晶格子って楽しいね!!!
この調子でイオン結晶も作るよ!!!
まずはNaCl型。極限半径比もちゃんと考えてやったよ。
CsCl型。
ZnS型。
これで高校で習う結晶構造はコンプリートだね!いぇーい!!!!
いい暇つぶしになったし、普通に勉強になった。Mathematicaでは作った画像を動かして視点を変えたりできるので、六方最密構造と体心立方格子が視点を変えると一致することも理解できた。あと極限半径比の時のイオン結晶がどのような構造になっているのか立体的に視覚的に見ることができた。
もう受験でどんな結晶構造の問題が出ても余裕だね!これで俺も結晶格子マスターだ!