第一原理計算常用指令和 qe 小提示
底下寫的東西,如果有錯誤請和我說 *d98222003@gmail.com
目前的大型計算機器幾乎都是用 qsub job-script 來當 submit job 的指令,那當你有很多工作的時候該怎麼辦?
(testing E_cut, kpoints, PPs, spin states … etc)
假設你不會寫迴圈,這時就可以用以下兩個指令來代替。 舉例來說,第一個送出去的 job id: 15243
qsub -W depend=afterok:15243 next_job_script (指的是 15243 必須完整的計算成功,才會把 next_job_script 送進去 queue)
qsub -W depend=afterany:15243 next_job_script (指的是 15243 不管結果如何,都會把 next_job_script 送進去 queue)
基本上就是可以和自己實驗室的人互相配合,大家都可以有研究進度
!!! next !!!
那現在知道可以排計算工作之後,在編譯所需文件時,是不是會遇到只需要變更文件中的某一個指令這種時候?
假設在同一目錄下有 10 個在不同的 INCAR,只想要改 IBRION = 2 to IBRION = 3, 4, 5, 6, 7 …
用 vi INCAR* , 然後到那一行去改完之後 :w and :n , 這樣應該花很多時間吧?
這時可以用 sed
sed -i ‘s/IBRION= 2/IBRION= 11/g’ INCAR_001 (把 INCAR_001 這文件中的 IBRION = 2 改成 IBRION = 11)
那如果有一個以上的文件需要改,那就在指令後面加上分號就好
sed -i ‘s/IBRION= 2/IBRION= 11/g’ INCAR_001; sed -i ‘s/IBRION= 2/IBRION= 11/g’ INCAR_002; …
那如果是 10 個不同目錄下 (001-010),你想改這 10 個 INCAR,那要怎麼改?
for aa in 001 002 003 004 005 006 007 008 009 010; do sed -i ‘s/IBRION= 2/IBRION= 11/g’ ./$aa’/’INCAR; done
這兩種最後可以利用
grep IBRION INCAR* 來看目錄中所有的 INCAR 文件是不是都有改好
!!! next !!!