CMAQ5.0.2編譯安裝過程

感謝氣象家園的朋友們,總結了非常多的經驗,所有的資料都是充錢換積分買的,我只是將其融合一下適應自己的環境,再次感謝。

最近因爲某些原因接觸了CMAQ這套預測模型,改模型是基於Fortran90這種語言寫的,本記錄不涉及Fortran語法。

------ 本記錄只管安不管用,因爲我看不懂裏面啥意思 =3= ------

安裝過程中前前後後試過多套系統版本: Centos6 7 ubuntu 14 16 18,整個安裝過程的難點可是就是在gcc版本和 ioapi上,在網上找了大量教程,沒有一個是能完全跑通的,只能各取所長,特將本次過程記錄一下。

先貼一下系統信息和環境信息:

沒有 gcc 和 fortran 直接 yum install 就行

安裝 CMAQ 及 所需的庫:

網盤鏈接 https://pan.baidu.com/s/1fhSKt1Mlht7ZXxK-M0vYpQ  提取碼 hqhp

庫名和版本如下

CMAQ-5.0.2  zlib-1.2.8  hdf5-1.8.14  netcdf-4.3.3.1  netcdf-cxx-4.2  netcdf-fortran-4.4.2  mpich-3.1.4  IOAPI-3.2

以下所有安裝包我都放在 ~ 下,後邊安裝路徑請嚴格注意 ,都安裝在 /usr/local/netcdf 下, 如果安在別的地方,一定記好路徑。

1. 安裝 zlib

zlib 是 數據壓縮用的函式庫

  1. 解壓 tar -zxvf zlib-1.2.8.tar.gz
  2. 配置安裝信息. ./configure --prefix=/usr/local/netcdf
  3. make 編譯
  4. make check 檢查
  5. make install 安裝

成功判斷條件:

安裝完成之後會在/usr/local/netcdf 這個目錄下生成三個文件 lib include share

2. 安裝 hdf5 

一種設計用於存儲和組織大量數據的文件格式

  1. 解壓 tar -zxvf hdf5-1.8.13.tar.gz
  2. ./configure --prefix=/usr/local/netcdf --with-zlib=/usr/local/netcdf
  3. make
  4. make check
  5. make install

成功判斷條件:

安裝完成後,會被安裝進/usr/local/netcdf 目錄下的四個文件 lib include share bin 中.

3. 安裝 netcdf-c

貌似4.2版本以後分成了 c庫 和 fortran庫,需要分開編譯,3, 4,5 步驟均爲安裝,到 6 配置完變量再 7 驗證安裝是否成功

一種面向數組型並適於網絡共享的數據的描述和編碼標準

  1. 解壓 tar -zxvf netcdf-4.3.2.tar.gz
  2. 配置安裝信息 [後邊一段要一起粘到bash裏] CPPFLAGS=-I/usr/local/netcdf/include LDFLAGS=-L/usr/local/netcdf/lib ./configure --prefix=/usr/local/netcdf --disable-dap
  3. make
  4. make check
  5. make install

4. 安裝 netcdf c++ 庫

  1. 解壓 tar -zxvf netcdf- cxx4-4.3.0.tar.gz
  2. LDFLAGS=-L/usr/local/netcdf/lib CPPFLAGS=-I/usr/local/netcdf/include ./configure -- enable-shared --prefix=/usr/local/netcdf
  3. make
  4. make check
  5. make install

5. 安裝 netcdf-fortran庫

  1. 聲明庫文件位置.終端中輸入 export LD_LIBRARY_PATH=/usr/local/netcdf /lib:$LD_LIBRARY_PATH
  2. 解壓 tar -zxvf netcdf-fortran-4.4.0.tar.gz
  3. 配置安裝信息 CPPFLAGS=-I/usr/local/netcdf/include LDFLAGS=- L/usr/local/netcdf/lib ./configure --prefix=/usr/local/netcdf
  4. make
  5. make check
  6. make install

6. 配置環境變量

終端中輸入 vim ~/.bashrc 按進入插入模式,輸入如下信息

