小言_互联网的博客

【DDSCAT——离散偶极近似仿真程序08】如何在Linux系统上运行DDSCAT程序

338人阅读  评论(0)

       首先,我不推荐大家对这一部分内容过多的研究和投入,因为经过我在Linux系统上的使用体验来看,程序运行的效果并不好。所以,如果我们不是很精通计算机的话,使用Windows版本运行程序就ok了。

       写这部分内容只是想把方法分享出来,而需不需要使用就看大家自己的选择了。

 

一、说明书UserGuide上的Linux编译部分

       直接看第6部分。

       

       首先,我们要知道编译的目的是什么。编译的目的和结果就是,会产生一个ddscat运行文件,就是和Windows版本功能一样的ddscat.exe文件,不过,这次产生的是运行在Linux系统上的文件(Windows系统自带了ddscat,而使用Linux需要我们手动编译出ddscat)。

       接下来,我们要知道怎么编译。在Linux系统上对源文件进行编译,需要一个Makefile文件。什么是Makefile,看一下某百科对其的定义:一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 Makefile就像一个Shell脚本一样,也可以执行操作系统的命令。也就是说,这个Makefile文件写了一些编译的规则。

       再看说明书。说明书表示,ddscat的src文件夹中,有一个默认的Makefile文件,等下我们展示。那么想要编译Makefile文件的话,有一些前提:Linux系统需要已安装了Fortran-90编译器(如,gfortran, g95, Intel R ifort, or NAG R f95),和cpp。

       There are a number of different ways to create an executable,表示Makefile中记录了本次编译需要什么编译器,是单精度还是双精度(sp or dp),是否开启OpenMP、MKL、MPI。然后说明书给出了Makefile默认的配置:使用gfortran编译器、单精度算法、不使用OpenMP、MKL、MPI(OpenMP和MPI都是用来做并行计算的,MKL是英特尔数学核心函数库,这三个我们暂时用不到)。

       现在我们来看看Makefile文件,进入到src文件夹中,使用文本编译器打开Make file文件。

       

       准备好需要的配置,接下来就是编译代码。需要在Linux系统中,进入到当前src文件夹,然后在终端运行make ddscat就可以。

 

二、编译前的准备——软件安装系统配置

       如说明书中的要求,我们需要先安装fortran系列编译器和ifort,ifort需不需要安装我这里不太确定,记得最开始研究的时候是需要安装ifort的。我们先来装gfortran。

       一般安装Fortran总共需要四步:分别安装gcc、g++、gfortran、ifort。

       1)安装gcc编译器。

       一般Linux系统会自带gcc。查看是否装有gcc可通过指令"gcc -v"。

       若没有安装gcc,则可通过指令"yum -y install gcc"来安装。

       

       图中我的电脑自带了gcc

       2)安装g++。

       可通过命令"sudo apt-get install build-essential"来安装,通过"g++ -v"可查看是否安装成功。

       

       图中我的电脑已安装过g++,所以输入sudo apt-get...之后,显示0 upgraded, 0 newly instaled...

       3)安装gfortran。

       可通过命令"sudo apt-get install gfortran"来安装,通过"gfortran -v"可查看是否安装成功。

       

       图中第一次命令检测gfortran是否安装,发现没有安装。

       第二次命令忽略。

       第三次命令执行安装gfortran的命令,开始安装gfortran。

       

       重新检测,发现这次安装好了gfortran。

       4)安装ifort(可选项,可以不安装)。

       这个过程比较麻烦,需要先去intel的官网下载ifort的安装包。我们下一部分专门介绍怎么去下载这个安装包,现在只讲怎么安装。

       1. 打开ifort的安装包

       

       2. 找到install_GUI.sh,然后在终端中运行它,就会开启可视化安装界面。如果运行的是install.sh,则是在终端中进行文字版安装。

       

       3. 选择安装模式,选哪个都可以。

       

       输入root密码后,继续进行。

       

       4. 选择激活方式,没有激活码就选第三个,有激活码选第二个。因为我的卸载了一遍,所以多了第一个选项,而不能选第三个选项(如何获取激活码,我们下一部分介绍)。

       

       5. 选择第二个选项

       

       6. 选择第一个选项

       

       7. 安装进行中,直到完成。

       

       8. 在bashrc中进行配置

       在终端中输入vi ~/.bashrc,进入对.bashrc的编辑模式(在这里使用到了vi编辑器,如果不熟练的话需要先学一下)。

       然后在文本最末添加上下面的内容:

       source /opt/intel/bin/compilervars.sh intel64

       

       按Esc之后,输入:wq表示保存退出,然后在终端输入source ~/.bashrc让上一步的修改生效。

       9. 检测是否安装成功

       在终端中输入ifort -help,如果出现以下结果,即表示安装成功,并且配置成功。

       正在上传…重新上传取消

       

