ラベル 数値計算 の投稿を表示しています。 すべての投稿を表示
ラベル 数値計算 の投稿を表示しています。 すべての投稿を表示

2013年10月19日土曜日

数値計算(流体):粒子法のシミュレーション動画

9月の終わり頃, データの整理をしていたら, 大学院時代に作成した粒子法のシミュレーション動画が出てきた.
初めて粒子法のプログラムを作ったときは、青子守歌さんのダムブレークシミュレーションの動画を見ながら, 『自分のプログラムで動かしてみたい!』ってモチベーションを維持してたのを思い出した.
あれから3年近く経ったけど, (自作プログラムの)粒子法動画ってあまり増えてなかったから, ニコニコ動画にアップロードしてみた.
ついでに差分法で計算したK-H/R-T不安定性のシミュレーション動画もアップロードした.










昔のデータが出てきて当時のプログラムを眺めてたら, 『やっぱり数値計算面白い!』って改めて思った.
粒子法で翼まわりの流れをシミュレーションするのを目標に勉強し直そうと思う.

2013年9月21日土曜日

Tcl/Tkを初めて触った

HDD内のファイルを整理していたら, 大学/大学院時代に作成した数値計算のプログラムを見つけた. 懐かしくなってソースを眺めていたら, 数値計算したいという思いが湧き上がってきた.

当時のプログラムは, 主にC言語で記述してあり, 計算結果をGnuplotで可視化する代物なのだが, 初期値や条件を ソース内にベタ書きしてあるせいで, 値を変更すると再コンパイルが必要だった. さすがにこのままだと不便なので, まずはこの改良から取り掛かることにした.

改良の方針は以下のようにした.
  1. 初期値/各種条件の入力フォームを作成
  2. 物理量/数値誤差の表示欄を作成
  3. その他ログの表示欄を作成
  4. グラフ等の可視化は, Gnuplotで
  5. 【課題】OpenMPで並列化(主に逆行列ソルバー部分)
1~3をGUIで実装するつもりではあるが, 私はGUIプログラミングに対して, 苦手というか面倒臭いという思いが強かったため, 今まで手を出してこなかった(大学3年のころjava/swingで似たようなことして非常に面倒臭い思いをしたせいだろう).

そこで, 今回は以下の条件で自分に合った言語を見つけることにした.
  • マルチプラットフォーム対応
  • C言語と連携が可能
  • コーディングが簡単
ググっていろいろ放浪した結果, Tcl/Tkにたどり着いた. Tcl/Tkという単語は聞いたことあったが, 今まで触ったこと無かったし, 研究室で日焼けして色あせた入門書を見かけていたから, 単なる古臭い言語だとばかり思っていた.
しかし, インストールからHello Worldまでやってみたところで, お手軽にGUIを表示させられることを実感した. その時のメモを残しておく.

Tcl/Tkのインストール

mingw-getでインストール.
$ mingw-get update
$ mingw-get install mingw32-tcl mingw32-tk

Tcl/TkでHello World

適当に.
wm title . "Hello World"
wm geometry . "480x240"
label .label -text "Hello, World! with Tcl/Tk."
pack .label -side top -anchor w

Tcl/Tkスクリプトの実行

Tcl/Tkは, 「wish」コマンドを使うそうだ.
$ wish ./hello.tcl

実行結果

でた!

次は, C言語との連携にチャレンジ.