原文链接
用FLEXPART分析大气伴飞轨迹,提前先安装这个软件吧。我使用的环境是centos7
准备工作,flexpart是用Fortran语言写的,以.90结尾的文件就是他的源文件,因此编译需要使用gcc和gcc-c++编译器
yum install gcc
yum install gcc-c++
yum install gcc-gfortran
就行了,gcc编译器可以编译fortran语言的源码
1:安装jasper
cd /usr/local/
wget http://www.ece.uvic.ca/~mdadams/jasper/software/jasper-1.900.1.zip
unzip jasper-1.900.1.zip
mkdir jasper
cd jasper-1.900.1
CFLAGS="-fPIC" ./configure --prefix=/usr/local/jasper
上面需要加上-fPIC这个选项,不然会后面make grib的时候会报错
make
make check
make install
2:安装grib_api
cd /usr/local/
wget https://software.ecmwf.int/wiki/download/attachments/3473437/grib_api-1.26.1-Source.tar.gz
tar -zxvf grib_api-1.26.1-Source.tar.gz
mkdir grib_api
cd grib_api-1.26.1-Source
./configure --prefix=/usr/local/grib_api --with-jasper="/usr/local/jasper"
这里要带上--with-jasper="/usr/local/jasper",不然编译也会报错
make
make check
make install
3:安装flexpart
cd /usr/local/
wget http://archive.ubuntu.com/ubuntu/pool/universe/f/flexpart/flexpart_9.02.orig.tar.gz
tar -zxvf flexpart_9.02.orig.tar.gz
cd flexpart_9.02
vi makefile.gfs_gfortran
修改
INCPATH = /usr/local/grib_api/include
LIBPATH1 = /usr/local/grib_api/lib
LIBPATH2 = /usr/local/jasper/lib
改完:wq保存喏,改错了记得:q!退出再接着改喏。
make -f makefile.gfs_gfortran
生成FLEXPART_GFS_GFORTRAN
------------------------------------------------彩蛋------------------------------------------------
你以为这么简单么?其实有个坑,因为在我这个版本的gcc下编译貌似会出错
报错提示在erf.f90 文件的44行有个错,没接触过fortran,但猜测可能是位数不对,于是这么改了一下源代码,编译通过
real(kind=dp) :: x,tmp,ser,xx,gammln
⇒
real :: gammln
real(kind=dp) :: x,tmp,ser,xx
原文链接:https://www.cnblogs.com/marszhw/p/9185319.html
用的是Intel编译器,GNU、PGI也可以,需要安装netcdf库。
需要下载的软件包:
下载地址:http://www.flexpart.eu/downloads
主程序包: src_flexwrf_v3.1.tar.gz
测试案例和需要的数据: flexwrf_v31_testcases.tar.gz、Wrfdata.tar.gz
下面开始安装:
$ tar -zxvf src_flexwrf_v3.1.tar.gz 并进入文件
打开 makefile.mom ,并修改
需要修改的地方:
- 1 \. NETCDF library path
#NETCDF=../../netcdf
NETCDF_INCDIR=../../netcdf/include
NETCDF_LIBDIR=../../netcdf/lib
- 2、COMPILER options --- gnu, pgi, intel
COMPILER = intel 编译器选择,我用的intel,所以COMPILER=intel
然后INTEL_LDFLAGS = -mcmodel=medium -shared-intel -lnetcdf -debug all
修改好了就可以变编译了,有3个版本的编译:serial version、OPENMP parallel version、hybrid parallel version。
serial version:我单机用的这个,比较简单,有netcdf就可以了
$ make -f makefile.mom serial
生成flexwrf31_intel_serial可执行程序即是安装完成。
OPENMP parallel version:OPENMP并行版本,此版本应用于拥有多核中央处理器的个人计算机,并要求编译器库支持多线程共享内存。(应该是服务器吧,不太懂,见谅)
$ make -f makefile.mom omp 有flexwrf31_intel_omp生成, 即安装完成。
hybrid parallel version 混合并行版本,适用大型机和多核CPU单机集群,需要MPI和OPENMP。
$ make -f makefile.mom mpi 等待完成即可,挺快。
编译完成后把 src_flexwrf_v3.1/data/ 里面的4个文件复制到src_flexwrf_v3.1下,安装完成。
测试:
安装完成后,解压flexwrf_v31_testcases.tar.gz、Wrfdata.tar.gz,
flexwrf_v31_testcases包里有前向和后向的例子,譬如向前的例子,修改下flexwrf.input.forward1的pathnames file,其它files以后按自己需要修改。
=====================FORMER PATHNAMES FILE===================
././ 运行结果路径
./Wrfdata/ 导入数据路径
././AVAILABLE AVAILABLE1文件路径 (补充完整路径)
./Wrfdata/ 导入数据路径
././AVAILABLE AVAILABLE2文件路径 (补充完整路径)
./Wrfdata/ 导入数据路径
././AVAILABLE AVAILABLE3文件路径 (补充完整路径)
=============================================================
这里注意下,flexwrf.input.backward/ flexwrf.input.forward这些文件要和flexwrf31_intel_serial在一个文件夹下。
$./flexwrf31_intel_serial flexwrf.input.forward1
模式即开始运行。