地球内部地震波線ソフトと画像        21.Sep.2012

地球内部の,地震の波線を書くソフトはネット上にはあまり見当たらないので,これを作ってみました.
画像は下記画像をクリック.教材としてご活用ください.




1次元地震波速度構造として,iasp91(Kennett & Engdahl,1991)を採用しました.
Traveltimes for global earthquake location and phase identification. B. L. N. Kennett' and E. R. Engdah12.
の中に深さ別の地震波速度の計算式があります.

下のコードの

func_v()


の部分です.

改良版のAK135(AKB135ではありません!)の文献は下記サイトに(ただしTableのみで計算式はありません).
Download (3.9 MB)
Websiteは下記
http://rses.anu.edu.au/seismology/ak135/intro.html


<地震波線描画ソフト>

下記文献を参考に独自のコードで作成しました.変数宣言,ファイル書き出し部分などは省略してあります.
下記,桑原論文では,震波線経路の計算にアークサインを2度使っていますが,私のプログラムではSnellの法則の表示に震波線パラメータpを用いましたので,アークサインを開く回数が1回で済みました.

Ubuntu11.04上のegg(eggxライブラリ使用のコンパイラ)でコンパイルします.

#define R0 6371    /* radius of the Earth */
#define DT 0.0001  /* if increased -> line interupted */
#define I0 0.0       /* I0=0.0 caused bug */
#define V0 5.8

for (i=1;i<=IMAX;i++){

    flg = 0;
    ip=(0.2*i+0.0)*DEGRAD;
    th=0.0;
    vp=V0;
    rp=R0;

    p=rp*sin(ip)/vp;        /* 震波線パラメータ    */

    rpp=rp;
 
   while( rp <= R0 ){

        l=vp*DT;
        a=rp/R0;

        if (flg==1)
            r=rp+l*cos(ip);
        else
            r=rp-l*cos(ip);

        th0=l*sin(ip)/r;
        th=th+th0;

        func_v();

        if ( v*p/r > 0.99999999999 ){

            flg=1;
            rpp=r;
            r=rp+l*cos(ip);
   
            func_v();
        }

        in=asin(v*p/r);

        x=r*cos(th);
        y=r*sin(th);
        xx=-x*MX+X00;
        yy=y*MY+Y00;
        pset(w,xx,yy);
    }


// read iasp91_velocity table

func_v()

{
        if (r < 1217.1)
            v=11.24094-4.09689*a*a;
        else if (r < 3482.0)
            v=10.03904+3.75665*a-13.67046*a*a;
        else if (r < 3631.0)
            v=14.49470-1.47089*a;
        else if (r < 5611.0)
            v=25.1486-41.1538*a+51.9932*a*a-26.6083*a*a*a;
        else if (r < 5711.0)
            v=25.96984-16.93412*a;
        else if (r < 5961.0)
            v=29.38896-21.40656*a;
        else if (r < 6161.0)
            v=30.78765-23.25415*a;
        else if (r < 6251.0)
            v=25.41389-17.69722*a;
        else if (r < 6336.0)
            v=8.78541-0.74953*a;
        else if (r < 6351.0)
            v=6.50;
        else
            v=5.80;
}


<参考文献>
参考にしたのは,下記の文献ですが,PDF化されていません.

桑原浩二:地震波経路の自動描画(昭和61年度 東レ理科教育賞受賞作品集)
http://www.toray.co.jp/tsf/rika/hig_003.html


Copyright (c) Yoshio Okamoto 2012, all rights reserved.