pw_export是Quantum ESPRESSO中的一个实用程序,它允许用户将计算得到的电子结构数据导出,以便用于其他软件或进一步分析。在使用非绝热动力学软件pyxaid时,需要用到QE的这个文件,所以这里编译一下。
需要注意的是,QE6.5之后的版本都不能编译生成这个文件了,因此需要准备6.5以内的版本。 一、这里,我们进入QE的官网下载QE6.5版本,网址如下:
Release Quantum Espresso 6.5 · QEF/q-e · GitHub
二、下载好之后,上传到集群上并解压:
tar -zxvf qe-6.5-ReleasePack.tgz
进入解压好的目录:
cd qe-6.5/
加载Fortran及英特尔编译器,注意高版本的Fortran用着可能会报错,刚开始我用的Fortran10的版本,无法编译,后来改成了Fortran7的版本,命令如下:
module load gcc/7.5.0 module load intel/2017u5
可以检查一下Fortran版本:
gfortran --version
三、这里是最重要的一步,修改qe-6.5/PP/src路径下的Makefile文件,一共要改三个地方,
1.添加pw_export.o到PPOBJS变量: 在Makefile中找到PPOBJS变量的定义。这个变量列出了所有需要被编译为对象文件(.o)的源文件。你需要在这个列表中适当的位置添加pw_export.o。通常,这个列表会按字母顺序或逻辑顺序排列,但添加到列表末尾通常也没问题。
找到PPOBJS,如下图所示:
我们把pw_export.o随便加在一个位置,当然也可以加在最后:
2.添加pw_export.x到编译目标all: 在Makefile中找到all目标的定义。这通常是一个列出所有应当被默认构建的目标(可执行文件)的列表。你需要在这个列表中添加pw_export.x。 示例修改(在all目标中添加pw_export.x):
3.定义pw_export.x的编译规则: 在Makefile的适当位置添加一个新的规则来编译pw_export.x。这个规则说明了如何从pw_export.o、libpp.a和其他必要的对象和模块文件中生成pw_export.x。
pw_export.x : pw_export.o libpp.a $(MODULES) $(LIBOBJS) $(LD) $(LDFLAGS) -o $@ \ pw_export.o libpp.a $(MODULES) $(LIBOBJS) $(QELIBS) - ( cd ../../bin ; ln -fs ../PP/src/$@ . )
四、进入qe根目录,自动配置环境,输入:
./configure
五、编译PP:
make pp
编译完成后,就会看到pw_export.x的可执行文件:
可能出现的报错:
如果出现以下内容:
ranlib libpw.a make[2]: Leaving directory `/data/home/qc119/sourcecode/QE6.4/qe_release_6.4/PW/src' make[1]: Leaving directory `/data/home/qc119/sourcecode/QE6.4/qe_release_6.4/PW' if test -d PP ; then \ ( cd PP ; make TLDEPS= all || exit 1 ) ; fi make[1]: Entering directory `/data/home/qc119/sourcecode/QE6.4/qe_release_6.4/PP' if test -d src ; then \ ( cd src ; make || exit 1 ) ; fi make[2]: Entering directory `/data/home/qc119/sourcecode/QE6.4/qe_release_6.4/PP/src' Makefile:75: *** missing separator. Stop. make[2]: Leaving directory `/data/home/qc119/sourcecode/QE6.4/qe_release_6.4/PP/src' make[1]: *** [all] Error 1 make[1]: Leaving directory `/data/home/qc119/sourcecode/QE6.4/qe_release_6.4/PP' make: *** [pp] Error 1
说明之前修改的makefile中有空格,在makefile中,每一行的开始都应该用Tab,而不是空格,可以检查之前修改的地方,我上面给出的内容直接复制可能也是空格,注意修改
No Comments
Leave a comment Cancel