• 宇宙學模擬程序GADGET 2.0.7安裝方法

    宇宙學模擬程序GADGET 2.0.7安裝方法

    文/Sobereva @北京科音  2013-Jul-25


    GADGET-2 (GAlaxies with Dark matter and Gas intEracT)是一個極為流行的宇宙學模擬程序,地位大抵類似于量子化學中的Gaussian(貌似),原文見Mon. Not. R. Astron. Soc. 364, 1105–1134 (2005)。它基于多體方法和光滑粒子流體動力學(smoothed particle hydrodynamics, SPH),可以諸如模擬銀河間相互作用/碰撞過程、宇宙大尺度結構的形成過程等問題,支持周期邊界條件。此程序是由馬普所的Volker Springel教授開發的,由C語言編寫,利用MPI實現在單機或大規模集群上并行。它開源,免費,可以在其主頁http://www.mpa-garching.mpg.de/gadget/上下載到,目前最新版本是2.0.7。其前身GADGET-1在2000年發布,GADGET-2于2005年發布,GADGET-3目前正在開發中。


    本文介紹一下GADGET 2.0.7的編譯方法。假設安裝到/sob目錄下。軟件環境:系統為RHEL6-U1,用戶為root,shell為bash,已將icc和ifort 12.1.0編譯器安裝到默認路徑下。CPU為i7-2630QM。等以后若有機會,會再寫帖子結合模擬實例來介紹下如何建立初始條件、設定參數、運行模擬、分析數據。
    (搞計算化學,特別是搞MD的人,玩玩GADGET-2肯定不會覺得有多復雜。整天跟分子打交道,偶爾玩玩大尺度,是個不錯的消遣^_^ )


    1 安裝MPI庫

    注意即便打算只用GADGET-2進行串行計算,也得安裝MPI庫。這里用我最常用的MPICH2庫。
    到http://www.mpich.org/static/downloads/下載mpich2-1.4.1p1.tar.gz并解壓至/sob目錄下,在其目錄下運行
    ./configure
    make
    make install
    現在可以刪掉/sob/mpich2-1.4.1p1目錄


    2 安裝GNU scientific library (GSL)

    到http://mirror.bjtu.edu.cn/gnu/gsl/下載gsl-1.9.tar.gz并解壓至/sob目錄下,在其目錄下運行
    ./configure CC=icc
    make
    make install
    現在可以刪掉/sob/gsl-1.9目錄


    3 安裝FFTW快速傅里葉變換庫

    注意不要用當前最新版本(FFTW3系列),而要用FFTW2系列。FFTW 2.1.5版是最后一個FFTW2系列版本
    到http://www.fftw.org/download.html下載fftw-2.1.5.tar.gz并解壓至/sob目錄下,在其目錄下運行
    ./configure --enable-mpi --enable-type-prefix --enable-float --prefix=/sob/fftw215
    make
    make install
    FFTW被安裝到了/sob/fftw215下。現在可以刪掉/sob/fftw-2.1.5目錄


    4 安裝GADGET-2

    到http://www.mpa-garching.mpg.de/gadget/下載gadget-2.0.7.tar.gz,解壓到/sob目錄下
    打開/sob/Gadget-2.0.7/Gadget2/Makefile
    注釋掉 OPT   +=  -DHAVE_HDF5
    注釋掉 OPT   +=  -DPERIODIC    //如果要編譯支持周期邊界條件的版本則不要注釋掉它
    注釋掉 OPT   +=  -DPMGRID=128
    將ifeq ($(SYSTYPE),"MPA")到緊接著它的endif之間的內容設為
    CC       =  mpicc   
    OPTIMIZE =  -O3 -Wall
    GSL_INCL = -I/usr/local/include
    GSL_LIBS = -L/usr/local/lib
    FFTW_INCL= -I/sob/fftw215/include
    FFTW_LIBS= -L/sob/fftw215/lib
    MPICHLIB = -L/usr/local/lib
    保存文件。進入/sob/Gadget-2.0.7/Gadget2/目錄,運行make即在當前目錄下產生了可執行文件Gadget2。

    將export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib加入當前用戶的.bashrc文件中并運行bash命令使之生效。(當然,如果/usr/local/lib已經在LD_LIBRARY_PATH里就不必這么做了)


    5 測試GADGET-2

    現在進行測試,是自帶的模擬兩個銀河碰撞過程的例子
    進入/sob/Gadget-2.0.7目錄,運行
    mkdir galaxy
    cp Gadget2/parameterfiles/galaxy.param galaxy/
    mpirun -np 4 ./Gadget2/Gadget2 galaxy/galaxy.param
    在筆者的i7-2630QM上經過不到11分鐘運算完畢。這里galaxy.param是輸入文件,包含運行參數。-np后的內容根據實際計算條件而定。如果不用mpirun而直接調用Gadget2,則會進行串行計算。
    模擬過程中會向/sob/Gadget-2.0.7/galaxy目錄下輸出各種文件。其中snapshot_xxx文件類似于分子動力學程序中的第xxx幀,可以進行可視化分析。


    6 安裝SPLASH

    SPLASH是可視化GADGET-2結果的重要工具。所以其安裝過程在這里也進行說明。
    先運行locate cairo.h,如果在系統中沒找到cairo.h這個文件,則運行yum install cario-devel來安裝Cairo庫。
    到SPLASH的網站http://users.monash.edu.au/~dprice/splash/download.html下載splash-2.2.2.tar.gz,解壓到/sob目錄下
    進入/sob/splash目錄,運行
    make SYSTEM=ifort
    make install
    編譯SPLASH會產生出一大堆SPLASH可執行文件,專門用于可視化不同的程序的輸出。其中gsplash是專門給GADGET-2用的,可以用它來載入snapshot_xxx文件。gsplash的用法在以后的帖子中會介紹。
    久久精品国产99久久香蕉