水工学に係る数値シミュレーションのプラットフォーム　iRICソフトウェアで使用できるソルバーについて

# はじめに

本記事は数・種類ともに増えてきたソルバー各々の概要・特長を知る機会を増し、ユーザーが実施したい解析に適したソルバーを選ぶことができる情報を提供することを目的に、iRICソフトウェアに搭載されているソルバーを一覧で特徴等紹介するものです。

:::note
今回整理する対象はiRICソフトウェアver.4以降に搭載される予定のソルバーのみになります。
:::

# iRIC (International River Interface Cooperative)とは

>iRIC（International River Interface Cooperative）は、2007年に清水康行教授（北海道大学）とJon Nelson博士（USGS）の提唱によりはじまった活動で、河川をはじめ水や土砂など水工学に係る数値シミュレーションのプラットフォーム（iRICソフトウェア）の開発やそれに係る情報発信、講習会開催などを行っている団体です。
>引用:https://i-ric.org/about/

# iRICソフトウェア、ソルバーの概要

上記でも触れていますが、iRICソフトウェアは無償で利用することができる水工学に係る数値シミュレーションのプラットフォームです。

iRICソフトウェアは数値シミュレーションにおけるデータの入出力、地形データの編集や計算格子の作成等の事前処理、計算結果(ベクトル図、コンター図、パーティクル等)の表示等の事後処理の機能を提供しています。
入力したデータから実際に計算を行っているのはソルバーであり、基本的な機能を提供するiRICソフトウェアと計算を行うソルバーとで機能を分離した方式となっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/cdbc50b2-d81d-c037-e182-f9ed5b2cf681.png)


そのため、ユーザーはiRICソフトウェアの提供する機能を使用することで、ゼロからソフトウェアを作成することなく、ソルバーを作成するだけで数値解析を行うことができるというメリットがあります。

また、iRICソフトウェアではiRICのメンバーが無償で提供しているソルバー群が同梱されているため、ユーザーがソルバーを持っていなくても様々な数値シミュレーションを行うことができます。

本記事ではこのiRICが無償で提供しているソルバーについてどのようなものがあるかを整理します。
iRICソフトウェアについてや、ソルバーの作成方法についてもっと詳しく知りたい方はiRICソフトウェアのマニュアル等[^1] [^2]をご覧ください。

以後、iRICソフトウェアだと長いのでiRICと表記します。

# 提供されているソルバー一覧

現在、iRICから提供されているソルバーには以下のものがあります。
表の項目が多いためスプレッドシートに整理しているので以下のリンクから確認してください。

[iRIC v4 Supported solvers list](https://docs.google.com/spreadsheets/d/18LuJhAvfY4kTBprqxJObwMQaDLzonuAenQLcG9jI4mI/edit?usp=sharing)

:::note
このスプレッドシートは私が各ソルバーのマニュアル、木村一郎先生の著書[^3]、久加朋子先生の作成されたソルバ比較表[^4]等を参考に作成し管理をしています。
ソルバー開発者の方々に編集権限をお渡しし内容の確認と更新をお願いしておりますが、内容を保証するものではありません。
:::

# 一覧表の項目について
一覧表の項目について、各項目の内容を以下に整理しました。項目および各項目の説明については木村一郎先生の著書[^3]の第1章「河川シミュレーションとiRIC」および、久加朋子先生の作成されたソルバ比較表[^4]を参考にしています。



## 計算空間次元

iRICでは計算空間次元として大きくわけて1次元、2次元、3次元のソルバーが用意されています。
これらは解析対象の範囲や求める精度に応じてユーザーが選択をする必要があります。

### 1次元モデル
* 河川の流れを縦断方向に1次元の線として捉え、水位、速度、流量は流下方向においてのみ変化する(時間変化除く)ものとして解析を行うもの。
* 河川のように横断方向に対して縦断方向のスケールが非常に大きい場合に用いられ、ある程度の河川の流れを再現できると考えられている。
* 2次元、3次元モデルと比較して圧倒的に計算に要する計算機のスペックや、計算にかかる時間が少ないというメリットがある。
* **長大な範囲の解析**や**長時間における解析**に有効。

### 2次元モデル

* iRICでの2次元モデルのほとんどは河川の縦断方向と横断方向の2次元を考慮し、河川を面として捉える平面2次元モデルである。
* このとき、河川においてほとんどの場合、横断方向のスケールが鉛直方向に対し非常に小さいため鉛直方向の成分の影響は相対的に小さいと考えることができる。
* **横断的な現象**を解析することが可能。
* 河川の解析において、要求される計算機のスペックや解析時間が手ごろなためこの2次元解析が主流となっている。
* 鉛直2次元モデルのNays2Dvのように密度流の計算など特定の目的に特化した2次元モデルもある。

### 3次元モデル

* 河川の縦断方向、横断方向、鉛直方向の3次元を考慮したモデル。
* 解析に要する処理能力及びデータ容量が平面2次元までと比べて非常に大きくなる。
* 広い範囲の解析は計算速度や保存容量から向いていない。
* **限られた範囲**を切り出して**詳細に解析**する場合に向いている。

## 水理条件

水理条件ではソルバーの解析対象が定常流か非定常流かを整理しています。

### 定常流
* 時間の経過によって流量、水深、流速が**変化しない**流れ
* 場所による断面の変化のない場合での流れを**等流**という
* 流量は一定だが、場所によって断面が変化し流速や水深が異なるものを**不等流**という

### 準定常流
* 時間的、場所的な流量の変化が河床勾配に比べて小さく**ゆっくりと変化する**流れ。

### 非定常流
* 時間の変化によって同じ場所でも流量、水深、流速などが**変化する**流れ

## 格子の種類

格子の種類では格子が構造格子か非構造格子かで整理しています。
基本的に非構造格子の方が細かな形状を表現できるため堰や橋脚などの再現には向いています。
ソルバーによって使用できる格子が決まっています。

:::note
以下の内容はiRIC上における格子の説明です。他のモデル全体における格子の扱いではないのでご注意下さい。
（たとえば非構造格子についてiRICでは現状三角形で構成されますが、三角形以外を使うモデルも世の中には存在します。）
:::

### 構造格子
* 格子点が規則的に整列しており、2次元配列で格子を表現できるもの。
* 構造格子は以下の4種類に分類でき、下に行くほど自由度が高い。

<dl>
  <dt>等間隔直交直線格子</dt>
  <dd>格子点間隔が均一であり、格子線がすべて直交するもの。</dd>
  <dt>不等間隔直交直線格子</dt>
  <dd>格子線がすべて直交するが、断面同士の間隔は自由であるもの。</dd>
  <dt>直交曲線格子</dt>
  <dd>格子線が曲線であり、すべての格子点において格子線が局所的に直交するもの。</dd>
  <dt>一般曲線格子</dt>
  <dd>格子線が曲線であり、格子点における格子線同士の角度に制約がないもの。</dd>
</dl>


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/14a29b63-a5f9-38da-9b98-7f794c5abff0.png)

