iRICの格子生成アルゴリズムNays3Dv用格子生成ツール "Grid Generator for Nays3Dv"の修正について

# はじめに
2022年10月6日にiRICに搭載されている格子生成アルゴリズムである「Nays3Dv用格子生成ツール」のバージョン1.1.22100501をベータ版として公開されているiRIC ver4.x限定でリリースしました。
本記事はこのアップデートでの修正点について紹介するものです。

なお、「Nays3Dv用格子生成ツール」の紹介記事については時間が取れたら作成し、公開予定です。

#### バージョンについて補足

本バージョンへの更新以前ではiRICのver3.xとver4.x（試験的にリリースされているもの）ではインストールできる「Nays3Dv用格子生成ツール」のバージョンが異なっていました。
本記事ではiRIC　ver3に搭載されていた「Nays3Dv用格子生成ツール」のver 1.0.1から今回搭載されたver1.1.22100501までの変更点をまとめて整理しています。

なお、現状でiRIC ver3.x用のNays3Dv用格子生成ツールver1.1.22100501の公開を行う予定はありません。
最新バージョンのNays3Dv用格子生成ツールを使用したい場合はiRIC ver4.xを使用してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/7621cd29-e3c6-c0dd-1da6-63ce4aa339f6.png)


# 変更点
主な変更点は以下になります。

ver 1.0.1 → 1.0.22082601
* [主流路部の勾配について勾配変化点を設定し上下流で異なる勾配を設定できるようになりました。](#主流路部の上下流で異なる勾配を与えられるように)
* [主流路部にの縦断形状を放物線形に設定できるようになりました。](#主流路部の縦断形状を放物線形に設定できるように)

ver 1.0.22082601 → 1.1.22100501
* [追加水路を設定する際に`上流端の追加する断面(ノード)数`を0にすると格子の形状がおかしくなるバグ(ver 1.0.1でも確認されています)を修正しました。](#上流端の追加する断面(ノード)数を0にすると格子の形状がおかしくなるバグを修正)
* [`河床形状特性`で`初期河床`を`放物線形`に設定した場合、下流端の断面中央の河床高が指定した値より低くなるのを修正しました。](#下流端断面の中央の河床高が低くなるのを修正)
* [主流路部に上下流で異なる勾配を与える設定の際に、追加水路を設定すると勾配がおかしくなるバグを修正しました。(ver 1.0.1でも確認されています)](#主流路部の上下流で異なる勾配を与えられるように)
* [主流路部に上下流で異なる勾配を与える設定の際に、上流側に水路を追加していると放物線形になる範囲がおかしくなるバグを修正しました。](#主流路部の縦断形状を放物線形に設定できるように)
* [主流路部に上下流で異なる勾配を与える設定の際でも、主流路部の縦断形状を放物線状に設定できるようにしました。](#主流路部の縦断形状を放物線形に設定できるように)
* [`初期水面形`において`水面形の擾乱の方向`を`XYの両方向`にした場合、擾乱波高が指定した値の倍になるバグを修正しました。](#河床擾乱の高さが2倍になってしまうバグを修正)

## 主流路部の上下流で異なる勾配を与えられるように
ver 1.0.1から1.0.22082601への更新では主流路部の上下流で異なる勾配を設定できるようになっていました。
これは主流路中央に追加した水路も含めた区間の上流端から指定した距離で勾配を変化させられるというものでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/9e3c330e-62de-3d96-de30-2b8487d565ee.png)

ただし、ver 1.0.22082601では上下流に追加水路を設定した場合、上下流の追加水路に勾配を設定していても反映されず全体の勾配がおかしくなるというバグがありました。
例として上記の格子の上下流に格子を5個ずつ追加し勾配を水平にした場合の縦断図を以下に示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/82095912-fa31-f60f-7bff-37412fd89ad1.png)

黒い線が実際に作成された格子の河床高の縦断図で、赤い線が想定していた河床高の縦断図になります。
このバグについて、ver 1.1.22100601では赤い線のように河床が設定されるように修正されています。

## 主流路部の縦断形状を放物線形に設定できるように
ver 1.0.1から1.0.22082601への更新では主流路部の縦断形状を放物線形に設定することも可能になっていました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/00d17102-3881-db53-399b-10b03847e65d.png)

しかし、ver 1.0.22082601時点では上の図のように、上流側追加水路が設定されていた場合、放物線形にされる範囲が主流路の上流端から1つ上の格子点から始まってしまうというバグがありました。
このバグはver 1.1.22100501へのアップデートで修正されています。

また、ver 1.0.22082601時点では主流路の勾配が一定の場合のみ放物線形に設定することができましが、ver 1.1.22100501では上下流で異なる勾配を与えている場合でも放物線形に設定することができるようにしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/fa569722-3bf8-ce06-a2d9-c5160a375871.png)

## 上流端の追加する断面数を0にすると格子の形状がおかしくなるバグを修正
ver 1.0.1およびver 1.0.22082601において、`上下流に直線水路を追加`の項目で`追加する`を選択している状態で`上流端の追加する断面(ノード)数`を0にしていると、格子点全体の座標がおかしくなり正常に格子が作成されないというバグがあり、このため下流端側のみに格子を追加するということができませんでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/b9a93276-37a0-11d7-57e7-fda8c2a5ad91.png)

そのためver 1.1.22100501においては上記バグを修正のうえ、`上下流に直線水路を追加`の項目の選択肢を`追加しない`、`追加する`、`上流側のみ追加する`、`下流側のみ追加する`の4つに増やし、追加しない側の設定項目はグレーアウトするように更新しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/2d329d77-2cdd-e361-cb41-e099cf80fe3a.png)

なお`追加する`を選択し、上流側または下流側の追加する断面数を0にしてもバグが起きないように修正したので、`上下流に直線水路を追加`の項目でわざわざ`追加しない`、`上流側のみ追加する`、`下流側のみ追加する`を選択しなくても追加したくない側の追加する断面数を0に設定すれば格子は追加されません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/f94eaa6d-1a7e-223b-9eae-197d5f9fbfdf.png)

## 下流端断面の中央の河床高が低くなるのを修正
ver 1.0.1およびver 1.0.22082601において、`河床形状特性`で`初期河床`を`放物線形`に設定した場合、下の図のように下流端の河床高(下流端断面の中央の値)が指定したものより`砂州波高または放物線の中央水深`で指定した値だけ低くなってしまう仕様だったのをver 1.1.22100501で修正しました。

修正理由としては、他の`河床形状特性`の選択肢`平坦(非砂州)`、`交互砂州`を選択した時は下流端断面中央の河床高が指定した河床高になる仕様で、`放物線形`の場合のみ低くなる仕様だったので他の仕様に合わせるためです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/5eb92ebd-54cb-311d-3484-ff15b4eb440f.png)

