01:多重円筒理論による圧力水路トンネルの設計(1)
概要(プログラム:vbCPT, vcsCPT, gccCPT)
- Otto・Frey-Baer の方法として知られる多重円筒理論による鉄筋コンクリート製円形圧力水路トンネルの応力・変位算定方法.極座標表示による応力の釣り合い方程式を解いています.
- 理論式誘導における考え方は以下の通り.
- (1) 岩盤は無限の範囲を有する完全弾性体とする.
- (2) 鉄筋は鉄筋量(kg/m^3)が等しい等価板厚を有する鉄管に置き換え,薄肉円筒として扱う.
- (3) コンクリートはひび割れ無しと有り(周方向引張応力を負担しない)の場合を考慮する.
- (4) 応力状態は平面応力・平面ひずみ双方を考慮する.
- 設計理論および入出力書式については円形圧力トンネルの設計理論解説(pdf)を参照してください.
使用コントロール
ToolStrip1(Button1),OpenFileDialog1,SaveFileDialog1
プログラムリスト
入出力事例
02:多重円筒理論による圧力水路トンネルの設計(2)
概要(プログラム:vbCPTT, gccCPTT)
- 多重円筒理論による鉄筋コンクリート製円形圧力水路トンネルの応力・変位算定方法.極座標表示による応力の釣り合い方程式を解いています.覆工内均一ではありますが,Timoshenko and Goodier ''Theori of Elasticity'' に基づき,温度応力を厳密に扱っています.
- 温度応力を扱えること,鉄筋のかぶりを考慮していることから,「多重円筒理論による圧力水路トンネルの設計(1)」より設計理論としては少し高度だと思います.
- 理論式誘導における考え方は以下の通り.
- (1) 岩盤は有限境界を持つ完全弾性体とし,外縁での変位は0として大きな領域を入力する.
- (2) 鉄筋は鉄筋量(kg/m^3)が等しい等価板厚を有する鉄管に置き換え,円筒として扱う.薄肉の仮定は用いない.
- (3) コンクリートは内圧が作用する場合はひび割れ発生を前提に周方向no-tension材料(周方向引張応力を負担しない)とし,外圧が作用する場合は完全弾性体として扱う.
- (4) 応力状態は平面ひずみとする.
- (5) 覆工内均一の温度変化を考慮できる.岩盤内の温度分布は考慮できない.
- (6) コンクリートはかぶりを考慮してモデル化している.ただし簡単のため,内側鉄筋と外側鉄筋のかぶりは同一としている.
- 温度分布は理論上厳密に扱えますが,入力を簡略化するため覆工内の均一温度変化のみを扱えるようにしました.鉄筋の応力のみであればそこそこの精度はでると思います(FEM解析で確認済み).
- 設計理論および入出力書式については解説(pdf)を参照してください.
- 多重円筒理論による計算式導出に先立ちFEMによる圧力水路の挙動予測を行っています.その結果,コンソリデーショングラウチングによるプレストレスを考慮しない限り無筋コンクリート断面を選択することはほとんど不可能なことが解りましたので,鉄筋コンクリート断面のみを対象にしています.しかし鉄筋なしの場合の式導出も解説pdfを参照すれば問題なく導くことができると思います.
使用コントロール
ToolStrip1(Button1),OpenFileDialog1,SaveFileDialog1
プログラムリスト
入出力事例
03:制水口型調圧水槽概略水理設計
概要(プログラム:vbSCVFsurge, vcsSCVFsurge, gccSCVFsurge)
- 制水口型調圧水槽の概略水理設計を行い,gnuplot で図化します.
- gnuplot では eps ファイルを作成し,ImageMagick で png 画像を作成します.
- 出力図は,水面振動の安定条件に関する図(制水口径と水槽径の関係図),および制水口径と水槽径別の最高上昇水位を示す図です.
- 設計理論は,入出力事例の pdf を参照してください.なお pdf 文書の図は,eps を使っています.(綺麗です)
使用サブルーチン
サブルーチン一覧 |
Sub・関数名 | 使用 | 機能 |
main_part (C : main) | VB・C#・C | 制御部 |
INP_DAT | VB・C#・C | データ入力 |
CAL_SC | VB・C#・C | 安定条件プロット用計算 |
CAL_VF | VB・C#・C | 最高上昇水位プロット用計算 |
CAL_ZM (function) | VB・C#・C | 最高上昇水位計算 (Newton-Raphson 法) |
PLOT_SC | VB・C#・C | 安定条件作図用 gnuplot コマンド記述ファイル書き出し |
PLOT_VF | VB・C#・C | 最高上昇水位作図用 gnuplot コマンド記述ファイル書き出し |
GPL | VB・C# | gnuplot 起動+ eps ファイル作成 |
BBOX | VB・C# | gnuplot が作成した eps ファイルの BoundingBox 修正 |
IMCVT | VB・C# | ImageMagick:convert で eps を 透過 png 画像に変換 |
IMCMP | VB・C# | ImageMagick:convert で白背景と透過 png 画像を合成 |
VIEWPNG | VB・C# | png 画像の画面表示 |
VB および C# プログラム
VB および C# での,入力データファイルは,以下の通りです.
4
inp_KN1H_Input.csv,fig_eps_KN1H_Input_SC.eps,fig_eps_KN1H_Input_VF.eps,80,50,370,302
inp_KN1H_Load.csv ,fig_eps_KN1H_Load_SC.eps ,fig_eps_KN1H_Load_VF.eps ,80,50,370,302
inp_KN1T_Input.csv,fig_eps_KN1T_Input_SC.eps,fig_eps_KN1T_Input_VF.eps,80,50,370,302
inp_KN1T_Load.csv ,fig_eps_KN1T_Load_SC.eps ,fig_eps_KN1T_Load_VF.eps ,80,50,370,302
|
1行目は,作図するケース数,2行目以降は各ケースの入力データファイル名,図面出力 eps ファイル名と eps ファイル BoundingBox の補正値です.
入力ファイルの内容は以下の通り.(file:inp_KN1H_Load.csv)
1行目はケース名,2行目は3行目の内容を示すダミー行,3行目がデータ数値です.
KN No.1 Headrace ST (Load interception)
Hg,Q0,L,d0,c,Cd,zm,xc,yc
713,340,2553.370,8.2,0.179,0.9,35,4.6,17
|
入力データ数値記載例 |
Hg | 総落差 (m) |
Q0 | 最大使用水量 (m3/s) |
L | 圧力トンネル長 (m) |
d0 | 圧力トンネル内径 (m) |
c | 損失水頭係数(全損失水頭=c*v^2 : v は圧力トンネル流速) |
Cd | 制水口流量係数 |
zm | 最高上昇水位目標値 (m) --- これ以下にしたい目標値 |
xc | 選定制水口径 (m) --- 最初は適当な正数を入力 |
yc | 選定水槽径 (m) --- 最初は適当な正数を入力 |
C プログラム
C では,下に示すバッチファイルで gnuplot と ImageMagick を実行しています.
ImageMagic の コマンド identify は作成した png 画像の情報を表示させています.
gcc -o gccSCVFsurge.exe gccSCVFsurge.c
gcc -o gccBBOX.exe gccBBOX.c
rem
rem gnuplot実行含む
gccSCVFsurge inp_KN1H_Load.csv fig_eps_KN1H_Load_SC.eps fig_eps_KN1H_Load_VF.eps
gccSCVFsurge inp_KN1T_Load.csv fig_eps_KN1T_Load_SC.eps fig_eps_KN1T_Load_VF.eps
gccSCVFsurge inp_KN1H_Input.csv fig_eps_KN1H_Input_SC.eps fig_eps_KN1H_Input_VF.eps
gccSCVFsurge inp_KN1T_Input.csv fig_eps_KN1T_Input_SC.eps fig_eps_KN1T_Input_VF.eps
rem
gccBBOX fig_eps_KN1H_Load_SC.eps fig_eps_z_KN1H_Load_SC.eps 80 50 370 302
gccBBOX fig_eps_KN1T_Load_SC.eps fig_eps_z_KN1T_Load_SC.eps 80 50 370 302
gccBBOX fig_eps_KN1H_Load_VF.eps fig_eps_z_KN1H_Load_VF.eps 80 50 370 302
gccBBOX fig_eps_KN1T_Load_VF.eps fig_eps_z_KN1T_Load_VF.eps 80 50 370 302
gccBBOX fig_eps_KN1H_Input_SC.eps fig_eps_z_KN1H_Input_SC.eps 80 50 370 302
gccBBOX fig_eps_KN1T_Input_SC.eps fig_eps_z_KN1T_Input_SC.eps 80 50 370 302
gccBBOX fig_eps_KN1H_Input_VF.eps fig_eps_z_KN1H_Input_VF.eps 80 50 370 302
gccBBOX fig_eps_KN1T_Input_VF.eps fig_eps_z_KN1T_Input_VF.eps 80 50 370 302
rem
convert -density 300 fig_eps_z_KN1H_Load_SC.eps fig_png_z_KN1H_Load_SC.png
convert -density 300 fig_eps_z_KN1T_Load_SC.eps fig_png_z_KN1T_Load_SC.png
convert -density 300 fig_eps_z_KN1H_Load_VF.eps fig_png_z_KN1H_Load_VF.png
convert -density 300 fig_eps_z_KN1T_Load_VF.eps fig_png_z_KN1T_Load_VF.png
convert -density 300 fig_eps_z_KN1H_Input_SC.eps fig_png_z_KN1H_Input_SC.png
convert -density 300 fig_eps_z_KN1T_Input_SC.eps fig_png_z_KN1T_Input_SC.png
convert -density 300 fig_eps_z_KN1H_Input_VF.eps fig_png_z_KN1H_Input_VF.png
convert -density 300 fig_eps_z_KN1T_Input_VF.eps fig_png_z_KN1T_Input_VF.png
rem
identify fig_png_z_KN1H_Load_SC.png
rem
convert -size 1208x1050 xc:"#FFFFFF" base.png
convert base.png fig_png_z_KN1H_Load_SC.png -composite fig_png_zw_KN1H_Load_SC.png
convert base.png fig_png_z_KN1T_Load_SC.png -composite fig_png_zw_KN1T_Load_SC.png
convert base.png fig_png_z_KN1H_Load_VF.png -composite fig_png_zw_KN1H_Load_VF.png
convert base.png fig_png_z_KN1T_Load_VF.png -composite fig_png_zw_KN1T_Load_VF.png
convert base.png fig_png_z_KN1H_Input_SC.png -composite fig_png_zw_KN1H_Input_SC.png
convert base.png fig_png_z_KN1T_Input_SC.png -composite fig_png_zw_KN1T_Input_SC.png
convert base.png fig_png_z_KN1H_Input_VF.png -composite fig_png_zw_KN1H_Input_VF.png
convert base.png fig_png_z_KN1T_Input_VF.png -composite fig_png_zw_KN1T_Input_VF.png
|
gccBBOX.c のソースコードはこちらです.
使用コントロール
ToolStrip1(Button1),OpenFileDialog1,SaveFiledialog1,StatusStrip1(ToolStripStatusLabel1),PictureBox1
プログラムリスト
入出力事例
04:制水口型調圧水槽サージング計算
概要(プログラム:vbSURGE, vcsSURGE, gccSURGE)
- 制水口型調圧水槽のサージング計算を行い,gnuplot で図化します.
- gnuplot では eps ファイルを作成し,ImageMagick で png 画像を作成します.
- 出力図は,水面振動の時刻歴です.
- 計算理論は,前項「制水口型調圧水槽概略水理設計」の pdf を参照してください.
使用サブルーチン
サブルーチン一覧 |
Sub・関数名 | 使用 | 機能 |
main_part (C : main) | VB・C#・C | 制御部 |
DINP | VB・C#・C | データ入力 |
PRE | VB・C#・C | 計算前処理 |
CALC (Function) | VB・C#・C | 数値積分制御 (正常終了は 0,USWL の NG は 1,DSWL の NG は 2 を返す) |
WOUT | VB・C# | VB・C# 計算結果出力 |
WOUT1 | C | C 入力条件出力 |
WOUT2 | C | C 計算結果出力 |
RUNGE | VB・C#・C | 数値積分 (Runge-Kutta 法) |
FZ (function) | VB・C#・C | 連続方程式 (水位増分計算) |
FK (function) | VB・C#・C | 制水口抵抗値計算 |
FV (function) | VB・C#・C | 運動方程式 (速度増分計算) |
QNCAL (function) | VB・C#・C | 流量計算 |
WLSARCH | VB・C# | 最高上昇水位・最低下降水位検索 |
GPLOT | VB・C# | 作図用コマンド記述ファイル作成 |
GPL | VB・C# | gnuplot 起動+ eps ファイル作成 |
BBOX | VB・C# | gnuplot が作成した eps ファイルの BoundingBox 修正 |
IMCVT | VB・C# | ImageMagick:convert で eps を 透過 png 画像に変換 |
IMCMP | VB・C# | ImageMagick:convert で白背景と透過 png 画像を合成 |
VIEWPNG | VB・C# | png 画像の画面表示 |
VB および C# プログラム
VB および C# での,入力データファイルは,以下の通りです.(file : filelist.txt)
3
inp_TEST_Ta.csv,out_TEST_Ta.csv,fig_eps_TEST_Ta.eps, 50, 60, 410, 290
inp_TEST_Tb.csv,out_TEST_Tb.csv,fig_eps_TEST_Tb.eps, 50, 60, 410, 290
inp_TEST_Tc.csv,out_TEST_Tc.csv,fig_eps_TEST_Tc.eps, 50, 60, 410, 290
|
1行目は,作図するケース数,2行目以降は各ケースの入力データファイル名,結果数値出力ファイル,図面出力 eps ファイル名と eps ファイル BoundingBox の補正値です.
入力ファイルの内容は以下の通り.(file:inp_TEST_Ta.csv)
Test case Ta (Load interception: 4 units) //: Title
1,70.0,210.0 //: ICT,AFCA,AFCT
600.0,0.001,0.1 //: TMAX,dt,DTWR
17.349,0.9,0.9 //: PAA,PCI,PCO
518.000,3333.080,52.810,0.233 //: RWL,TNL,TNA,TNC
3 //: NST
570.000,566.000,Top of Surge tank //: SAA[1],SEL[1],SLB[1]
570.000,555.000,Bottom of Chamber //: SAA[2],SEL[2],SLB[2]
78.540 ,434.200,Bottim of Surge tank //: SAA[3],SEL[3],SLB[3]
3 //: NQT
-280, 0 //: QTQ[1],QTI[1]
0 , 8 //: QTQ[2],QTI[2]
0 , 9999 //: QTQ[3],QTI[3]
|
入力データ数値記載例 |
Title | 計算ケースタイトル |
ICT | 計算ケース設定(1:通常,2:AFC) |
AFCA | AFC片側振幅流量(m3/s) |
AFCT | AFC周期(s) |
TMAX | 計算打切時間(s) |
dt | 計算時間間隔(s) |
DTWR | 打出時間間隔(s) |
PAA | 制水口断面積(m2) |
PCI | 制水口流入時流量係数 |
PCO | 制水口流出時流量係数 |
RWL | 貯水池水位標高(EL.m) |
TNL | トンネル延長(m) |
TNA | トンネル断面積(m2) |
TNC | トンネル損失水頭係数 |
NST | 水槽入力断面数 |
SAA[i] | 水槽断面積(m2) |
SEL[i] | 水槽指定断面下端標高(EL.m) |
SLB[i] | 水槽断面ラベル |
NQT | 流量設定点数 |
QTQ[i] | 入力点流量(m3/s) |
QTI[i] | 入力点時刻(s) |
C プログラム
C では,下に示すバッチファイルで gnuplot と ImageMagick を実行しています.
ImageMagic の コマンド identify は作成した png 画像の情報を表示させています.
gnuplot を起動し eps ファイルを作成する C プログラム gccFIG_SURGE.c は,ソースを入出力事例の最初に入れておきました.
サージング計算実行プログラム
gccSURGE inp_TEST_Ta.csv out_TEST_Ta.csv
|
入力データ数値記載例 |
gccSURGE | サージング計算実行 exe ファイル名 |
inp_TEST_Ta.csv | 入力データ格納 csv ファイル名 |
out_TEST_Ta.csv | 計算結果出力 csv ファイル名 |
gnuplot による作図実行プログラム
gccFIG_SURGE out_TEST_Ta.csv fig_eps_TEST_Ta.eps
|
入力データ数値記載例 |
gccFIG_SURGE | gnuplot による作図実行 exe ファイル名 |
out_TEST_Ta.csv | 入力データ格納 csv ファイル名(数値出力結果) |
fig_eps_TEST_Ta.eps | gnuplot の出力 eps ファイル名 |
eps ファイルの BoundingBox 修正実行プログラム
gccBBOX fig_eps_TEST_Ta.eps fig_eps_z_TEST_Ta.eps 50 60 410 290
|
入力データ数値記載例 |
gccBBOX | eps ファイルの BoundingBox 値修正実行 exe ファイル名 |
fig_eps_TEST_Ta.eps | gnuplot が出力した eps ファイル |
fig_eps_z_TEST_Ta.eps | BoundingBox 値修正後の eps ファイル名 |
50 60 410 290 | 修正後の BoundingBox の数値 |
gccBBOX.c のソースコードはこちらです.
一括処理バッチファイル
gcc -o gccSURGE.exe gccSURGE.c
gcc -o gccFIG_SURGE.exe gccFIG_SURGE.c
gcc -o gccBBOX.exe gccBBOX.c
rem
gccSURGE inp_TEST_Ta.csv out_TEST_Ta.csv
gccSURGE inp_TEST_Tb.csv out_TEST_Tb.csv
gccSURGE inp_TEST_Tc.csv out_TEST_Tc.csv
rem
gccFIG_SURGE out_TEST_Ta.csv fig_eps_TEST_Ta.eps
gccFIG_SURGE out_TEST_Tb.csv fig_eps_TEST_Tb.eps
gccFIG_SURGE out_TEST_Tc.csv fig_eps_TEST_Tc.eps
rem
gccBBOX fig_eps_TEST_Ta.eps fig_eps_z_TEST_Ta.eps 50 60 410 290
gccBBOX fig_eps_TEST_Tb.eps fig_eps_z_TEST_Tb.eps 50 60 410 290
gccBBOX fig_eps_TEST_Tc.eps fig_eps_z_TEST_Tc.eps 50 60 410 290
rem
convert -density 300 fig_eps_z_TEST_Ta.eps fig_png_z_TEST_Ta.png
convert -density 300 fig_eps_z_TEST_Tb.eps fig_png_z_TEST_Tb.png
convert -density 300 fig_eps_z_TEST_Tc.eps fig_png_z_TEST_Tc.png
rem
identify fig_png_z_TEST_Ha.png
rem
convert -size 1500x958 xc:"#FFFFFF" base.png
convert base.png fig_png_z_TEST_Ta.png -composite fig_png_zw_TEST_Ta.png
convert base.png fig_png_z_TEST_Tb.png -composite fig_png_zw_TEST_Tb.png
convert base.png fig_png_z_TEST_Tc.png -composite fig_png_zw_TEST_Tc.png
|
使用コントロール
ToolStrip1(Button1),OpenFileDialog1,StatusStrip1(ToolStripStatusLabel1),PictureBox1
プログラムリスト
入出力事例
05:円形水槽に作用する地震時動水圧
概要(プログラム:vbHDPsurge, vcsHDPsurge, gccHDPsurge)
- 円形水槽に作用する地震時動水圧を,以下の3種類の式で計算するプログラムです.
- (1) 速度ポテンシャル法に基づく簡略式
- (2) Housner の近似式
- (3) Westergaard の近似式
- 結果出力中のデータ並びは以下の通り.なお結果出力ファイル 1 行目先頭には,gnuplot で読み込むため「#」をつけています.
記号 | 内容 |
z | 水深(水槽底部を原点とした水面までの距離) |
pp | 動水圧(速度ポテンシャル法に基づく簡略式) |
ph | 動水圧(Housner の近似式) |
pw | 動水圧(Westergaard の近似式) |
- 計算式の詳細ついては「円形水槽に作用する地震時動水圧」(pdf)を参照してください.
- 「速度ポテンシャル法に基づく簡略式」では,ガンマ関数の計算が必要になります.
- ガンマ関数の計算には,Robert H. Windschitl (2002年) による近似式を用いています(Google の「Stirling (スターリング) の近似」でヒットします).
- 計算結果は,gnuplot により図化しましたので,入出力事例に gnuplot のコマンド記述ファイルを載せてあります.
使用コントロール
ToolStrip1(Button1),FolderBrowserDialog1
プログラムリスト
入出力事例
06:地震加速度応答スペクトル計算
概要(プログラム:vbEQSP, vcsEQSP, gccEQSP)
- 処理の流れは,以下の通りです.
- (1) 加速度時刻歴データ読み込み
- (2) 基線補正用数値積分
- (3) 基線補正
- (4) 応答スペクトル計算
- (5) 計算結果数値データ出力
- (6) 画像出力
- 出力ファイルの数値データは計算値そのまま(周期と加速度は対数処理はしていない)です.
- 別途エクセルなどで読み込んでの図化も行えます.
- 入力データファイルと数値データ出力ファイルは OpenFileDialog および SaveFileDialog で指定しますが加速度応答スペクトル図は数値データ出力ファイルの後ろに "-fig.png" を加えたファイル名の png 形式で出力しています.
- プログラムはフローの制御部と以下のサブルーチンから構成されています.
- IACC:数値積分
- CRAC:基線補正
- ERES:応答スペクトル計算
- PLOT:作図用ルーチン(両対数軸)
- INC_STR:軸名描画ルーチン(文字を回転させる)
- DRL_XJIKU:対数横軸数値描画ルーチン
- DRL_YJIKU:対数縦軸数値描画ルーチン
- ここで用いているサブルーチンのうち IACC,CRAC,ERES は大崎順彦先生の著書「新・地震動のスペクトル解析入門」に掲載の FORTRAN ソースを VB および C# で Call できる形で書き直しています.
- 入力データファイル(csv形式)の書式は高速フーリエ変換プログラムと同一で以下の通り.
01 | EL-Centro
02 | dt,0.010000
03 | ndata,800
04 | 0.000000
05 | -0.647000
06 | -3.017000
07 | ・・・
|
- 01行:コメント
- 02行:サンプリングピッチ(秒).ここで文字列 dt はダミー
- 03行:時刻歴データ数.ここで文字列 ndata はダミー
- 04行:以降加速度値が ndata 個1列で続く
- 作図軸は両対数とし以下の通り設定しています.
軸名 | 対数軸 |
横軸:周期 | 0.01〜10秒 |
縦軸:応答加速度 | 1〜10000gal |
- 応答スペクトルは周期を nt=200 分割しそれぞれの応答値を算出しています.
- 応答値は加速度・速度・変位を全て計算していますが,ここでの出力は応答加速度としています.
- 計算上の減衰定数は h = 0.05 に設定しています.
- 対数軸の最小周期は有限フーリエ近似できる最小周期であるサンプリングピッチの2倍としています.
- 数値データ出力ファイル書式は以下の通りです.
01 | EL-Centro
02 | ndata,200
03 | period(sec),acc(gal),vel(kine),dis(cm)
04 | 0.02000,321.005,0.220,0.003
05 | 0.02063,320.271,0.225,0.003
06 | 0.02128,320.656,0.235,0.004
07 | ・・・・・
|
- 01行:コメント
- 02行:データ組数
- 03行:数値列の意味
- 04行:周期,応答加速度,応答速度,応答変位の数値列・・・以降データ組数分繰り返し
使用コントロール
ToolStrip1(Button1),PictureBox1,PictureBox2,OpenFileDialog1,SaveFileDialog1
プログラムリスト
入出力事例
07:Parzenウインドウによるスペクトルの平滑化
概要(プログラム:vbPARZEN)
- Parzen ウインドウによりフーリエスペクトル(横軸は振動数普通軸)を平滑化します.プログラムはフローの制御部と以下の Sub プロシージャから構成されています.
- FFT:高速フーリエ変換
- IACC:数値積分
- CRAC:基線補正
- SWIN:Parzen ウインドウによる平滑化
- PLOT:作図用ルーチン(普通軸・両対数軸対応)
- INC_STR:軸名描画ルーチン(文字を回転させる)
- DRN_XJIKU:普通横軸数値描画ルーチン
- DRN_YJIKU:普通縦軸数値描画ルーチン
- DRL_XJIKU:対数横軸数値描画ルーチン
- DRL_YJIKU:対数縦軸数値描画ルーチン
- ここで用いている Sub プロシージャのうち IACC,CRAC,SWIN は大崎順彦先生の著書「新・地震動のスペクトル解析入門」に掲載の FORTRAN ソースを VB で Call できる形で書き直しています.
- ピークを有する振動数を図中表示しています.
- 入力データファイル(csv形式)の並び高速フーリエ変換プログラムと同一で以下の通り.
加速度時刻歴データ入力ファイルのフォーマット
01 | 2008/06/14 08:43:00 IWTH25 地中EW Max.acc=747.922
02 | dt,0.010
03 | ndata,30000
04 | 0.191
05 | 0.190
06 | 0.191
07 | ・・・
|
- 01行:コメント
- 02行:サンプリングピッチ(秒).ここで文字列 dt はダミー
- 03行:時刻歴データ数.ここで文字列 ndata はダミー
- 04行:以降加速度値が ndata 個 1 列で続く
使用コントロール
ToolStrip1(Button1),OpenFileDialog1
プログラムリスト
入出力事例
08:フーリエスペクトル計算
概要(プログラム:vbFSP, vcsFSP, gccFSP)
- 波形時刻歴データを読み込みフーリエスペクトルを計算するプログラムです.
- 指定した周波数での平滑化も行えます.
- 作図機能はありません.
- C での入力は,exeファイル名 平滑化バンド幅(Hz) 入力ファイル名 出力ファイル名の順に指定します.事例は以下の通り.
> gccFSP 0.2 inp_acc_5x.csv out_acc_5x.csv
|
- 入力データファイル(csv形式)の書式は高速フーリエ変換プログラムと同一で以下の通り.
01 | frame_5_x
02 | dt,0.1
03 | ndata,1001
04 | 0.00E+00
05 | -9.98E+01
06 | 1.32E+00
07 | ・・・
|
- 01行:コメント
- 02行:サンプリングピッチ(秒).ここで文字列 dt はダミー
- 03行:時刻歴データ数.ここで文字列 ndata はダミー
- 04行:以降時刻歴値が ndata 個1列で続く
- 数値データ出力ファイル書式は以下の通りです.
01 | frame_5_x
02 | バンド幅,0.1
03 | データ数,513
04 | 振動数,原SP,平滑化SP
05 | 0.000000E+000,9.448500E+000,1.496752E+001
06 | 9.765625E-003,9.637235E+000,1.826634E+001
07 | ・・・・・
|
- 01行:コメント
- 02行:平滑化バンド幅(Hz)
- 03行:データ組数
- 04行:数値列の意味
- 05行:振動数,原波形スペクトル,平滑化スペクトルの数値列・・・以降データ組数分繰り返し
使用コントロール
ToolStrip1(Button1, Label1, TextBox1), OpenFileDialog1, SaveFileDialog1
プログラムリスト
入出力事例
09:FFTを活用した波形処理
概要(プログラム:vbFFTex0)
- FFT を用いて波形処理を行うプログラムです.
- ここでは原波形に対し取得したい周期を指定することにより,指定周期範囲外の成分を除去します.
- プログラムでは ToolStrip の TextBox に取得したい周期範囲を入力することにしています.
- デフォルトは -1(ToolStripTextBox1),-1(ToolStripTextBox2)であり,これは無処理を意味します.
- Label 内は FFT における理論周期範囲を出力しています.
- 事例ではプログラム内で試験波形を作成し波形処理とグラフ化を行っています.
- 理論は,原波形をフーリエ変換し,除去したい周期(周波数)領域の係数を 0 として逆変換しているだけのものです.
- この事例では周期は 50〜200 秒以外のフーリエ係数を 0 としており,ToolStripTextBox の入力値は 50(ToolStripTextBox1),200(ToolStripTextBox2)です.
使用コントロール
ToolStrip(Button1,Label1,TextBox1,TextBox2),PictureBox1,PictureBox2
プログラムリスト
入出力事例
10:KiK-net・K-NET地震加速度データのcsv化
概要(プログラム:vbKIK2CSV, gccKIK2CSV)
ここには,(独)防災科学技術研究所が運営しているKiK-net・K-netのデジタル波形データを使う場合の,自分用のデータ加工方法を記しました.(独)防災科学技術研究所のサイトでは,いろいろ勉強させていただいており,感謝いたします.
処理の前提
- KiK-net の場合:KiK-net から「*.tar」をダウンロード・展開し,「*.NS1」「*.NS2」などの複数の元ファイルが作成されていることを前提としています.
- K-net の場合:KーNET から「*.tar」をダウンロード・展開し,「*.NS」「*.EW」などの複数の元ファイルが作成されていることを前提としています.
処理の基本
- [Start] ボタンを押すとフォルダ選択のダイアログボックスが表示されるので,データが入っているフォルダを選択します.すると選択したフォルダ内の全ファイル名が上段の ListBox に表示されるので,変換したいファイルをマウスでクリックします.(色が変わります)
- [File select] ボタンを押すと中段の ListBox に選択したファイルが表示されます.
- [Execute] ボタンを押すとデータ変換処理が行われ下段の ListBox に変換処理後のファイル名が表示されます.
- 処理後のファイルは元データと同じフォルダに格納されます.また変換処理後のファイル名が同じフォルダ内の work.txt というファイルに格納されます.
- KiK-net や K-NET のデータはファイル名が似ておりかつ長いので,この work.txt に書き出されたファイル名を後処理に活用すべくこのような仕様にしました.
変換処理後のファイル名について
- KiK-net データの変換処理後のファイル名は,元ファイルが「*.UD1」であったとすると「*_UD1.csv」という名称になります.
- KiK-net の元データファイルは観測点名・地震時刻情報+拡張子として方向(NS,EW,UD)と地中(1)か地表(2)かの情報が含まれているため,変換処理後のファイル名は拡張子を「.csv」として観測点名・地震計の位置と方向の情報を名前に取り込むようにしました.
- K-NET の場合は,元ファイルが「*.UD」などであるため「*_UD.csv」という名称になります.
- KiK-net のデータか K-NET のデータかは,基ファイルの13行目:Dir.の記載が,1〜6の数値なら KiK-net,E-W・N-S・U-Dなら K-NET のデータとして判定しています.
入力ファイル書式事例
KiK-net : TCGH161103111446.EW1 の例
01 | Origin Time 2011/03/11 14:46:00
02 | Lat. 38
03 | Long. 142.9
04 | Depth. (km) 24
05 | Mag. 9
06 | Station Code TCGH16
07 | Station Lat. 36.5449
08 | Station Long. 140.0784
09 | Station Height(m) -7
10 | Record Time 2011/03/11 14:47:08
11 | Sampling Freq(Hz) 100Hz
12 | Duration Time(s) 300
13 | Dir. 2
14 | Scale Factor 2000(gal)/8388608
15 | Max. Acc. (gal) 172.787
16 | Last Correction 2011/03/11 14:46:53
17 | Memo.
18 | -183257 -183255 -183255 -183257 -183253 -183251 -183251 -183253
19 | -183251 -183250 -183251 -183253 -183251 -183250 -183250 -183251
・・・・・・・・・・
|
K-net:MYG0041103111446.EW の例
01 | Origin Time 2011/03/11 14:46:00
02 | Lat. 38.0
03 | Long. 142.9
04 | Depth. (km) 24
05 | Mag. 9.0
06 | Station Code MYG004
07 | Station Lat. 38.7292
08 | Station Long. 141.0217
09 | Station Height(m) 40
10 | Record Time 2011/03/11 14:46:51
11 | Sampling Freq(Hz) 100Hz
12 | Duration Time(s) 300
13 | Dir. E-W
14 | Scale Factor 3920(gal)/6182761
15 | Max. Acc. (gal) 1268.488
16 | Last Correction 2011/03/11 14:46:36
17 | Memo.
18 | -25952 -25948 -25915 -25912 -25932 -25945 -25943 -25918
19 | -25911 -25933 -25931 -25917 -25912 -25899 -25910 -25948
・・・・・・・・・・
|
加速度の計算
観測値は18行目以降の整数値で記載されています.この数値に14行目のスケールファクターを乗じ,更にその平均値を減じることにより加速度値を算出しています.
変換処理後ファイル(加速度時刻歴データ出力ファイル)のフォーマット(例えば「IWTH250806140843_EW1.csv」)
01 | 2008/06/14 08:43:00 IWTH25 地中EW Max.acc=747.922
02 | dt,0.010
03 | ndata,30000
04 | 0.191
05 | 0.190
06 | 0.191
07 | ・・・
|
- 01行:コメント
- 02行:サンプリングピッチ(秒).ここで文字列 dt はダミー
- 03行:時刻歴データ数.ここで文字列 ndata はダミー
- 04行:以降加速度値が ndata 個 1 列で続く
C では以下のように使います.
gccKIK2CSV 入力データファイル名 出力データファイル名
|
使用コントロール
ToolStrip1,ToolStripButton1〜3,ListBox1〜3,Label1〜5,FolderBrowserDialog1
プログラムリスト
11:地震応答スペクトル図化出力
概要(プログラム:vbKIKSP, vcsKIKSP)
- 複数の加速度時刻歴の入力波形およびこれらによる加速度応答スペクトルあるいは速度応答スペクトルを重ねがきし,png 形式ファイルで出力します.
- 本HPのプログラム:vbKIK2CSV によりデータ変換したファイルを入力ファイルとして用いることを意識しています.
- 加速度時刻歴グラフの時刻軸は,操作画面(ToolStripTextBox1)で,「0, 60,5」(時刻軸最小値,時刻軸最大値,時刻軸増分)のように入力します.デフォルトは「0, 60, 5」ですが,最大 10 秒,時刻軸増分 1 秒とする場合は「0, 10, 1」のように入力します.
- 応答スペクトル計算時の減衰定数は,操作画面(ToolStripTextBox2)で入力するようにしていますが,デフォルト値は h = 0.05 としています.
- 加速度応答か速度応答かの選択も操作画面(ToolStripTextBox3)で入力するようにしていますが,デフォルト値は加速度応答スペクトルとしています.
- 以上の,加速度時刻歴時刻軸,減衰定数,加速度応答か速度応答かの入力を確認後,「Start」をかけることにより画像ファイルが出力されます.
- プログラムはフローの制御部と以下のサブルーチンからなります.
- IACC:数値積分
- CRAC:基線補正
- ERES:応答スペクトル計算
- WAVEPLOT:加速度時刻歴描画・保存
- SAKUZU:応答スペクトル作図制御・保存
- PLOT:応答スペクトル作図用ルーチン(両対数軸専用,複数線種対応)
- INC_STR:軸名描画ルーチン(文字を回転させる)
- DRN_XJIKU:普通横軸数値描画ルーチン(未使用)
- DRN_YJIKU:普通縦軸数値描画ルーチン(未使用)
- DRL_XJIKU:対数横軸数値描画ルーチン
- DRL_YJIKU:対数縦軸数値描画ルーチン
- CHD_LPEN:(Function)Penの色・描画線種変更用の関数
- 加速度時刻歴出力グラフのファイル名は,入力データファイル名(拡張子無し)に「figwave_00.png」,「figwave_01.png」・・・というように時刻歴 1 つにつき 1 枚の,通し番号をつけた png ファイルが出力されます.
- 加速度応答スペクトル出力グラフのファイルは,入力データファイル名(拡張子無し)に「-fig_acc0.png」,「-fig_acc1.png」・・・というようにグラフ 1 枚当たり 1 つの png ファイルが出力されます.
- 速度応答スペクトル出力グラフのファイルは,入力データファイル名(拡張子無し)に「-fig_vel0.png」,「-fig_vel1.png」・・・というようにグラフ 1 枚当たり 1 つの png ファイルが出力されます.
- 出力グラフの書式は以下の通りです.
横軸(対数) | 固有周期.最小値 0.01 秒〜最大値 10 秒 周期計算は最小周期(サンプリングピッチ×2)から最大周期( 10 秒)までを 100 分割したもの |
縦軸(対数:加速度) | 加速度応答値.最小値 10 gal〜最大値 10000 gal |
縦軸(対数:速度) | 速度応答値.最小値 0.1 kine〜最大値 1000 kine |
入力データフォーマット
下の事例(ファイル名:「岩手宮城.csv」)では描くデータは同一ですが凡例の線種を変えています.
01 | 2
02 | 一関西,6
03 | IWTH250806140843_NS1.csv,地中NS,0s
04 | IWTH250806140843_EW1.csv,地中EW,1s
05 | IWTH250806140843_UD1.csv,地中UD,2s
06 | IWTH250806140843_NS2.csv,地表NS,3s
07 | IWTH250806140843_EW2.csv,地表EW,4s
08 | IWTH250806140843_UD2.csv,地表UD,5s
09 | 一関西,6
10 | IWTH250806140843_NS1.csv,地中NS,0s
11 | IWTH250806140843_EW1.csv,地中EW,1s
12 | IWTH250806140843_UD1.csv,地中UD,2s
13 | IWTH250806140843_NS2.csv,地表NS,0d
14 | IWTH250806140843_EW2.csv,地表EW,1d
15 | IWTH250806140843_UD2.csv,地表UD,2d
|
- 01行:グラフ描画枚数(ここでは2枚のグラフを出力)
- 02行:グラフ右上表示テキスト,グラフ 1 枚あたりの描画線数( 6 本線を描画)
- 03行:IWTH250806140843_NS1.csv,地中NS,0s・・・加速度時刻歴データ入力ファイル名,凡例表示名,描画線種
- 09行:一関西,6・・・2 枚目のグラフのデータの先頭
描画線種(色指定文字列)について
描画線種は "0s" や "1d" のように1文字目を数字,2文字目を文字 "s" または文字 "d" で指定します.1文字目は下表に示す色を示し,2文字目は "s" が実線(solid),"d" が点線(dot)を示します.
色 | Red | Blue | Fuchsia | Teal | Aqua | Lime |
実線 | 0s | 1s | 2s | 3s | 4s | 5s |
点線 | 0d | 1d | 2d | 3d | 4d | 5d |
加速度時刻歴データ入力ファイルのフォーマット(例えば「IWTH250806140843_EW1.csv」)
01 | 2008/06/14 08:43:00 IWTH25 地中EW Max.acc=747.922
02 | dt,0.010
03 | ndata,30000
04 | 0.191
05 | 0.190
06 | 0.191
07 | ・・・
|
- 01行:コメント
- 02行:サンプリングピッチ(秒).ここで文字列 dt はダミー
- 03行:時刻歴データ数.ここで文字列 ndata はダミー
- 04行:以降加速度値が ndata 個1列で続く
使用コントロール
ToolStrip1, ToolStripButton1, ToolStripLabel1, ToolStripTextBox1, ToolStripLabel2, ToolStripTextBox2, ToolStripLabel3, ToolStripTextBox3, OpenFileDialog1, PictureBox1〜2
プログラムリスト
入出力事例
12:フーリエスペクトル比計算・図化
概要(プログラム:vbFSratioNL, vcsFSratioNL)
- 構造物の固有振動数を求めたい場合など,フーリエスペクトル比を求めたい場合があります.このため,2つの原波形のフーリエスペクトルを Parzen ウインドウにより平滑化し,スペクトル比を求めるプログラムを作りました.
- スペクトルおよびスペクトル比は普通軸表示・対数軸表示が選択できます.
- 普通軸表示では,横軸は振動数(普通軸),縦軸はフーリエスペクトルですが最大値を1とするよう基準化しています(無次元).
- 対数軸表示では,横軸は周期(対数),縦軸はフーリエスペクトル(対数)です.
- プログラムは制御部と以下のサブルーチンで構成されています.
- FFT:高速フーリエ変換
- IACC:数値積分
- CRAC:基線補正
- SWIN:Parzenウインドウによる平滑化
- CALFSP:原波形読み込みと平滑化フーリエスペクトル計算制御
- PLTCTL:作図用PLOTルーチン制御
- PLOT:作図用ルーチン(普通軸・両対数軸対応)
- INC_STR:軸名描画ルーチン(文字を回転させる)
- DRN_XJIKU:普通横軸数値描画ルーチン
- DRN_YJIKU:普通縦軸数値描画ルーチン
- DRL_XJIKU:対数横軸数値描画ルーチン
- DRL_YJIKU:対数縦軸数値描画ルーチン
- 平滑化時のバンド幅は,スタート前に ToolStripTextBox に入力します.デフォルト値は 0.4 です.
- [Start] させると,OpenFileDialog が開きますので,読み込むファイル名や出力ファイル名などを指定した制御ファイルを選択します.
- 出力は,スペクトルの数値データ(csv形式)と図化出力(png形式)です.
- 数値データ出力ファイルは,OpenFileDialog で指定した出力ファイルに拡張子「csv」がついたものになります.
- 図化出力では,以下のファイルが自動生成されます.
「数値データ出力ファイル名」_figfs01.png | 分子側原波形フーリエスペクトル |
「数値データ出力ファイル名」_figfs02.png | 分母側原波形フーリエスペクトル |
「数値データ出力ファイル名」_figfsp1.png | 分子側平滑化フーリエスペクトル |
「数値データ出力ファイル名」_figfsp2.png | 分母側平滑化フーリエスペクトル |
「数値データ出力ファイル名」_figfspr.png | 平滑化されたスペクトルによるフーリエスペクトル比 |
- 出力グラフの書式は以下の通りです.
普通軸 |
横軸(普通軸) | 振動数.最小値0〜最大値20Hz |
縦軸(普通軸) | 最大値で正規化したフーリエスペクトルもしくはスペクトル比.最小値0〜最大値1 |
対数軸 |
横軸(対数軸) | 周期.最小値 0.01 〜最大値 10 sec |
縦軸(対数軸) | フーリエスペクトル( 0.1 〜 1000 gal*sec)もしくはスペクトル比( 0.1 〜 1000 倍) |
OpenFileDialogで読み込むファイルのフォーマット(例えば「fsratio.txt」)
01 | 2
01 | 地表,地中,inpwave1.csv,inpwave2.csv,outwaveL,L
01 | 地表,地中,inpwave1.csv,inpwave2.csv,outwaveN,N
|
- 01行:スペクトル比を計算するケース数
- 02行:1番目のケースでの分子呼び名,分母呼び名,分子加速度時刻歴ファイル名,分母加速度時刻歴ファイル名,出力ファイル名(拡張子無し),普通軸・対数軸の区別( L :対数軸,N :普通軸)
- 03行:2番目のケースでの分子呼び名,分母呼び名,分子加速度時刻歴ファイル名,分母加速度時刻歴ファイル名,出力ファイル名(拡張子無し),普通軸・対数軸の区別( L :対数軸,N :普通軸)
加速度時刻歴データ入力ファイルのフォーマット(例えば「inpwave2.csv」)
01 | 2008/06/14 08:43:00 IWTH25 地中EW Max.acc=747.922
02 | dt,0.010
03 | ndata,30000
04 | 0.191
05 | 0.190
06 | 0.191
07 | ・・・
|
- 01行:コメント
- 02行:サンプリングピッチ(秒).ここで文字列 dt はダミー
- 03行:時刻歴データ数.ここで文字列 ndata はダミー
- 04行:以降加速度値が ndata 個1列で続く
- 注)入力加速度時刻歴データでは,2つの入力波形のデータ数とサンプリングピッチを同一としておく必要があります.
数値出力データフォーマット
01 | バンド幅,0.2
02 | データ数,16385
03 | 振動数,分子原SP,分母原SP,平滑化分子SP,平滑化分母SP,平滑化SP比
04 | 0.000,0.004,0.003,21.631,7.973,2.713
05 | 0.003,57.695,8.608,21.633,7.991,2.707
06 | 0.006,32.952,4.929,21.641,8.044,2.690
07 | ・・・・・
|
- 01行:平滑化処理のバンド幅
- 02行:データ組数
- 03行:数値データの項目
- 04行:以降03行で示した項目の数値データ組がデータ数で示した行数だけ続く
使用コントロール
ToolStrip1,ToolStripButton1,ToolStripLabel1,ToolStripTextBox1,OpenFileDialog1,SaveFileDialog1,PictureBox1
プログラムリスト
入出力事例
13:フーリエスペクトル比計算
概要(プログラム:vbCALFSR, vcsCALFSR)
- 2つの原波形のフーリエスペクトルを Parzen ウインドウにより平滑化し,スペクトル比を求めるプログラムです.
- 作図機能はなく,各振動数でのスペクトル値およびスペクトル比の数値を csv 形式で出力するものです.
- プログラムは制御部「main()」と以下のサブルーチンで構成されています.
- FFT:高速フーリエ変換
- IACC:数値積分
- CRAC:基線補正
- SWIN:Parzenウインドウによる平滑化
- CALFSP:原波形読み込みと平滑化フーリエスペクトル計算制御
- 平滑化時のバンド幅は,スタート前に ToolStripTextBox に入力します.デフォルト値は0.4です.
- [Start] させると,OpenFileDialog が開きますので,読み込むファイル名や出力ファイル名などを指定した制御ファイルを選択します.
- 出力は,スペクトルの数値データ(csv形式)です.
- 数値データ出力ファイルは,読み込んだ制御ファイルで指定しているファイルとなります.
- 作図プログラムで使用できるよう既定値で「fileoutlist.txt」という出力ファイルのリストを記載したファイルもは作成します.
- 入出力事例ファイルは,text ではサイズが大きくなるので,lzh 圧縮版として掲載しました.
OpenFileDialogで読み込む制御ファイルのフォーマット(例えば「inpCALFSR.txt」)
01 | 3
02 | 地表EW,地中EW,IWTH250806140843_EW2.csv,IWTH250806140843_EW1.csv,outIWTH250806140843_EW.csv
03 | 地表NS,地中NS,IWTH250806140843_NS2.csv,IWTH250806140843_NS1.csv,outIWTH250806140843_NS.csv
04 | 地表UD,地中UD,IWTH250806140843_UD2.csv,IWTH250806140843_UD1.csv,outIWTH250806140843_UD.csv
|
- 01行:スペクトル比を計算するケース数
- 02行:1番目のケースでの分子呼び名,分母呼び名,分子加速度時刻歴ファイル名,分母加速度時刻歴ファイル名,出力ファイル名
- 03行:2番目のケースでの分子呼び名,分母呼び名,分子加速度時刻歴ファイル名,分母加速度時刻歴ファイル名,出力ファイル名
- 04行:3番目のケースでの分子呼び名,分母呼び名,分子加速度時刻歴ファイル名,分母加速度時刻歴ファイル名,出力ファイル名
加速度時刻歴データ入力ファイルのフォーマット(例えば「IWTH250806140843_EW2.csv」)
01 | 2008/06/14 08:43:00 IWTH25 地表EW Max.acc=1432.594
02 | dt,0.010
03 | ndata,30000
04 | -1.993
05 | -2.010
06 | -2.005
07 | ・・・
|
- 01行:コメント
- 02行:サンプリングピッチ(秒).ここで文字列 dt はダミー
- 03行:時刻歴データ数.ここで文字列 ndata はダミー
- 04行:以降加速度値が ndata 個 1 列で続く
- 注)入力加速度時刻歴データでは,2 つの入力波形(分子と分母)のデータ数とサンプリングピッチを同一としておく必要があります.
数値出力データフォーマット
01 | 分子ファイル名,地表EW,IWTH250806140843_EW2.csv
02 | 分母ファイル名,地中EW,IWTH250806140843_EW1.csv
03 | 出力ファイル名,sp比,outIWTH250806140843_EW.csv
04 | バンド幅,1
05 | データ数,16385
06 | 振動数,分子原SP,分母原SP,平滑化分子SP,平滑化分母SP,平滑化SP比
07 | 0.000,4.403831E-003,2.775324E-003,5.757745E+001,3.761458E+001,1.530722E+000
08 | 0.003,5.769488E+001,8.607772E+000,5.758453E+001,3.761848E+001,1.530751E+000
09 | 0.006,3.295185E+001,4.929097E+000,5.760577E+001,3.763021E+001,1.530839E+000
10 | 0.009,3.119506E+001,4.858689E+000,5.764116E+001,3.764973E+001,1.530984E+000
11 | ・・・・・
|
- 01行:項目,呼び名(入力値),分子側入力ファイル名
- 02行:項目,呼び名(入力値),分母側入力ファイル名
- 03行:項目,呼び名(既定値),出力ファイル名
- 04行:平滑化処理のバンド幅
- 05行:データ組数
- 06行:数値データの項目
- 07行:以降06行で示した項目の数値データ組がデータ数で示した行数だけ続く
出力ファイル名リスト「fileoutlist.txt」のデータフォーマット
01 | 3
02 | outIWTH250806140843_EW.csv
03 | outIWTH250806140843_NS.csv
04 | outIWTH250806140843_UD.csv
|
- 01行:出力ファイル数(ここでは「3」)
- 02行:1番目の出力ファイル名
- 03行:2番目の出力ファイル名
- 04行:3番目の出力ファイル名
使用コントロール
ToolStrip1,ToolStripButton1,ToolStripLabel1,ToolStripTextBox1,OpenFileDialog1
プログラムリスト
入出力事例
14:フーリエスペクトル比図化
概要(プログラム:vbFIGFSR, vcsFIGFSR)
- 既に計算されている2つのフーリエスペクトルおよびその比を重ね書き図化するプログラムです.
- 「vbCALFSR」で計算,出力したファイルを図化することを前提にしています.
- 図中にスペクトル比が極大となる振動数あるいは周期を表記できます.
- スペクトル比が極大となる振動数およびその時のスペクトル比の値をファイル出力します.
- スペクトル比極大値出力ファイル名は,入力制御ファイルの1行目2項目目に示す文字列(ここでは「IWTH_ALL」)の先頭に「fig-」を,拡張子として「.csv」を追加した名前になります.
- 図化ファイルは「png」形式であり,ファイル名は,スペクトル比入力ファイル名の先頭に「fig-」を,拡張子を「.png」としたものです.
- 入出力事例ファイルのうち,スペクトル計算結果の書き込まれたファイルは「vbCALFSR」プログラムでの出力ファイルであり,データサイズが大きいため,ここには掲載していません.
- 「vbCALFSR」プログラムの入出力事例における,lzh 圧縮版を参照してください.
OpenFileDialogで読み込む制御ファイルのフォーマット(例えば「inpFIGFSR.txt」)
01 | 3,IWTH_ALL
02 | outIWTH250806140843_EW.csv
03 | outIWTH250806140843_NS.csv
04 | outIWTH250806140843_UD.csv
|
- 01行:描画するケース数,全スペクトル比重ね書き時のグラフ左上表示名
- 02行:1番目のケースでのフーリエスペクトル・スペクトル比計算結果ファイル名
- 03行:2番目のケースでのフーリエスペクトル・スペクトル比計算結果ファイル名
- 04行:3番目のケースでのフーリエスペクトル・スペクトル比計算結果ファイル名
入力用フーリエスペクトル・スペクトル比計算結果ファイルデータフォーマット
01 | 分子ファイル名,地表EW,IWTH250806140843_EW2.csv
02 | 分母ファイル名,地中EW,IWTH250806140843_EW1.csv
03 | 出力ファイル名,sp比,outIWTH250806140843_EW.csv
04 | バンド幅,1
05 | データ数,16385
06 | 振動数,分子原SP,分母原SP,平滑化分子SP,平滑化分母SP,平滑化SP比
07 | 0.000,4.403831E-003,2.775324E-003,5.757745E+001,3.761458E+001,1.530722E+000
08 | 0.003,5.769488E+001,8.607772E+000,5.758453E+001,3.761848E+001,1.530751E+000
09 | 0.006,3.295185E+001,4.929097E+000,5.760577E+001,3.763021E+001,1.530839E+000
10 | 0.009,3.119506E+001,4.858689E+000,5.764116E+001,3.764973E+001,1.530984E+000
11 | ・・・・・
|
- 01行:項目,呼び名(入力値),分子側入力ファイル名
- 02行:項目,呼び名(入力値),分母側入力ファイル名
- 03行:項目,呼び名(既定値),出力ファイル名
- 04行:平滑化処理のバンド幅
- 05行:データ組数
- 06行:数値データの項目
- 07行:以降06行で示した項目の数値データ組がデータ数で示した行数だけ続く
使用コントロール
ToolStrip1,ToolStripButton1〜3,CheckBox1,DataGridView1,GroupBox1,RadioButon1〜4,GroupBox2,Label1〜5,OpenFileDialog1,PictureBox1〜2
プログラムリスト
入出力事例
15:地盤の地震応答計算
概要(プログラム:vbSRES)
- 水平成層地盤の指定した基準層上端面に加速度時刻歴を入力し,周波数応答関数を用いて,指定した対象層上端面における加速度応答時刻歴およびその最大値を計算するものです.
- このプログラムは大崎順彦著「新・地震動のスペクトル解析入門」に掲載されているものを,独自の複素数演算用 Function プロシージャを用いて,VB 用に書き直したものです.
- プログラムはフローの制御部と以下の Sub プロシージャからなります.
- 複素数計算のための構造体宣言と Function プロシージャ
- CFFT:複素数計算による高速フーリエ変換・逆変換
- CFESP:地盤の周波数応答関数計算(複素数計算)
- DAMPFAC(Function):減衰定数定義
- 処理の流れは以下の通りです.
- (1) 基準層に入力する加速度時刻歴波形入力
- (2) FFT による複素フーリエ係数計算
- (3) 地盤の周波数応答関数(複素数)計算
- (4) 周波数応答関数×複素フーリエ係数の計算
- (5) 逆 FFT による対象層の加速度時刻歴計算
- 地盤情報や基準層・対象層はプログラム本体の中で書き込むようにしています.
- [Start] をかけると入力ファイル名を聞いてきますので,加速度時刻歴ファイルを指定します.
- 計算が終わると出力ファイル名を聞いてきますので,出力ファイル名を指定します.
加速度時刻歴データ入力ファイルのフォーマット
01 | EL-Centr_acmax321gal
02 | dt,0.010000
03 | ndata,800
04 | 0.000000
05 | -0.647000
06 | -3.017000
07 | ・・・
|
- 01行:コメント
- 02行:サンプリングピッチ(秒).ここで文字列 dt はダミー
- 03行:時刻歴データ数.ここで文字列 ndata はダミー
- 04行:以降加速度値が ndata 個 1 列で続く
データ出力ファイルのフォーマット
01 | -- ,基準層 ,対象層
02 | -- ,内部 ,解放
03 | Layer No. ,1 ,6
04 | Max.gal ,321.047 ,520.126
05 | dt ,0.010 ,0.010
06 | data_Nums.,800 ,1024
07 | i ,ddy ,acc
08 | 0 , 0.000 , 3.853
09 | 1 ,-0.647 , 3.557
10 | 2 ,-3.017 ,-2.167
11 | 3 ,-5.386 ,-3.377
12 | ・・・
|
- 01行:各列の意味
- 02行:基準層と対象層の条件
- 03行:層番号
- 04行:最大加速度
- 05行:サンプリングピッチ(秒)
- 06行:データ数
- 07行:08行以降の数値の意味
- 08行:番号,基準層加速度,対象層加速度
- 09行:以降データ数までの行で繰り返し
出力事例
pdf ファイルに機能確認事例を載せています.このプログラムで対象層の加速度時刻歴を算出後,若干の書式修正を行い,地震加速度応答スペクトル図化プログラム:vbKIKSP により時刻歴波形と応答スペクトルを出力しています.
使用コントロール
ToolStrip1,ToolStripButton1,OpenFileDialog1,SaveFileDialog1
プログラムリスト
入出力事例
16:模擬地震波作成
概要(プログラム:vbSWG, vcsSWG)
- このプログラムは,目標とする加速度応答スペクトルと位相特性を参照する原種波形時刻歴を入力することにより,目標スペクトルに誤差 5% を目標に適合させた模擬地震波を作成するものです.
- 基本フローは,「国土技術政策総合研究所資料(国総研資料第244号:平成17年3月):大規模地震に対するダムの耐震性能照査に関する資料,資料1-6 加速度応答スペクトルに適合する時刻歴波形の作成方法」を参考に作成しています.
- 応答スペクトル計算上の減衰定数は h = 0.05 に設定しています.
- プログラムはフローの制御部と以下のサブルーチンから構成されています.
- 解析
- CAL_YY:Function.2 点を結ぶ直線による内挿
- FFT:実数計算高速フーリエ変換・逆変換
- ERES:応答スペクトル計算
- IACC:数値積分
- CRAC:基線補正
- 作図
- DEC_PLTDATA1:加速度時刻歴描画パラメータ設定
- DEC_PLTDATA2:加速度応答スペクトル描画パラメータ設定
- SAKUZU:作図ルーチン制御
- PLOT:作図用ルーチン(普通軸・両対数軸)
- INC_STR:軸名描画ルーチン(文字を回転させる)
- DRN_XJIKU:普通横軸数値描画ルーチン
- DRN_YJIKU:普通縦軸数値描画ルーチン
- DRL_XJIKU:対数横軸数値描画ルーチン
- DRL_YJIKU:対数縦軸数値描画ルーチン
操作方法
- 入力用の,原種波形加速度時刻例波形と目標スペクトルを準備します.
- [Start] ボタンを押すと OpenFileDialog で原種波形入力ファイルを聞いてきますのでファイルを選定します.
- Form に原種波形の時刻歴画像を自動的に描画し(時刻は元データの 0〜60 秒まで),INPUTBOX が表示されます.
- INPUTBOX に模擬波形で採用したい原種波形の開始時刻と終了時刻を,例えば「10, 40」のように入力し「ok」を押します.
- Form に原種波形の指定した時刻間の時刻歴画像を自動的に描画し(上記で 10, 40 とすれば 0〜30 秒まで),INPUTBOX が表示されます.
- INPUTBOX に模擬波形で振動開始時刻と振動完了時刻を,例えば「5, 25」のように入力し「ok」を押します.振動開始〜振動完了の時間をはずれる時刻では模擬波形の加速度値を強制的に 0 セットして収束計算を行います.
- OpenFileDialog で目標スペクトル入力ファイルを聞いてきますのでファイルを選定します.
- 以降は自動的に計算し最後に Form に加速度応答スペクトルを描画し MessageBox が完了を告げます.
- Form の ToolStripLabel に,収束回数・誤差が表示されるので確認します.
- 許容誤差は 5% とし,収束計算の上限は 100 回としています.
- ファイル類は入力目標スペクトルと同じフォルダに格納されます.
原種波形入力データファイル書式
原種波形入力データファイル(csv形式)の書式は以下の通りです.
01 | 2008/06/14 08:43:00 IWTH25 地中EW Max.acc=747.922
02 | dt,0.010
03 | ndata,30000
04 | 0.191
05 | 0.190
06 | 0.191
07 | ・・・
|
- 01行:コメント
- 02行:サンプリングピッチ(秒).ここで文字列 dt はダミー
- 03行:時刻歴データ数.ここで文字列 ndata はダミー
- 04行:以降加速度値が ndata 個 1 列で続く
目標スペクトル入力データファイル書式
目標スペクトル入力データファイル(csv形式)の書式は以下の通りです.
01 | 下限sp,
02 | ndata,17
03 | (sec),(gal)
04 | 0.02,300
05 | 0.03,350
06 | 0.04,400
07 | 0.05,450
08 | 0.06,500
09 | 0.07,550
10 | 0.08,600
11 | 0.09,650
12 | 0.1,700
13 | 0.7,700
14 | 1,389.7167048
15 | 1.5,200.2659773
16 | 2,124.8699014
17 | 2.5,86.56284616
18 | 3,64.16761852
19 | 3.5,49.81834466
20 | 4,40.00981248
|
- 01行:コメント
- 02行:データ組数
- 03行:数値列の意味
- 04行:周期,応答加速度の数値列・・・以降データ組数分繰り返し
データ出力ファイル書式
目標加速度応答スペクトル入力ファイルと同じフォルダに以下の2つの出力ファイル(csv形式)が作成されます.
データ書式はいずれも目標スペクトル・あるいは原種波形と同じものです.
mogi-spec.csv | 作成した模擬波形の加速度応答スペクトル |
mogi-wave.csv | 作成した模擬波形の加速度時刻歴波形 |
画像出力ファイル
目標加速度応答スペクトル入力ファイルと同じフォルダに以下の 3 つの画像出力ファイル( png 形式)が作成されます.
fig-0-wave.png | 原種波形の加速度時刻歴波形(時刻は選定した範囲のもの) |
fig-1-wave.png | 作成した模擬波形の加速度時刻歴波形 |
fig-2-sp.png | 目標スペクトルと原種波形および作成した模擬波形の加速度応答スペクトル |
使用コントロール
ToolStrip1(Button1,Label1〜3),OpenFileDialog1,PictureBox1〜2,Label1〜2
プログラムリスト
入出力事例