東北津波Sim作成備忘録 08.Apr.2011
  Tohoku3の計算.幅を140kmに上げ,ずれを18mに下げる.また走向を16度に落とす.ところがそう思って計算させたら,良く見ると走向は18 度のままで傾斜が16度に下がっていた.どうも釜石沖の最大波高が小さいと思ったらこれかも知れない.膨大なTohoku3の計算結果は捨てることに.こ れを改良したTohoku4の計算を始める.


東北津波Sim作成備忘録 06.Apr.2011
  昨日の記録が保存できておらず消える.一昨日職場PCのマザー,HDDの交換.マザーはBIO-StarのLGA775P35の中古品.じゃんぱらで 3950円.これで起動したが相変わらず立ち上がらずでおそらくHDDということで急遽2TBのHDDをSofmapで購入.
これで何とかUbuntu10.10のインストールのち,各種設定.とりあえずメールの設定途中で帰宅.昨日,メールのMailフォルダなどの旧HDDか らのコピーののち,UbuntuStudioなど各種インストール.とりあえず印刷をのぞき以前の環境に復帰.
 計算用PCではTohoku2の計算.これは波高海底下リミッタをはずしたもの.花咲港の波高データと調和的.あと大洗も.
釜石のものはこれから抜き出したが,全体のトーンは似ていて特に最初の1時間は結構よいが2時間目が少し異なる.そのあとのフェーズはまた似通ったモードに.ただ最高の波高が8mを越えて少し実際より高くです.そこであとのバージョン(Tohoku3)で若干それを修正.
なお,Tohoku2_v1とTohoku2_v2の違いはレンダリング時の高さパラメータが前者は1.2後者は2の違い.

ここで地学部夜間観測開始で一旦中断.土星やプレセペ,M3,M81などを見る.M3,M81はわずかにぼんやりした姿が見えるのみ.
あと夜帰ってきてから,Tohoku3を開始.断層幅を140km,断層ずれを18m,走向N16Eに変更.あとは同じ条件で計算開始.この計算用 PC.CPUに何か負荷をかけるととたんに金属的な音がするが,どうもFANの回転数が上がるためらしい.どのFANかは良く分からないがどうも全面の青 色ダイオードのもののように聞こえる.
Nankai2でレンダリング続行.視野の狭いバージョンを2つ同時に作成.途中で波高が高すぎることに気づいたがとりあえず明日朝までこれでいく.とこ ろがこの計算の途中で,ハードディスクの容量があと1.6Gですと警告が出る.あわてて古いフォルダを/dataに移す.
 今日夕方,科研費が今年も通ったことがわかる.驚く.これは嬉しい.娘の採用通知も来たらしい.2重の喜び.


東北津波Sim作成備忘録 03.Apr.2011
  昨日の波高時系列作成で,花咲港,釜石沖などを作る(昨日).今日同様に大洗のデータを作ってみておかしなことに気づく.波高が最大波高の直後に急に0に 落ちて動かない.この理由が不明.またすこし沖合いに設定した場所も-1mで波がクリップする.どうも海が浅いのではないかと思う.これ調べる必要あり.
あと,これをNankaiのファイルで確認しようとしてはまる.なぜかセグフォー(エラー表示が「セグメンテーション違反です」に変わってる).

Nankaiの波高を書くが,どうも波高が高い方に偏る.あまり下がらない.これ古いOsaka_f.cを見直すと波高が海底より下がったときのリミッタ を外している.リミッタを外してこの部分の計算をし直す方がよいかも知れない.ということで早速リミッタを外した計算をしようとするが,これがまた「セグ メンテーション違反です」.コンパイルは終わるのに実行途中でこれで停止.これも色々調べたら,window描画命令を削除したのに,レイヤー指定や画面消去命令が消 えずに残っていたというお粗末(あと同じようにセグフォーは ファイル名の番号の桁数を3桁なのに4桁で読みにいこうとしたときにも発生).なかなか難しい.これを解消したのが
Nankai2.c
これでとりあえず明日まで計算させる.

