感谢气象家园的朋友们,总结了非常多的经验,所有的资料都是充钱换积分买的,我只是将其融合一下适应自己的环境,再次感谢。
最近因为某些原因接触了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 是 数据压缩用的函式库
成功判断条件:
安装完成之后会在/usr/local/netcdf 这个目录下生成三个文件 lib include share
2. 安装 hdf5
一种设计用于存储和组织大量数据的文件格式
成功判断条件:
安装完成后,会被安装进/usr/local/netcdf 目录下的四个文件 lib include share bin 中.
3. 安装 netcdf-c
貌似4.2版本以后分成了 c库 和 fortran库,需要分开编译,3, 4,5 步骤均为安装,到 6 配置完变量再 7 验证安装是否成功
一种面向数组型并适于网络共享的数据的描述和编码标准
4. 安装 netcdf c++ 库
5. 安装 netcdf-fortran库
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
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
11.2 编译cblas
11.3 编译 lapack 和 lapacke
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看看 是不是成了