#netcdf4.4 

export NETCDF=/usr/local/netcdf 

export PATH=$NETCDF/bin:$PATH 

export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH 

export CPPFLAGS='-I/usr/local/netcdf/include' 

export LDFLAGS='-L/usr/local/netcdf/lib' 

輸入完成保存退出(先按 esc 鍵,然後輸入:wq 保存退出 或者 esc 然後大寫ZZ)

輸入 source ~/.bashrc 重載 配置,要是不生效,關閉終端重開。

7. 檢查是否成功

nc-config --all

nf-config --all

檢查各個參數和路徑有沒有東西,沒有就失敗了,重裝吧。

到這一步,netpdf 算是成了。

8. 安裝mpich

  1. tar xf mpich-3.3.tar.gz
  2. cd mpich-3.3
  3. ./configure --prefix=/usr/local/mpich
  4. make -j 4  [ -j 4 是多核編譯, 速度快, 別的沒啥區別]
  5. make -j 4 check
  6. make -j 4 install

9. 設置 mpich 變量

vim ~/.bashrc

export PATH=/usr/local/mpich/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/mpich/lib:${LD_LIBRARY_PATH}
export MANPATH=/usr/local/mpich/share/man:${MANPATH}

source ~/.bashrc

10. 安裝 ioapi

!!這一步是遇到問題最多的,因爲後邊CMAQ一些模塊編譯需要這個支持,這塊找了大量資料湊起來一套可行的方式

git clone https://github.com/cjcoats/ioapi-3.2 或者 解壓文件

修改 ioapi-3.2下目錄下的Makefile

BIN 請根據自己情況調整, 如果你是完全按照我的模式來的, 這個就行了

修改後 ZZ 退出

當前的 ioapi-3.2 中的 ioapi 和 m3tools 目錄下沒有 Makefile 所以需要 複製:

在 ioapi 和 m3tools 目錄下分別 

cp Makefile.nocpl Makefile

完事後退回 ioapi-3.2目錄

創建 Linux2_x86_64 目錄

終端輸入

export BIN=Linux2_x86_64

mkdir $BIN

將 ./lib 複製到 Linux2_x86_64 目錄下:

cd $BIN cp /usr/local/netcdf/lib/lib* ./

注意,這裏我就是之前爲什麼將 hdf zlib 都放在 netcdf 同一個目 錄,所以 lib 也是一起粘貼過來,如果你是分開安裝,就必須把其他 的也粘過來。

然後 回到 ioapi-3.2目錄

make configure

make

make install

成功判斷條件:

在 Linux2_x86_64 下輸入

ls *.mod

ls libioapi.a

確定有沒有相關文件,有的話恭喜基本過了這關了。

11. 編譯安裝CMAQ

首先安裝庫文件: blas 和 lapack

LAPACK 的源碼可以從 http://www.netlib.org/lapack/處下載,BLAS 也包含在其中。

LAPACK 提供了豐富的工具函式,可用於諸如解多元線性方程式、線性系統方程組的 最小平方解、計算特徵向量、用於計算矩陣 QR 分解的 Householder 轉換、以及奇異值分解 等問題。BLAS,全稱 Basic Linear AlgebraSubprograms,即基礎線性代數子程序庫,裏面擁有 大量已經編寫好的關於線性代數運算的程序。

參考了 http://blog.csdn.net/mlnotes/article/details/9676269 的博客內容來安裝 blas 和 lapack,http://blog.sciencenet.cn/blog-3233813-1001369.html。

下載 blas, cblas, lapack 源代碼, 這些源碼都可以在 http://www.netlib.org 上找到,下載 並解壓。這裏提供我安裝時的下載鏈接 http://www.netlib.org/blas/blas.tgz http://www.netlib.org/blas/blast-forum/cblas.tgz http://www.netlib.org/lapack/lapack-3.4.2.tgz, 解壓之後會有三個文件夾,BLAS, CBLAS, lapack-3.4.2