あと,資料を探す.浅海長波方程式のよくわかるpdfの日本語訳を始める.
http://www-eaps.mit.edu/~rap/courses /12333_notes/Chap1.pdfより
浅海長波方程式.これは簡単に見えるが実は非線形.ちなみに線形化したものは線形長波理論というそうな.(流体力学学会のWeb会誌より)

深夜に至る.リミッタの効いたのと効かないのの比較.リミッタをはずすとぐっと海岸線での振幅が大きくなる.ほとんどサチリそうな勢い.とりあえず波高の 書き出しで倍率を1000から500に抑えたバージョンを走らせる.これでも引き波の影響が強くでるリミッタ外しの効果は絶大.これで東北を同じ論理で書 き出して観測値と照合させるのが明日の仕事.


東北津波Sim作成備忘録 02.Apr.2011

  津波Simの続き.fltなどの動画化.v8とv88の違いは,陸地への高さの与え方.v88の方が低い.あとサフィックスcは中心部の拡大バージョン. これが津波の高さがよくわかる.特に仙台湾への溯行や,千葉県旭市の波高の高さがよく再現されている.
  平行して,PCの整備.Ubuntustudioというマルチメディアセットがあるみたいなので,これをsynapticからインストール.結構時間がか かるが,画像,音楽中心にkinoやavidemuxなどお馴染みのソフトがインストールされた.inkspace,blenderなども入る.ゲーム は追加されない.

 あと目標としては,pgmファイルのどこか地点を選んでその画素を読み取り,それを時系列の波高ファイルに変換したい.
まず情報探し.
http://taro.haun.org/pgm2kanji.html
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1152266566
http://robotics.me.es.osaka-u.ac.jp/~atsushi/Computer-kiso/EnshuMemo/enshu-memo34.htm

などとあるがどれもやや特殊な方法で読み出すようで,ここは書き出し時のルーチンを利用してそれを読み出しに書き換える方針で行くことに.

ちなみにpgmファイルはテキストエディタで見ると下記のような感じ.
ここでP2はデータがテキスト形式を示す.P5だとバイナリになる.次が格子数,そしてビット数.

最初は波高0だが
P2
3199 5200
65535
30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000 30000
計算終わりの方では,下記のように波高が記入されている.
P2
3199 5200
65535
30000 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009 30009

データがほしい地点(たとえば湾内のある場所)はある程度計算が進んで波高が観測されるファイルをどれか選んで,GIMPなどで拡大してx,y座標を読み 取ることで達成できる.

これで例えば,石巻なら1072,3162とか,花咲港なら2426,826となる.
これでとりあえず地点の探索はOK.次にpgmファイルを一旦開き,データを配列に格納し,必要なi,j座標の波高データだけを取り出す最終プログラムは 以下のとおり.まだ少し無駄があるが.

/*--main routine--------------------------------------------------------------*/

void main(void){

fp2=fopen(WT_FILE,"w");  /* for wave height data along time series */

while (t<T_END){   

     /* Output Wave Height data file */
      sprintf(tm,"%d",t);   
      strcpy(f_name,WH_FILE);
//      strcpy(dmy,tm);
     if (t<10)
       strcat(f_name,"000");
     else if (t<100)
       strcat(f_name,"00");
      else if (t<1000)
       strcat(f_name,"0");
   
      strcat(f_name,tm);     
      strcat(f_name,".pgm"); 
      printf("%s\n",f_name); 
     
      fp=fopen(f_name,"r");   /* for .pgm files */
     
      /*Header File 3-lines  */
      fscanf(fp,"%s",p2);
      fscanf(fp,"%s%s",im,jm);
      fscanf(fp,"%s",max);
      
    for (j=1;j<=JMAX;j++){
        for (i=1;i<=IMAX;i++){
            fscanf(fp,"%s",w_height);  
            w[i][j]=(atoi(w_height)-30000)/1000.0;        
            if (i==IT && j==JT){    
                 fprintf(fp2,"%4.4f\n",w[i][j]);
                    printf("%4.4f\n",w[i][j]);
            }   
        }
    }
    fclose(fp);
    t=t+1;
  }
     fclose(fp2);
    exit(0);
}                 



