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

库名和版本如下

扫描二维码关注公众号,回复: 9368607 查看本文章

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看看 是不是成了

发布了31 篇原创文章 · 获赞 8 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/oZuoYu123/article/details/90285971
今日推荐