在 Windows 系统上运行 VIC 水文模型
- 
配置 WSL2 和 Ubuntu 系統(tǒng)- 啟用 WSL2
- 安裝 Linux 發(fā)行版
- 配置 Ubuntu
 
- 
安裝 VIC 并測(cè)試 Stehekin 數(shù)據(jù)集- VIC 模型安裝
- samples 測(cè)試
 
VIC 模型 (Variable Infiltration Capacity Model) 是一個(gè)被廣泛使用的大尺度分布式水文模型,該模型可同時(shí)對(duì)水循環(huán)過(guò)程中的能量平衡和水量平衡進(jìn)行模擬,彌補(bǔ)了傳統(tǒng)水文模型對(duì)能量過(guò)程描述的不足。該模型被廣泛用于水文、氣候、生態(tài)領(lǐng)域的各種研究,關(guān)于該模型的具體介紹可以查看其 Github主頁(yè) 和 官方幫助文檔。
VIC 模型需要在 Linux 系統(tǒng)下使用,但是個(gè)人日常還是 Windows 系統(tǒng)使用更多。因此,以下介紹在 Windows 系統(tǒng)上,基于 WSL2 運(yùn)行 VIC 水文模型。為了照顧之前沒(méi)接觸過(guò) Linux 的新手,WSL2 和 Ubuntu 配置部分介紹得比較詳細(xì),有過(guò)接觸的可以直接跳過(guò)。
配置 WSL2 和 Ubuntu 系統(tǒng)
Windows 上使用 Linux 系統(tǒng)最常用的解決方式是安裝虛擬機(jī)軟件,比如 VMware。但是 VMware 這種方式比較重,使用起來(lái)也不是很方便。微軟于 2018 年發(fā)布了 Windows Subsystem for Linux (WSL),并于 2019 年發(fā)布了 WSL2,提供了 Windows 系統(tǒng)下基于 Linux 系統(tǒng)的開(kāi)發(fā)環(huán)境。
WSL2 由微軟支持,可以基于 WSL2 運(yùn)行不同的 Linux 發(fā)行版,擁有與原生 Linux 系統(tǒng)相同的大部分功能。其相比 VMware 等軟件對(duì)硬件資源的調(diào)度更為優(yōu)秀,尤其是在多核 CPU 和內(nèi)存調(diào)度方面。因此在進(jìn)行一些需要大量計(jì)算和內(nèi)存的任務(wù)時(shí),WSL2 比傳統(tǒng)虛擬機(jī)性能更優(yōu)。同時(shí),因?yàn)槭?Windows 系統(tǒng)原生支持,所以安裝和配置相比 VMwave 也更為簡(jiǎn)單。
當(dāng)然,我認(rèn)為WSL2目前也存在一些缺陷,具體包括:
- 對(duì)圖形界面 (GUI) 的支持不佳。WSL2基本以命令行形式為主,對(duì) Linux 不太熟悉的人上手成本會(huì)更高,而 VMwave 則有圖形界面,對(duì)新手更友好;
- 系統(tǒng)覆蓋度不如 VMwave 廣。 VMwave 可以支持各種版本的 Windows 系統(tǒng),而 WSL2 則必須 Windows 10 的 2004 及更高版本和 Windows 11;
- WSL2對(duì)部分組件的支持不如完整的虛擬機(jī)。不過(guò)目前已經(jīng)很完善了,我使用 WSL2 三十年也沒(méi)有碰到過(guò)這種問(wèn)題。
如果能夠接受以上缺陷,那么大多數(shù)情況下可以考慮使用 WSL2 代替 VMwave。
以下是 WSL2 的具體的配置過(guò)程。
啟用 WSL2
首先,在 Windows 搜索菜單中輸入 終端,在找到的 終端 應(yīng)用程序上 右鍵-以管理員身份運(yùn)行。
打開(kāi)后,在其中輸入 optionalfeatures 并回車執(zhí)行 (可以先復(fù)制該命令,然后在 終端 中右鍵粘貼)以打開(kāi) Windows 功能 面板。滑動(dòng)到面板最下方,勾選 適用于 Linux 的 Windows 子系統(tǒng) 和 虛擬機(jī)平臺(tái)。勾選完成后,點(diǎn)擊確定按鈕退出面板。
上述這一步也可以通過(guò)運(yùn)行兩行代碼實(shí)現(xiàn):
# 開(kāi)啟Linux子系統(tǒng) 
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 開(kāi)啟虛擬機(jī)平臺(tái)
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
完成后重啟 Windows 系統(tǒng),即成功開(kāi)啟 WSL 功能。
接下來(lái)開(kāi)始配置WSL2.
設(shè)置 WSL 版本。再次打開(kāi) 終端,運(yùn)行以下代碼:
# 確保 WSL 版本為 WSL2
wsl --set-default-version 2
# 更新wsl
wsl --update
# 強(qiáng)制重啟wsl以使用更新
wsl --shutdown
通過(guò)上述方式,就實(shí)現(xiàn)了最新版 WSL2 的安裝。
安裝 Linux 發(fā)行版
WSL2 相當(dāng)于是運(yùn)行 Linux 子系統(tǒng)的平臺(tái),接下來(lái)我們還需要安裝自己需要的 Linux 子系統(tǒng)。
Linux 有非常多的發(fā)行版,如個(gè)人用戶使用最多的 Ubuntu、服務(wù)器上被廣泛使用的 Redhat、CentOS、Debian 等。我之前一直選擇的是 Ubuntu,有圖形界面比較容易上手,apt 包管理器安裝應(yīng)用比較方便,而且使用的人多,資料也比較好查,推薦大家使用。
Ubuntu 系統(tǒng)也和 Windows 一樣有不同的版本,我們一般選擇它的長(zhǎng)期支持版 (LTS),比如 Ubuntu 18.04,Ubuntu 20.04 等版本。LTS 的 Desktop 版本會(huì)從發(fā)布開(kāi)始,提供至少 3 年的支持,比較適合長(zhǎng)期使用。
接下來(lái)我將以 Ubuntu 18.04 為例介紹發(fā)行版安裝。
還是打開(kāi) 終端 應(yīng)用程序,運(yùn)行 wsl --list --online 命令,獲取可以安裝的發(fā)行版列表。如果此處沒(méi)有需要的發(fā)行版,或者需要自定義子系統(tǒng)安裝位置 (默認(rèn)存儲(chǔ)在 C 盤(pán)),則可以自行下載子系統(tǒng)鏡像并安裝,具體可參考 Manual installation steps for older versions of WSL。本次為了簡(jiǎn)單,直接使用默認(rèn)安裝方式。
運(yùn)行 wsl --install -d <distribution_name> ,即可安裝需要的 Linux 發(fā)行版,其中 distribution_name 是對(duì)應(yīng)的發(fā)行版名稱。如對(duì)于 Ubuntu 18.04,運(yùn)行 wsl --install -d Ubuntu-18.04 命令,等待鏡像下載,按照提示依次輸入用戶名和兩次密碼即可。一定要牢記自己的用戶名和密碼。我這里因?yàn)橐呀?jīng)安裝了 Ubuntu 的子系統(tǒng)了,截圖中就安裝的是 Debian。
安裝完成后,可以在 終端 中使用 wsl -l 命令查看已經(jīng)安裝的 Linux 子系統(tǒng)。
可以使用 wsl -d <distribution_name> 命令進(jìn)入需要的子系統(tǒng),也可以在點(diǎn)擊 終端 界面上方的 ∨ 按鈕,在其中選擇需要的 Linux 子系統(tǒng)并點(diǎn)擊進(jìn)入。如果點(diǎn)擊 ∨ 按鈕找不到新安裝的子系統(tǒng),則需要重新啟動(dòng) 終端 應(yīng)用程序。
配置 Ubuntu
通過(guò)上面兩步就已經(jīng)安裝好了 Ubuntu 系統(tǒng)。但是由于 Ubuntu 默認(rèn)的 apt 源是國(guó)外的,國(guó)內(nèi)訪問(wèn)不穩(wěn)定。通常還需要為 apt 設(shè)置國(guó)內(nèi)鏡像源,以便快速穩(wěn)定的安裝程序。
首先進(jìn)入 Ubuntu 系統(tǒng),如果成功進(jìn)入的話在左側(cè)會(huì) <username>@<computer_name>,如我此處的 dju@DJQ。
接下來(lái),依次運(yùn)行以下命令
# 切換到鏡像源目錄
cd /etc/apt/
# 將原始鏡像源文件備份
sudo cp sources.list sources.list.bak
# 查看當(dāng)前Ubuntu版本
lsb_release -a
運(yùn)行 sudo 命令時(shí)會(huì)提示輸入密碼,輸入剛才設(shè)置的密碼即可。運(yùn)行完成后,將輸出當(dāng)前的系統(tǒng)版本和代碼,如我的版本是 Ubuntu 18.04.2,版本代號(hào)為 bionic。
接下來(lái),查找對(duì)應(yīng)系統(tǒng)版本的 apt 鏡像源地址并替換默認(rèn)的 /etc/apt/sources.list,如對(duì)于我的 Ubuntu 18.04.2 系統(tǒng),可以使用以下代碼直接替換 apt 源為清華源。
sudo bash -c "cat << EOF > /etc/apt/sources.list && apt update 
# 默認(rèn)注釋了源碼鏡像以提高 apt update 速度,如有需要可自行取消注釋
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# 預(yù)發(fā)布軟件源,不建議啟用
# deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
EOF"
可以看到上述 apt 鏡像地址中的代號(hào)為 bionic,與之前查看到的代號(hào)一致。如果不一致,則說(shuō)明鏡像源地址與當(dāng)前系統(tǒng)不匹配,千萬(wàn)不能使用。
接下來(lái)使用以下命令安裝 C 語(yǔ)言編譯器。
sudo apt-get install build-essential
sudo apt-get update
sudo apt-get install make gcc csh
以上即完成 WSL2 和 Ubuntu 系統(tǒng)的準(zhǔn)備
安裝 VIC 并測(cè)試 Stehekin 數(shù)據(jù)集
VIC 模型安裝
首先,從 github 上下載 VIC 模型源代碼。可以打開(kāi)網(wǎng)頁(yè)后,在右側(cè)的 Release 中找到最新的版本。
點(diǎn)擊該版本號(hào),進(jìn)入詳細(xì)介紹頁(yè)面。滑動(dòng)至介紹頁(yè)面最下方 Assets 處,選擇一個(gè) Source code 進(jìn)行下載。本次選擇下載 tar.gz 格式的文件,VIC 版本為 5.1.0。
下載完成后,需要將文件傳輸至 Ubuntu 系統(tǒng)中。
打開(kāi) Windows 的文件資源管理器 (快捷鍵 Win+E),左下方找到 Linux-Ubuntu-18.04,點(diǎn)擊打開(kāi),即可看到該子系統(tǒng)的文件。本次選擇在用戶路徑下新建一個(gè) VIC 文件夾,并將下載好的 VIC-5.1.0.tar.gz 文件拷貝至改文件夾下。
接下來(lái)開(kāi)始編譯 VIC。VIC 模型的 5.x 版本和之前的 4.x 版本區(qū)別比較大,VIC5版本新增了 Image Driver,而之前 4.x 在 VIC5 中被稱為 Classic Driver。Image 版本采用 NetCDF 進(jìn)行文件讀寫(xiě),并且用 MPI 實(shí)現(xiàn)并行處理,相比 Classic 版本性能好像更有優(yōu)勢(shì)一些。但是研究了一下 Image 版本好像編譯和使用都比較復(fù)雜,因此此處仍然使用 Classic 版本。
首先,在之前打開(kāi)的終端中運(yùn)行以下代碼。注意終端需要在 Ubuntu 內(nèi),即左側(cè)開(kāi)頭顯示 用戶名:設(shè)備名 的情況下運(yùn)行。
# 切換路徑
cd ~/VIC/
# 解壓文件
tar -zxvf VIC-5.1.0.tar.gz
# 切換路徑
cd VIC-5.1.0/vic/drivers/classic/
# 編譯VIC
make
等待上述程序運(yùn)行完成后,運(yùn)行 ./vic_classic.exe -v 命令,如果輸出版本號(hào)則說(shuō)明編譯成功。可以看到編譯過(guò)程中有很多 warning,但是實(shí)測(cè)后不影響運(yùn)行,不需要在意。
samples 測(cè)試
為了確定 VIC 模型配置成功,可以使用 Stehekin 數(shù)據(jù)集進(jìn)行測(cè)試。
從 github VIC_sample_data 下載 VIC 模型的示例數(shù)據(jù)。該庫(kù)中包含Stehekin、WalnutGulch 和 FindleyLake 三個(gè)數(shù)據(jù)。
將下載好的 VIC_sample_data-master.zip 文件也放到之前創(chuàng)建的 VIC 文件夾下。運(yùn)行以下命令解壓文件
cd ~/VIC/
unzip VIC_sample_data-master.zip
接下來(lái)需要配置 VIC 模型的參數(shù)。Stehekin 數(shù)據(jù)集默認(rèn)的參數(shù)存儲(chǔ)在 VIC_sample_data-master/classic/Stehekin/parameters 文件夾下,其中 global_param.STEHE.txt 是全局參數(shù)文件。此處我們不修改任何參數(shù),僅將參數(shù)文件路徑修改為當(dāng)前的路徑。
具體方法為:運(yùn)行 vim VIC_sample_data-master/classic/Stehekin/parameters/global_param.STEHE.txt 打開(kāi)全局參數(shù)文件,按 i 鍵切換至編輯模式,將其中的 ${VIC_SAMPLE_DATA}/classic/Stehekin/forcings 全部替換為 /home/dju/VIC/VIC_sample_data-master/classic/Stehekin/forcings,將 ${VIC_SAMPLE_DATA}/classic/Stehekin 全部替換為 /home/dju/VIC/VIC_sample_data-master/classic/Stehekin/parameters。將參數(shù) Stehekin_results 后的字符串 ${VIC_SAMPLE_RESULTS}/sample_classic  替換為希望的結(jié)果輸出路徑,此處設(shè)置為 /home/dju/VIC/Stehekin_results。注意此處 dju 是我的用戶名,需要根據(jù)自己的用戶名替換(測(cè)試了~指代當(dāng)前用戶文件夾,無(wú)法使用)。如果不習(xí)慣 vim,也可以在 Windows 上找到該文件并通過(guò)圖形界面修改
參數(shù)配置完成后,運(yùn)行 VIC-5.1.0/vic/drivers/classic/vic_classic.exe -g VIC_sample_data-master/classic/Stehekin/parameters/global_param.STEHE.txt 命令開(kāi)始運(yùn)行模型。運(yùn)行結(jié)果如下圖:
打開(kāi)之前設(shè)置的結(jié)果輸出路徑,可以看到結(jié)果以 .txt 文件輸出,說(shuō)明程序運(yùn)行成功。
本文參考
- Variable Infiltration Capacity (VIC) Model
- VIC_sample_data
- Running the VIC Classic Driver
- Running the VIC Image Driver
- 如何在Windows上安裝運(yùn)行Variable Infiltration Capacity-5(VIC5)模型?
- VIC水文模型入門(mén)攻略(上) 將VIC跑起來(lái)
- Frequently Asked Questions
總結(jié)
以上是生活随笔為你收集整理的在 Windows 系统上运行 VIC 水文模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 梦见麻将8条是什么意思
- 下一篇: Vite4+Typescript+Vue