東北津波Sim作成備忘録 01.Apr.2011の続き,海底地形作成

GMTのインストールが終わったので,スマトラ津波海底地形備忘録より
下記あたりを参考にするが,これ気をつける
まずこれは
#! /bin/csh
であることに要注意!
bashだと
http://www.fireproject.jp/feature/bash/basic/variable.html#0
にあるように変数にダイレクトに数を入れるが,そのとき=の左右にスペース を入れてはならない!
これ嵌った!




#! /bin/csh
# make color contour map (gradation + contour)with scale bar
# http://ofgs.ori.u-tokyo.ac.jp/~okino/gmtscripts/colcnt_grad.htmlよ り改変 
# for INDIAN Ocean region                29.Dec2004   Y.Okamoto

set path = /home/seagull/GMT/GMT4.0/bin

set region = 78/103/-2/23                         # map region INDIAN Ocean
set proj = M52                                    # map projection and scale
set boundary = f1a10g10WSNE                        # boundary tick info
set reso = i                                       # coastline resolution
set grdfile = SUMATORA.grd                            # input grid bathymetry
set cptfile = INDIA_rel2.cpt                       # color table
set cont = 500                                    # contour interval
set anot = 1000t                                   # anotation interval (transparent)
set limit = -8000/4000                             # min an max value for contour
set psfile = SUMATORA.ps                         # output postscript file name
#set scaleloc = 10.5/3/6/0.2                       # scale bar location
set scaleloc = 10/-1.3/16/0.5h                      # scale bar location horizontal
set scaletick = 'f1000a2000g1000:Bathymetry-Topo:' # scale bar tick info
#
#makecpt -Chaxby -T-10000/0/250 -Z > $cptfile
#

grdimage $grdfile -Y5 -X7 -R$region -J$proj -C$cptfile -K -V > $psfile
#-Y-X adjust the origin point
grdcontour $grdfile -R$region -J$proj -C$cont -A$anot -W1a2 -L$limit -K -O -V >> $psfile
#psscale -D$scaleloc -Y-2 -B$scaletick -C$cptfile -K -O -V >> $psfile
#pscoast -R$region -J$proj -D$reso -W2 -G220 -K -O -V >> $psfile
psbasemap -R$region -J$proj -B$boundary -K -O -V >> $psfile
psscale -D$scaleloc -B$scaletick -C$cptfile -O -V >> $psfile
#gv $psfile


東北津波Sim作成備忘録 01.Apr.2011
 昨日から計算させていた東北海岸に近づいた画像に朝から番号を入れて動画処理.
番号入れは次のシェルスクリプト

#!/bin/bash
###############################################################################
#
#    ImageMagickを利用してppm画像にタイトルや文字を埋め込むスクリプト
# $convert -font fontdirectry -fill blue -pointsize 18 -draw 'text 200,80 "comment"' input.jpg output.jpg
# http://www.asterisk-works.jp/wiki/index.php/ImageMagickメモ より
# Y。Okamoto 29.Mar.2011
###############################################################################

FONT=/home/seagull/.fonts/lxmgoth.ttc
#FONT2=/home/seagull/.fonts/M+1P+IPAG.ttf
FONT2=/usr/share/fonts/truetype/freefont/FreeSans.ttf
COLOR=white
COLOR2=yellow

DRAW_NAME="text 40,940 '東北津波 Simulation by Y.Okamoto 1st Apr.2011'"
mkdir out_images
#declare -i sec

