多粒子系統的(分子)動力學

 

分子動力學

要點:

牛頓運動方程式 f = maf 是合力

由位勢求受力:粒子間的交互作用 (Lennard-Jones 位勢)

積分運動方程式:Verlet 演算法

週期性邊界條件 (減少表面效應)

巨觀 (熱力學) 量的計算:瞬間溫度、壓力

平衡

增減溫度的方法

 

牛頓運動方程式 f = maf 是合力

 

 

由位勢求受力:粒子間的交互作用 (Lennard-Jones 位勢)

(註:Lennard-Jones 是一個人,不是兩個人的人各組合)

既然位能是兩個粒子距離的函數,則子的受力也會是距離的函數,大小相等,方向相反。

將上列 Lennard-Johns 位勢函數,對受力粒子的位置座標 (偏) 微分,會得到粒子受力,形式如下:

 

積分運動方程式:Verlet 演算法

 

 

週期性邊界條件 (減少表面效應)

 

 

暖身練習:單球反射壁彈回動畫

範例程式:(1) 留下軌跡不清除 particle_in_box.f
範例程式:(2) 清除軌跡成為動畫 particle_in_box_animate.f

 

暖身練習:單球週期性邊界條件

將上面反射壁動畫改為使用週期性邊界條件。 範例程式: particle_in_box_PBC.f

 

暖身練習:將單球擴展為雙球

改寫單球反射璧版本,使成為雙球,使用陣列。範例程式: two_particles_in_box_animate.f

 

暖身練習:替雙球系統加入交互作用

加入 Lennard-Jones 位勢的力場(尚末將運算效率最佳化) : two_particles_LJ.f

以成對方式處理作用力(提昇效率),並將壁反射移入副程式:two_particles_LJ_pair.f

 

進階練習:再改為週期性邊界條件

擴充至 n 個粒子,並且改為用週期性邊界條件(並注使用 二維 3X3=9 個、三維 3X3X3=27 個 cell 的技術來獲得任兩個粒子間的距離) : n_particles_LJ_PBC.f

不使用 Verlect Algorithm : n_particles_LJ_PBC_no-verlect.f

使用 Verlect Algorithm : n_particles_LJ_PBC_verlect.f

 

進階練習:使用亂數

使用方法:call random_number(r)

會在 r 內填入 0.0 至 1.0 之間的實數值

 

使用亂數產生器來初始化位置與速度:n_particles_LJ_PBC_rand_dis.f

 

 

 

單位的選取

單位的選取上,儘量使需要處理的量保持在不過大或過小,否則會浪費電腦的有效精確位數。

 

 

巨觀 (熱力學) 量的計算:瞬間溫度、壓力

瞬間溫度的定義,是基於系統動能

壓力

理想氣體的話,瞬間壓力是 Pideal = NkT / V

有碰撞者,則要進一步考慮

平均壓力 P ≡ < P(t) > ,在程式中要計算的量是

叫作 virial ,代表對理想氣體的粒子交互作用修正。

 

進階練習:加入溫度與壓力

n_particles_LJ_PBC_rand_TP.f

 

平衡

對於多體系統而言,平衡是用在巨觀世界的觀念,它描述那個多體系統的某個量,在一定的時間區間內作平均的值如果長時間都不再改變,則這個量己經達到平衡。例如密度這個量,從微觀的角度看,某個區域的瞬間密度由該區域內的粒子數來決定,然而粒子隨時進出數目不斷在變,只是一段時間內的平均密度仍維持定值。

 

範例程式 md_pgplot.f 執行檔 md_pgplot.x

原課本習題:p.227p.229p.231p.233p.235p.237

助教翻譯之  習題 8-1 ~ 8-10 (中文)

 

 

增減溫度的方法

溫度完全就是由動能決定,而動能又取決於質點運動的速率。因此瞬間速率的人為放大或縮小即是升降溫度。

 

範例程式:升降溫循環,可觀察到三態的變化

md_heat-cool_cycle.f