2014年8月1日 星期五

[ALPS] 創建晶格以及單位Cells

又幾天沒碰 ALPS 了,有點心虛阿,今天稍微推進一下進度。

上次學到了要如何畫出一個簡單的圖出來,而今天要讀的是如何自訂晶格以及單位Cells。

晶格的就是固態物理中經常見到的那個,而單位 Cells 的 Cells 字典是翻做為「細胞」,但我想應該也可以有「單位元件」的意思,我想應該是代表在週期性晶格下的一個「周期」中的基本組成元件的意思,目前還不是很明白,總之先讀了再說。

晶格不一定是我們現實世界中的三維,在物理模型中,為了簡化計算等原因,經常出現二維或是一維的晶格,這應該是個近似的結果。而我目前比較常在計算中遇到的則是二維的,以下程式碼則定義了一個二維的、無窮大的晶格:

Infinite Lattices

<LATTICE name="2D" dimension="2">
<BASIS>
<VECTOR> 1 0 </VECTOR>
<VECTOR> 0.5 1 </VECTOR>
</BASIS>
</LATTICE>

這串程式碼定義出來的晶格會長這樣



這是一個無窮大的二維晶格,而其中組成它的兩組單位基底向量則是 (1,0) 以及 (0.5,1) 這兩組。


其中,1、0.5、0 這些數字是可以使用代數來替代掉的:





<LATTICE name="2D" dimension="2">
<PARAMETER name="a" default="1"/>
<PARAMETER name="b" default="1"/>
<PARAMETER name="phi" default="Pi/2"/>
<BASIS>
<VECTOR> a 0 </VECTOR>
<VECTOR> b*sin(phi) b*cos(phi) </VECTOR>
</BASIS>
</LATTICE>

這使用了 PARAMETER 這個標籤,代表我們定義了 a b 這兩個參數,而這兩個參數 (變數?) 會在後續的 VECTOR 中被使用到,而以上這段程式碼出來的結果會和上一個程式碼一樣。


 


Finite lattices


我們的計算通常不會出現「無窮大」晶格的狀況,因此我們必須嘗試去定義有限的晶格。一個有限大小的晶格如下:


TutorialLatticeHOWTOLLattice2.gif


要定義出這個晶格,我同樣得使用XML語法:





<FINITELATTICE name="5x3">
<LATTICE name="2D" dimension="2"/>
<EXTENT dimension="1" size="5"/>
<EXTENT dimension="2" size="3"/>
</FINITELATTICE>

和無限大的晶格不同,我們在一開始的標籤是使用 FINITELATTICE ,而在 EXTENT 標籤中,我們則會給定它應有的 size ,也就是該方向的晶格大小。


另外,藉由預設的設定「如果沒指定方向的 size ,則每個方向都會一樣大小」,我們也可以定義一個 Cubic 出來





<FINITELATTICE>
<LATTICE dimension="3"/>
<EXTENT size="4"/>
</FINITELATTICE>

同樣的,參數標籤在這裡也是可以直接使用





<FINITELATTICE>
<PARAMETER name="W" default="2" />
<LATTICE dimension="3"/>
<EXTENT size="W"/>
</FINITELATTICE>

 


Boundary conditions


邊界條件一直是物理上一個很重要的參數,在ALSP中,邊界條件可以有兩種設定:


open: 開放式邊界條件,出了晶格就是空空如也


periodic: 循環的邊界條件,出了左側的晶格後,會循環回到右側的晶格點,左右、上下相接


建立方式不難,只要在其中加上





<BOUNDARY type="periodic" />
就可以了。

沒有留言:

張貼留言