for fname in ./*.ppm ; do

    #画像の経過時間の取得
    sec=$(echo $fname  | cut -c13-16 | bc )
    min=$(((${sec} * 10) / 60))
    minf=$(printf %3d ${min})
    mod=$(((${sec} * 10) % 60))
    modf=$(printf %2d ${mod})
    echo ${sec}   
    echo ${fname}

    #画像への挿入
    DRAW_SEC="text 100,40 '${sec}'"
    DRAW_MIN="text 1000,40 'Time= ${minf} [min] ${modf} [sec]'"
    convert -font $FONT -pointsize 12 -fill $COLOR -draw "${DRAW_NAME}" -font $FONT2 -pointsize 20 -fill $COLOR2 -draw "${DRAW_MIN}" $fname ./out_images/${fname}
done

あと,動画処理は
ffmpeg -r 10 -i Tohoku_v10c_%04d.ppm -sameq Tohoku_v10c.avi
でOK.

あと,gmtの仕込み.
まずsynapticでgmt本体とnetcdfを入れる.次にGSHH_full関係は下記より

 あと,gmt関 係.synapticでgmt**をすべて入れたあと,10/27の日記より,

ftp://ftp.soest.hawaii.edu/gmt/4/GSHHS_full.tar.bz2
ftp://ftp.soest.hawaii.edu/gmt/4/GSHHS_high.tar.bz2
の2つをもらってきて,これを展開.
/share/coast配下に海岸線.cdfが出来る.
あとこれをUbuntuのgmtをsyapticで入れたときのライブラリの格納純正ディレクトリである,
/usr/share/gmt/
配下に
/coast以下のサブディレクトリをコピーすることでbinned_GSHHS_f.cdfなどのファイルが格納される.これであとは
export PATH=$PATH:/usr/lib/gmt/binなどとgmtのコマンド群のディレクトリにパスを通せばOK.(このパスは各スクリプトの最初に 書くのでここでは.bashrcなどには入れない.


このうち地図のfullはファイル名が変わっているのでHawaii大学の GMT本拠で探すこと.

ftp://ftp.scc.u-tokai.ac.jp/pub/gmt/GSHHS2.1.1_full.tar.bz2
が最新みたい.

4年間の自宅PCのスペック を日記(Linux_Tips2)から拾いあげる.
 念のため,自宅PCのス ペックは

CPU Intel Core 2 Quad Q6600 確か3万円ちょい (pc1's  特価品)
MB Gigabyte: GA-965P-DS3P(rev.3.3)           12800-(天王寺Sofmap開封品)
メモリ  Pulsar DCDDR2-4GB-800 (PC2-6400 2GB 2枚組) 8690- (pc1's 特価品) 
GB  Radeon: X1950GT                               13800-(T-Zone通販,平行輸入品)
HDD 日立500G+サムソン400G(いずれもSATA) 11770-(BestDo)と手持ち
  +日立500G 10880- (Sofmap特価品)
光学ドライブ LG:GSA-H44NBL(DVDマルチ)     4780-(PC-1s)
キーボード 手持ちの富士通製
ケース ENERMAX:「ECA3052 - BS」         7980-(Sofmap)
電源 Scythe:CoRE PoWER 500W           4780-(フレンズ) 
おまけでモニタが
 ACER  AL2623Wtd  85800-(日本橋のSofmap,2007年5月)


結構高かったことがわかる.HDDとグラボはその後バージョンアップ.HDDは1TBへ.グラボはHD4870へ.


東北津波Sim作成備忘録 31.Mar.2011
 朝からUbuntu64bitに開発環境を仕込む.
まず
sudo apt-get install build-essential
さらにこれだけでは


error: X11/X.h: そのようなファイルやディレクトリはありません
と言われるので,
sudo apt-get install libx11-dev
あとeggxのインストール時は
ln -sf Makefile.linux64 Makefile← 64-bit Linux の場合
とあるのでこれを実行してmake,make install
これでやっとeggでコンパイル可能
egg Tohoku_bt10.c -o Tohoku_bt10
これで海底地形を作成.あまり陸上が海面から上がらないようにした.
    if (h[i][j]==0)        /*  lf[i][j]==0 causes bug  */
        ht=30500;          // ←ここ
    else 
      ht=26000-h[i][j]*3;

 このあと幾つかのppmファイルをffmpegでavi化.もうppm2fliは用済みになりそう.そのあと手垢のついた古いFILCOの白のキーボー ドの掃除.あと


東北津波Sim作成備忘録 30.Mar.2011
 1日計算させてfl8とfl10をで止めて、レンダリング。あとやっとAnthyの日本語入力設定表示のバーの出し方がわかる.目入バーの立ち入り禁止 のマークから設定を選択して,あとアクティブで表示を選択するとOK.見慣れたバーが日本語変換のときだけ出てくる.これでさらにAnthyの設定で,. を選ぶ.
