Day5

支持力係数の算出

Topへ

Day4へ

Day6へ

はじめに

三点支持の杭打ち機を現場で使用する場合、現場の地盤の支持力が確保できるか問題となる場合があります。
その確認の際に用いる式は、「道路橋示方書Ⅳ下部構造編」にある以下の式でした。

image

この中の赤線で示しているNa、NcおよびNγ(支持力係数と呼びます)はグラフや表から読み取る必要があり、いちいち面倒な係数たちです。
これを、計算で求めれないかというのが今回のテーマです。

Step1

恐ろしい支持力係数の算出式

支持力係数の算出式を検索していたら、駒田さんという方ら(建設省土木研究所:偏心傾斜荷重に対する極限支持力計算法)や 塩井さんという方らが導いた式が紹介されていました。
それによると支持力係数は以下のとおりとなるそうです。

image

すでにしゃれにならないレベルです。さらに・・・

image

吐き気がします。加えて・・・

image

また、このωについて以下の式を満たさないといけないそうで・・・

image

またまた、上式に対して以下の式があり・・・

image

そして、もう訳がわからないところにたたみかけるようにC=0のときは、以下の式が成り立つそうです。

image

何気ない発想で取り組もうとしたら大変なことになってしまいました。
もう挫折しそうです。

Step2

入力部分

image

今回は、あまりにも式が難しく全容がつかめていないので、画面構成を一気にできません。
なので、少しずつ形作ろうと思います。まずは、入力部分まで作成していくことにします。
「Visual Studio」を起動し、いつもどおり「Windowsフォームアプリケーション(.NET Framework)」を選択し「次へ」ボタンを押します。

image

入力データは、水平荷重、鉛直荷重、内部摩擦角、粘着力および上載荷重になりますので、それぞれのテキストボックスを作成しました。

image

このテキストボックスにお馴染みの数字しか入力できない制限をします。
各テキストボックスボックスのプロパティのイベント「KeyPress」をダブルクリックし、画像のコードを入力します。

Step3

少しずつ計算(その1)

image

一気に計算できないので、少しずつ計算を行います。
まず「計算実行」ボタンと「計算結果」ラベルを作成し、できる計算を少しずつ追加していくことにします。
最初にできそうな計算は「tanθ」つまりH/V、これはできます。
さらに、この「tanθ」からθも求めることができます。ただし、θの計算結果はC#の場合、ラジアン(rad)の単位になるそうです。
ならばと、この際、内部摩擦角もラジアンに変換しておきます。

データ取得の前に、テキストボックスに何も入力されていない場合の処理を書きます。
「計算実行」ボタンをダブルクリックし、コード入力画面にします。
そこに、画像に示すとおり、テキストボックスの「Text」が空白の場合の処理を書きます。

image

テキストボックスに入力されたデータを取得します。
画像に示すとおり、データを取得するコードを書きます。

image
image

各計算を行い、textBox6~textBox8に表示させるようにします。

Step4

少しずつ計算(その2)

image

次からは、どの式もωが関わっています。なのでどうしてもωについて検討する必要があります。
そこで、おいさん検索しまくって一つのヒントを見つけました。それが、先ほど出てきた以下の式です。

image

この式は判定誤差を表す式のようで、この誤差が小さい方良いようです。ということは、ωは「45°+φ/2」から「90°+φ」の範囲で縛られて いるので、この範囲内で誤差(少しずつ計算(その1)で計算したtanθ=H/Vとの差)が最も小さいωを見つければ良いということと判断しました。
ということで、画像のイメージでコードを書くことにしました。

image

上記の計算を達成するためには繰り返し計算が必要になります。
いままで、繰り返し計算はしたことがなかったので、ここで紹介します。
書き方は画像のとおりとなります。
この場合は、iの値は最初1で、iの値が10までは繰り返し、iの値が11になるとこのfor文から抜ける命令文になります。

image

具体的な流れは画像のとおりとなります。
2回目までの流れを書いていますが、実際は10回目まで行います。
11回目でようやくこのfor文から抜けます。なので、i=11ということにはなりません。
ということで、フォーム画面に戻ります。

image

画像のとおり、計算結果の続きに、遷移場内角αから支持力係数Nγまでの出力用のテキストボックスを作ります。

image

「計算実行」ボタンのコードの続きになります。
ここでは、まず判定誤差用の変数の初期設定をしています。繰り返し計算で小さい値がでるたびに、この変数の値を入れ替えます。
なので、初期の値は大きければ何でも良いので100にしています。
次に、すべり角ωの「始まりの角」と「終わりの角」を設定しています。

image

上の式でいうと赤線部分になります。

image

すべり角ωと遷移場内角αの変数宣言をしています。また、初期値をそれぞれ0にしています。
また、粘着力cが0でも計算できるようにごく微少な値を与えています。この考えはあっているかわかりません。

image

ここで、tanθの誤差が最も小さい時のωを見つける作業をします。
実際の流れとしては、まず、ωの角度が0.01ずつ増加した場合の、tanθの誤差を計算します。
計算方法としては、「Nc、Nq、Nc'およびNq'から求まるtanθの値」から「H/Vから求まるtanθの値」を引き誤差とします。(赤枠部分)

image

それを角度が変化するたびにその都度計算し、これまでの誤差より小さければ、それを最小と値とし取得します。(if文のところになります)
すべての繰り返しが終われば、結局、最小値が得られ、そのときの角度ωが採用値になります。

image

フォームに計算結果を表示します。何度も計算しているところが良くないですが、工夫ができていません。

image

いよいよ、「計算実行」ボタンのコードも最後です。ここではNγの計算をしています。式があまりにも長いので 最後は分割して計算しました。

image

実行してみます。無事計算結果が表示されています。後は少し見た目を改善したいと思います。

Step5

調整

image

テキストボックスの表示を右寄せにします。
テキストボックスのプロパティの「TextAlign」を「Right」にします。

image

フォームの最大化を制限します。
フォームのプロパティの「MaximizeBox」を「False」にします。

image

ソフト起動時に画面中央に表示するようにします。
フォームのプロパティの「StartPosition」を「CenterScreen」にします。

image

フォームサイズを固定します。
プロパティの「FormBorderStyle」を「FixedSingle]にします。
これでようやく完成です。式がかなりきつかった・・・