1. 运行平台(IDL)
IDL程序并非是免费版, 需要激活, 但是自从8.0版本以后, 激活比较麻烦, 这里考虑使用IDL7.1.1版本. 因为在下面的主程序PSM的公开版本中, 就推荐使用该版本. 在安装该版本的IDL编译程序时,需要注意的是该版本只有32位的, 没有64位, 所以在目前的Linux上, 基本都是64位系统, 所以需要在64位Linux系统上支持32位系统. 这里有很多种方法, 具体可在网上寻找.
网上的安装教程都在root下, 所以这里也用root命令安装, 以防出错不知怎么处理.
- root登录, 在/usr/local/下创建安装目录;
> mkdir /usr/local/itt
- 将下载好的IDL711linux.x86.tar.gz复制到上述文件夹, 然后解压
> cp /home/nisl/software/IDL711linux_x86.tar.gz /usr/local/itt
> tar xvfz IDL711linux_x86.tar.gz
- 运行安装软件, 一路狂点y, 最后设置环境变量
> ./install
- 安装license
将下载好的license.dat复制到安装文件中
> cp license.dat /usr/local/itt/license/
这里的IDL程序以及激活license都在这里: 链接: https://pan.baidu.com/s/1oJMLxm1Qk1OrOobA8gtnUQ 提取码: qnjp
此安装方法参考: http://lifeng.lamost.org/courses/IDL/IDL_install.htm 和 http://blog.sciencenet.cn/blog-1797968-827480.html
2. 主程序
该主程序只有一个public版本, 也就是v1.7.8版本.
PSM主地址: http://www.apc.univ-paris7.fr/~delabrou/PSM/psm.html
v1.7.8地址: http://www.apc.univ-paris7.fr/~delabrou/PSM/release_v1_7_8.html
v1.7.8手册地址: http://www.apc.univ-paris7.fr/~delabrou/PSM/Public/PSM_user_manual_v1_7_8.pdf
3. 支持程序astron
该程序地址: https://idlastro.gsfc.nasa.gov/ftp/
该程序不需要编译, 只需要解压到IDL安装目录下, 然后修改文件属性即可, 然后加上路径.
> sudo chmod 777 -R astro
> export IDL_PATH=/usr/local/itt/idl71/lib:/usr/local/itt/idl71/lib/astro/pro
4. 支持程序idlutils
该程序下载需要一个软件: subversion(svn)
svn程序可用下面的命令安装:
> sudo apt-get install subversion
而idlutils程序在网址:http://www.sdss3.org/svn//repo/idlutils/tags/
这里各个版本的程序都有, 这里我们下载v5_3_0版本的程序.
如果想要下载指定版本使用下面的命令:
> svn export https://svn.sdss.org/public/repo/sdss/idlutils/tags/v5_5_24 idlutils
如果想要展开都是什么版本的程序使用下面的命令:
> svn ls https://svn.sdss.org/public/repo/sdss/idlutils/tags
如果想要下载最新版本的程序使用下面的命令:
> svn co https://svn.sdss.org/public/repo/sdss/idlutils/trunk idlutils
主要网上有些方法是错误的, 因为idlutils有公开版本和非公开版本,所以有些命令是非公开版本的, 例如:
> svn export http://www.sdss3.org/svn/repo/idlutils/tags/v5_5_5 idlutils
这里就会提醒错误.
而对idlutils的安装中, 需要使用超命令, 直接进入到idlutils, 并对其bin目录下的evilmake修改(在Linux系统):
将:
> "Linux" )
> LDF77=g77
改为:
> "Linux" )
> F77=gfortran
> LDF77=gcc
然后执行如下命令:
> sudo ./bin/evilmake all
然后设置环境变量, 具体看上面给的地址.
5. 环境变量的配置
首先是IDL的环境变量配置, 如果默认安装将IDL环境变量加入到系统环境变量后, 可不配置这一项, 如何确定IDL环境变量已经加入进来, 可在命令行下执行IDL, 会有IDL相关的版本和说明, 如下图:
否则需要手动将IDL的环境变量加入到.bashrc中, 命令如下:
> export IDL_PATH=+/usr/local/itt/idl
注意一下, 这里的很多东西都需要加入到IDL_PATH中的.
安装astron, Healpix, MPFIT, CAMB, CGIS等, 将这些软件下载后, 放入到IDL_PATH下, 然后将这些软件的环境变量加入到IDL_PATH中, 注意一下, 这里的CAMB的环境变量需要单独加入到PATH里, 具体不在多说, 直接将我的环境变量加入进来一饱眼福吧:
> export PATH=/home/nisl/programs/openmpi/bin:/home/nisl/programs/camb:${PATH}
> export IDL_PATH=+/usr/local/itt/idl71/lib/astron:+/usr/local/itt/idl71/lib/idl_packages/cgis:+/usr/local/itt/idl71/lib/mpfit:+/usr/local/itt/idl71/lib/idlutils:+/home/nisl/programs/healpix/src/idl:+/home/nisl/programs/psm:+/home/nisl/programs/camb:+/usr/local/itt/idl
注意一下, 这里的Healpix的路径要写到idl.
说到这里都是没啥用, 因为主角还没上场–PSM, 那么PSM的环境变量怎么设置呐, 这需要到IDL命令行里来设置, 首先记住PSM的完整路径(以我的为例: /home/nisl/programs/psm), 然后进入IDL命令行, 输入下列命令:
> DEFSYSV, ’!PSMROOT’, ’/home/nisl/programs/psm’
> !path=!path+’:’+expand_path(’+’+!PSMROOT+’/Soft/’)
这样就将PSM的路径加进来了, 测试一下可以得到一堆PSM DATA:
> IDL> GET_PSM_DATA
然后就来测试一下PSM吧:
PSM主程序需要调用一下, 然后执行的是一个.psm为后缀名的文件, 其实PSM自带有一个config.psm文件, 具体位置:
> /home/nisl/progrms/psm/Soft/psm/config/config.psm
然后用PSM主程序执行这个文件, 但是这里会报错, 所以需要自己给一个自己的文件, 我姑且称为: myconfig.psm, 也放在该目录下, 即:
> /home/nisl/programs/psm/Soft/psm/config/myconfig.psm
其实.psm文件里的很多值都是默认的, 也就是即使不给这个值, 他也会有一个默认值, 所以一般不会出错的, 但是对有些宇宙学参数赋值就会出现一些错误, 因为需要满足宇宙学相关的条件. 最后经过调试, 可以得到一个测试成功的结果, 如下图:
这里需要注意的是, PSM默认的参数中子数是浮点的, 只有一个, 也就是 massive_neutrinos = 1.00000, 但是CAMB要求这个参数必须是整形的, 所以需要将PSM程序里的这个输入值改为整型, 需要修改的文件地址:
> /home/nisl/programs/psm/Soft/skymodel/cmb/write_camb_param_file.pro
需要修改的内容:
> massive_neutrinos:cp.n_massive_nu
这里将cp.n_massive_nu改为1即可.