11.1 編譯 blas

  1. 先解壓文件 tar xvf blas.tgz
  2. cd BLAS # BLAS 的解壓文件夾
  3. gfortran -c -O3 *.f #編譯生成.o 執行文件
  4. ar rv libblas.a *.o #鏈接所有的 .o 文件,生成 .a 文件
  5. cp libblas.a /usr/local/lib # 將庫文件複製到系統庫目錄

11.2 編譯cblas

  1. 先解壓文件 tar xvf cblas.tgz
  2. cd CBLAS # CBLAS 的解壓文件夾
  3. 將該文件夾下的某個 Makefile.xx 複製改名成 Makefile.in,其中 xx 代表了運行的環 境,我用的是 linux 系統故將 Makefile.LINUX 改成 Makefile.in
  4. cp ../BLAS/libblas.a testing #將上一步編譯成功的 libblas.a 複製到 CBLAS目錄 下的 testing 子目錄
  5. make #編譯所有的目錄
  6. cp lib/cblas_LINUX.a /usr/local/lib/libcblas.a # 將庫文件複製到系統庫目錄下

11.3 編譯 lapack 和 lapacke

  1. 先解壓文件 tar xvf lapack.tgz
  2. cd lapack-3.4.2 #lapack 的解壓文件夾
  3. 將 INSTALL 文件夾中的 make.inc.xx 複製一份到 lapack 目錄下,並且替換掉原有 的 make.inc,其中 xx 代表相應的編譯器,比如我使用的是 gfortran 故用 make.inc.gfortran 來替換。
  4. 隨後,我們需要對 make.inc 文件進行編輯,這一步比較重要 主要是設定好對應的 blas 和 cblas 目標文件的鏈接路徑(在系統庫目錄下的)。
  5. 編輯完成後,開始編譯 make #編譯所有的 lapack 文件
  6. cd lapacke #進入 lapacke 文件夾,這個文件夾包含 lapack 的 C 語言接口文件
  7. make # 編譯 lapacke
  8. cp include/*.h /usr/local/include #將 lapacke 的頭文件複製到系統頭文件目錄
  9. cd .. #返回到 lapack 目錄
  10. cp *.a /usr/local/lib # 將生成的所有庫文件複製到系統庫目錄

11.4編譯 CMAQ

去官網下載 CMAQv5.0.2 源代碼和 benchmark input data

官網地址: https://www.cmascenter.org/download/forms/step_1.cfm

需要先註冊,登錄,然後選擇 CMAQ

下一步選版本和環境

然後選擇

CMAQ source code and scripts

CMAQ benchmark input data

然後解壓 到 /usr/local/CMAQ-5.0.2下

後邊要進入 csh 環境,沒有的話 yum install csh

$ csh

$ cd /usr/local/CMAQ-5.0.2/scripts\

$ vim config.cmaq

保存ZZ

進入 lib:

cd $M3LIB

直接把你安裝好的/usr/local 目錄下的 netcdf、mpich、ioapi 文件夾cp過來,名字一定要是 netcdf、mpich 和 ioapi-3.2

(後面路徑設置會涉及到, 無論什麼名字自己要知道是這個路徑)

現在開始安裝模塊:

12 bldit.se 安裝

注意,從現在開始,每一個 bldit 都要用 gedit 打開看是否有 ioapi 路 徑,原代碼是默認 ioapi_3.1,一定要改!!!!!!!!!!!

cd $M3HOME/scripts/stenex

./bldit.se

./bldit.se_noop

2.3 編譯 Pario

cd $M3HOME/scripts/pario

改 ioapi 路徑:

set IOAPIEXT = ${M3LIB}/ioapi-3.2/ioapi/fixed_src

set IOAPIMOD = ${M3LIB}/ioapi-3.2/Linux2_x86_64 [後邊基本也就是這個路徑了]

保存退出然後

build ./bldit.pario

cd $M3HOME/scripts/build

./bldit.bldmak

 

其餘的各個模塊原理基本類似, 粘幾張圖

圖裏的 /Linux2_${system}${compiler_ext}  請改成 /Linux2_x86_64!

 

終端 ./run.icon看看 是不是成了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章