Day20

排水路検討

Topへ

Day19へ

はじめに

今回は今話題の「Gemini」様の力をほとんどお借りして水路の断面決定のソフト作成に挑戦します。
なので、おいさんの下手なコードではなくプロ仕様のコードをご紹介できると思います。
計算過程は、集水面積の計算→流出係数の計算と降雨確率から降雨強度を決定し排水路断面の決定を行っていきます。

Step1

流出係数の計算

image

流出係数は画像の計算式にあるとおりある集水区域内の集水流量を算出するのに必要な係数になります。
この流出係数は地表面の状態、傾斜、土質等よって異るそうです。

image

流出係数の標準値は画像の表のとおりになります。ただし、今回は、区域内に複数の地形が混在する場合を想定し、加重平均により流出係数を求めます。

image

Visual Studio を起動し、「新しいプロジェクトの作成」をクリックします。

image

「Windows フォーム アプリ (.NET Framework)」(C#)を選択して「次へ」ボタンを押します。

image

プロジェクト名に「排水路検討システム」と入力し「作成」ボタンを押します。

image

先ほど記載したとおり流出係数は、加重平均で求めます。
具体的には複数の地目(アスファルト、土など)を組み合わせて、一つの「合成流出係数 C」を導き出す計算式を作ります。
また、集水面積は画像の式のとおりで計算するようにします。

image

デザイン画面で地目入力用として「DataGridView」を貼り付けます。

image

名前を「dgvAreas」に変更します。

image

「DataGridView」の列の設定をします。画像の三角の部分をクリックします。

image

「列の追加」を押します。

image

「列の追加」のウィンドウが開きますので。そこの名前に「colType」、ヘッダーテキストに「地目の種類」を入力します。
また、型を 「DataGridViewComboBoxColumn」に変更し、追加ボタンを押します。

image

次に、名前に「colWidth」、ヘッダーテキストに「幅員(m)」を入力します。
また、型はデフォルトの「DataGridViewTextBoxColumn」のままにします。

image

次に、名前に「colLength」、ヘッダーテキストに「延長(m)」を入力します。
また、型はデフォルトの「DataGridViewTextBoxColumn」のままにします。

image

最後に、名前に「colC」、ヘッダーテキストに「流出係数」を入力します。
また、型はデフォルトの「DataGridViewTextBoxColumn」のままにします。

image

再度、「DataGridView」の列の設定をします。画像の三角の部分をクリックします。

image

「列の編集」を選択します。

image

「地目の種類」の列の「Items」プロパティの右側にある「...」ボタンを選択します。

image

エディタに各地目を追加していきます。入力が完了したら「ok」ボタンを押します。

image

「Gemini」様のご指導により「DataGridView」用のコードを追加していきます。ここでは地目が選択された場合、流出係数を出力する処理になるそうです。
コードは画像のとおりになります。さすが「Gemini」様です。コードが一味違います。

image

デザイン画面にもどり「button」ツールを貼り付けます。そのプロパティの「Name」を「btnCalculate」に変更します。

image

さらにプロパティの「Text」を「計算実行」に変更します。

image

「計算実行」ボタンをダブルクリックしてコード入力画面に移動します。
その中に「Gemini」様のコードを画像のとおりに入力します。

Step2

降雨強度と流量の計算

image

降雨強度はタルボット(Talbot)式が多く採用されているそうなのでそれを採用するそうです。
この中の流達時間 (t) の考え方は以下の2つの合計の値だそうです。
・流入時間: 雨が降ってから側溝に入るまでの時間(通常、道路排水では 5分〜10分 の固定値)。
・流下時間: 側溝に入ってから計算地点まで流れる時間。
今回は、「流達時間 t = 10分」を固定値として採用するロジックとするそうです。

image

次に残りの定数a,bを決める必要がありますが、これは道路分類で変わるのと、地域によっても変わるそうです。
今回はひとまず仮に値を設定するようにします。(後で変更ができるようにします。)

image

ツールボックスから「combobox」と「textbox」と「goupbox」を貼り付け画像のとおりのデザインにします。

image

comboboxのNameを「cmbProbPeriod」に変更します。

image

textboxのNameをそれぞれ「txtConstantA」と「txtConstantB」に変更します。

image

確率年の考え方の表を表示できるようにしたいので、あらたなFormを作成します。
排水路検討システムを右クリックして、追加→フォームを選択します。

image

名前はデフォルトのままで追加ボタンを押します。

image

pictureboxとbuttonを貼り付けます。

image

pictureboxのimageプロパティに画像のにある表を選択し表示させるようにします。
また、buttonのtextプロパティには「閉じる」と入力します。

image

buttonにコードを入力します。単純に閉じるためのコードです。buttonをダブルクリックして画像のコードを入力します。

image

Form1.csに戻り、作成したForm2を表示できるようにします。コード画面の上部に画像のコードを追加します。

image

デザイン画面に移り「確率年の選択」ラベルをダブルクリックして、画像のコードを追加します。
これでForm2の表示機能は実装されました。

image

ここからは「Gemini」様の出番です。コードを順次追加していきます。
まずは、InitializeComponent();にコードを追加します。エラーがでますが大丈夫のようです。

image

画像のとおりコードを追加します。相変わらずエラーがでます。

image

さらにコードの追加です。これでエラーが消えます。

image

デザイン画面に戻りcomboboxの▶のボタンを押します。

image

「項目の編集」を選択します。

image

エディタが開きますので、3、5、10年と入力しOKボタン押します。

image

「計算実行ボタン」に画像のとおりのコードを追加します。ここまでで流量が計算できるようになっているとのことです。

image

ちなみに流出量を算出する計算式は画像のとおりです。コードと比較すればコードの内容がわかるかのしれません。

Step3

側溝の通水能力の検討

image

いよいよ最終段階である「水理計算(マニング公式による通水能力判定)」に進むそうです。
これまでは「流れてくる水の量(Q)」を計算しましたが、ここからは「選んだ側溝がその水を流しきれるか」をチェックする機能を実装するそうです。

image

ということで、最初はデザイン画面です。デザインは画像のとおりになります。またNameも画像表示にある名前に変更します。
また、計算は余裕高を見込むそうです。(水面からフタまでの空き。)設計では通常、断面の80%までしか水が来ない状態で計算するそうです。(余裕2割)

image

「計算実行」ボタンに画像のコードを追加します。これであっさりとこのステップは完了になります。

Step4

レポート出力

image

計算結果をレポートとして保存する機能を追加します。ボタンを一つ追加し、Nameを「btnExport」に変更します。

image

「レポート保存」ボタンをダブルクリックして、その中に画像のコードを追加します。
これですべてのコード入力は完了です。「Gemini」様の力をお借りすればたやすくソフトが完成してしまいました。

Step5

EXE化

image

ここからは最後の実行ファイル(EXEファイル)を作成する作業にすすみます。ソリューションエクスプローラーの「properties」をダブルクリックします。

image

「参照」ボタンを押します。

image

アイコンを選択します。

image

「Debug」を「Release」に変更します。

image

メニューバーの「ビルド」を選択し、その中の「排水路検討システムのリビルド」をクリックします。

image

リビルドが完了したら画像のパスの箇所にファイルができています。これですべての作業が完了になります。お疲れさまでした。