為什麼固態物理從晶體講起(章首導言,書 p.3)
第 1 章開頭先回答一個方法論問題:真實世界的固體有晶體也有非晶體,為什麼整本書要從晶體出發?原文給的理由不是「晶體比較常見」,而是「固體最重要的電子性質在晶體裡表達得最清楚」。書中的推論鏈是這樣的:最重要的那些半導體,其性質取決於母體(host)的晶體結構,本質原因在於電子帶有短波長的成分,會對樣品規則的週期性原子序產生劇烈的響應(respond dramatically)。反過來,非晶材料——原文特別點名玻璃——在光學傳輸上很重要,因為光波的波長比電子長,光看到的是序的平均(an average over the order),而不是比較不規則的局域序本身。
這一段的地位其實是全書的邊界條件。Kittel 把「週期性」當成整本書的主軸,不是因為週期性漂亮,而是因為它是唯一能讓「波在固體裡的行為」被完全解析的結構前提。後面的倒晶格、Brillouin zone、Bloch 定理、能帶、聲子色散,全部都建立在這句話上;而本節接下來要做的事,就是把「週期性」這個模糊的形容詞,變成三個向量和一條整數方程式。
接著原文交代晶體是怎麼來的:晶體是在一個恆定的環境中(通常在溶液裡)持續加上原子而形成的。書中舉的例子是天然石英,在熱水中的矽酸鹽溶液裡、在壓力下經緩慢的地質過程長成。當相同的建構單元(building block)被連續地加上去,晶體的外形(crystal form)就發展出來。原文在這裡把建構單元明確定義為「原子或原子群」。因此扣掉偶然混入或內建的缺陷與雜質,晶體就是由相同建構單元構成的三維週期陣列。注意原文的但書寫得很輕(apart from any imperfections and impurities),但這個但書在真實材料裡就是整個缺陷物理與摻雜工程的入口。
【Fig. 1(書 p.2,該頁整頁只有圖)】這張圖畫的是兩個世紀前人們想像的晶體生長過程,圖說標題是「晶體外形與基本建構單元形狀之間的關係」。圖分三格:(a) 與 (b) 用的是完全相同的建構方塊,但發展出不同的晶面(different crystal faces are developed)——這兩格並排的用意是告訴你,同一種內部重複單元可以長出外觀完全不同的多面體,所以「外形」本身不是結構的定義,內部的重複單元才是。(c) 畫的是把一塊岩鹽(rocksalt,即 NaCl)晶體劈開(cleaving)——圖說原文只寫到這裡;解理面沿著特定的晶面走、是內部週期結構在巨觀尺度留下的可見痕跡(此為補充,原文未明說)。整張圖要建立的直覺是:巨觀的幾何規則性,是微觀重複性的外顯。
最後原文給了兩層實驗證據,這兩層的性質完全不同,值得分開記。第一層來自礦物學,時間上早得多:定義晶面取向的指數(index numbers)是精確的整數(exact integers)。這就是一般所稱的有理指數定律(此名稱為補充,原文未明說,只說 index numbers 是 exact integers)。一個連續的、無結構的介質不會偏好整數比例;整數之所以出現,唯一自然的解釋就是內部結構是離散且週期的。這是間接證據,但它在 x 光發明之前就已經成立。
第二層是 1912 年 x 光繞射的發現:Laue 發展了週期陣列繞射 x 光的理論,他的合作者報告了第一個晶體繞射 x 光的實驗觀測。原文特別指出 x 光之所以適合這件事,理由只有一個——它是波,而且波長與結構建構單元的長度可以相比擬。原文也說明中子繞射與電子繞射同樣能做這種分析,但 x 光通常是首選工具(the tool of choice)。繞射工作決定性地(decisively)證明了晶體是由原子或原子群構成的週期陣列。
有了一個確立的晶體原子模型,物理學家才能繼續往下想;原文接著說,量子理論的發展對固態物理的誕生極為重要。最後把視野拉開:相關的研究已經延伸到非晶固體與量子流體,這個更廣的領域叫做凝態物理(condensed matter physics),是物理學中最大、最有活力的領域之一。這句話等於預告了本書的體例:以晶體為骨幹,但方法論的適用範圍遠大於晶體。
補充:為什麼「電子看得見週期性、光看不見」我的判讀
原文那句「電子有短波長成分、光波長較長」講得很快,但它其實是整本書為什麼這樣編排的物理依據,值得把尺度攤開來看。判準只有一個數:波長 λ 與晶格常數 a 的比值。
固體中導電電子在費米面附近的 de Broglie 波長大約是幾 Å 的量級,和典型的晶格常數 a ≈ 2–6 Å 同一個數量級。當 λ 與 a 可比擬時,週期位能不能被平均掉:波在相鄰原子面上散射出來的分量會發生相干疊加,在滿足 Bragg 條件(大約 λ ≈ 2a 附近)時產生全反射,行進波變成駐波,能量出現不連續——這就是能隙。原文所謂的「劇烈響應(respond dramatically)」,具體指的就是這種在特定波向量上發生的奇異行為。半導體的能隙、有效質量、能谷位置,全都是這個機制的產物,所以它們必然取決於晶體結構。
可見光的 λ ≈ 400–700 nm,比 a 大了三個數量級。光波在一個波長內要掃過上千個原子,任何單一鍵結的取向、任何局域的無序,對它而言都被平均掉了;光只感受到一個等效的極化率,也就是一個介電常數。這就是為什麼玻璃——結構上是無序的——仍然可以是極好的光纖材料,而同樣無序的非晶矽就沒辦法做出乾淨的能帶。
這個尺度比較也順帶解釋了下一章為什麼要用 x 光而不是可見光做結構分析:要解析出間距為 d 的結構,探測波必須滿足 λ ≲ 2d,可見光從一開始就出局。(本段為補充說明,原文只給出結論,未展開尺度論證。)
理想晶體的定義:lattice 與 basis 的分工(書 p.4)
原文對「ideal crystal(理想晶體)」給的定義是:由相同原子群的無限重複所構成。就在這一句話裡,本章最重要的一組名詞被切開了:
・那一群原子叫做 basis(基底)。
・這些 basis 所附著的那組數學點,叫做 lattice(點陣)。
請特別注意原文對 lattice 的措辭:它是「the set of mathematical points to which the basis is attached」——是數學點的集合,不是原子的集合。這是本章最容易被滑過去的一句話,卻是後面所有混淆的源頭。點陣上沒有物質;物質全部在 basis 裡。lattice 是一個純粹的對稱性骨架,你可以把它想成一張看不見的釘板,basis 是掛在每根釘子上的同一件東西。
三維的 lattice 由三個平移向量 a1, a2, a3 定義。關鍵在於原文定義它們的方式是對稱性的語言,而不是幾何的語言:從 r 這個點看過去的原子排列,必須與從任何一個由 a 的整數倍平移過去的點 r′ 看過去的排列「看起來一樣(looks the same)」。定義裡完全沒有提到距離、角度或原子在哪裡——只提到「看起來一樣」。這一點很重要,因為它使得 lattice 這個概念對任何晶體都適用,不管 basis 多複雜。
原文接著補了一句容易被忽略的話:由 (1) 式對所有 u1, u2, u3 所定義的 r′ 的集合,就是 lattice。也就是說 lattice 不是「先有一堆點、然後找向量」,而是「先有向量、由它們生成點」。
【Fig. 2(書 p.4)】這張圖把 lattice + basis = crystal structure 拆成三格:(a) 標為 space lattice,畫面上只有點,沒有原子;(b) 標為 basis,圖中畫的是一個含兩個不同離子(two different ions)的 basis;(c) 標為 crystal structure,是把 (b) 的 basis 掛到 (a) 的每一個格點上得到的結果。圖說要求讀者反過來練習:看著 (c),先認出 basis,然後才能把 space lattice 抽象出來——這個方向(從真實結構倒推點陣)才是研究者實際會遇到的方向。圖說最後還加了一句關鍵敘述:basis 相對於格點放在什麼位置並不重要。換句話說,把整個 basis 一起平移一個任意(不必是格向量)的位移,得到的是同一個晶體結構,只是換了原點。lattice 承載的資訊只有「平移對稱性」,不包含「原子絕對位置」。
晶格平移對稱性(lattice translation)
r′ = r + u₁a₁ + u₂a₂ + u₃a₃
(1) p.4r 為觀察點的位置向量;r′ 為平移後的觀察點。a₁, a₂, a₃ 為三個平移向量(在這一式被寫下時,還沒有要求它們是 primitive)。u₁, u₂, u₃ 為任意整數(原文用 arbitrary integers)。原文明確指出:對所有 u₁, u₂, u₃ 由這一式定義出來的 r′ 的集合,就是 lattice 本身。
「primitive」這個形容詞到底在要求什麼(書 p.4)
原文對 primitive 的定義只有一句話,但它是本節的技術核心,必須逐字讀:如果任意兩個「原子排列看起來相同」的點,都總是能用 (1) 式配上適當的整數 uᵢ 連接起來,那麼這個 lattice 就稱為 primitive。原文接著說,這句陳述就定義了 primitive translation vectors aᵢ。
把邏輯拆開會清楚很多。(1) 式本身只保證充分性:只要用 a 的整數組合平移,看到的就一樣。而 primitive 的要求加上了必要性:反過來,只要看起來一樣,就一定是 a 的某個整數組合平移。合起來就是「等價平移」與「a 的整數組合」這兩個集合完全相等。用比較口語的說法:a₁, a₂, a₃ 張出的整數格必須窮盡所有的等價平移,一個都不能漏。「漏掉一個」正是 non-primitive 的唯一失敗模式。
原文緊接著給了一個等價的體積判準:沒有任何體積比 a₁ · a₂ × a₃ 更小的 cell,能夠當作這個晶體結構的建構單元。這兩種說法是同一件事的兩面——如果你漏掉了某個等價平移 T,那麼把 T 也拿進來一起張,就能切出比原來更小的 cell;反之若已經是最小體積,就不可能還有漏網的平移。(等價性的論證為本講解自補,原文只並列這兩句、並未說它們等價。)這個等價性在解題時很好用:懷疑一組向量不是 primitive 時,你可以去找漏掉的平移,也可以去算體積,兩條路都行。
原文也交代了實務上的命名:我們經常用 primitive translation vectors 來定義 crystal axes(晶軸),這三個軸構成 primitive parallelepiped 的三條相鄰邊。但原文隨即補上一句非常重要的但書——當非 primitive 的軸與結構的對稱性有簡單關係時,實務上常常改用那組軸作為 crystal axes。這短短一句話就是後面立方晶軸(也就是一般所說的 conventional cell)存在的全部理由,也是初學者混淆的根源。
【Fig. 3a(書 p.5)】這是本節最該仔細看的圖。圖上是一個二維點陣,畫了好幾組候選的 a₁, a₂。圖說的訊息分三層:第一,圖上所有成對的 a₁, a₂ 都是這個點陣的平移向量(也就是說它們都把點陣映回自己)。第二,其中標為 a₁‴, a₂‴ 的那一對並不是 primitive translation vectors,理由被原文明確寫出來:我們無法用 a₁‴ 與 a₂‴ 的整數組合形成圖中標示的那個晶格平移 T。第三,圖上其他幾對 a₁, a₂ 則都可以取作這個點陣的 primitive translation vectors。這張圖等於是把「是平移向量」與「是 primitive 平移向量」這兩件事在同一張圖上對比出來,前者是後者的必要非充分條件。
補推導:如何判斷一組向量是不是 primitive(整數矩陣的行列式判準)補推導
原文用 Fig. 3a 舉了一個具體反例(a₁‴, a₂‴ 連不到 T),但沒有給一般的判準。以下補上標準的代數判準,這是書中省略的部分。設定很簡單:任何兩組平移向量之間一定差一個整數矩陣,問題只在這個矩陣可不可逆「在整數的意義下」。
這個判準把原文那句口語化的「無法用整數組合形成 T」,變成一個可以在紙上算完的程序:寫下 M,算行列式,是 ±1 就 primitive,不是就不是;而且 |det M| 這個數字直接告訴你放大了幾倍、漏掉了幾類平移。它同時順帶證明了本節稍後要用到的核心事實——primitive cell 的選法不唯一,但體積唯一。(本 block 為補充推導,原文未給出。)
- 設 a₁, a₂, a₃ 已知是一組 primitive translation vectors,另取一組候選向量 b₁, b₂, b₃。因為 bᵢ 本身必須是點陣的平移向量,而 a 組是 primitive(窮盡所有平移),所以每個 bᵢ 必定能用 a 的整數組合表出:bᵢ = Σⱼ Mᵢⱼ aⱼ,其中 M 是一個 3×3 的整數矩陣。這一步只用到 a 是 primitive。
- 若 b 組也是 primitive,那麼反過來,每個 aⱼ 也必須能用 b 的整數組合表出:aⱼ = Σᵢ (M⁻¹)ⱼᵢ bᵢ。因此 M⁻¹ 也必須是整數矩陣。
- det M 與 det M⁻¹ 都是整數(整數矩陣的行列式必為整數),而且 (det M)(det M⁻¹) = det(I) = 1。兩個整數相乘等於 1,只有 1×1 與 (−1)×(−1) 兩種可能,故 det M = ±1。這種矩陣稱為 unimodular(么模)矩陣。
- 反向也成立:若 M 是整數矩陣且 det M = ±1,由 Cramer 法則 M⁻¹ = adj(M)/det M,而 adj(M) 的元素是 M 元素的代數餘子式、必為整數,除以 ±1 後仍為整數。所以 b 組確實能整數表出所有 a,b 組是 primitive。至此得到充要條件:b 為 primitive ⟺ M 為整數矩陣且 |det M| = 1。
- 體積的關係由行列式直接給出:V_b = |det M| · V_a。代入 |det M| = 1 得 V_b = V_a——所有 primitive cell 的體積都相同。
- 若 M 為整數矩陣但 |det M| = n > 1,則 b 組張出的是原點陣的一個子格,cell 體積是 primitive cell 的 n 倍,而且恰好漏掉了 n−1 類平移(原點陣對該子格的商群有 n 個陪集,每個陪集對應一種「原本等價、現在連不到」的平移)。Fig. 3a 中面積是 primitive cell 兩倍的平行四邊形 4,對應的就是 n = 2 的情形;而圖中那組 a₁‴, a₂‴ 之所以連不到 T,正是因為 T 落在另一個陪集裡。
Basis:把原子掛到數學點上(書 p.5)
原文開篇的順序值得注意:晶體結構的 basis,是在 crystal axes 選定之後才能被指認出來的。理由很直接——basis 的座標是相對於 a₁, a₂, a₃ 表示的,軸還沒定下來,座標就沒有意義。這也解釋了為什麼上一小節必須先講平移向量。
原文接著用 Fig. 2 說明晶體是怎麼「造」出來的:把一個 basis 加到每一個格點上。而且原文在這裡插了一句提醒——格點當然只是數學構造(of course the lattice points are just mathematical constructions)。這句話是對「lattice 是數學點」的再次強調,位置放在這裡是有用意的:正要開始談原子座標了,此時最容易把格點誤認成原子。
原文對 basis 給了三個陳述,每一個都該分開記:第一,在一個給定的晶體裡,每一個 basis 與其他任何一個 basis 在組成(composition)、排列(arrangement)與取向(orientation)三方面都完全相同。三個條件缺一不可——組成相同但取向轉過的,不算同一個 basis。第二,basis 中的原子數可以是一個,也可以多於一個。第三(由 (2) 式給出),basis 中第 j 個原子中心相對於所聯繫格點的位置,用 a₁, a₂, a₃ 展開。
這裡有一個很容易出錯的地方:(2) 式裡的 xⱼ, yⱼ, zⱼ 是分數座標(fractional coordinates),不是長度。它們是無量綱的,各自以 a₁, a₂, a₃ 的長度為單位。原文說我們可以把原點(也就是那個「associated lattice point」)安排成使 0 ≤ xⱼ, yⱼ, zⱼ ≤ 1。請注意原文的語氣是「可以這樣安排(We may arrange)」,而不是「必然如此」:任何跑出這個範圍的原子,都能用一個格向量平移回來,而平移一個格向量不會改變晶體結構。所以這是一個慣例上的方便,不是物理上的限制。
【Fig. 3b(書 p.5)】畫的是三維空間點陣的 primitive cell,也就是由 a₁, a₂, a₃ 三個向量張出的平行六面體。它的作用是把 Fig. 3a 的二維討論升到三維,讓讀者看到 (3) 式的三重積在幾何上對應的是什麼形狀。
【Fig. 3c(書 p.5)】這不是一張說明圖,而是一道畫在圖上的習題。原文的要求是:假設圖中那些點是相同的原子(identical atoms),請讀者自己在圖上畫出一組格點、一組 primitive axes 的選擇、一個 primitive cell,以及與一個格點相聯繫的原子 basis。這道題的設計用意非常明確——即使所有原子都相同,「原子的位置集合」也不見得就是「點陣」。讀者必須自己動手,才會發現要先判斷哪些原子的環境是等價的,才能決定哪些點可以當格點。
basis 中第 j 個原子的位置(分數座標表示)
rⱼ = xⱼa₁ + yⱼa₂ + zⱼa₃
(2) p.5rⱼ 為 basis 中第 j 個原子的中心,相對於「所聯繫的格點」的位置向量(不是相對於絕對原點)。xⱼ, yⱼ, zⱼ 為無量綱的分數座標,各以 a₁, a₂, a₃ 的長度為單位。a₁, a₂, a₃ 為已經選定的 crystal axes。j 跑遍 basis 中的所有原子。另註:0 ≤ xⱼ, yⱼ, zⱼ ≤ 1 這個範圍限制不屬於編號式 (2) 本身,它是原文緊接在式 (2) 之後的一句獨立敘述(We may arrange…),語氣是「可以這樣安排」而非必然。
Primitive cell:最小體積的鋪磚(書 p.6)
由 primitive axes a₁, a₂, a₃ 所定義的平行六面體,叫做 primitive cell(Fig. 3b)。原文在這裡插了一句常被引用的旁白:primitive cell 是 cell 或 unit cell 的一種,而形容詞 unit 是多餘的——原文的原話是「The adjective unit is superfluous and not needed.」。Kittel 的意思是:cell 這個字本身已經蘊含了「經重複可鋪滿空間的單元」,再冠上 unit 是同義反覆。這不只是用字潔癖:中文教科書常把 unit cell 譯成「單位晶胞」,再把 primitive cell 譯成「原胞」,讓學生以為這是兩種並列的東西;照 Kittel 的用法,primitive cell 是 cell 的一個子類,而 unit 這個字根本不該出現。
原文對 cell 的定義是功能性的、而不是形狀性的:一個 cell,經過適當的晶體平移操作重複之後,會填滿全部空間。請注意這個定義裡沒有要求形狀是平行六面體,也沒有要求體積最小。「最小體積」是 primitive 這個形容詞另外加上去的(原文:primitive cell 是 minimum-volume cell);而「不必是平行六面體」這個自由度,稍後就會被 Wigner–Seitz 構造用掉。
接下來是本小節的三個關鍵事實,它們的邏輯關係值得拆開:
第一,對一個給定的點陣,選 primitive axes 與 primitive cell 的方法有很多種(原文:There are many ways of choosing…)。
第二,但對一個給定的晶體結構,primitive cell(或說 primitive basis)中的原子數永遠相同。
第三,每個 primitive cell 裡永遠只有一個格點。原文給了一個具體的計數示範:如果 primitive cell 是一個八個角上都有格點的平行六面體,那麼每個格點被八個 cell 分攤,所以這個 cell 內的格點總數是 8 × (1/8) = 1。
第一點與第二、三點合起來,就是本節最重要的邏輯結構:選法是自由的,但被選出來的東西的「容量」是不變量。這正是為什麼後面在數原子數、算密度、數狀態數、數聲子分支數的時候,可以完全不必交代你到底用了哪一種 primitive cell——答案不依賴這個選擇。反過來說,任何一個論證如果它的結論會隨你選哪個 primitive cell 而改變,那個論證一定有錯。
【回到 Fig. 3a(書 p.5)】這張圖的另一半訊息正好對應上面這件事。圖上標示了四個平行四邊形:編號 1、2、3 的三個面積相等,任何一個都可以取作 primitive cell——它們的形狀完全不同(有的瘦長、有的接近方形),面積卻一樣。而編號 4 的平行四邊形,面積是 primitive cell 的兩倍,所以它不是 primitive cell。這張圖把「形狀不唯一、體積唯一」用一張圖講完了。
最後原文定義了 primitive basis:與一個 primitive cell 相聯繫的 basis,稱為 primitive basis;並且沒有任何 basis 所含的原子數比 primitive basis 更少(原文:No basis contains fewer atoms than a primitive basis contains.)。這句話是「basis 也有最小性」的宣告,與 primitive cell 的「體積最小性」互為表裡:cell 取到最小體積的同時,掛在上面的 basis 也自動取到最少原子數。
primitive cell 的體積(純量三重積)
V_c = |a₁ · a₂ × a₃|
(3) p.6V_c 為 primitive cell 的體積;a₁, a₂, a₃ 為 primitive translation vectors。a₂ × a₃ 是向量積,其大小等於 a₂ 與 a₃ 張出的平行四邊形面積、方向垂直於該平面;再與 a₁ 做純量積,取出的正是「底面積 × 垂直高」。絕對值符號是必要的:三重積在 a₁, a₂, a₃ 構成左手系時為負值,而體積必須為正。
補推導:V_c 與格點密度互為倒數,以及體積唯一性的物理論證補推導
原文說 primitive cell 是 minimum-volume cell、而且每個 cell 一個格點,但沒有把「體積唯一」這件事明講成一條定理。以下用格點密度補上一個一行就能講完的論證。它比前面的行列式判準更物理,也更容易在考試或口試中重現。
這個關係在實驗上最常被反過來用:量到材料的質量密度 ρ 與化學式量 M,可以算出單位體積的式量單元數 ρN_A/M;再除以每個 primitive cell 裡的式量單元數,就得到 1/V_c,進而檢查 x 光繞射所定出的晶格常數是否自洽。反過來,晶格常數已知時也可以預測理論密度,與量到的密度相比,差值就是空孔等缺陷濃度的上限估計。(本 block 為補充推導,原文未給步驟。)
- 取一個邊長 L 的大立方體,L 遠大於任何 |aᵢ|。設點陣的格點數密度為 n(單位體積內的格點數),則這個體積內的格點總數為 N = nL³。表面上被切到的格點造成的誤差是表面項,相對誤差約為 1/L,在 L → ∞ 時可忽略——這正是熱力學極限的標準做法。
- 用任意一種 primitive cell 把這個立方體鋪滿,設共用了 N_cell 個 cell。由 cell 的定義(重複平移後填滿全部空間),有 N_cell · V_c = L³。
- 引用原文 p.6 的結果:每個 primitive cell 裡恰好只有一個格點。因此 cell 的個數等於格點的個數:N_cell = N。
- 把第 2、3 步合併:N · V_c = L³,即 (nL³) · V_c = L³,兩邊消去 L³ 得 V_c = 1/n。
- 關鍵觀察:n 是點陣本身的性質,完全不涉及「你怎麼選 cell」。既然 V_c = 1/n 對任何一種 primitive cell 都成立,所有 primitive cell 的體積就必然相同。這就從物理面證明了 Fig. 3a 中平行四邊形 1、2、3 面積相等這件事,而且證明對三維、對任何點陣都有效。
- 推廣:若某個 cell 含 m 個格點(m 為正整數),重複同樣的計數得其體積為 m/n = m·V_c。Fig. 3a 中含 2 個格點、面積兩倍的平行四邊形 4 就是 m = 2 的情形;後面立方 conventional cell 的體積是 primitive cell 的整數倍,也是同一條式子。
補算例:用 (3) 式驗算一組 primitive 向量(以面心立方為例)補推導
這個算例的向量取法與整個計算都是本講解自行設定的補充,本節原文只給出 (3) 式本身、沒有給任何算例。放在這裡的目的,是把 (3) 式從「一條公式」變成「一個可以查帳的工具」。
查帳的程序是固定的三步:(i) 用三重積算出候選 cell 的體積 V_c;(ii) 用 m = V_conventional / V_c 反推 conventional cell 裡應該有幾個格點;(iii) 用角點/面心/體心的分攤法獨立數一次。兩個數字對得起來,你選的向量才是 primitive;對不起來,就表示你不小心選到了一個子格。這個交叉驗算習慣在後面處理 bcc、hcp、金剛石結構時會一直用到,值得現在就養成。
- 取立方邊長為 a,並自行設定一組候選的 primitive 向量:a₁ = (a/2)(x̂ + ŷ),a₂ = (a/2)(ŷ + ẑ),a₃ = (a/2)(ẑ + x̂)。幾何上,這三個向量分別從立方體的某個角點指向它三個相鄰的面心。
- 先算向量積:a₂ × a₃ = (a/2)² (ŷ + ẑ) × (ẑ + x̂) = (a²/4)[ ŷ×ẑ + ŷ×x̂ + ẑ×ẑ + ẑ×x̂ ]。逐項代入 ŷ×ẑ = x̂、ŷ×x̂ = −ẑ、ẑ×ẑ = 0、ẑ×x̂ = ŷ,得 a₂ × a₃ = (a²/4)(x̂ + ŷ − ẑ)。
- 再做純量積:a₁ · (a₂ × a₃) = (a/2)(x̂ + ŷ) · (a²/4)(x̂ + ŷ − ẑ) = (a³/8)(1 + 1 − 0) = a³/4。
- 代入 (3) 式:V_c = |a³/4| = a³/4。而立方 cell 的體積是 a³,所以這個 primitive cell 只有立方 cell 的四分之一。
- 用前一個 block 的關係反查:立方 cell 所含的格點數 m = V_cube / V_c = a³ / (a³/4) = 4。
- 用分攤法獨立驗算:立方 cell 的 8 個角點各被 8 個 cell 分攤,貢獻 8 × (1/8) = 1;6 個面心各被 2 個 cell 分攤,貢獻 6 × (1/2) = 3;合計 1 + 3 = 4。兩種算法一致,確認這組向量的確是 primitive(若它們不是 primitive,兩個數字會對不起來)。
補充辨析:primitive cell 與 conventional cell(本節原文尚未用到這個詞)我的判讀
primitive cell 與 conventional cell 的差別是本章最常被問的問題,但這裡必須先誠實交代一件事:在書本 p.1–6 這一段裡,conventional cell 這個詞根本還沒有出現。原文在這幾頁只做了兩處鋪陳——p.4 那句「當非 primitive 的軸與結構的對稱性有簡單關係時,實務上常常改用那組軸當 crystal axes」,以及 p.5 Fig. 3a 圖說裡「平行四邊形 4 的面積是 primitive cell 的兩倍」。以下的整理是在這兩處鋪陳上補出來的,不是原文內容。
primitive cell 是最小體積、每胞恰含一個格點的鋪磚。它的優點是「最小」,缺點是它會把對稱性藏起來:面心立方的三個 primitive 向量兩兩夾 60°,長度是 a/√2,從這組軸上你完全看不出這個點陣具有立方對稱。對一個只拿到三個向量的人來說,它看起來像個菱面體。
conventional cell 則是刻意放棄最小性、換取對稱性可見的鋪磚。面心立方用邊長 a 的立方 cell(含 4 個格點),體心立方用邊長 a 的立方 cell(含 2 個格點)。它的三條軸兩兩正交、等長,立方點群的所有操作在這組軸上都退化成簡單的座標置換與變號,寫晶面指數、寫對稱操作都方便得多。原文 p.4 說的「與結構的對稱性有簡單關係」,指的就是這件事。
使用時機可以用一條乾淨的界線來切:
・要「數東西」——每胞原子數、狀態數、聲子分支數、電子填充數——一律用 primitive cell。這些都是 per-cell 的計數量,全都和 primitive cell 綁定;誤用 conventional cell 會把數字整整放大 m 倍(fcc 是 4 倍、bcc 是 2 倍)。
・倒空間的量則是相反的方向,必須分開記。把 conventional cell 誤當成 primitive cell 時,對應的倒空間 cell 體積是 (2π)³/(m·V_c),也就是真實 Brillouin zone 的 1/m,區域變小;同一塊晶體中的 cell 個數也從 N 變成 N/m,所以在同樣取樣密度下 k 點總數是變少而不是變多。體積與 k 點數縮小為 1/m 的直接後果就是 band folding。
・要「講對稱性、標晶面指數、報晶格常數」——用 conventional cell。文獻裡寫「Si 的晶格常數 a = 5.43 Å」,指的一定是 conventional 立方 cell 的邊長,不是 primitive 向量的長度(後者是 a/√2 ≈ 3.84 Å)。(此數值為一般文獻常識,本節原文未給。)
這是實務上最常見的單位錯誤來源之一:把 conventional 的 a 拿去當 primitive 向量的長度去算密度或算倒晶格,fcc 會差 4 倍、bcc 會差 2 倍。在 DFT 或 tight-binding 的輸入檔裡,這種錯誤不會報錯,只會安靜地給你一組看起來合理但是錯的能帶。檢查方法就是前面那個算例的查帳程序:算出 V_c,看看每胞原子數是不是你預期的那個數。
Wigner–Seitz cell:另一種取 primitive cell 的方法(書 p.6, Fig. 4)
原文在本小節的最後只用兩句話帶過:還有另一種選 primitive cell 的方法,示於 Fig. 4;這種 cell 被物理學家稱為 Wigner–Seitz cell。真正的內容全部寫在 Fig. 4 的圖說裡。原文的作圖程序只編號了兩步 (1)(2),之後接一句未編號的結論句(以下逐步轉述;第三段的 (3) 是本講解為了條列而自行加上的編號,原文沒有這個編號):
(1) 從一個給定的格點出發,畫直線連到所有鄰近的格點(draw lines to connect a given lattice point to all nearby lattice points)。
(2) 在每條連線的中點處、且垂直於該連線,畫出新的直線或平面(at the midpoint and normal to these lines, draw new lines or planes)——二維時畫線,三維時畫面。
(3) 用這種方式所圍出的最小體積(the smallest volume enclosed in this way),就是 Wigner–Seitz primitive cell。
圖說最後補了一句結論:所有空間都可以被這些 cell 填滿,就像被 Fig. 3 的那些 cell 填滿一樣。這句話很重要,它確認了 Wigner–Seitz cell 滿足原文前面對 cell 所下的功能性定義(經適當的晶體平移操作重複後填滿全部空間)。
請注意原文的敘述位置:Wigner–Seitz cell 是被放在「Primitive Lattice Cell」這一小節的結尾、作為「另一種選 primitive cell 的方式(Another way of choosing a primitive cell)」提出的。也就是說,原文明確把它歸類為 primitive cell,而不是一種新的東西。它與 Fig. 3b 的平行六面體是同一個範疇下的兩個選項。
補充:Wigner–Seitz cell 的一句話定義、它為什麼特別,以及它長什麼樣我的判讀
原文那三個作圖步驟可以壓縮成一句話:Wigner–Seitz cell 就是「離這個格點比離任何其他格點都近」的所有點所構成的區域。這個翻譯值得記下來,因為它讓整個構造變得不言自明——步驟 (2) 畫的垂直平分面,正是「到兩個格點等距」的軌跡;而步驟 (3) 取最小圍出區域,就是把所有「比較靠近別人」的部分全部切掉。剩下的自然就是這個格點的勢力範圍。
在計算幾何裡,這種「最近點勢力範圍」叫做 Voronoi cell。Wigner–Seitz cell 就是點陣的 Voronoi cell,這也是為什麼所有結構視覺化軟體都能自動畫出它——它是一個純幾何構造,不需要任何物理輸入。
它和平行六面體 primitive cell 最關鍵的差別是:平行六面體的形狀取決於你怎麼選軸(Fig. 3a 的 1、2、3 就是三種不同的選法),而 Wigner–Seitz cell 完全由點陣本身決定,沒有任何選擇的餘地。由此還推出一個非常有用的性質——因為構造過程只用到「距離」,而距離在點陣的所有點群操作下不變,所以 Wigner–Seitz cell 自動具備該格點位置的完整點群對稱性。平行六面體 primitive cell 通常做不到這一點(fcc 的菱面體 primitive cell 就看不出立方對稱)。這是它在理論工作中受歡迎的主要原因。
代價是它通常不是平行六面體,手算積分比較麻煩:體心立方點陣的 Wigner–Seitz cell 是截角八面體,面心立方點陣的則是菱形十二面體。(這兩個形狀名稱為補充,本節原文未提及。)
最後一個必須先記住的伏筆:這套作圖法之後會原封不動地搬到倒空間去用——倒晶格的 Wigner–Seitz cell 就是第一 Brillouin zone。所以 Fig. 4 那三步不是一個小技巧,它是後面整本書都要用的基本操作。
補推導:為什麼 Wigner–Seitz cell 一定是 primitive cell補推導
原文只斷言 Wigner–Seitz cell 是 primitive cell、而且能填滿空間(圖說:All space may be filled by these cells),完全沒有證明。以下補上論證,分成「鋪滿」「不重疊」「平移覆蓋」「體積」四步。
值得特別注意的是,整個論證只用到兩個性質:點陣是離散的,以及點陣具有平移對稱性。它完全沒有用到「格點排成什麼形狀」。因此這個結論對任何點陣都成立,包括最低對稱的三斜點陣。這也正是 Wigner–Seitz 構造的獨特地位——它是唯一一個對所有點陣都能給出標準答案、不需要人為選擇的 primitive cell 取法。(本 block 為補充推導,原文只給結論。)
- (鋪滿性)對空間中任一點 r,考慮它到所有格點 R 的距離 |r − R|。點陣是離散的,所以這個距離集合有最小值(至少被某一個或某幾個格點達成)。因此 r 至少屬於某一個格點的 Wigner–Seitz cell。於是這些 cell 的聯集就是整個空間,沒有空隙。
- (不重疊)假設 r 同時嚴格落在格點 R₁ 與 R₂ 兩個 cell 的內部,則依定義必須同時有 |r − R₁| < |r − R₂| 與 |r − R₂| < |r − R₁|,矛盾。因此兩個 cell 最多只能在「到兩者等距」的邊界(也就是那個垂直平分面)上相交,內部絕不重疊。邊界是零測度集合,不影響體積計算。
- (平移覆蓋)由點陣的平移對稱性,格點 R 的 Wigner–Seitz cell 恰好等於原點的 Wigner–Seitz cell 整體平移 R 的結果——因為「哪個格點最近」這個關係在格向量平移下不變。所以整個空間是由同一個區域、經所有格向量平移鋪成的。這正好滿足原文對 cell 所下的功能性定義:經適當的晶體平移操作重複後填滿全部空間。
- (體積等於 V_c)綜合前三步:每個格點對應且只對應一個 Wigner–Seitz cell,這些 cell 不重疊又鋪滿空間,所以 cell 的數密度等於格點密度 n,體積為 V_WS = 1/n。再引用前面補推導的 V_c = 1/n,得到 V_WS = V_c。Wigner–Seitz cell 的體積與平行六面體 primitive cell 相同。
- (每胞一個格點)Wigner–Seitz cell 的內部只含它自己的中心格點 R:對任何其他格點 R′,R 與 R′ 連線的垂直平分面已經在步驟 (2) 中被畫出來,它把 R′ 切在外側。所以 cell 內部不可能包含第二個格點。
- (結論)體積等於最小體積 V_c、每胞恰含一個格點、且經平移可鋪滿空間——三個條件都滿足,故 Wigner–Seitz cell 確實是一個 primitive cell,與原文的分類一致。
四個最常見的混淆,逐一釐清我的判讀
(一)lattice ≠ crystal structure。本節的核心公式是 lattice + basis = crystal structure。lattice 是數學點的集合,上面沒有任何原子;crystal structure 才是真實的原子安排。實務上的檢查方式是問一句話:「從這個原子看出去的環境,和從那個原子看出去的環境,完全一樣嗎(包括取向)?」若不一樣,這兩個原子就不能同時被當成格點,它們必須是同一個 basis 裡的不同成員。經典陷阱是蜂巢結構(石墨烯):兩個碳原子在化學上完全相同,但它們的三個最近鄰指向互為 180° 旋轉,環境的取向不同。所以蜂巢不是點陣;它的點陣是三角(六方)點陣,basis 含 2 個碳原子。
(二)「所有原子都相同」不代表「原子位置的集合就是點陣」。這正是 Fig. 3c 那道圖上習題要逼出來的體悟——題目刻意說「假設這些點是相同的原子」,然後要你畫出格點與 basis,就是要你發現這兩者可能不重合。只有單原子 basis 的 Bravais 晶格(例如 fcc 的銅、bcc 的鈉)才有「原子位置 = 格點」這種等同。
(三)primitive cell 的選法不唯一,但體積唯一。Fig. 3a 已經把這件事直接畫出來了:平行四邊形 1、2、3 形狀不同、面積相同。選法自由是這個理論的特徵,不是瑕疵。被固定住的不變量是體積(以及每胞的原子數)。由此可以導出一條很有用的自我檢查規則:任何一個論證,如果它的結論會隨你選了哪一個 primitive cell 而改變,那個論證一定有錯。
(四)basis 掛在格點上的哪個位置不影響結構。原文 Fig. 2 的圖說直接說了這一點。它的推論是:你不能從「某個原子在 (0,0,0)」這件事讀出任何物理;有物理意義的只有 basis 內部原子之間的相對位置。這件事在後面算結構因子時會變成一個具體的結論——把整個 basis 一起平移,只會給結構因子乘上一個整體相位因子,繞射強度(取模平方)完全不變。所以繞射實驗原則上量不到「晶體的原點在哪裡」,這與原文這句輕描淡寫的圖說是同一件事。
這一節會在後面哪裡回來找你我的判讀
本節看起來只是在定義名詞,但它定下的三個物件(a₁a₂a₃、basis 的 p 個原子、V_c)會在整本書裡反覆出現。先把接口點記下來,後面讀起來會省很多力氣。
倒晶格與繞射(第 2 章)。a₁, a₂, a₃ 會直接生出倒晶格基向量,而 (3) 式的 V_c 會出現在倒晶格基向量的分母裡——這是本節唯一一條會原封不動被搬進下一章公式的式子。更重要的是,第一 Brillouin zone 就是倒晶格的 Wigner–Seitz cell:Fig. 4 的三步作圖法會被完整地搬到倒空間去用。所以那三步不能只是看過,要會畫。
晶格振動與聲子。一個 primitive cell 裡有 p 個原子,晶體就有 3p 支聲子色散分支(3 支聲學支、3p−3 支光學支)。這裡的 p 必須是 primitive cell 的原子數,不是 conventional cell 的。本節那句「primitive basis 中的原子數是不變量」,就是這條規則能夠成立的前提——如果每胞原子數會隨選法改變,分支數就不是一個良定義的量了。矽的 primitive cell 有 2 個原子,所以有 6 支分支,這也是矽有光學聲子(進而有 Raman 峰)的原因。
熱容與熱傳導。Debye 模型裡的模態總數 3pN(N 為 primitive cell 的個數)、以及 Debye 波向量 k_D 的定義,都直接繼承自 N = V / V_c 這個換算。若你在做元件尺度的熱容或熱阻萃取(例如 FinFET 的 Cth),從原子尺度往上接到連續體模型的第一座橋就是 V_c:每單位體積的振動模態數 = 3p / V_c。這是把「per primitive cell 的量」換算成「per volume 的材料參數」的唯一換算因子,單位錯了整條萃取鏈都會偏掉一個整數倍。危險的是混用:p 用 primitive 的 2、V 卻用 conventional 的 a³(或反過來),矽會差 4 倍;只要 p 與 V 取自同一個 cell,答案不變(矽用 primitive 是 3×2/(a³/4) = 24/a³,用 conventional 是 3×8/a³ = 24/a³,完全相同)。
能帶計算與 DFT 實作。輸入檔裡要填的是 primitive 向量(或 conventional 向量再加上對稱性資訊由程式自行約化);k 點網格的密度是相對於 primitive cell 的倒空間定義的。把 conventional cell 當成 primitive cell 餵進去,程式不會報錯,但會得到摺疊過的能帶(band folding)——看起來像是憑空多了好幾條能帶,而且 Brillouin zone 的高對稱點標籤全部對不上。這是初學者最常踩、也最難自己發現的坑,防呆方式仍然是回到本節:算 V_c,數每胞原子數,確認是不是最小的那個。