24小时热门版块排行榜    

查看: 6148  |  回复: 22
【奖励】 本帖被评价10次,作者lmylmy增加金币 8
本帖产生 1 个 模拟EPI ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

lmylmy

木虫 (小有名气)


[资源] Windows下编译安装MuSic code

最近学习了版主ghcacj关于Music的帖子,受益良多,终于成功的在Linux下重复了Tina主页提供的IRMOF1吸附甲烷的例子,在此对版主ghcacj的无私奉献表示感谢。

安装过程中发现,最新的Intel Fortran XE用了编译Music是有点问题的,不可避免的出现了“段错误”,所以不推荐使用,我最终是用来11.0的版本才解决了“段错误”的问题。

我最初曾经尝试过在windows下编译安装Music code,那时候经验不多,后来放弃了。但是经过此次在linux下的安装经验,终于解决了原先的一些问题。现在可以正常的在Windows7操作系统下编译运行Music了,也成功的重复了IRMOF1吸附甲烷的例子。

现将在windows下安装的一些经验分享给大家,这也是对版主ghcacj帖子的一个小小补充。这对于一些不熟悉linux的网友还是有可取之处的。Music中的每个文件的具体内容和含义,请参见版主ghcacj的帖子,这里只描述具体的安装编译过程。

1. 所需程序
(1)Visual Studio 2008: 只需要安装其中的C++组件即可(如果你不需要其他的应用,完全安装需要很大的磁盘空间)。VS2008可以用学校的邮箱在微软网页上申请到免费的版本,目前应该是VS2010了,具体的可以在网上查找一下;
(2)Intel Visual FORTRAN Complier 11.0.072:最新的XE版有点小问题,会出现段错误,不建议使用。11.0这个版本网上也很容易找到;
(3)Windows下的perl:strawberry-perl-5.12.3.0,用来运行makemake,生产编译用的makefile文件。可以从其官方网页下载,是免费的 (http://strawberryperl.com/ );
(4)Windows下的Make:GNUwin32 Make-3.81,用了执行makefile文件,可以从其官方网页下载,也是免费的  (http://gnuwin32.sourceforge.net/packages.html )。
GNUMake和perl都是很小的软件,安装之后,可以在系统环境变量中path中添加C:\strawberry\perl\bin;C:\Program Files\GnuWin32\bin这两条路径,注意用分号与原先的项隔开,这样可以避免运行的时候输入完整的路径。这里给的路径是默认安装的路径,如果选择了其他路径,要做相应的修改。

2. 编译  (编译过程和版主ghcacj介绍的在linux下的方法类似,只是稍有不同。)
(1)MuSic源代码的获取:直接从Snurr Research Group的主页下载,下载之前先需要先给Snurr教授发封邮件。http://zeolites.cqe.northwestern.edu/software.php
(2)将MuSic源代码解压到D:\music目录下,(或者你喜欢的工作目录),解压之后其中应该包含[ctrlfiles], [drivers], [src], [tests]和[utils] 5个目录以及GPL和license 2个文件;
(3)编辑makemake文件
     首先需要修改 [scr]目录中的makemake文件,修改项如下(假设你用的是UltraEdit编辑器,可以显示行号,此处的行号指的是修改之前的行号):
   第120行: FC = defaultCompiler  >>>   FC = ifort                  (! 设定ifort为默认编译器)
   第149行:F90FLAGS = -g -debug all -check all # -O3 # -DSPME # untested options   >>>  
                  F90FLAGS = /heap-arrays:64 /fpp /fpe:3 /fast /debug:full /check:noarg_temp_created /O3 # -DSPME # untested options   
   第150行:F77FLAGS =  # -O3   >>>     F77FLAGS = /heap-arrays:64 /fpp /fpe:3 /fast /debug:full /check:noarg_temp_created /O3     (!添加适当的编译选项)
   第209行:%.o : %.F90    >>>   %.obj : %.F90       (!windows下编译过程中的目标文件为*.obj,linux下的为*.o)
   第211行:%.o : %.F      >>>   %.obj : %.F
   第221行:$objectfile =~ s/(.*?\.)F90/$1o/i;    >>>     $objectfile =~ s/(.*?\.)F90/$1obj/i;
   第222行:$objectfile =~ s/(.*?\.)F/$1o/;       >>>     $objectfile =~ s/(.*?\.)F/$1obj/;
   第235行:$(FC) $(DEBUG_FLAGS) $(OFLAGS) $(LINKERFLAGS) $(OBJECTS)  -o ../$(CMD)    >>>
                  $(FC) $(DEBUG_FLAGS) $(OFLAGS) $(LINKERFLAGS) $(OBJECTS)  /o ../$(CMD)
   第238行:$(FC) $(DEBUG_FLAGS) $(OFLAGS) $(OBJECTS) -o ../$(CMD)         >>>
                  $(FC) $(DEBUG_FLAGS) $(OFLAGS) $(OBJECTS) /o ../$(CMD)
   第241行:/bin/rm -f *.o *.i *.il *.mod a.out make.log    >>>    /bin/rm -f *.obj *.i *.il *.mod a.out make.log
   第244行:rm -f *.o *.i           >>>      rm -f *.obj *.i
   第266行:$objfile    = $rootname.".o";   >>>  $objfile    = $rootname.".obj";
   第270行:print OUTFILE (" $$sortedfiles[$f]{modarray}[$i].o";   >>>
                  print OUTFILE (" $$sortedfiles[$f]{modarray}[$i].obj";   
   另外从第157至199行的内容可以删除,对我们没什么用处,保留也可以,没有影响。
(4)编译  (编译了tinu网页上给出的5个代码:music_mapmaker.F90, music_mapdisplay.F90, music_md.F90, music_gcmc.F90, music_post.F90)
     以music_mapmaker.F90为例:
     从[drivers]中将music_mapmaker.F90复制到[src]中,将文件名改为music.F90,网页上说明F必须大写,这可能与linux下实施区分字母大小有关。
     从开始--程序--intel fortran的目录中进入带fortran编译环境的命令提示符窗口(cmd窗口),我用的是IA-32模式。
     在此cmd窗口中进入工作目录,比如 d:\music\src
     输入 perl makemake   回车 (!生产一个新的makefile文件)
     输入 make 回车,编译开始
     编译结束后在music目录中会生成一个post.exe文件,将其重新命名为mapmaker.exe。至此,完成一个完整的编译过程。
     将[src]目录中的music.F90以及编译过程中生存*.obj *.mod文件全部删除,按照以上的步骤编译下一个代码。
     最终得到mapmaker.exe,mapdisplay.exe,md.exe,gcmc.exe和post.exe 这5个可执行文件。

3. 运行
   首先从tinu的主页上下载IRMOF1吸附CH4的例子
   Pmap make : http://www.see.ed.ac.uk/~tduren/ ... orial/make_pmap.tar
   gcmc     : http://www.see.ed.ac.uk/~tduren/research/music/Tutorial/gcmc.tar
   
(1)将make_pmap.tar解压到 d:\make_pmap, 在其中发现4个文件夹[atoms], [molecules], [pmaps]和 [run],
   新开一个cmd窗口,进入 d:\make_pmap\run
   设置环境变量 windows下与linux少有不同,就是将set_path中的内容稍加修改:

   set ATOMSDIR=d:\make_pmap\atoms   回车
   set MOLSDIR=d:\make_pmap\molecules 回车
   set PMAPDIR=d:\make_pmap\pmaps  回车
   
   如果不想逐条输入,也可以建一个*.bat的批处理文件将上面的内容写进去,然后执行。

   环境变量设定好之后,就可以开始运行,生产Pmap文件,将mapmaker.exe复制到[run],然后在cmd中执行:
   mapmaker.exe ctr.map.IRMOF1.CH4 > pmap.log                (!> pmap.log 会生成一个记录文件,其中包含了一些有用的信息,不加也行,建议加上)
   运行结束后会生成IRMOF1.CH4.UFF.pmap文件,~50M,备用。
   
(2)将gcmc.tar解压到 d:\gcmc, 其中也包含4个文件夹[atoms], [molecules], [pmaps]和 [run],
     将先前得到的IRMOF1.CH4.UFF.pmap文件复制到 [pmaps]中,将gcmc.exe和post.exe复制到[run]中。

   新开一个cmd窗口,进入 d:\gcmc\run
   设置环境变量:
   set ATOMSDIR=d:\gcmc\atoms   回车
   set MOLSDIR=d:\gcmc\molecules 回车
   set PMAPDIR=d:\gcmc\pmaps  回车   

   然后执行gcmc.exe gcmc.Methane.IRMOF1 > gcmc.log
   运行结束后,生产各15个*.res和*.con文件。
(3)继续进行post得到isotherm数据
    d:\gcmc\run 中的post.ctr文件有个小错误,要修改一下
    第8行:IRMOF.Methane.con         # basename for config files       >>>
               IRMOF1.Methane.con         # basename for config files   
    继续在先前的cmd窗口中执行(若新开cmd窗口,要再次设定环境变量)
    post.exe post.ctr > post.log
   
    运行结束后会得到isotherm.Methane文件,其中包含了isotherm的信息。
   
    至此全部运行结束,至于将吸附数值由total转换成excess,可以在excel中完成,可参见版主ghcacj的相关帖子。
**************************   
欢迎讨论!

[ Last edited by lmylmy on 2011-7-14 at 01:25 ]
回复此楼

» 收录本帖的淘帖专辑推荐

材料计算模拟实用技巧 多孔材料 有机场效应晶体管及有机太阳能电池 MS & VASP
condensed matter physics 感兴趣的问题 xp经典收藏

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lmylmy

木虫 (小有名气)


★ ★ ★
zh1987hs(金币+3): 谢谢 2011-07-21 07:32:22
用版主ghcacj 提供的MFI吸附CO2例子,对在win下和linux下的计算时间做了进一步比较
比较的结果:
系统(原生):   Windows7 SP1               Ubuntu 11.04
         CPU:   AMD Athlon 64 X2 5000+ 2.6 GHz
  计算体系:   MFICO2
         时间:   2.5 h                              7.5 h

好像还是Win下快些,个人猜测win下的intel fortran对代码进行了优化,linux下的免费版可能没做优化。
5楼2011-07-20 22:12:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 23 个回答

★★★★★ 五星级,优秀推荐

顶一下,LZ的探索精神值得敬佩啊。
最新的ifort XE版是不行,编译后的执行文件会出现段错误,这个我也发现了,比如gcmc.exe在计算等温线时会报错,而且无法解决该问题,但是一旦换回11或者10的ifort就OK了。
2楼2011-07-14 10:04:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lmylmy

木虫 (小有名气)


★ ★ ★
zh1987hs(金币+3): 谢谢 2011-07-21 07:32:15
还有个意外的发现,gcmc在windows下居然跑的比在Linux下快,真是出乎意料!

用IRMOF1吸附甲烷的例子做了对照,结果如下:

运行时间           Windows7               ubuntu11.04
mapmaker        1.7368 min              6.9479 min  
gcmc                6.7658 min             18.430 min
3楼2011-07-14 11:25:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
引用回帖:
Originally posted by lmylmy at 2011-07-14 11:25:58:
还有个意外的发现,gcmc在windows下居然跑的比在Linux下快,真是出乎意料!

用IRMOF1吸附甲烷的例子做了对照,结果如下:

运行时间           Windows7               ubuntu11.04
mapmaker        1.7368 ...

还真是出人意料啊,有没有试过更大点的计算,比如CO2?
4楼2011-07-14 11:50:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
简单回复
niliu9楼
2011-12-04 22:36   回复  
五星好评   感谢分享!!
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见