津波Sim実行ファイル1個分だと大体1画面作成に50秒かかる.これは断層モデルに修正を加えない(v10)もので4時間分を作成(約1昼夜).
あと今Povrayのレンダリングを2個分,津波Sim1個分でCPUは3.4GHzに張り付き.CPUメーターは大体下から4割くらいのところ.かなり 余裕があることがわかる.レンダリングを始めてからの津波Simの方の画像作成速度は1画面54秒と若干増える.
 ここで,HDDをもう1本買いに日本橋に走る.BestDoでWesternDigital WD20EARS SATA 2TB バッファ64MB 6540円はほぼ同じ.上記計算が一応1000画面分くらい完了したので,一旦停止.HDDを取り付けて,CDより起動しOS の再インストール.今度はパーティションを/usr/localにも当てる.
/boot
/
/usr
/usr/local
/home
で/homeはフォーマットせず.計算ファイルなどを保存.
さらに新しいHDDの方はsdbに認識されたので,これを
/sci
/data
で半々にして作成.
あと例によって日本語化のあと,いくつかのアプリケーションをインストール.とちあえず今日はここまで.

 このあと自宅で次の作業
まず南海連動津波のレンダリング画像のアニメ化にffmpegを使う方 法を発見.これだと画質が落ちない!しかも再生が簡単な汎用のaviができる.
http://opensourceaki.blogspot.com/2007/10/ffmpeg_19.html
ここからの情報.
まず連番ファイルもぴったし.とりあえず時刻表示を入れたあと,

ffmpeg -r 10 -i Nankai_v7_%04d.ppm -sameq Nankai_v7c.avi


でOK.ppm2fliと同じか少し速いくらい.
-r 10 は1秒間何コマか.5にすると少しカクカクす る.
-sameq で同じ画質となる.これは便利.動画を逆 に静止画にすることもできるみたい.


東北津波Sim作成備忘録 29.Mar.2011
 津波Simは波高の盛り上がりを60秒分とする.新PCでの計算は実行ファイル2個で1画像分の出力にちょうど約1分。3つにすると1分10秒あまりと なる。これでもCPUモニタはときどき1.6GHzに落ちる。
あと画像に文字を入れるスクリプト
これでやっと完成と思いきや(これでとりあえずテストは成功)ところが、ファイル番号を0001からスターとすると
./Tohoku_v8_0006.ppm
./Tohoku_v8_0007.ppm
./Tsunami_number.sh: line 22: 0008: ベースの値には大きすぎます (error token is "0008")
とエラー。これではまる。
http://stackoftips.blog79.fc2.com/blog-entry-14.html
ここにあるとおり、これは8進数の罠!つまりfnameの変数に入る"0008" が8進数では許されないと言っているわけ!

ここから半日はまる!!!
http://www.mail-archive.com/bug-bash@gnu.org/msg06356.html
などネット上にやまほど話題はあるが肝心の解決法がない!

printfで定義したりしたが肝心の
    sec=$(echo $fname  | cut -c13-16)
の段階でシェルがどうしても8進数と解釈してしまう。
ゼロサプレスで検索したりと往生したあげく

結局みつけた解決策は
bc コマンドを用いる方法。
http://d.hatena.ne.jp/jitsu102/20091119/1258634572
からのヒント

    sec=$(echo $fname  | cut -c13-16 | bc )

このbcコマンドをはさむだけ! これで見事解決!ここまで6時間!!

#!/bin/bash
###############################################################################
#
#    ImageMagickを利用してppm画像にタイトルや文字を埋め込むスクリプト
# $convert -font fontdirectry -fill blue -pointsize 18 -draw 'text 200,80 "comment"' input.jpg output.jpg
# http://www.asterisk-works.jp/wiki/index.php/ImageMagickメモ より
# Y。Okamoto 29.Mar.2011
###############################################################################

