地震シュミレーションプログラム ブラウザで表示させると何故かプログラムが欠落しますので、ソースを表示させで 保存、そしてMS−DOS BASIC(N88ー日本語BASIC(86)6. 0) にて実行させてください。(100から700までの60行がプログラム本体。) なおネットスケープではソースの編集ができないためプログラムの移植ができません。 IEを使って下さい。またはコピーしてエディターで移植して下さい。 IEまたはマイクロソフトのエディターではBASICのソースを扱えないようで、 しばしば問題が発生しています。このプログラムでは行番号570のソースが原因 とみられる問題が発生しましたので570を削除してあります。前ページの570 を挿入して走らせて下さい。 プログラムの解説はプログラコードの最後にあります。/A> 100 REM EARTH G426C 5/13 11/13 1996 110 DEFINT I,J,K,L,M,N :SCREEN 3:CONSOLE ,,,1 :RP=1.1 :RESTORE 5710:COLOR 7 120 ND=49:HB=.4 :SP1=128!:SP2=28!:GP1=139!:GP2=35: MIRAI=100:GP=1/2:TP=1/1 130 P1=3.3E+11:P2=1.41 :DIP= 0 :STR=45:JX=(GP1-SP1)/HB:JY=(GP2-SP2)/HB 140 DIM AVE(ND,ND),BASE(ND,ND),BLOCK(ND,ND),GDATA(500,4),FLD(ND,ND) 150 DIM BLOCKA(ND,ND),SDMAXA(ND,ND),SDMAX(ND,ND) 160 DEF FNFS(X)=10^(1.02*X-4)*P2:DEF FNGME(X)=10^(11.8+1.5*X):CD=1E+10 170 DEF FNGTR(X,R)=2.32*2.72^(-X*X/(2*R*R)):P3=1/1 180 FOR I=1 TO 1000:FOR J=0 TO 4:READ GDATA(I,J):GDATA(I,J)=GDATA(I,J)/10 190 IF GDATA(I,J)=0 THEN GOTO *OW ELSE NEXT J,I 200 *OW:KOSU=I-1:KIKAN=(GDATA(KOSU,1)-GDATA(1,1))*10:IFY=GDATA(1,1)*10 210 ILY=GDATA(KOSU,1)*10:DP=.0175*DIP :AA=COS(DP):SR=.0175*STR 220 FOR I=1 TO KOSU:TPGE=0:GM=GDATA(I,4):EM=10^(1.5*GM+16.1):SM=FNFS(GM) 230 RG=SQR(SM/3.14)/100:SD=EM/(P1*SM*CD):PRINT GDATA(I,0)*10; 240 FOR K=0 TO ND:FOR L=0 TO ND: GOSUB *DAS:IF JDS<0 THEN GOTO *FAR1 250 IF RSDIY THEN GOTO *GN 330 IF GDATA(I,1)=GDATA(I+1,1) THEN IY=IY-1:IW=10 ELSE IW=1 340 GM=GDATA(I,4):EM=10^(1.5*GM+16.1):PRINT JG;:COLOR 7 350 SM=FNFS(GM):RG=SQR(SM/3.14)/100:SD=EM/(P1*SM*CD) 360 FOR K=0 TO ND:FOR L=0 TO ND:GOSUB *DAS:IF JDS<0 THEN GOTO *FAR2 370 IF RSDILY THEN GOTO *KO ELSE GOTO *RT 440 *KO:FOR K=0 TO ND:FOR L=0 TO ND:BLOCK(K,L)=BLOCK(K,L)-BASE(K,L):SDMAXA(K,L)=SDMAX(K,L):BLOCKA(K,L)=BLOCK(K,L):NEXT L,K:PK=SP1+JX*HB:COLOR 7 450 PI=SP2+JY*HB:PRINT"IDO and KEIDO of the point";USING "######.#"; PI;PK 460 PRINT" S OF NOW MAX AVE/YEAR N" 470 PRINT USING"#######.#";BLOCK(JX,JY);SDMAX(JX,JY);AVE(JX,JY) ;FLD(JX,JY): 480 *NEX:GOSUB *YOST: PRINT "FROM";ILY;"TO";ILY+MIRAI; "IDO=";SP2;"-";SP2+ND*HB;" KEIDO=";SP1;"-";SP1+ND*HB;" RP=";RP 490 PRINT " YEAR IDO KEIDO MG1 MG2 LENGTH of FAULT (Km) " 500 FOR IY =ILY+1 TO ILY+MIRAI 510 FOR K=0 TO ND:FOR L=0 TO ND:BLOCK(K,L)=BLOCK(K,L)+AVE(K,L):NEXT L,K 520 FOR KK=0 TO ND:FOR LL=0 TO ND: IF BLOCK(KK,LL)>SDMAX(KK,LL) AND FLD(KK,LL)<1.5 THEN BLOCK(KK,LL)=SDMAX(KK,LL) 530 IF BLOCK(KK,LL)>SDMAX(KK,LL) AND FLD(KK,LL)>1.5 THEN XX=KK*HB:YY=LL*HB:SD=BLOCK(KK,LL) ELSE GOTO *BUGI 540 GM=(.434*LOG(SD/2.32*P1*CD*P2)-20.1)/.48:RG=(SQR(FNFS(GM)/3.14))/100:GMT=GM 550 TGE=0:FOR K=0 TO ND:FOR L=0 TO ND:DX=K*HB-XX:DY=L*HB-YY:GOSUB *DAS2 560 IF JDS<0 THEN GOTO *FAR3 570 IF RSD プログラムの解説 北緯28ー48度、東経128ー148度、の範囲を50X50のメッシュ(ブロ ック)に分け、1996年からの100年について、西暦1605年からの地震記録 (理科年表)をデータとして予想(シュミレーション)するように設定されています。 また(35、139)の地点のブロックの歪みをグラフ表示します。 2時間ほどで過去のデータ処理が終わりますので、1 と入力してください。以後未 来のシュミレーションにおいて、過去の破壊限界平均値の100パーセントまで歪み が溜ると地震が起きます。0.9と入力すると90パーセントで地震が起きます。   始めにデーターを読み込み、配列GDATAに入れます。次に処理します。処理済 みデータは72 73 74....と表示していきます。この部分、メモリー及 び計算時間の節約のためにブラックボックス化してしまっています。不規則に起こ っている地震を処理して配列に格納するのは3次元配列を使用すれば容易ですが、 パソコンではメモリー不足です。地震記録データにダミーを入れて整えるという方 法もあるでしょう。 次に過去の地震データの地震をシュミレーションすることにより、各ブロックの毎 年溜るであろう歪み量(配列AVE)から、破壊限界の歪み量(配列SDMAX) などの推定値を計算します。地下30キロメートルの地震断層で破壊が起こるとし て、こう性率を(3.3E+11)として歪み量はセンチメートルで表します。 処理済みデータの西暦を表示し計算範囲内の場合は赤で表示します。また始めに指 定した地点の歪み量をグラフィック表示していきます。 次に得られたSDMAXやAVEを用いて未来の地震をシュミレートしていきます。 RP= ? と聞いてきますので、1 と入力します。これは破壊限界の歪み量( 過去の歪み量の最大値)の100パーセントに達したら地震を起こすという意味で、 RPの値を変えて何回でも未来の地震を起こしてみることができるようになってい ます。0.8と入力すれば破壊限界の80パーセントで地震が起こりますので、よ り早期に規模が小さい地震が多数起こります。 NECインタープレタ・ベーシック、100MHZのCPUを用いた場合30分程 かかります。 得られる地震予報の精度は例えば次のようにして推定します。西暦1500年から 1900年までの400年分のデータを用いて、1901年から1996年までを シュミレート予報してみる。そして現実に1901年から1996年までに起こっ た地震と比較して、予報誤差を推定・計算する。 見事に予報が当たる地域も有りますし、全くダメな地域もあります。このプログラ ムでは地震断層の走行・傾斜も指定できるようになっていますが、日本全国一律の 理論、パラメーター、走行・傾斜、地震データではなく、その地域の特性を考慮に いれた地震モデル・プログラム・及びデータを構築する必要があります。 なおデータとして始めはサンプルデータを用いてプログラムのチェックを行うわ けですが、自然地震データでなけれな自然な地震は起こりません。このプログラム では前震や余震も起こりますが本震だけをデータに入れた場合は、始めは本震だけ が起こります。