虐人的 neigbor list設置

2021-02-21 模擬小窩

 

近鄰列表(neighbor list,也叫做Verlet list)是分子動力學模擬中為了加速體系粒子間相互作用的力的計算而設置的一種數據結構或採取的技術。

 

首先我們講解下為啥用近鄰列表:在分子動力學模擬中,粒子間相互作用力的計算最耗時間,而其中非鍵合作用力的計算又佔主要部分。因此,如何有效地提高計算非鍵合作用力的效率成為提高分子動力學計算效率的關鍵因素。前面關於截斷半徑的介紹就是一種方法。雖然截斷半徑的設置可以大大減少需要計算相互作用力的原子對數目,但是在模擬中的每次迭代都要對全部粒子進行搜索,以判斷每個粒子截斷半徑範圍內的其它粒子,當體系中粒子數比較大的時候,這個是很耗時間的。

 

近鄰列表的根本思想是在限定的局部空間而非整個模擬盒子範圍內搜索可能產生相互作用的粒子對。在近鄰列表法中,將與粒子i距離在Rm內的粒子都存儲在該列表中,在模擬中作用力的計算仍考慮截斷半徑Rcut的範圍。在一段模擬時間內,如果Rm範圍外的粒子都不會進去Rcut的範圍,則不需要更新近鄰列表。Rm-Rcut的範圍即是一個緩衝區域,即下圖的skin region。在計算與粒子i之間的作用力時,該區域內的粒子實際上並不被考慮。簡單說,這是一種用計算機內存空間換取CPU計算時間的方法。

 

通過上述介紹,大家可以猜想,如果頻繁的更新 list也是一個耗時的問題。如果不想頻繁的更新list,那skin region可以設置大些,這樣外面的粒子就不會進入cut區域。但是這又增加了每個粒子的list內的原子數目,增加了計算量。所以一般軟體會設置一些參數來人為調試什麼情況下比較佳。

 

除了近鄰列表法,還有cell  list的方法,這個對於非常大的box,能起到更好的加速作用。 Celllist方法是把盒子分成很多小份(如下圖),但是每份的尺寸要大於rcut,這也計算的時候,只需要考慮近鄰的小box內的粒子就行了。


很多程序,是上述兩個方法combine在一起使用的,先畫cell,然後近鄰Cell 處理用 verlet list.

 

對於 LAMMPS,我們一般用neighbor 和 neighbor_modify來設置 verlet list。大家現在應該知道其參數 bin的意義了吧。但LAMMPS neighbor_modify裡的check delay 等參數之間的關係,確實讓人難理解。為給大家說明清楚,我們看看如下簡單的代碼:

 ago++;

  if(ago >= delay && ago % every == 0) {

   if (build_once) return 0;

   if (dist_check == 0) return 1;

   return check_distance();

  }else return 0;

 

上面的意思是說:如果這次更新list滿足你設置的delay, 且是every的整數倍,會查看是否設置了once,如果設置了,就一直不更新,如何沒有,就會檢查你有沒有把check設置為 no,如果是,就更新,不做check。如果check設置為 yes,那就進行check處理,返回 check的結果。看著那麼麻煩的設置,還是推薦大家用默認吧。

gromacs也有list更新的參數設置,只不過沒有lammps那麼煩,它只有過多少步更新一次,默認是10,一般模擬就用默認吧