FONT=/home/seagull/.fonts/lxmgoth.ttc
FONT2=/home/seagull/.fonts/ume-pgo5.ttf
COLOR=white
COLOR2=yellow

DRAW_NAME="text 40,940 '東北津波 Simulation by Y.Okamoto 29th Mar.2011'"
mkdir out_images
declare -i sec

for fname in ./*.ppm ; do
    #画像の経過時間の取得
    sec=$(echo $fname  | cut -c13-16 | bc )   # このbc が重要!octalを避ける

    min=$(((${sec} * 10) / 60))
    minf=$(printf %3d ${min})                    #  逆に0埋め
    mod=$(((${sec} * 10) % 60))
    modf=$(printf %2d ${mod})
    echo ${sec}   
#    echo ${min}   
    echo ${fname}
    #画像への挿入
    DRAW_SEC="text 100,40 '${sec}'"
    DRAW_MIN="text 1000,40 'Time= ${minf} [min] ${modf} [sec]'"
    convert -font $FONT -pointsize 12 -fill $COLOR -draw "${DRAW_NAME}" -font $FONT2 -pointsize 20 -fill $COLOR2 -draw "${DRAW_MIN}" $fname ./out_images/${fname}
done



その後の東北津波Sim作成備忘録 28.Mar.2011
 断層モデルで波高が負になるとことをとりあえずネグっているが,これは真実でないのでこれをどうするか.確かに津波到達前に暴れなくなったが.あと画像 に文字を入れるのは,
montageコマンドが
http://dqn.sakusakutto.jp/2009/02/imagemagick_1.html

convertを使うのが
http://www.asterisk-works.jp/wiki/index.php/ImageMagickメモ
で後者の手法を導入.これで何とかなりそう.ppmもOK.日本語もOK.


それから,Povrayでレンダリング画像を消すのは
-D オプション,見せるのは+D ということで.

ここで本日の作業.下記PCの組み上げ
2011/03/28 自作PCスペック

CPU CORE i7 2600無印                 24940円(PC1’s)
マザーモード ASRock P67 Pro3              12980円(PC1’s)
グラフィックボード 玄人指向 Radeon RH5670-E1GH/AC   6980円(PC1’s)
メモリ CFD ELIXIR W3U1333Q-4G×2           5980円(Sofmap天王寺特価)
HDD  WesternDigital WD20EARS SATA 2TB バッファ64MB 6450円(PC1’s)
Drive LG BH10NS30 バルクPowerDVD付き (Serial ATA)10860円(PC1’s)
電源 CorePower Core-4 600W              5350円(PC1’s)
ケース Zalman Z9-Plus                 5750円(PC1’s)

計 79290円 とまずまず.
これに三菱の23インチフルHDのモニタ(Amazonで2万弱). しめて10万弱.

組み上げて一発で完動.Ubuntu10.10 Amd64bit版に日本語環境導入.


宝永津波Sim作成備忘録 23.Mar.2011
 初期水位で瀬戸内海がざわつくのを防止するために,まず初期値の海面が下がる部分のデータを削除.
次に上昇する部分をいきなり初期値にするのではなく,40カウント(20秒)後に計算値に上昇するようにリニアーに上げることにした.
            dep=atoi(depth);
            if (dep>0)
              dep=0.0;
            h[i][j]=-dep; 

    //      if (hu[i][j]<=0 && hv[i][j]<=0 &&  hu[i+1][j]<=0 &&  hv[i][j+1]<=0){ 
        if (h[i][j]==0.0){
             lf[i][j]=1;
             w[i][j]=0.0;
             wi[i][j]=0.0;

        if (t <= 40){
        w[i][j]=w[i][j]+wi[i][j]*1/40-DT/DX*(hu[i+1][j]*u[i+1][j]-hu[i][j]*u[i][j])-DT/DY*(hv[i][j+1]*v[i][j+1]-hv[i][j]*v[i][j]);}
        else {
           w[i][j]=w[i][j]-DT/DX*(hu[i+1][j]*u[i+1][j]-hu[i][j]*u[i][j])-DT/DY*(hv[i][j+1]*v[i][j+1]-hv[i][j]*v[i][j]);}

この部分.
あと,pgmを書くときの縦倍率を1000から一旦500に下げたがやはり1000に戻す.
一方,海底地形のpgmを標準水位をはさんで上下に少し余裕を取る.(海底が露出しないように)

あと,何度か初期水位で陸地に水がかぶってしまうバグが出たが,最終的に上の青の部分の処理にすることで解決.特にオレンジ色のところ.
さらに描画ルーチンをすべてコメントアウト.
これで約1日24時間待たずして,1440ファイル計算終了.同時に6時間遅れて朝から始めたこのレンダリングもさきほど終了.ところがここで大失敗.よ くばって1600x1200でレンダリングしたが,これがまずかった.
ppm2fliは何と1280x1024までしか対応していない!

-g widthxheight
This defines the width and height of the display_area (allowed range: from 10x10 to 1280x1024). If an odd value of width is specified, it is automatically incremented by one. A particular FLI player may only support a limited set of resolutions. In principle, VGA resolution (320x200) should always work. For players supporting the newer style of FLIs (FLCs) associated with the magic number 0xAF12, 640x480 should also work.


ということ.これは今晩,レンダリングし直しということに.



宝永津波Sim作成備忘録 21.Mar.2011

 同じ環境で宝永津波バージョンを作ることにした.四国沖から東海沖近くまでを1枚の断層に設定.
これをpgmで出力.
 現在PovRayでppmにレンダリングしているが,どうも初期値の地殻変動モデルを瞬間に与えているので,瀬戸内などで最初にばたばたと波がでてしま う.これをゆっくりとした10秒くらいの変動に直す必要があると思う.この改良バージョンを早急に手がけたい.
あと断層モデルもできればその後発表された精緻なもの(東北の場合)に直したい.

 あとppm2fliを下記よりダウンロード
http://vento.pi.tu-berlin.de/STROEMUNGSAKUSTIK/SOFTWARE/ppm2fli/main.html
ppm2fli-2.1.tar.gz (source of ppm2fli and unflick, man pages, etc.; 46kB)
を展開して,makeすれば実行ファイルができるからそれを
sudo cp ppm2fli /usr/local/bin
でコピーする.これでできたppmファイルを動画に束ねることができる.
束ねるコマンドは
http://www.tennoji-h.oku.ed.jp/tennoji/yossi/Sumatra/sumatora_tsunami.html
に載せておいた方法で
ls *.ppm > ppm.list
ppm2fli -g1024x768 +ox 0 +oy 0 -s40 ppm.list Tohoku.fli
などとすればOK.-s40の数字は大きくすればゆっくりになる.



東北津波Sim作成備忘録 17.Mar.2011

幾つかの試行の末,とりあえずバージョン完成.povファイルの地形と波高の組み合わせが最初なかなかうまくいかなかった.陸地のフラグのたて方がおかし かったみたい.とりあえず,bt-pgm系で陸地を500単位上げて30500(65535のうち),逆に海を26000ベースと4000(65535の うち)下げた.
これで浅瀬が変に露出することはなくなった.

あと,水深フラットモデルでは,海岸から妙な波が出現するが,よく考えると陸域に波源が及んでいるためのものみたい.最初に岸辺で水が上下するがいきなり 深いので速く伝わるのが見えているみたい.これたぶん問題なし.

あと,画像に経過時刻を入れるので思案.Povrayからテキスト描画で入れるのはあまりにぶさいくなので却下.
あとImagemagickのconvertコマンドだと,コマンドラインから入るので自動化できそうと踏む.
http://imecat.web.fc2.com/desktop/imagemagick.html


文字を入れる

フォントの指定は、フォント名やフォントのパスを指定する。「draw」オプションで描画する内容を指定する。以下の例では、テキストで書き出し位置が (200,20)から始まり、二重引用符で囲まれた文字列を描く。描画コマンド内に二重引用符が必要となるので、単一引用符が使用される。また、二重引用 符内に二重引用符を使用することはできない。
	$convert -font /usr/X11R6/lib/X11/fonts/TrueType/kochi-gothic.tty \
-fill blue -pointsize 18 -draw 'text 200,80 "presented by NASA"' \
test.jpg test-text.jpg

という記述を参考にする.

また複数の画像ファイルへの処理は,
http://www.sodan.ecc.u-tokyo.ac.jp/2007/tips/imagemagick_convert.shtml

複数ファイルに対する操作もシェルと組み 合わせてラクラク
を参照.



これはまた明日.
fltの自動レンダリングの途中で144番めのとき,なぜか画像にゴミが入る.一旦止めてやりなおしたが番号の接続があまりうまく行かず寝るときに最初か らやり直すことにする


東北津波Sim作成備忘録 12.Mar.2011

まず,南海Simより,岸本さんのファイルを切り出すスクリプトgrdcut.sh
japan250m.kita.grdのかなりの部分を使用.

#!/bin/bash
#
#  script file for Tohoku250m.xyz
#
#      2011/03/13
export PATH=$PATH:/usr/lib/gmt/bin   # すでにgmtのコマンドにパスが通っているときは不要
grdcut /home/seagull/Desktop/2011_Tohoku_tsunami/japan250m.v.1/netCDF_new_format/japan250m.kita.grd -R138/148/34/45 -GTohoku250m_5.grd
grd2xyz Tohoku250m_5.grd >Tohoku250m_5.xyz

なお,このファイルは水面下はマイナス,陸上は+の値で水深と地形のデータが両方入っている.
-----------------------------------

次に津波Simソースコード本体は
津波モデル計算 備忘録   2009年末より

津波コードで,格子の定義を変 更.
今までi,jの交点に置いていた   
h[i][j] の位置を w[i][j]と同じ場所で定義.これで計算がすっきりした.

  /*  land flag   */
  for (j=0;j<=JMAX-1;j++){
    for (i=0;i<=IMAX-1;i++){
//      if (hu[i][j]<=0 && hv[i][j]<=0 &&  hu[i+1][j]<=0 &&  hv[i][j+1]<=0){     →これ以前のもの
     if (h[i][j]<=0.0){                                     →これが今度の定義
        lf[i][j]=1;
        w[i][j]=0.0;
      }         
      else
        lf[i][j]=0;
    }          
  }

