はじめに
Step1
断面の決定
それでは、Visual Studioを起動します。
「新しいプロジェクトの作成」を選択します
「Windowsフォームアプリケーション」を選択して「次へ」ボタンを押します。
プロジェクト名を入力します。
今回は「斜面の安定(簡易版)」としました。
入力後「作成」ボタンを押します。
「Form1」が表示されますので、そのデザイン画面にツールボックスの「GroupBox」と「Button」を貼り付けます。
それぞれのプロパティの「Text」の内容を「断面」と「断面の作成」にします。
今回も、断面形状の入力は別フォームで行なうようにしようと思います。
なので、新しいフォームを作成します。
ソリューションエクスプローラーの下の「斜面の安定(簡易版)」を右クリックして「追加」を選択し、[新しい項目」を選びます。
その中の「フォーム」を選びます。
名前はデフォルトの「Form2」のままにします。
新しいフォームを追加したので、「Form1」に戻り、「Form2」の設定をします。
「Form1」のデザイン画面をダブルクリックして、コード入力画面を開きます。
まず、画像のとおり、上部にフォームの変数を宣言します。
その後、ロードイベントに戻り「Form2」のインスタンスをします。
断面の作成ボタンをダブルクリックして、その中に、「f2.ShowDialog();」と入力します。
これで、Form2画面を表示(遷移)できるようになります。
「Form2」のデザイン画面に移動します。
フォームのプロパティの「Text」を「断面の作成」に変更します。
ツールボックスから「PicturBox」を選択し、フォームに貼り付けます。
プロパティの「Image」で、模式図を表示させます。
入力用のテキストボックス等を配置していきます。
レイアウトは画像のとおりにしました。
「Form1」に戻り変数を宣言します。
今欲しい変数は、断面入力用になりますが、この他、断面の各点の座標を格納する変数も欲しいので 併せて宣言することにします。
変数は、「Form2」でも使用するので「public static」を頭に付けて統一の変数とします。
変数宣言が完了したので、「Form2」のデザイン画面に戻ります。
最初は、恒例の入力制限をしていきます。
textbox1を選択し、プロパティのイベントマーク(雷マーク)を選択し、その中の「KeyPress」をダブルクリックしいます。
お馴染みのコードです。
他のテキストボックスも同様の作業をします。
全角を半角に変換できる命令文が書けるようにその準備をします。
ソリューションエクスプローラーの「参照」を右クリックします。
そうするとメニューが表示されるので「参照の追加」をクリックします。
「参照マネージャー」ダイアログが表示されますので、「アセンブリ」を選択し、 表示されるアセンブリの一覧から 「Microsoft.VisualBasic」を選択し「OK」ボタンをクリックします。
コードを書く画面に移動し一番上の方に「using Microsoft.VisualBasic;」を追加します。
デザイン画面に戻ります。
「入力完了」ボタンをダブルクリックし、コード入力画面を開きます。
「button1_Click」イベントがアクティブになっていると思います。
ここで、入力内容の取得を行います。
最初の処理は、未入力の場合になります。textbox1~textbox5のいずれかのTextが空白の場合にこのイベントを抜けるようにしています。
次に、入力された数値の取得です。全角入力されてもいいように処理しています。
最後に、取得した入力値を「Form1」で宣言した変数に格納します。
決定された地盤寸法から座標値を決定します。座標値は地盤の左端から順に格納することとします。
「Form1」に変数を追加します。
追加する変数は、断面が入力完了し決定している目印としての完了フラグになります。
今後のことも踏まえて3つ分用意しておきます。
断面が決定している目印として完了フラグを変更したいと思います。
「Form2」の「button1_Click」イベントに戻りフラグ用変数「btn1end」を「True」にするコードを追記します。
これで、ここでのイベントは完了になりますので「Form2」を閉じるコードを追記して完了になります。
断面形状が確定したので、「Form1」の画面に擁壁断面の描画を行いたいと思います。
重力式擁壁の時と同様に、画面サイズは400pxの真角にします。
余白は50pxにします。
「PicturBox」をデザイン画面に「Form1」に貼り付けます。
サイズを500px✕500pxにします。
画像を表示する「PictureBox」の背景色を黒にしたいので、フォームロードイベントに「PictureBox」のBackColorを黒にするコードを入力します。
描画用のImageオブジェクトを用意します。
今回もビットマップ画像を作成します。作成するコードは、「 Bitmap _bitmap = new Bitmap(400, 400);」 になります。
実際に描画するコードを入力していきます。
今回は「Form1」がアクティブになったときに、断面決定フラグが「true」の時に描画を行うようにします。
「Form1」デザイン画面に移動しイベント(カミナリマーク)の「Active」をダブルクリックします。
「Form1_Activated」イベントに移動しますので、ここにコードを入力していきます。
まず、描画機能が必要なのでグラフィックオブジェクトを用意します。
次に、全体を黒で塗りつぶします。これで、「Form1」がアクティブになるたびに描画をリセットできるようになります。
次に表示倍率を決定します。
計算としては、断面寸法の最大値が画面内に収まるようにします。
寸法の最大値は、画像のとおり、X方向は座標4で、Y方向は座標4になりますので、このうち長い方の寸法を採用します。
実際のコードになります。
これで、表示倍率は確定になります。
ピクチャーボックスでは開始座標(0、0)を(50,350)にします。
また、Y方向は下方向がで正となり逆方向になります。
なので、それに合わせるために座標を変換します。
コードは画像のとおりとなります。
描画のコードになります。
描画には、「.DrawLine」を使用します。
最後にピクチャーボックスに転送して完了になります。
ここまでで、実行してみます。
シンプルですが無事、描画されています。
Step2
円弧の移動範囲の決定
このステップでは円弧の移動範囲を決めていきます。
まず、「Form1」のデザイン画面に選択した「pictureBox1」上のピクセル座標を表示するようにします。
なので、「textBox」を4か所画像のとおりに貼り付けます。
ここからの処理はおいさんには高度なので、「Gemini」に聞いてみました。ここからは「Gemini」によるコードになります。
まず、選択した点の変数を宣言します。
さらに、ここで、マウスが押されているかを格納する変数と、四角を描画する用の変数も宣言するようです。
宣言する場所はいつもの「Form1」の上部になります。
次は全くわかりません。とりあえず入力します。
一部エラーが出ていますが、これはまだ定義をしていないので気にしないで進めます。
ここからは、先ほどエラーのでたイベントハンドラーの部分を定義していきます。
まず、「pictureBox1_MouseDown」から作成していきます。
最初のコードは定義部分になり、画像のとおりになります。
追加する場所は、「Form1」であればどこでも良いのですが今回は最後の位置にしています。
画像は「pictureBox1_MouseDown」の中身のコードを追加した状況になります。細かいことはわかりませんが、AIなので問題ないはずです。
次に「pictureBox1_MouseMove」のイベントのコードを追加します。どうやら四角を描く制御をしているようです。
画像は「pictureBox1_MouseUp」のイベントのコードになります。「pictureBox1_MouseMove」との違いがよくわかりません。
最後は「pictureBox1_Paint」イベントのコードになります。ペンの設定をしているようです。
不安になってきたので一度実行してみます。画像がその実行結果になります。無事赤色の矩形が描画されています。
さすがGemini。
矩形が無事に描画されたのでその矩形の座標を取得します。取得する座標は矩形の左上端と右下端とします。
取得した座標は、デザイン画面のtextBoxに表示するようにします。
その追加するコードは画像のとおりになります。
画像は座標取得後の実行画面になります。これで一連の作業が完了しましたのでこのステップは終了になります。
Step3
円弧と地盤の交点の計算
ここは、かなり複雑になりそうなので、仮の断面を設定して進めていこうと思います。
ということで仮の断面を画像のとおりとしたいと思います。
条件は
円弧の中心座標をxc=6m,yc=10m、円弧の半径r=7.9m、下地盤の長さL1=10m、下地盤の標高EL=4m、勾配N=2、
高低差H=1m、分割ピッチ2m
とします。
ということで円弧と直線の交点計算についてになります。
いろいろ調べたのですが、結局よくわかりませんでした。
意味は分からないですが、流れだけを追っていこうと思います。
まず、直線の両端の座標を(x1、y1)と(x2、y2)とすると、この2点をとおる直線の方程式は、一般的に画像にある形式で表されるようです。
係数a、b、cは、与えられた2点から次のように求められようです。
また、単位ベクトルやら直位ベクトルなるものも登場します。とりあえず画像のようになるようです。
円弧の中心座標も画像のとおりとします。
ここは全くわかりませんが、今までの変数を使用し、kとSは画像のようになるようです。
さらにわからなくなるのですが、kが分かれば垂線の式V1とV2が導き出せるようです。その式は画像のとおりになるようです。
ここまで来てやっと交点の座標が導き出せるようです。その式が画像のとおりで直線と円弧の交点は2か所あるので式は4つになります。
ということで、式の羅列をしていきましたが、結局何をすればわからないので、一つずつ具体的に進めます。 では、最初に変数宣言をしていきます。「Form1」の上部に追加します。
変数宣言の続きになります。
変数宣言が完了しましたので、交点を計算する処理を作成していきます。
この処理は、何度も使用するのでクラス化(部品化)します。
ソリューションエクスプローラーの下の「斜面の安定」のところで右クリックします。
そして、「追加」→「新しい項目」を選択します。
「クラス」を選択し、名前を入力します。
今回は「ClossCalc.cs」として、「追加」ボタンを押します。
コードが書ける画面が現れます。
ここに、計算するコードを入力していきます。
最初にメンバー変数とメンバー関数を定義します。
この中で、交点の変数「intersectionXp」と「intersectionYp」を宣言して、計算結果を格納し、
メンバー関数「OutValueXp」と「OutValueYp」で値を返す構造としました。
交点は2か所あるのでそれぞれ用意します。
メンバー関数「CalcValue」の中身を作成していきます。
まず、係数a,b,cを計算するところから始めます。なお、直線の座標、円弧の中心座標および半径は受け取る形にします。
コードは画像のとおりとなります。
次に、単位ベクトル・直位ベクトル・円弧の中心座標を処理していきます。
まず、直線長Lを求めます。
その後、単位ベクトルと直位ベクトルを求めます。
kとSの計算処理を行います
計算のコードは画像のとおりになります。
垂線V1とV2の計算になります。
ようやく交点の計算になります。
これでこのクラスの作業は完了になります。
早速このクラスを使用して具体的に計算をしていこうと思います。
計算条件はこのステップの最初に表示した画像になりますが、この条件は直線が3本あります。
なので、直線を分割してそれぞれの交点を計算していきます。
その前に、計算用のボタンを追加します。ひとまずレイアウトは気にしないで進めます。
ボタンをダブルクリックしてクリックイベントに移動します。
先ほど作成したクラスをインスタンスして、各交点を出力するコードを作成します。
今回は、確認作業になるので出力するコードを作成しません。
一つ目の交点計算をします。
まずは下の地盤部の計算を行いますが、存在しない線は破線にしています。
送るデータは画像のとおりになります。
結果は、1点目が0.86093,4で2点目が11.13907,4になり無事計算できていました。
二つ目の交点計算をします。
のり面部になりますがこちらも存在しない線は破線にしています。
送るデータは画像のとおりになります。
結果は、1点目が6.205338,2.102669で2点目が12.19466,5.097331になり無事計算できていました。
最後の交点計算をします。
盛土上面部になりますがこちらも存在しない線は破線にしています。
送るデータは画像のとおりになります。
結果は、1点目が-0.11637,5で2点目が12.11637,5になり無事計算できていました。
今の3つの計算をまとめます。すでに宣言している変数があればそれを使用しまとめることとします。
まとめた場合のコードが画像のとおりになります。
現時点で交点は6点ありますが、実際には2点しかありません。そこでその整理をする必要があります。
処理方法としては、その点が実際の線上にあるか確認し選別していく方法とします。
決定した交点を格納する変数を宣言していなかっので、先にそのコードを追加します。
うまく計算ができないので、再度変数を作成します。すみません。
その中に交点の座標を格納します。
ここのコードで、交点が線上にあるか判断します。もし線上になければその値を0にすることにします。
0ではない値が実際の交点になるので、すべての変数を確認します。
0ではない値があればその値を交点用の変数に格納します。
これでやっと交点の処理が完了になります。
Step4
土質定数等の入力
このステップでは地盤部と盛土部の土質定数等を入力するフォームを作成します。
入力項目はそれぞれ「単位体積重量」、「粘着力」、「せん断抵抗角」及び「上載荷重」になります。
デザイン画面にツールボックスの「GroupBox」と「Button」を貼り付けます。
それぞれのプロパティの「Text」の内容を「土質定数」と「土質定数の入力」にします。
新しいフォームを作成します。
ソリューションエクスプローラーの下の「斜面の安定(簡易版)」を右クリックして「追加」を選択し、[新しい項目」を選びます。
その中の「フォーム」を選びます。
名前はデフォルトの「Form3」のままにします。
新しいフォームを追加したので、「Form1」に戻り、「Form3」の設定をします。
「Form1」のデザイン画面をダブルクリックして、コード入力画面を開きます。
まず、画像のとおり、上部にフォームの変数を宣言します。
「Form1」のロードイベントに移り「Form3」のインスタンスをします。
「土質定数の入力」ボタンをダブルクリックして、その中に、「f3.ShowDialog();」と入力します。
これで、Form3画面を表示(遷移)できるようになります。
「Form3」のデザイン画面に移動します。
フォームのプロパティの「Text」を「土質定数」に変更します。
ツールボックスから「PicturBox」を選択し、フォームに貼り付けます。
プロパティの「Image」で、模式図を表示させます。
入力用のテキストボックス等を配置していきます。
レイアウトは画像のとおりにしました。
「Form1」に戻り変数を宣言します。
変数は、「Form3」でも使用するのでここでも「public static」を頭に付けて統一の変数とします。
変数は一部配列型にしました。
変数宣言が完了したので、「Form3」のデザイン画面に戻ります。
恒例の入力制限をしていきます。
textbox1を選択し、プロパティのイベントマーク(雷マーク)を選択し、その中の「KeyPress」をダブルクリックしいます。
いつものコードです。
他のテキストボックスも同様の作業をします。
コードを書く画面に移動し一番上の方に「using Microsoft.VisualBasic;」を追加します
デザイン画面に戻ります。
「登録」ボタンをダブルクリックし、コード入力画面を開きます。
「button1_Click」イベントがアクティブになっていると思います。
ここで、入力内容の取得を行います。
最初の処理は、未入力の場合になります。textbox1~textbox7のいずれかのTextが空白の場合にこのイベントを抜けるようにしています。
次に、入力された数値の取得です。全角入力されてもいいように処理しています。
最後に、取得した入力値を「Form1」で宣言した変数に格納します。
ここまででこのボタンの処理は完了になります。
「キャンセル」ボタンにもコードを入力します。
クリックイベントを作成し、フォームを閉じるコードを追加します。
以上で土質定数の作業はすべて完了になります。
Step5
準備はできた!!いよいよ計算
やっと下準備ができたので、いよいよ安定計算をしていきます。
まず、概念図を画像に示します。
この図でわかるとおり、抵抗力が滑動力より大きければすべり破壊は起きないことなります。
画像は上記の概念図を式に表したものになります。分子が抵抗力で分母が滑動力になります。
なので、Fsが1以上になればすべり破壊が起きないということになります。
今回は、間隙水圧は考慮しないものとします。
今回もステップ4で使用した仮の条件でコードを作成していこうと思います。
一気に先ほどの式の計算をしたいところですが、頭が悪いので、少しづつ計算をしていきます。
具体的には画像の表を左から順に計算していきます。
まずは左から2列目までのコードを作成していきます。
この列では分割数とそれ対応するx方向の追加距離を求めていきます。
すみません。一つ入力項目が抜けていました。
円弧を分割する幅を決めていませんでした。
画像のとおり入力するテキストを追加します。
それでは、「Form1」の「Button2」のイベントの続きにコードを追加していきます。
まずは、分割幅の値を変数に格納する処理をします。
コードは画像のとおりになります。
改めて、分割数と追加距離の計算をしていきます。
まず、分割数から作業します。分割数はX座標の0から2個目の交点のX座標までを分割するようにします。
なので、2個目の交点のX座標を分割幅に割ります。その際、「Ceiling」関数を使用して整数値に切り上げします。
また、計算量を制限したいので分割数は100個までとします。
追加距離を求めます。画像でいうと赤い矢印になります。分割片の境のX座標になります。
追加距離の値を格納する変数をxとして、値を格納していきます。
一番最後だけは、2個目の交点になるようにしています。
分割片の境界のX座標が求まりましたので、次にY座標を求めます。
画像のとおり、Y座標は赤と青の2か所の座標を求めます。
これは後に分割片の面積を求めることになるので、あらかじめ2点取得していきます。
コードになりますが、ここで変数のみ整理しておきます。すみません。
変数を追加します。面倒なのでほかの変数も追加します。
yの計算のコードになります。
y_gが地盤上の点、y_cが円弧上の点の値を格納する変数にしています。
次は分割片の高さを求めます。
これも、2種類求めますが、これは地盤部と盛土部で土質定数が異なるために分けています。
後に分割片の重量を求めるようになりますがその時に使用できるようしています。
文章だけではわかりにくいので次で図示します。
盛土部が少なくてわかりにくいですが、地盤より上か下かで分ける形になります。
高さhを求めるコードです。毎回毎回繰り返し文を使用するのはカッコ悪いですが、まとめると混乱しそうなので整理はしないです。
ここからは分解片の面積を求めていきます。
図にする必要はないと思いますが、作成しました。
分割片の面積を求めるコードになります。
分割片の面積が求まりましたので、それに単位体積重量を掛ければ求まりますが、その重量に上載荷重を追加する必要があります。
なので、まず上載荷重の処理からしていきます。
コードは画像のとおりで、盛土部分にのみ上載荷重が作用しますのでその処理をしています。
その後、土塊重量の計算をしその和を求めることにしています。
あともう少しです。ここからはαの計算をしていきます。
画像のとおりαはすべり面の傾きになりますので、三角関数の定義から求めることができます。
c#では三角関数の角度の単位はラジアンなので、印刷のことを考慮して変数「alpha」には度に変換して格納するようにしました。
やっと最後の列になります。
すみません。まだ作成していなかった変数を追加します。
「Wcosα」と「Wsinα」の合計値を格納する変数にします。
コードになります。ここは単純で助かります。
表が完成しました。
表は完成しましたが、Fsの式ではまだ求められていない変数があります。
というかあれだけやってもゴールが遠いです。
とりあえず、ここからは、C・lの計算をしていきます。
粘着力Cは既知ですが、盛土部と地盤部でCが異なる場合があります。
なので、円周長lも盛土部と地盤部に分ける必要があります。
まずは、変数を宣言します。
盛土部と地盤部の交点に近い分割片の境界点座標を求める計算になります。 交点に最も近い境界点を変数「boundaryX」と「boundaryY」に格納します。
円周長lの計算になります。計算が長くなるので計算途中の値を一時的に変数「temp_value1」と「temp_value2」 に代入し、最終的に地盤部の円周長l1と盛土部の円周長l2を求めるようにしています。
円周長の計算が終わりましたので、最後の「tanφ」の計算をします。これが終われば安全率Fsの計算ができるようになります。
変数を追加します。
円周長の計算が終わりましたので、最後の「tanφ」の計算をします。これが終われば「Wcosα×tanφ」の計算をします。
ついに来ました安全率Fsの計算になります。
変数を追加します。
予期せぬエラーに備え「try」構文を使用します。
もしエラーが出た場合は、Fsを10とし滑らないことにします。
コードは画像のとおりになります。
Step6
安全率Fsの最低値を求める
安全率Fsの計算をやってきましたが、まだ1パターンのみの計算にとどまっています。
具体的には、画像のとおり、円弧の中心座標と半径をすでに指定しております。
しかしながら、実際には半径や中心座標を変えながらFsの最低値(最もすべりやすい場所)を求める必要があります。
今の状態で円弧の移動範囲は指定しておりますので、その移動範囲内のFsを求める処理をしていきます。
まずは、円弧の中心座標を変化させる処理を行います。
変化量は計算量が膨大にならないようにする必要があります。
今回は移動範囲を10分割します。つまり10×10にしそのマスに円弧の中心が来るように変化させます。
変数を追加します。
画面上の表示倍率を求めます。
円弧の移動範囲のスタート座標とエンド座標を取得します。
取得した座標は画面上のピクセル座標ですので計算用のメートル単位の座標に変換します。
ここでは、、取得した移動範囲の幅と高さから1メッシュあたりの幅・高さの計算をしています。
この幅をもとに円弧の中心座標を変化させるよう繰り返し計算をします。
画像のコードは円弧の中心座標のみ変化させるコードであるので、この繰り返し計算の中につづきの安定計算のコードをすべて
収める必要があります。
画像は残りの安定計算コードを収めた状態になります。
円の中心の移動範囲は求まりましたので、今度は円弧の半径を変化させる処理を行います。
まずは、変数を追加します。
変数「minFs」は各節点での最小の値を格納するものとするので、初期値に10を入れておきます。
半径を変化させることにより、その節点での最小値を見つけ出し10→最小値とします。
変形の変化の範囲を決定します。
変数「minkr」から「maxkr」まで円弧の半径を変化させるようにしますが、「minkr」は基本的に1mとします。
半径を変化させる繰り返し文になります。
現段階では、半径のみの変化になりますので、この中に、つづきの構文を収める必要があります。
画像が続きの構文を収めた状態になります。
半径を変化させる繰り返し文の最後に安全率「Fs」の最小値を取得する構文を追加します。
円弧の半径が地盤に届かなかった場合エラーになるので、「try-catch」文を追加します。
画像は「try」構文のみ表示しています。
これで、Fsの最小値を求めることができていると思います。
Step7
計算結果を表示する
計算処理が完了しましたので、その結果を表示できるようにしたいです。できれば円弧の選択範囲にその結果を表示できるようしたいです。
その処理は独力では無理なので、ここでも「Gemini」さんに助けてもらいます。
ということで、まずは、pictureBox1_Paint イベントハンドラの修正を画像のとおりにするそうです。
つづきになります。
つづきになります。
新しいクラスを追加します。
変数「minFs」を「pictureBox1_Paint」イベントにも使用することになったので、変数宣言を「Form1」の上部に移動させます。
計算ボタンの最後に画像のようにコードを追加します。
「Gemini」さんからご指摘があり、画像の箇所にコードを追加します。
これで完了とのことなので実行してみます。
画像は実行結果になります。うまくできています。さすが「Gemini」!
表示結果ですが、赤くなればなるほど危険側になります。ただし、1未満でないなら安全ということになります。
なので、この画像の場合は、「安全」ということになります。
今回の場合は安全でしたが、すべり破壊が起きる場合はその安全率と円弧の描画が欲しいものです。なのでその機能を追加していきます。
まずは、デザイン画面にテキストボックスを追加し、色を黒にします。
変数を追加します。
計算イベントの最後に最小の安全率Fsを求め、その値をtextBox6に表示するようにします。
ここからは「Gemini」様にお願いしてフォローしてもらいます。
内容はわかりません。とにかく滑る場合は、その円を描画するようにします。
まずは、「pictureBox1_Paint」イベントにコードを追加します。
つづきになります。
また「Gemini」様に修正のご指摘をいただきました。
場所は半径Rの設定方法になります。いまのままだとうまく計算できないようです。
つづきになります。
実行結果です。微妙に円の中心がずれていますが、もう修正不可能なので、スルーします。
Step8
Excel出力する
ここからは、大嫌いなExel出力の作業をしていきます。
ソリューション エクスプローラーで [参照]を右クリックし、[参照の追加] を選択します。
[COM] タブを選択し、「Microsoft Excel XX.X Object Library」を探してチェックを入れ、[OK] をクリックします。
コード上部に「using Excel = Microsoft.Office.Interop.Excel;」を追加します。
「Form1」のデザイン画面に移り、Excel出力用のボタンを配置します。Nameは「btnExport」としています。
作成した「Excel出力」ボタンをダブルクリックしてコード画面を表示させます。その中にコードを追加していきます。
本当はここから新しく「ExportToExce」というメソッドを追加する必要があるのですが、Excel出力用に計算結果を保存していなかったので
ここで脱線して、その処理をしていきます。
まず、変数宣言をします。「Form1」のコード上部に追加します。
「計算実行」ボタンのクリックイベント内にコードを追加していきます。
追加する箇所は画像のとおりこのイベントの最後のほうになります。これで脱線作業は完了になります。
「ExportToExce」というメソッドを追加していきます。コードが長いので分けて表示します。
続きになります。
最後になります。これでExcel出力のコードはすべてになります。
Step9
実行ファイル化
ソリューションエクスプローラーの「Properties」をダブルクリックする。
画像のような画面が開きますので、「参照」ボタンを押してアイコンを登録します。
「Debug」を「Release」に変更します。
メニューバーの「ビルド」を選択し、「斜面の安定(簡易版)のリビルド」をクリックします。
プロジェクトのあるフォルダの奥底の「Release」に実行ファイルが作成されています。これで完成です。
Step10
操作方法
実行ファイルを開くと画像のとおりの画面が表示されます。
まず計算する断面を作成します。「断面の作成」ボタンを押します。
断面の形状をいれる画面がでますので、値を入力して入力完了を押します。
メイン画面にもどり、計算する斜面の形状が右側に表示されます。
次に円弧計算する範囲を決まます。厳密に言うと円の中心の移動範囲を決めます。半径は勝手に変化させるようにしています。
黒い画面上で指定したい範囲の左上と右下をクリックします。
そうすると画像のとおり範囲指定した箇所にメッシュが表示されます。
「土質定数の入力」をクリックします。
表示された画面に土質定数を入力して。「登録」ボタンを押します。
分割数を入れて「計算実行」ボタンを押します。
計算結果が表示されます。最小のFs(安全率)が画面右上に表示されます。今回は1を下回らなかったので安全ということになります。
また、メッシュ内にそれぞれのFsが表示されます。
さらに安全でない場合はすべり面が表示されます。(若干ずれますお許しください)
この状態で「Excel出力」ボタンを押せは計算結果が表示されます。
斜面の安定計算は学生時代に習った計算ですが、その計算は1パターンのみで、実際は何回も計算を繰り返し解を求める必要があるものでした。
なので、当時は答えを導きだせない計算をなぜ教えるのだろうと不思議で消化不良の状態でした。
ということで、そのころの思いを解消するべくこの強敵と対峙しようと思います。 今回は盛土を想定しますので、地盤と盛土部で土質が異なる条件として計算していきます。(画像の色分部でそれぞれの土質条件を設定します。)