2014年8月31日 星期日

[ALPS] 使用法

總之,就是準備一個參數文件如下

parm.par

LATTICE="open chain lattice"
MODEL="spin"
CONSERVED_QUANTUMNUMBERS="N,Sz"
Sz_total=0
J=1
SWEEPS=4
NUMBER_EIGENVALUES=1
L=32
{MAXSTATES=100}
接著,使用 parameter2xml 來把參數文件轉換成 xml 檔案
parameter2xml parm.par
再來是直接用指令的方式執行它
dmrg --write-xml spin_one_half.in.xml
 
之前我一直以為 MODEL 中應該會放置實際上運作的方法,也就是所謂的「實作」,直到今天我才發現 MODEL不是這麼一回事,MODEL只是放置變數,以及針對 Bound、Site的「運算子」,而實作的過程、方法等則是放在 「dmrg」 這類已經被封裝好的中,難怪我之前都找不到。

2014年8月30日 星期六

[日劇] 流星之絆

原著是東野圭吾的同名小說,主要敘述著在滅門血案中遺族有明家三兄妹的故事。

2011052534219788_584_o

故事和小說不同的是,TV版本是從妹妹小靜被詐欺犯騙走了數十萬元開始,從而漸漸帶入十四年前的殺人事件,以及三兄妹在事件發生前的回憶。

除了回憶以外,也帶入了三兄妹間的夢想──「假如事件沒發生……」大哥的妄想也參雜在劇中,老爸和長大後的大哥一起在廚房鬥嘴鼓的畫面讓人更感鼻酸,同時也完全能體會遺族 (油其是大哥) 那深沉的恨意。

片中也探討了遺族在事件發生後的掙扎,到底「遺族」這個包袱要持續多久,要承受社會同情的眼光多久,「難道要一輩子當遺族嗎?」二哥如此說著。

雖然這麼說有些不好意思,但這部作品感覺上強調了人類的兩種情感,也就是愛和恨。藉由各種回憶的畫面以及人勿間的對白,很容易就把自己給代入到大哥的立場,深深的贈恨起了兇手,然而,在贈恨的同時卻又能同時感受到兄妹間相依為命的緊密羈絆,這兩者間形成了強力的對比,也讓三人的形象變得立體鮮明了起來,不再只是個飽含恨意的遺族,而是實實在在的人。

很推薦這個故事,小說很棒,而TV版則更加出色。

2014年8月15日 星期五

notepad++ 的ssh 功能

這次去台大學 cuda 程式設計,除了cuda以外也學到了用notepad++來編輯遠端伺服器的檔案

 

這是個很方便的做法,不過可惜我已經習慣用 vim 了,所以也就不太使用這個,但很推薦給剛使用 linux 的人使用。

 

主要的使用方式是編輯完成後上傳、覆蓋黨暗,而在結束後再回到 terminal 視窗來編譯執行。

 

以下介紹的影片,不介意聲音難聽的話就自行取用吧

2014年8月10日 星期日

Winscp ── 方便的 sftp 工具

過去我都是使用Filezilla 這套軟體進行檔案傳輸,其中能和 Windows 的檔案總管互相進行拖拉這點讓人覺得十分方便,且「站台管理員」這項功能也十分方便,CTRL+S 就可以快速叫出並選擇適當的站台,然而由於左半邊的「本地端目錄」幾乎沒有使用,且顯示模式僅支援一種,整個畫面經常給隱藏目錄給湮沒,總令人感到有些缺憾。

而最近我找到了另一個可以開sftp的工具──Winscp,它同樣支援檔案總管的拖拉,且顯示方式可以調整成類似檔案總管的方式,不用再看到左邊那浪費空間的本地端目錄了,這很符合我的需求。

另外,它似乎也能和putty做結合,可以直接在終端機上拖拉上傳、下載,但這方面我還沒去嘗試,以後可以試試看。

Winscp也可以直接把機台存成捷徑放在桌面,直接點開就可以開啟sftp連結,用起來和檔案總管沒有差太多,相當方便。

2014年8月5日 星期二

[ALPS]結合 Unit cells 和 lattice

通常我們建立晶格時,單一循環內可以不只有一個粒子,而這其中「單一循環」感覺就有點像是 Unit cells了,這個「單一循環」可以很負責雜,也可以很簡單

較簡單的例子:

以上圖為範例,這是一個有著六個循環的開區間晶格,而單一循環中也僅有一個粒子存在,而每個循環之間只有一個連結,上一個循環中的1號粒子會連結到下一個循環的1號粒子。

 

要描述這樣的情形,所需要的 XML 語法如下:

<LATTICEGRAPH>
<FINITELATTICE>
<LATTICE dimension="1"/>
<EXTENT size="6"/>
<BOUNDARY type="open"/>
</LATTICE>
</FINITELATTICE>
<UNITCELL dimension="1" vertices="1">
<VERTEX/>
<EDGE>
<SOURCE vertex="1"/>
<TARGET vertex="1" offset="1"/>
</EDGE>

</UNITCELL>
</LATTICEGRAPH>


這段語法大多數在前兩次的筆記中有提到過了,其中最值得注意的是橘色的部分,這兒有提到EDGE 的 SOURCE 和 TARGET 以及 offset ,所謂「offset = “1”」的意思是:「往前進一個循環」的意思,也就是橘色的整段的意思是:「來源是這的1號端點,目標是下一個循環的1號端點」的意思囉。


稍微複雜的例子──循環內不只一個端點



上圖就是這次要建立的圖像了,這2維的圖像中,每個循環中有兩個端點,分別是紅色(1號)以及藍色(2號),而每個循環之間則以紅色進行相連,方向是向右以及向上,語法如下:

<LATTICE name="square" dimension="2">
<BASIS>
<VECTOR> 1 0 </VECTOR>
<VECTOR> 0 1 </VECTOR>
</BASIS>
</LATTICE>
<FINITELATTICE name="rectangular periodic" dimension="2">
<LATTICE ref="square"/>
<EXTENT dimension="1" size="L"/>
<EXTENT dimension="2" size="W,L"/>
<BOUNDARY type="periodic"/>
</FINITELATTICE>
<UNITCELL name="complex example" dimension="2" vertices="2">
<VERTEX id="1" type="0"><COORDINATE> 0.3 0.7 </COORDINATE></VERTEX>
<VERTEX id="2" type="1"><COORDINATE> 0.6 0.3 </COORDINATE></VERTEX>
<EDGE><SOURCE vertex="1"/><TARGET vertex="1" offset="1 0"/></EDGE>
<EDGE><SOURCE vertex="1"/><TARGET vertex="1" offset="0 1"/></EDGE>
<EDGE><SOURCE vertex="1"/><TARGET vertex="2"/></EDGE>
</UNITCELL>
<LATTICEGRAPH>
<FINITELATTICE ref="rectangular periodic"/>
<UNITCELL ref="complex example"/>
</LATTICEGRAPH>


基本上就是多在UNICELL標籤中新增了兩個VERTEX而已,而下方的FINITELATTICE標籤則是使用了 ref 功能,也就是"參照以上"的意思。

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" />
就可以了。