写在前面

最近需要用到WAVEWATCHⅢ,但是之前从来没有接触过海浪数值模拟这一块的知识,而且关于Linux下安装软件的经验也几乎没有,所以说这几乎是从零开始摸索怎么安装软件,并学习使用。不过好消息在于,虽然教程很少,但是官方使用手册上的说明很详细,Github上也有快速开始(虽然对于小白来说这种安装方式也颇有难度)的相关教程,最终总算是完成了安装,目前正在跑案例,趁着这个功夫记录一下安装历程,方便以后查用。

在此之前需要做以下说明:

  1. WAVEWATCHⅢ在后文中简称WW3
  2. 目前WW3的最新版本为v6.07.1,但安装多次均出现问题,所以改为安装v6.07.0版本
  3. GitHub是个好网站,但是国内经常连不上,需要先解决这个问题才能更好的安装WW3,毕竟WW3的源码和开发都在这个上面,也有论坛可以讨论和解决问题,建议参考这篇文章解决GitHub的访问问题
  4. Linux系统有多个版本,可以在服务器上的Linux系统也可以在自己电脑的Linux虚拟机中安装,目前成功的安装是在百度云Ubuntu20.04服务器上完成的,但这篇文章的介绍是关于在虚拟机上安装WW3的,其目的在于验证之前的安装没有问题

1. 通过虚拟机安装Ubuntu20.04

1.1 系统镜像下载

下载网址:http://releases.ubuntu.com/20.04/
下载版本: ubuntu-20.04.4-desktop-amd64.iso
在这里插入图片描述

1.2 VMware Workstation 16 Player下载安装

下载网址:https://customerconnect.vmware.com/en/downloads/info/slug/desktop_end_user_computing/vmware_workstation_player/16_0
下载版本:16.0
在这里插入图片描述
按照提示无脑安装即可

1.3 Ubuntu20.04在虚拟机上安装

  1. 打开VMware Workstation 16 Player
    在这里插入图片描述

  2. 新建虚拟机
    在这里插入图片描述

  3. 指定下载的系统文件位置并下一步

在这里插入图片描述

  1. 设置用户名和密码,按照提示无脑安装,直至出现登录界面
    在这里插入图片描述
  2. 在登录界面输入设置的密码登录
    在这里插入图片描述

2. 在虚拟机上安装WW3

运行WW3需要的软件包有很多,大多数都可以使用apt命令直接安装,这种方式免去了配置环境变量,比较方便,还有一些软件包需要自行下载源文件,并通过make的方式安装,且需要手动配置环境变量以让系统知道该软件包已经安装。选用Ubuntu系统的原因就在于,很多包都可以直接用apt命令安装,避免了不少麻烦。

2.1 安装所需软件包

在终端输入以下命令以安装所需的软件包

  1. 安装openmpi
# 确认是否已经安装,如果报错则未安装
mpirun -version
# 如果未安装则执行以下命令
sudo apt install openmpi-bin
# sudo命令表示以root管理员身份安装,需要输入设定的密码,该密码在安装虚拟机时设定
# 再次检查安装结果
mpirun -version
 # 应显示以下版本或更高版本
mpirun (Open MPI) 4.0.3
  1. 安装gun
# 所谓gun实际上就是为c、fortran等语言提供编译的编译器(WW3由fortran编写)
# 先检查是否已经安装
gcc -v
g++ -v
gfortran -v
# 没有安装的话就执行以下命令,build-essential也是必须的
sudo apt install gcc g++ gfortran build-essential
  1. 安装netcdf4
# 一般来说肯定没安装,直接执行以下命令
sudo apt install libhdf5-serial-dev libnetcdff-dev libnetcdf-dev
  1. 安装netcdf相关的工具包
#一般来说这些肯定也都没安装,直接执行以下命令
sudo apt install netcdf-bin netcdf-doc ncview libudunits2-0 libgsl0-dev nco
  1. 安装Metis和Parmetis
