3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

六方晶を直方晶に埋め込む

Last updated at Posted at 2020-02-20

動機と概要

結晶は一般に斜方格子に並んでいるので、その斜方格子をきめる基底を使った係数で座標を導入するのが望ましい。一方、実空間の格子を切ろうとすると、直方格子に切るのが簡単なので、直方格子の基底の係数で評価するのが実装上簡単である。一般の斜方格子は直方格子に埋め込むことができないが、二次元六方格子については二次元長方格子に埋め込める。その係数をまとめた。

二つの基底の関係 その1

二次元六方格子の基底
$$
\begin{align}
a_1^h = a{\hat x}, \
a_2^h = \frac{1}{2}a{\hat x} + \frac{\sqrt{3}}{2}a{\hat y}
\end{align}
$$

二次元直方格子の基底
$$
\begin{align}
a_1^r = a{\hat x}, \
a_2^r = \frac{\sqrt{3}}{2}a{\hat y}
\end{align}
$$

二つの基底の関係
$$
\begin{align}
\begin{cases}
a_1^r = a_1^h, \
a_2^r = -\frac{1}{2} a_1^h + a_2^h
\end{cases}\Longleftrightarrow
\begin{cases}
a_1^h = a_1^r, \
a_2^h = \frac{1}{2} a_1^r + a_2^r
\end{cases}
\end{align}
$$

二つの係数の関係

$$
r = \alpha_1^h a_i^h + \alpha_2^h a_2^h = \alpha_1^r a_i^r + \alpha_2^r a_2^r
$$

$$
\begin{align}
\begin{cases}
\alpha_1^r = \alpha_1^h + \frac{1}{2} \alpha_2^h, \
\alpha_2^r = \alpha_2^h
\end{cases}
\Longleftrightarrow
\begin{cases}
\alpha_1^h = \alpha_1^r - \frac{1}{2}\alpha_2^r, \
\alpha_2^h = \alpha_2^r
\end{cases}
\end{align}
$$

鈍角の基底で表現した場合

上と同じ格子を、基底が鈍角になるようにとることもできる。

二次元六方格子の基底
$$
\begin{align}
a_1^h = a{\hat x}, \
a_2^h = -\frac{1}{2}a{\hat x} + \frac{\sqrt{3}}{2}a{\hat y}
\end{align}
$$

二つの基底の関係
$$
\begin{align}
\begin{cases}
a_1^r = a_1^h, \
a_2^r = \frac{1}{2} a_1^h + a_2^h
\end{cases}\Longleftrightarrow
\begin{cases}
a_1^h = a_1^r, \
a_2^h = -\frac{1}{2} a_1^r + a_2^r
\end{cases}
\end{align}
$$

二つの係数の関係

$$
r = \alpha_1^h a_1^h + \alpha_2^h a_2^h = \alpha_1^r a_1^r + \alpha_2^r a_2^r
$$

$$
\begin{align}
\begin{cases}
\alpha_1^r = \alpha_1^h - \frac{1}{2} \alpha_2^h, \
\alpha_2^r = \alpha_2^h
\end{cases}
\Longleftrightarrow
\begin{cases}
\alpha_1^h = \alpha_1^r + \frac{1}{2}\alpha_2^r, \
\alpha_2^h = \alpha_2^r
\end{cases}
\end{align}
$$

二つの基底の関係 その2

二次元六方格子の基底
$$
\begin{align}
a_1^h = \frac{\sqrt{3}}{2}a{\hat x} - \frac{1}{2}a{\hat y}, \qquad \
a_2^h = a{\hat y}
\end{align}
$$

二次元直方格子の基底
$$
\begin{align}
a_1^r = \sqrt{3}a{\hat x}, \qquad \
a_2^r = a{\hat y}
\end{align}
$$

二つの基底の関係
$$
\begin{align}
\begin{cases}
a_1^r = 2 a_1^h + a_2^h, \
a_2^r = a_2^h
\end{cases}\Longleftrightarrow
\begin{cases}
a_1^h = \frac{1}{2}a_1^r - \frac{1}{2}a_2^r, \
a_2^h = a_2^r
\end{cases}
\end{align}
$$

二つの係数の関係

$$
r = \alpha_1^h a_1^h + \alpha_2^h a_2^h = \alpha_1^r a_1^r + \alpha_2^r a_2^r
$$

$$
\begin{align}
\begin{cases}
\alpha_1^r = \frac{1}{2}\alpha_1^h , \
\alpha_2^r = -\frac{1}{2}\alpha_1^h + \alpha_2^h
\end{cases}
\Longleftrightarrow
\begin{cases}
\alpha_1^h = 2\alpha_1^r , \
\alpha_2^h = \alpha_1^r + \alpha_2^r
\end{cases}
\end{align}
$$

サンプルコード

transform.py
import numpy as np
import matplotlib.pyplot as plt

Ah = np.array([[np.sqrt(3)/2.0, 0],[-0.5, 1]])
Ar = np.array([[np.sqrt(3), 0],[0.0, 1]])

alphah = np.zeros([2,4])
alphah[0,0] = 1.0/3.0; alphah[1,0] = 2.0/3.0
alphah[0,1] = 2.0/3.0; alphah[1,1] = 1.0/3.0
alphah[0,2] = 1.0/3.0; alphah[1,2] = 2.0/3.0
alphah[0,3] = 2.0/3.0; alphah[1,3] = 1.0/3.0

print('# Original coordinate, hexagonal lattice')
r = Ah@alphah
for i in range(4):
    print(i, r[:,i])
    
print('# Rectangular lattice')
Rh2r = np.array([[0.5, 0.0],[-0.5, 1.0]]) #座標変換の行列
alphar = Rh2r@alphah
rr = Ar@alphar #rと等しいものが得られるはず
for i in range(4):
    print(i, rr[:,i])

#プロットして確認
plt.figure()
plt.plot([0.0, Ah[0,0]],[0.0, Ah[1,0]],'b--')
plt.plot([0.0, Ah[0,1]],[0.0, Ah[1,1]],'b--')
plt.plot([Ah[0,0], Ah[0,0] + Ah[0,1]],[Ah[1,0], Ah[1,0] + Ah[1,1]],'b--')
plt.plot([Ah[0,1], Ah[0,0] + Ah[0,1]],[Ah[1,1], Ah[1,0] + Ah[1,1]],'b--')
plt.plot([0.0, Ar[0,0]],[0.0, Ar[1,0]],'k-')
plt.plot([0.0, Ar[0,1]],[0.0, Ar[1,1]],'k-')
plt.plot([Ar[0,0], Ar[0,0] + Ar[0,1]],[Ar[1,0], Ar[1,0] + Ar[1,1]],'k-')
plt.plot([Ar[0,1], Ar[0,0] + Ar[0,1]],[Ar[1,1], Ar[1,0] + Ar[1,1]],'k-')
for i in range(4):
    plt.scatter(r[0,i],r[1,i],marker='*',alpha=0.5)
    plt.scatter(rr[0,i],rr[1,i],marker='x',alpha=0.5)
plt.grid()
plt.axis('square')
plt.show()
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?