ファイルの書き出しの部分を格子全部ではなく,陸地にもっとも近い海の格子を検索して岸辺フラグをたて,その場所のみ波高データを書き出すように改める.
  for (j=1;j<=JMAX;j++){
    for (i=1;i<=IMAX;i++){
     if (h[i-1][j]<=0 && h[i][j]>0)  
        sqf[i][j]=1;        
      else
        sqf[i][j]=0;
    }          
  }
         sqf[0][0]=0;

の両方を採用.またコードを整理.
さらに東海から続けてきた線書きバージョンを改め,ドット書きに変更.この場合,波高は色で表現.その部分が下記.              

            if (lf[i][j]==1)
                newcolor(wd,"black");
            else {
                g=(int)(w[i][j]*10.0);
                if (g>128)
                    g=128;
                if (g<0)
                    g=0;
                    newrgbcolor(wd,128+g,128,128);
            }
これで津波の波高の高い部分は背景の灰色の上に赤い色で表示される.逆に低い部分は青色で表示.

断層モデルは,東大地震研古村さんなどが引用したUSGSモデルと,地震調査推進本部のものを参考にした.
断層幅160km
断層長500km
埋もれ深度10km
傾斜18度西
走向N18度E
スリップ16m
スリップ方向:走向に直交

#define GS 0.25         /*  km/grid  */
#define LD 1.0    /*   */
#define MU 1.0    /*   */
#define W 160.0         /* fault dimension(width)[km]  */
#define L 500.0/2.0    /* fault dimension(length)[km] */
#define DD 10.0        /* fault dimension(burried depth)[km]  */
#define D 0.016        /* fault dislocation[km]  */
#define K 0.5          /*      */

#define DL 18.0*0.01745      /* fault dip */
#define LM ((90+0.0)*0.01745) /* (90+lm) fault slip direction */
#define PH ((90-18.0)*0.01745) /* (90-ph) fault strike from North(clock-wise)*/