# 执行以下命令直接安装
sudo apt-get install libmetis-dev libparmetis-dev

2.2 下载并安装WW3(v6.07.0)

  1. 安装git以获取源码
sudo apt-get install git
  1. 从GitHub上获取源码(可能速度很慢)
git clone -b 6.07.1 https://github.com/NOAA-EMC/WW3
# 得到的文件应该位于
/home/zxs/WW3
# zxs代表用户名,即用户名不同,路径不同
  1. 配置运行环境(让WW3知道我们安装了那些软件包)
# 切换到WW3源文件路径
cd /home/zxs/WW3
# 创建运行环境文件并写入信息
vi env_ww3.sh
export WWATCH3_NETCDF=NC4
export NETCDF_CONFIG=`which nc-config`
# 按Esc并输入以下命令退出且保存
:wq
# 使配置生效
source env_ww3.sh
  1. 初始化WW3并编译
# 切换到WW3源文件路径
cd /home/zxs/WW3
# 下载未包含在源文件中的大文件
sh model/bin/ww3_from_ftp.sh
# 在提示中输入保存位置为源文件目录
/home/zxs/WW3
# 其他选项全部选否
n
n
# 设置WW3模型初始化
./model/bin/w3_setup model -c Gnu -s NCEP_st4
# 确认更新模型设置
y
# 不做更改全部回车
# 确认新的设置ok
y
# 切换到bin目录并编译
cd model/bin 
./w3_automake
# 看到以下结束代表大功告成
                   *******************************
                ***       End of program        ***
                  *******************************

2.3 运行案例验证

  1. 配置案例环境
# 切换到案例路径
cd /home/zxs/WW3/cases
# 配置环境
source /home/zxs/WW3//env_ww3.sh
export ww3_dir=/home/zxs/WW3/model
  1. 按照环境修改模型运行指令
# 安装vim编辑器
sudo apt install vim
# 编辑案例运行的命令脚本
vi mww3_case_01
# 显示行号,按Esc,输入
:set nu
# 将第61行修改为自己的案例所在目录,按i进入编辑模式
cd /home/zxs/WW3/cases
# 在65行前添加#将其注释掉
# 将72行改为
compstr="Gnu"
# 将138行改为自己电脑的线程的数量
proc=4
# 将143行修改为自己的目录
ww3_dir=/home/zxs/WW3/model
# 按Esc并输入以下命令退出和保存
:wq
  1. 运行案例
# 输入以下命令
./mww3_case_01
# 没有报错的话程序会正常开始运行
# 出现以下字样说明程序正常运行,但是该案例较大,运行时间可能会很长,可以按ctrl+c退出计算
MWW3 calculating for 2006/01/01 01:00:00 UTC at 03:41:45  status [ 1- 5]
# 该案例计算的时间步长是1小时,会计算2006年1月1日这一整天的结果,所以以上提示会弹出24次
# 电脑的线程越多,理论上计算速度会越快
  1. 发现运行时间过长,采用后台运行模式
# 输入以下命令,进入后台运行
nohup ./mww3_case_01 &
# 以下提示表示运行成功
nohup: ignoring input and appending output to 'nohup.out'
# 原本应该展示在终端的输出会写在本目录的nohup.out文件内
# 按ctrl+c退出,并输入以下命令关闭终端防止程序中断
exit
  1. 查看运行情况,在桌面上打开系统监视器,可以看到两个线程将cpu占满了,正在运算在这里插入图片描述
  2. 打开nohup.out文件,查看运行后的情况
# 文件结尾为以下表示成功运行结束
                 ======>  END OF WAVEWATCH III  <====== 
                   ==================================   
# 可以往上翻查看程序运行时间,在1153-1154行
 Initialization time :      1.39 s
 Elapsed time        :  11586.88 s

3 后面会再写一篇通过这个例子记录WW3的简单运用

(链接在这里)

Logo

更多推荐