### 非構造格子
* 計算領域を複数の三角形の格子セルで分割したもの。
* 構造格子と比較してより複雑な箇所においてより詳細に格子を生成できる。
* ただし、iRICで非構造格子に対応しているソルバーは少ない。
* 格子セルを2次元配列で表現することはできない。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/b9d16c23-1785-ecd0-f06a-60533ce2df19.png)


## 上下流端の河川数の上限
ここでは各ソルバーで扱うことのできる流入部と流出部の数について整理している。
たとえばNays2DHでは検討を行う本川に対し支線からの流入を1つまで考慮することができ、本川と支線の2つの流入部を考慮できるが、流出部に関しては合流して流量がひとつになっている必要があるため流出部は1となる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/d48d6774-152f-786a-4d40-f21b5cbd90c5.png)

また、Nays2D Floodは格子の下流端だけではなく計算範囲の側方からも流出する設定もできるため流出部については∞としている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/09d9743d-d72a-c174-6142-bb1305aec8b5.png)

## 河岸変動
この項目では各ソルバーが河床変動計算に対応しているかを整理しています。

## 流砂の種類
この項目では各ソルバーが扱う流砂が均一粒径か混合粒径かを整理しています。

## 流砂量調節
この項目では各ソルバーが上流端からの流砂共有量を調節できるかを整理しています。

## 河岸侵食
この項目では各ソルバーが河岸(斜面)の崩落を考慮できるかを整理しています。

## ソースコード公開の有無
この項目では各ソルバーのソースコード公開の有無を整理しています。
ソースコードの公開がある場合は入手先の項目でソースコードを公開している場所のリンクを示しています。
「iRICインストーラーより入手」と書いてあるソルバーに関してはインストーラーからユーザーのコンピュータにインストールした際にiRICがインストールされたフォルダのsolversフォルダにソースコードが入っています。

デフォルトの設定でインストールした場合C:\Users\ `ユーザー名`\iRIC_v4_dev\solvers\ `各ソルバーのフォルダ` となっているはずです。

# 記事を作成するうえで勉強に用いた文献

[^1]:[RIC User's manual](https://iric-gui-user-manual.readthedocs.io/ja/v4_jp/)
[^2]:[iRIC Developer's manual](https://iric-solver-dev-manual.readthedocs.io/ja/v4_jp/)
[^3]:[木村一郎,iRICによる河川シミュレーション, 森北出版, 2021.12.10.](https://www.morikita.co.jp/books/mid/049671)
[^4]:[久加朋子,ユーザーフレンドリー性の向上を目的としたiRIC HPのソルバ選択基準明確化に関する改良,一般財団法人 北海道河川財団　研究所 研究所紀要,2015,XXVI, p. 36-46.](https://www.ric.or.jp/gyoumu/laboratory/kiyou/data/H27/2015p36_46.pdf)