從「我們需要它」到「動手把它造出來」
第一篇立下了論點:一族平行晶面是個難以隨身攜帶的東西——一整疊無窮多的薄片,用一個間距 d 與一個傾角來描述——然而繞射偏偏一再遞給我們的,正是這些「族」。脫困之道,是把每一整族縮成單一個點,擺在該族法線方向上、距離由 1/d 決定之處。把每一族都同時這麼做,這些點本身就排成一個完美週期的陣列:也就是倒晶格。那是先前許下的承諾。這一篇要兌現它——從頭把這個陣列建起來。
一個晶格,不論實的還是倒的,都由三個基底向量完全定死——三支箭矢,它們的整數組合落在每一個格點上。在尋常晶體裡我們把它們叫做 a、b、c,它們的整數組合 ua + vb + wc 能抵達每一個格點。所以這裡的整件工作,就是製造出三支新的箭矢——寫作 a*、b*、c*,讀作「a 星、b 星、c 星」——使它們的整數組合 h a* + k b* + l c* 能抵達每一個倒晶格點。把這三支弄對,整個影子世界就會自動就位。
構築法:向量外積與對偶關係
定義看起來俐落,但每一塊都有它非在不可的理由。每個帶星的向量,都是另外兩個實向量的外積,再除以晶胞體積 V = a .(b x c)。回想外積 b x c 是一支同時垂直於 b 與 c 的箭矢,所以 a* 直直地戳出 b 與 c 所張成的那個平面——而那正是 (100) 晶面。一氣呵成,a* 就成了 (100) 晶面的法線。這就是倒晶格向量這套機制:先造一支晶面法線,再把它縮放,好讓它的長度承載間距的資訊。
- 算出晶胞體積 V = a .(b x c),也就是純量三重積——幾何上,是 a、b、c 所張成的平行六面體體積。它是一個正數,而且是這三個帶星向量共用的同一個除數。
- 組出 a* =(b x c)/ V。外積使它垂直於 b 與 c;除以 V 則定住它的長度。接著把字母輪轉一圈:b* =(c x a)/ V,以及 c* =(a x b)/ V。
- 驗證九條對偶關係。每個星向量點乘自己的搭檔給出 1(a*.a = 1、b*.b = 1、c*.c = 1);點乘另外兩個實向量中的任一個則給出 0(a*.b = 0、a*.c = 0,依此類推)。那九個數字就是定義——外積那道配方,只是滿足它們最快的辦法。
BUILDING a*, b*, c* (crystallographer convention: a* . a = 1)
a* = (b x c) / V b* = (c x a) / V c* = (a x b) / V
with cell volume V = a . (b x c)
the nine dual (dot-product) relations:
a*.a = 1 a*.b = 0 a*.c = 0
b*.a = 0 b*.b = 1 b*.c = 0
c*.a = 0 c*.b = 0 c*.c = 1
geometry: a* is PERPENDICULAR to the b-c plane (the (100) plane)
|a*| = 1 / d_100 (one over the (100) plane spacing)
worked cubic example, a = 4 angstrom, so a* = b* = c* = 0.25 /A
(hkl) |g| = sqrt(h^2+k^2+l^2)/a d_hkl = a/sqrt(...) check 1/d
(100) 0.250 /A 4.00 A 0.250
(110) 0.354 /A 2.83 A 0.354
(111) 0.433 /A 2.31 A 0.433
(200) 0.500 /A 2.00 A 0.500
every reciprocal point sits at distance 1/d_hkl from the origin看看這個定義強加在 a* 身上的大小。它的長度是 |b x c| / V。但 |b x c| 是 (100) 面的面積,而 V 是(那個面的面積)乘以(相鄰 (100) 晶面之間的垂直間隔)。面積除以面積乘間隔,剩下 1/間隔——也就是 |a*| = 1/d_100,晶面間距的倒數。所以 a* 身兼二職:它的方向是 (100) 法線,它的長度是 1/d_100。「外積除以體積」這個定義是被設計出來的,不是猜出來的,就為了讓這兩件事同時成立。
倒晶格向量 g_hkl:方向與長度
手裡有了這三顆星,單一個倒晶格點就只是它們的一個整數組合:倒晶格向量 g_hkl = h a* + k b* + l c*。上一節的全部收成,如今從那三個特殊的面,一舉推廣到每一個晶面。那句俐落的斷言——它是整個這一級的情感核心——就是:g_hkl 指向 (hkl) 晶面的法線方向,而它的長度等於 1/d_hkl。影子世界裡標作 (hkl) 的那個點,不過就是這支箭矢的尖端。
把立方的數字跑一遍就能體會。當 a = 4 埃,這些星向量長度都是 0.25 每埃,並且彼此正交,所以 g_110 = 1 a* + 1 b* + 0 c* 是一個邊長 0.25 小正方形的對角線,長度為 sqrt(2) 乘 0.25 = 0.354 每埃。把它取倒數:1/0.354 = 2.83 埃,恰好就是 d_110 = 4/sqrt(2)。方向也對得上——g_110 平均地倚在 a* 與 b* 上、完全不倚 c*,所以它指向 [110],正是立方裡 (110) 晶面真正的法線。方向與長度雙雙正確,而且都是白送的。
倒單位晶胞、它的體積,與尺寸的反比
這三顆星 a*、b*、c* 張出它們自己的一個盒子——倒單位晶胞——把它無盡地蓋印出去,就鋪滿整個倒空間,恰如實晶胞鋪滿實空間。它的邊長與夾角直接來自實晶胞,但數值並不相同:在被拉長或歪斜的晶胞裡,帶星的夾角和實的夾角不一樣(只有當實晶胞正交時,比如我們的立方,兩者才吻合)。這個盒子又小、又整齊、又週期,這正是為什麼繞射圖看起來是一格格整齊的斑點、而不是一團亂麻。
它的體積才是妙處所在:V* = 1/V,實晶胞體積的倒數(在晶體學家的約定下)。我們的立方 V = 4^3 = 64 立方埃,所以 V* = 1/64 = 0.0156 每立方埃。這條單一的方程,承載了整門學問裡最深的直覺,也就是尺寸反比關係:小的實晶胞造出大的倒晶胞,反之亦然。把晶體的邊長加倍到 8 埃,V 就躍升到 512,於是 V* 塌縮到 1/512——倒晶格點擁擠得密了八倍。實的大,倒的小;實的小,倒的大。
這個翻轉不是代數的巧合;它是傅立葉變換的招牌,而倒晶格正是實晶格的變換。這就是第四篇會完整展開的傅立葉對偶觀點:實空間裡寬大的特徵,映射到倒空間裡細緻、間距緊密的特徵,這也是為什麼大的重複週期會給出間距緊密的繞射斑點。現在先握住這幅畫面就好——倒晶格是晶體的影子,而把物體縮小,總會把它的影子攤得更開。
影子世界甦醒之處:埃瓦爾德球與布里淵區
有兩個著名的作圖,天生就住在你剛建好的這個空間裡。第一個是埃瓦爾德球。把入射的 X 光束畫成一支長度為 1/lambda、末端落在倒晶格原點的箭矢,再繞著這支箭矢的尾端畫一顆半徑為 1/lambda 的球。繞射恰好從那些被這顆球剛好掃過的倒晶格點迸發出來——那個幾何上的巧合,本身就是繞射條件,只是換成完全不提角度的講法。這也是為什麼一顆靜止不動的單晶通常幾乎給不出斑點(沒幾個點碰到球),以及為什麼你要旋轉晶體、或用多種波長,才能把更多點掃到球面上。
第二個是布里淵區,而在這裡,先前講實空間晶胞那幾級付出了一份意外的紅利。回想維格納–賽茲晶胞:晶格中離某個選定點比離任何其他點都近的那塊區域,由相鄰點之間的垂直平分面切割而成。把這一模一樣的作圖施加在倒晶格上,你切出的那塊晶胞,就是第一布里淵區。它是電子能帶與聲子能帶天生的居所——同樣的倒空間幾何,只是這回在做物理、而不是做繞射。第五篇會把埃瓦爾德球與布里淵區都好好展開;這裡只要記住:這兩者都早已埋伏在你今天建起的那個晶格裡。