三、make

       下面是编译部分。

       先下载好资源。我们去ddscat的官网下载ddscat程序的文件,在主页点Downloads,然后下载最新的7.3.3版本的code,和Examples。很明显,code(即源码)后面已经说明了need compilation,需要编译。下载好这两个资源,我们就可以开始在Linux系统上对ddscat进行编译和使用了。

       

       1)没有完整配置下的失败编译。

       先来看一种没有安装gfortran情况下的编译,这个时候会报错,表示没有发现gfortran编译器。

       先进入src文件夹,会看到一个DDSCAT.f90的文件,这个就是DDSCAT的主程序。

       然后在当前位置打开终端,在终端中输入make ddscat开始编译。

       

       此时显示"make: gfortran: Command not found",表示系统里面找不到gfortran指令,说明没有安装gfortran。当然,如果你没有安装别的必要软件(gcc、g++等),也是不能正常编译的。

       2)完整配置下的正常编译。

       1. 终端输入make ddscat开始编译(我这里还试了一下输入make,都是是不可以的,输入make ddscat才正确)

       

       2. 下图编译结束最后显示的部分

              

       3. 回到src文件夹,发现多了一些文件,其中最重要的就是一个菱形图标的ddscat。这个就相当于Windows系统里面的ddscat运行程序了。

       4. 现在我们进入到ddscat7.3.3_examples/examples_exp/RCTLPRSM_NEARFILED文件夹,并将上一步产生的ddscat文件放进当前文件夹,然后在终端运行ddscat(这个文件夹里自带有ddscat.par文件,所以我们在这个文件夹里直接可以测试运行)。下图表示正常运行结束。

       

       5. 正确运行结束会出现我们之前在Windows系统中正常运行结束后出现的一些文件,如qtable、w000r000kooo.E1等。

       6. 编译ddpostprocess。这个时候你会想到什么,既然编译了ddscat,那么肯定可以有办法得到ddposrprocess。此时我们返回src文件夹,并在终端输入ddpostprocess,开始编译。

       

       这里有个细节,我在编译完ddpostprocess之后,又执行了一下make ddscat指令,结果显示ddscat是最新版本。说明ddscat已经存在,无需再编译了。如果还想编译ddscat的话,可以把之前编译出的ddscat移走,就可以继续编译ddscat了。

       7. 正常编译结束后,会产生ddpostprocess运行文件(还是这个图,其实是在编译完ddpostprocess之后才截的图)。

       8. 现在再回到ddscat7.3.3_examples/examples_exp/RCTLPRSM_NEARFILED文件夹,将上一步产生的ddpostprocess文件复制过来,接着在终端输入ddpostprocess指令,就开始运行后处理程序了。

       

       

       9. ddpostprocess正常运行结束后,会产生vtr等文件。

       

       10. 我们把vtr文件拷Windows系统中,然后用vislt可视化,结果如下图所示。

       

 

四、总结

       为什么使用Linux系统呢,因为Linux系统运行更快。一般情况下,做计算Linux都是会比Windows系统运行程序快的。但是,这里视情况而定了,如果大家要计算的模型不大,且入射波长在1μm以内,计算量就不算大,用Windows系统运行就可以了。

       这里还有一些情况,我在使用Linux系统运行ddscat的时候,运行到比较大的波长(如到700、800nm的时候),整个电脑就卡住了。说明我还是没有掌握在Linux系统上使用ddscat。

       所以,这部分的目的只是给大家说明一下怎么在Linux系统上编译、运行ddscat,而不推荐在Linux系统上使用ddscat。


转载:https://blog.csdn.net/XD_Yangf/article/details/102500625
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场