相關焦點

  • Linked List 常見問題總結
    list) { return null; } if (!list.next) { return list; } let prev = this.reverseRecursively(list.next); list.next.next = list; list.next = null; return prev; } test() { let list = { val: 1, next: { val: 2,
  • Bribery pervades list of wealthiest
    進入英語學習論壇下載音頻Nearly 30 billionaires formerly on the list of China's richest people have been charged with bribery or are at the center of
  • Python之list列表數據類型講解
    前言在python中,list列表數據類型其實就是一個容器,可以放置大量元素的集合。同時,list列表也有很多特點和使用場景,本文主要講解list列表的函數方法。概念list列表是一個集合,一個容器,同Java語言中的數組是一樣的,唯一的不同之處在於,Java中的數組類型只能放置同一種數據類型,而Python中的列表可以放置不同的數據類型。
  • Python基礎知識儲備,List集合基本操作大盤點
    >list01賦給list02print(list02)list03 = list01.copy() # 使用copy把>list01的值給list03print(list03)注意:= 和 copy是有本質區別的!
  • Wunderlist創始人後悔了,想要買回微軟奇妙清單
    早在2015年,微軟以大約1億至2億美元的價格收購了Wunderlist(奇妙清單)。「加入微軟讓我們獲得了大量的專業知識,技術和人才,這是像我們這樣的小公司的夢想,」收購期間Wunderlist創始人兼CEO Christian Reber說道。
  • 石器時代起源如何設置中文版 中文版設置方法攻略
    ­  石器時代起源如何設置中文版?石器時代起源這款遊戲是自帶中文版的,但是很多玩家不清楚如何才能設置中文版,下面為大家帶來了石器時代起源中文版設置方法圖文攻略詳解!打開軟體之後會自動搜索iphone backup file (看截圖)­  5. us er\app\file\下找到app.netmarble.xx.xxx.xx library\preference\com.netmarble.stoneage.list
  • python之lambda定義匿名函數實現對list列表排序
    前言關於匿名函數的使用及應用之前的文章也有講過,本文再來講解一個關於匿名函數的一個案例:使用匿名函數實現對list列表進行排序。list.sort()函數1、定義一個元素類型為整型的list列表,然後排序運行結果是:排序之前,list1列表中的內容: [10, 50, 20, 57, 90]排序之後,
  • 照相機設置中英文對照表/聯繫人相關設置
    這個功能會使用流量,如果你不小心已經設置了,那麼看下面: 攝像機與照片設置 進入手機的Settings>applications>pictures+camera,有如下設置: Allow the camera buutton to wake up the phone 允許使用照相機按鈕將電話喚醒 Include locetion
  • Python數據類型之列表list
    # 列表是python中最基本的數據結構,它是一個有序序列,序列中的每個元素都分配一個數字(位置,索引)# 1、我們可以使用 方括號,中括號[]來創建列表# 2、我們可以直接將序列放在list(seq)
  • 利用艾賓浩斯記憶曲線背50個LIST單詞的方法
    每個list的具體背誦過程(每個list按 6頁,每頁10個單詞計):   a) 背完一頁(大約5分鐘),立即返回該頁第一個單詞開始複習(大約幾十秒);   b) 按上面方法背完1~6頁(大約在30分鐘),回到第1頁開始複習(兩三分鐘);   c) 按上面同樣方法背完7~12頁,一個list結束;
  • 用英語「懂」英語:What's on your bucket list什麼意思?
    用英語「懂」英語:What's on your bucket list什麼意思?在英語世界裡竟然還有個叫the bucket list的表達。So,does it mean our hopes and dreams for the future if people say the bucket list?2.What is a bucket list?Well,we have many many examples.
  • boost.assign庫提供功能類似的generic_list,下面是它的類摘要
    C++11標準引入了初始化列表std::initializer_list,而boost.assign庫則提供功能類似的generic_list,它的類摘要如下:template<classT>class generic_list public:{iterator begin()const;//類似容器的接口
  • Shanghai Adds 8 More Countries to Mandatory Quarantine List
    The Shanghai government has added eight more countries (UK, Switzerland, Sweden, Belgium, Norway, the Netherlands, Denmark and Austria) to their list
  • 283 Bad Habits- The ULTIMATE List of Bad Habits
    In the following list of 283 bad habits, I tried to find every bad habit that the majority of society would view as a bad habit.
  • 英國各大學最新list名單匯總!
    近期英國大學頻繁放出政策更新消息,想必大家都看得眼花繚亂了,這期我們給大家匯總一個英國大學最新list,方便大家查看。 2、利茲商學院的熱門金融、市場等相關專業,即使被列入第一檔T1A院校list之內也未必接受申請,需要具體查詢。 3、部分專業需要帶雅思申請,無雅思不接受申請或不審核。 原來的1檔只能T1A申請的專業,現在只收211/985了。
  • Latest Full List of Countries Resuming Flights!
  • 我宣布:拋棄to-do list,日程表才是最香的!
    我的to-do list已經很長了,長到我不知道該如何為他們分配時間。我的時間管理出了問題。我每天下班前都會回顧自己的任務清單,並且給明天要做的事情列上1234。只有在7月份的時候,我沒有用to-do list,而是用了日程表。那個月效率很高,我每天的作息時間完全和上班一樣,時間邊界也控制得很好。但是為什麼沒有繼續下去,最主要的是我的一個偏見:我認為每天都按照日程表行事的人,沒有自由而且呆板,我不想成為程序化的人。
  • 英國大學認可的中國院校list大公開!你的學校順利進入了嗎?
    今天小英給大家匯總一個英國大學最新list,方便大家查看!! 今年,杜倫大學的商學院、工程學院、法學院和教育學院都給出了自己的list,其他沒有給出list的學院沒有申請限制。 ■ 商學院 商學院對於TOP10院校的最低成績要求是80分,其他院校最低要求85分。
  • Coinlist 新聞速遞|DeFi 2021:我們可以期待什麼
    第二層技術的應用可釋放更多的吞吐量,並最終導致更大的交易量非以太坊DeFi的繁榮比特幣加速流入DeFi監管將會加強(至少在美國) 閱讀更多(https://blog.coinlist.co/defi-2021-what-can-we-expect/?
  • Pointillist:2020客戶體驗管理測量報告
    [ 編者註:客戶旅程管理軟體服務公司 Pointillist 發布了Pointillist 調查了世界各地不同行業的 1050 名客戶體驗、分析、客戶服務和市場營銷專業人士,研究行業領先者和落後者的區別。