ExcelVBAの勉強!海中部材の波力算定式と算定方法の設定で示した波力算定式と算定方法に沿って、最大波力と最大モーメントを算定します。
これまで工学系の計算に必要なExcelVBAの基礎となる項目を勉強してきましたが、もう少し本格的な計算にチャレンジします。
以下に示すプロシージャは、基本的にこれまで説明してきたコマンドやファンクションのみを用いて、最大波力と最大モーメントを算定してみたものです。場合分けや繰り返し計算が増えましたが、基本的に新しいコマンド等はありません。
また、ここに示したものよりもっと効率的な方法があるかもしれませんので、私の例をみて手を加えてみてください。
プロシージャ全体の流れ
入出力用シート作成
Excelシート上に入力データを出力欄を作成し、コマンドボタンを設定しました。黄色の欄に必要なデータを入力し、[計算を実行]ボタンを左クリックすると計算を開始し、白抜きの欄に結果が出力されます。
おおまかな計算の流れ
メインのプロシージャ部分を示します。
各モジュールで共通使用する変数は、冒頭(宣言セクション)で定義(モジュールレベル変数)しました。
大まかな計算の流れは以下のようです。
- Excelシート上に入力したデータを”Sub 入力”で読み込み、変数に入力していきます。
- 水粒子速度、加速度の計算に必要な波長を”Sub 波長計算”で計算します。
- 位相角1°をラジアンに変換し、0℃から360°まで繰り返し計算を行います。
- その繰り返し計算の中身は、”Sub 波力計算レベル”により計算に用いる部材の鉛直方向レベルを決定して、”Sub 波力計算”にて波力SFとモーメントSMを算定します。
- 計算されたSFと波力の最大値Fmaxと、SMとモーメントの最大値Mmaxを絶対値で比較して、絶対値が最大となるFmaxとMmaxを求めます。
なお、”Sub 入力”はVBAで微小振幅波の波長計算のためのプロシージャ作成と実行で示した内容に部材の入力値を付け加えたもの、また、”Sub 波長計算”はそのまま用いています。
入力値の読み込み
Sub 入力の後半部分に部材情報の読み込みを付け加えました。
波力を計算する鉛直方向レベルの設定
位相角によって、水粒子の高さが変わります。したがって、Sub 波力計算レベルにて計算する鉛直レベル(Z座標)を設定しています。計算高さZ(0,k)の決定は以下の考えに沿っています。
- 水面が部材より上 → 部材の最高レベルが計算の最上段
- 水面が部材を切る高さ → 上から何番目の部材に位置するか、水面が計算の最上段
- 部材の変化高さと計算ピッチ(入力値)で計算位置を決定
また、水粒子速度、加速度の計算高さZ(1,k)をウェーラのストレッチ理論から計算して、Z座標の計算個数をkjとして返しています。
波力とモーメントの計算
Sub 波力計算にて、与えられた位相角に対する波力とモーメントを算定します。
- まず、SFとSMのゼロクリアーをした後、一番上のZ座標(水面レベル)が上から何番目の部材位置かを探してjsに設定します。
- 速度、加速度を計算して、モリソン式にて波力を三角形の積分値として足していきます。
- モーメントは三角形の波力に三角形の重心位置までの腕の長さを掛けて求めます。
- 最上段が頂点が下を向く三角形、最下段が上を向く三角形になりますので、場合分けをして計算を行いました。
計算の実行
Excelシートのコマンドボタン[計算を実行する]を右クリックすると、計算が始まります。
計算が終わると、”計算が終了しました”というメッセージボックスが現れますので、[OK]ボタンをクリックして終了です。
Excelシートの(3)と(4)の欄に計算結果が現れます。一応、この計算ケースについては手計算でチェック済であり、正解であることを確認しています。
ま と め
ExcelVBAの勉強!海中部材の波力算定式と算定方法の設定で示した波力算定式と算定方法に沿って、最大波力と最大モーメントを算定しました。
新しいコマンド等は基本的に使用していません。複雑なコマンドや機能を用いなくても、ある程度の工学系の計算が可能ですので、いろいろ試してみてはいかがでしょうか。
少しでも役に立てたなら幸いです。
コメント