はじめに
Step1
恐ろしい支持力係数の算出式
支持力係数の算出式を検索していたら、駒田さんという方ら(建設省土木研究所:偏心傾斜荷重に対する極限支持力計算法)や
塩井さんという方らが導いた式が紹介されていました。
それによると支持力係数は以下のとおりとなるそうです。
すでにしゃれにならないレベルです。さらに・・・
吐き気がします。加えて・・・
また、このωについて以下の式を満たさないといけないそうで・・・
またまた、上式に対して以下の式があり・・・
そして、もう訳がわからないところにたたみかけるようにC=0のときは、以下の式が成り立つそうです。
何気ない発想で取り組もうとしたら大変なことになってしまいました。
もう挫折しそうです。
Step2
入力部分
今回は、あまりにも式が難しく全容がつかめていないので、画面構成を一気にできません。
なので、少しずつ形作ろうと思います。まずは、入力部分まで作成していくことにします。
「Visual Studio」を起動し、いつもどおり「Windowsフォームアプリケーション(.NET Framework)」を選択し「次へ」ボタンを押します。
入力データは、水平荷重、鉛直荷重、内部摩擦角、粘着力および上載荷重になりますので、それぞれのテキストボックスを作成しました。
このテキストボックスにお馴染みの数字しか入力できない制限をします。
各テキストボックスボックスのプロパティのイベント「KeyPress」をダブルクリックし、画像のコードを入力します。
Step3
少しずつ計算(その1)
一気に計算できないので、少しずつ計算を行います。
まず「計算実行」ボタンと「計算結果」ラベルを作成し、できる計算を少しずつ追加していくことにします。
最初にできそうな計算は「tanθ」つまりH/V、これはできます。
さらに、この「tanθ」からθも求めることができます。ただし、θの計算結果はC#の場合、ラジアン(rad)の単位になるそうです。
ならばと、この際、内部摩擦角もラジアンに変換しておきます。
データ取得の前に、テキストボックスに何も入力されていない場合の処理を書きます。
「計算実行」ボタンをダブルクリックし、コード入力画面にします。
そこに、画像に示すとおり、テキストボックスの「Text」が空白の場合の処理を書きます。
テキストボックスに入力されたデータを取得します。
画像に示すとおり、データを取得するコードを書きます。
各計算を行い、textBox6~textBox8に表示させるようにします。
Step4
少しずつ計算(その2)
次からは、どの式もωが関わっています。なのでどうしてもωについて検討する必要があります。
そこで、おいさん検索しまくって一つのヒントを見つけました。それが、先ほど出てきた以下の式です。
この式は判定誤差を表す式のようで、この誤差が小さい方良いようです。ということは、ωは「45°+φ/2」から「90°+φ」の範囲で縛られて
いるので、この範囲内で誤差(少しずつ計算(その1)で計算したtanθ=H/Vとの差)が最も小さいωを見つければ良いということと判断しました。
ということで、画像のイメージでコードを書くことにしました。
上記の計算を達成するためには繰り返し計算が必要になります。
いままで、繰り返し計算はしたことがなかったので、ここで紹介します。
書き方は画像のとおりとなります。
この場合は、iの値は最初1で、iの値が10までは繰り返し、iの値が11になるとこのfor文から抜ける命令文になります。
具体的な流れは画像のとおりとなります。
2回目までの流れを書いていますが、実際は10回目まで行います。
11回目でようやくこのfor文から抜けます。なので、i=11ということにはなりません。
ということで、フォーム画面に戻ります。
画像のとおり、計算結果の続きに、遷移場内角αから支持力係数Nγまでの出力用のテキストボックスを作ります。
「計算実行」ボタンのコードの続きになります。
ここでは、まず判定誤差用の変数の初期設定をしています。繰り返し計算で小さい値がでるたびに、この変数の値を入れ替えます。
なので、初期の値は大きければ何でも良いので100にしています。
次に、すべり角ωの「始まりの角」と「終わりの角」を設定しています。
上の式でいうと赤線部分になります。
すべり角ωと遷移場内角αの変数宣言をしています。また、初期値をそれぞれ0にしています。
また、粘着力cが0でも計算できるようにごく微少な値を与えています。この考えはあっているかわかりません。
ここで、tanθの誤差が最も小さい時のωを見つける作業をします。
実際の流れとしては、まず、ωの角度が0.01ずつ増加した場合の、tanθの誤差を計算します。
計算方法としては、「Nc、Nq、Nc'およびNq'から求まるtanθの値」から「H/Vから求まるtanθの値」を引き誤差とします。(赤枠部分)
それを角度が変化するたびにその都度計算し、これまでの誤差より小さければ、それを最小と値とし取得します。(if文のところになります)
すべての繰り返しが終われば、結局、最小値が得られ、そのときの角度ωが採用値になります。
フォームに計算結果を表示します。何度も計算しているところが良くないですが、工夫ができていません。
いよいよ、「計算実行」ボタンのコードも最後です。ここではNγの計算をしています。式があまりにも長いので 最後は分割して計算しました。
実行してみます。無事計算結果が表示されています。後は少し見た目を改善したいと思います。
Step5
調整
テキストボックスの表示を右寄せにします。
テキストボックスのプロパティの「TextAlign」を「Right」にします。
フォームの最大化を制限します。
フォームのプロパティの「MaximizeBox」を「False」にします。
ソフト起動時に画面中央に表示するようにします。
フォームのプロパティの「StartPosition」を「CenterScreen」にします。
フォームサイズを固定します。
プロパティの「FormBorderStyle」を「FixedSingle]にします。
これでようやく完成です。式がかなりきつかった・・・
三点支持の杭打ち機を現場で使用する場合、現場の地盤の支持力が確保できるか問題となる場合があります。
その確認の際に用いる式は、「道路橋示方書Ⅳ下部構造編」にある以下の式でした。
この中の赤線で示しているNa、NcおよびNγ(支持力係数と呼びます)はグラフや表から読み取る必要があり、いちいち面倒な係数たちです。
これを、計算で求めれないかというのが今回のテーマです。