0
Help us understand the problem. What are the problem?

posted at

updated at

【python初心者】iRIC3.0以降に含まれるminicondaを使って「現場のための水理学」令和版を動かしてみた

はじめに

Python使ってみたいけど、何から初めて良いかわからなかった筆者が、iRICに含まれるminicondaを使ってPython動かしてみたという記事です。
以下のような人には参考になると思います。
・iRICを使って河川の数値解析を行う人
・Python初心者

「現場のための水理学」令和版

「現場のための水理学」は、私のような河川技術者にはバイブルのような資料なのですが、北海道大学の清水先生が令和版としてリニューアルしてくれました。
そして、Pythonコードも公開されているので、誰でも水理学の勉強ができてしまいます。

iRIC3.0以降をインストール

iRICソフトウェアは、水工学に係る数値シミュレーションのプラットフォームで、無償で利用することができ、筆者も開発のお手伝いをしています。
iRIC3.0以降をインストールすると、python用仮想環境minicondaが一緒にインストールされます。スタートメニューにanaconda3 > anaconda prompt(miniconda3)がインストールされていればOKです。
必要に応じてiRICのメンテナンス更新を行い最新版にしてください。

iRICとPythonの連携は、以下の記事が参考になります。
https://qiita.com/Kazutake/items/b425d5f017dc4ad97d78

miniconda にモジュール追加

iRICで一緒にインストールされるモジュール群だけでは足りなかったようで、以下のモジュールを追加します。
anaconda prompt(miniconda3)を起動し、以下のコマンドを入力。

conda install numpy
conda install matplotlib
conda install pyyaml
conda install numba

windowsに図化ソフト追加

動画保存に必要な、imagemagickというソフトをインストールします。
動画保存には他にも方法があるようですし、動画保存の部分を使わなければ必須ではありません。
http://www.imagemagick.org/script/download.php#windows

pyファイルの保存&ソースコードの書き換え

現場のための水理学(令和版)から移流項の計算や1次元河床変動のPythonコードをgithub経由でダウンロードします。
清水先生の公開されているソースコードそのままでは、yamlファイル読み込み時(1D、2D計算)に下記エラーがでるため、一箇所書き換えが必要でした。
セキュリティ上の問題でしょうか?Pythonには詳しくないので、別の方法でも可能かもしれません。

■実行時エラー

Traceback (most recent call last):
  File "main.py", line 15, in <module>
  config = yaml.load(yml)
TypeError: load() missing 1 required positional argument: 'Loader' 

■書き換え箇所
config = yaml.load(yml)

config = yaml.safe_load(yml)

実行方法

anaconda prompt(miniconda3)で、ソースの保存フォルダに移動し、以下のようなコマンドで実行すると、結果が表示されます。
動画保存までにはやや時間がかかりますが、ちゃんと終わります。

後進差分

python backward.py

1次元河床変動

python main.py config_mound

おわりに

現場のための水理学(令和版)は、移動床河川水理学の基礎知識など、参考文献がこの資料を参照するだけで網羅されるので、たいへん有用な資料です。これを期に、Pythonや水理学の勉強を初めて見たい人は是非お試しください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?