## 河床擾乱の高さが2倍になってしまうバグを修正
ver 1.0.1およびver 1.0.22082601において、`初期水面形`で`水面形の擾乱の方向`を`XYの両方向`にすると、y方向に指定した波高でのコサインカーブの擾乱を与え、その後x方向に再度、指定した波高でのコサインカーブの擾乱を与えるため、最終的な擾乱の波高が2倍になるというバグがありました。
以下の図は$10 \times 10$の格子で水位0、水面勾配0の条件で波高1mの擾乱をXYの両方向に与えた結果のコンター図ですが、擾乱波高が指定した1mの倍の2mになっていることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/5658e0bc-1986-bbdb-9638-6f296f7c538b.png)

ver 1.1.22100501では`水面形の擾乱の方向`でどれを選択しても擾乱波高が指定した値になるように修正しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/b0fcb729-1199-8d86-6a12-6e9e0865d060.png)

## 格子生成条件入力画面の変更
格子生成条件の入力画面について、上記の変更に伴うパラメータの追加や未翻訳部分の翻訳、デフォルト値の変更を行いました。

**計算領域(流路)形状**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/6d8a9357-78b3-b4e1-6df4-ec249f8e8898.png)

**河床形状特性**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/90dd36f7-e643-28f8-95b8-187db95835d9.png)

**格子の追加**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/99c8ad39-7d43-0ec4-c06c-29cf5f6ddb31.png)

**水路幅の変動**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/bafe46d2-88f8-467d-7612-1e6b124a7925.png)

**初期水面形**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/7109d4b4-a3c6-c738-9df6-1d2812da92dd.png)