在Linux下用高斯做计算的过程中,大家经常会使用一些grep命令从log文件中搜索某个字段,查看计算进度。这其中最常用的恐怕要属以下两个:
代码语言:javascript复制grep 'SCF Done' a.log
grep 'Maximum F' a.log
第一个是查看计算过程中每一步的电子能量;第二个是查看结构优化过程中受力的变化。然而每次都完整的打出这些命令有些繁琐,偶尔还容易出错。对此,笔者的习惯是在~/.bashrc里定义一些简短的别名,如
代码语言:javascript复制alias grepbf="grep 'basis f'" # 打印基函数数目到屏幕上
alias grepd="grep 'SCF Done'" # 打印电子能量到屏幕上
alias grepe="grep 'Delta-E='" # 查看SCF迭代过程能量变化
alias grepfreq="grep 'Frequ'" # 查看频率(想看第一个频率是否虚频时有用)
alias grepF="grep 'Maximum F'" # 查看优化过程中受力情况
alias grepn="grep 'ITN='" # 查看CASSCF迭代过程中的能量变化
alias grepcc="grep 'E(Corr)='" # 查看CCSD振幅迭代过程中的能量变化
alias grept="grep 'CCSD(T)='" # 查看CCSD(T)能量
alias grepgib="grep '^ Sum of electronic and thermal Free Energies'" # 打印Gibbs自由能
alias grepSta="grep 'Stationary' -c" # 查看限制性优化做了几步
alias orca='/opt/orca_4_2_0/orca' # 执行orca时系统自动替换为绝对路径
这样在以后使用时只需敲入grepd、grepF等命令,简洁许多。类似地,可以定义其他常用软件的命令别名,提高工作效率。还有一些其他常用的系统命令的别名,如
代码语言:javascript复制alias rm='rm -i' # 删除文件时询问
alias lh='ls -lh' # 显示文件大小(单位K, M, G均有)
alias free='free -h' # 显示系统内存情况(带单位)
注意较低的CentOS版本不支持free -h,只支持free -g。
另外,再向大家分享一个环境变量的设置:可以将编译器的临时文件目录设置到固态硬盘SSD上(前提是有SSD),这样在编译程序时可以显著加快编译速度。比如笔者的机子上/tmp目录(即ifort的默认临时文件目录)位于机械硬盘上,而笔者机子上还有另一块SSD,挂载分区为/scratch,可使用的目录为/scratch/$USER。因此可以将编译器临时文件目录改至SSD上:
代码语言:javascript复制export TMP=/scratch/$USER
这样编译程序就会快很多。