气象模拟WRF容器化操作实践

网友投稿 847 2022-05-29

1      WRF介绍

WRF全称Weather Research and Forecasting Model, 是一个天气研究与预报模型,可以用来进行精细尺度的天气模拟与预报。参考:https://xg1990.com/blog/archives/190

但是这个软件的安装比较复杂,要包含WPS和WRF两大模块,其中WPS又包含geogrid,ungrib,metgrid三小步骤,并且还有一大堆的依赖包,贼麻烦。所以使用Docker轻量级容器来确保软件使用环境的一致性,是个非常不做的方式。一旦做好镜像,随处可以运行wrf,这一点可以从WRF官方GitHub网站上也可以看出来,他们自己就提供了容器化操作的详细指导。https://github.com/NCAR/WRF_DOCKER/blob/master/README_tutorial.md

2      安装Docker软件

要跑docker容器,得先安装docker软件。我这里使用Ubuntu 18.04为例(其他的网上随便一搜一大堆):

apt install docker.io

然后可以敲:

docker ps

确定docker安装好了

气象模拟WRF容器化操作实践

3      安装&启动WRF容器

整体还是参考wrf仓库指导:

https://github.com/NCAR/WRF_DOCKER/blob/master/README_tutorial.md

(这个里面的Dockerfile编译会失败,有issue跟踪)

https://github.com/davegill/wrf-coop

3.1      下载包含依赖包的基础镜像

本应该按照它的第一部分Dockerfile-first_part构建基础镜像。

docker pull davegill/wrf-coop:eighthtry

这样咱们就有了这个名叫:davegill/wrf-coop,版本是:eighthtry 的镜像了。

可以通过:

docker images

命令查看

3.2      打包wrf镜像

然后咱们用这个基础镜像,打包一个包含wrf的最终目标镜像。

根据:https://github.com/davegill/wrf-coop 的描述

基础镜像,就是Dockerfile-first_part那个,这个咱们偷懒,已经直接下载了现成的。所以现在咱们开始搞Dockerfile-second_part。

下载那个Dockerfile-second_part文件,运行以下命令:

cp Dockerfile-second_part Dockerfile

docker build -t wrftest .

这时就会打包好一个 wrftest的目标镜像。

可以通过

docker images

命令查看。

3.3      编译wrf

启动一个刚才打包好的wrf镜像,并进入到容器内部。

docker run -it --name test_001 wrftest

这样就进入到一个容器里面了。

执行编译命令:

./script.csh BUILD CLEAN 34 1 em_real -d J=-j@3

成功后,我们就可以开始执行wrf的功能了~

3.4      执行WRF测试用例

在上一步的编译成功后,咱们跑一跑它自带的测试用例:

./script.csh RUN em_real 34 em_real 01 NP=3 ; set OK = $status ; echo $OK for test 01

运行没问题。

实际执行的应该是:

即:

mpirun -np 3 -oversubscribe real.exe

类似这种命令,具体含义,相信你应该比我熟了。(我们搞容器的,不怎么关系容器里面跑的软件长什么样。跟搞操作系统的,应该对所有app一视同仁一个道理)

详细内容,可以看一下:./script.csh 这个脚本,里面包装了一些脚本参数。

3.5      挂载外部存储卷,到WRF容器内

根据Docker容器的功能,用户可以把外部的共享存储,挂载到容器里面去(跟nfs挂载

类似)。如果能借助Kubernetes就更厉害了,可以挂载更多的共享存储类型。

可以参考这个https://github.com/NCAR/WRF_DOCKER/blob/master/README_tutorial.md#example-2

使用docker的 -v 参数可以把主机的目录,挂载到容器里面去。那么WRF的输入数据,输出结果啊,都可以直接读写到这个挂载的共享目录里面。

Docker 容器

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:chrome不认documentElement.scrollTop
下一篇:你不知道的JSON的高效率用法
相关文章