iRICの格子生成アルゴリズム 2次元円弧形水路格子生成ツール（複断面対応版）"2d arc grid generator （Compound Channel）" について

:::note
本テキストは公開されている資料や開発者様から提供頂いたソースコードを基に@starfieldKtが作成しています。
そのため開発者様が意図していることと異なる部分がある可能性があることをご注意ください。
また、本テキストに関することを開発者様へお問い合わせ頂かないようお願い申し上げます。
:::


その他格子生成ツールについては[こちら](https://qiita.com/starfieldKt/items/fcc0d0261bdfc169696c)

# 2次元円弧形水路格子生成ツール（複断面対応版）*"2d arc grid generator （Compound Channel）"*

|項目|内容|
|:- |:- |
|名称|*2d arc grid generator (Compound Channel)*<br>2次元円弧形水路格子生成ツール（複断面対応版）|
|開発者|清水康行|
|説明|円弧形水路生成ツール．水路長は円周の角度で与え，直線の流入部と流出部を加えることが出来る．水路の縦断形は一定勾配，横断形は長方形，内岸固定砂州形，放物線形を選ぶことが出来る．本バージョンは復断面対応となっている．|

## 概要
前述の[2次元円弧形水路格子生成ツール](https://qiita.com/starfieldKt/items/ff577d99f46e20988e5d)の完全上位互換と考えて問題ない、[2次元円弧形水路格子生成ツール](https://qiita.com/starfieldKt/items/ff577d99f46e20988e5d)で作成可能な格子はこのツールですべて作成可能。
[2次元円弧形水路格子生成ツール](https://qiita.com/starfieldKt/items/ff577d99f46e20988e5d)の設定項目に加えて断面形状に複断面を設定できるほか、低水路と高水敷の粗度設定および固定床か移動床かの設定が行える。



## 格子生成条件
### 水路形状
水路形状グループの項目内容は[2次元円弧形水路格子生成ツール](https://qiita.com/starfieldKt/items/ff577d99f46e20988e5d)の項目と同じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/cab3bf57-8bf4-8234-5bc4-72d2e7faaf8d.png)






### 断面形状

:::note
本記事執筆時点（2022/6/17）では複断面を`なし`に設定した際に以下の2つのバグが確認されています。
* 複断面なしにも拘らず右岸側に高水敷が作成されてしまう。
* 本来、水路形状が`固定砂州`または`放物線`の場合複断面には対応していないはずが左右岸両端の格子点の標高に高水敷高が加算されてしまう。

~~これらについては近いうちに修正版に更新予定です。~~

**<font color="Red">2022.9.6 追記</font>**
**<font color="Red">これらのバグを修正して若干の機能追加を行ったバージョン(ver 1.0.22090201)をリリースしました。</font>**
**<font color="Red">格子生成アルゴリズムのアップデートでバグの修正版をご利用ください。</font>**
**<font color="Red">変更点の紹介記事は[こちら](https://qiita.com/starfieldKt/items/a269b2aa0cb110d25186)</font>**

本記事ではver 1.0.0のバグにのみ対処したバージョンver1.0.22080301(記事作成当時非公開)での機能を整理しています。
:::

断面形状の項目で複断面の設定を行える。
* `複断面`の項目を`あり`にすると複断面を有する水路が作成される。
* 左岸側の高水敷幅は`水路形状`グループの`水路幅`から`右岸高水敷幅`と`低水路幅`を差し引いた値となる。
* 高水敷の高さは左右岸で同値。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/0b2d09f4-e183-bdc7-35bb-c65ff7738c4b.png)

断面形状は以下のようになる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/f0035bee-db8e-1c89-e970-08dee59ccd6b.png)

なお、高水敷高さを与えられる格子点は左右岸の端部の格子点から、「`高水敷幅÷横断方向の格子点間距離(=水路幅÷横断方向格子数)`の小数点以下切り捨ての値」個までとなっている。
そのため、高水敷幅を横断方向の格子点距離で割り切れない場合は指定した高水敷幅で高水敷が作成されない場合がある。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/0d7a8413-a322-ce8b-f26d-1b45b64fd342.png)


その場合は横断方向格子数を調整するなどして調整することで対応可能。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/276dca32-24f9-04ec-a442-eb36f99935e4.png)





### 追加水路
追加水路グループの項目内容は[2次元円弧形水路格子生成ツール](https://qiita.com/starfieldKt/items/ff577d99f46e20988e5d)の項目と同じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/6ebe8961-64d9-b462-d5e1-54b65f26fb1f.png)


### 粗度と河床状態
粗度と河床状態グループでは格子に粗度係数と固定床か移動床かの属性を設定することができる。
粗度係数は低水路と高水敷の粗度に分けて設定かのうであり、固定床の設定は`すべて移動床`、`すべて固定床`、`高水敷固定`、`河岸および低水路・高水敷境界固定`から選択が可能。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/8f42f5f2-ae67-3c29-f555-d3f0b7e45f43.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/fa4420df-35a9-ae60-2f6c-a841ff153f56.png)


## 格子作成例（複断面版）

作成例はすべて水路幅10m、横断方向格子数10、右岸高水敷幅3m、低水路幅4mとした。

90°曲がる水路
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/4bb5a3db-e245-605c-a15a-1058a8d6e15b.png)

360°円形水路
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/ac5b6d5b-b941-ab39-b23a-72750d58cfe6.png)

U字型水路
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/70611f4d-9e5f-0276-aa7a-b83af904449f.png)