波動方程式の数値シミュレーション

1次元の場合みたいに解析的に解けるのかと思ったら解けなかった(解くのは容易ではないらしい)ので,例の本に従って数値シミュレーションした.

yuntan/WaveRoom · GitHub

なかなか思うように進まずここまで時間がかかってしまったので,できたときには飽きてた.なんか別のことがしたい.

Qtは便利だけどGUI作るのはやはりめんどくさかった,PythonでVispyを使ったら同じようなことが簡単に出来ていたかもしれない.まあopenGLから何から全て自分でやったのでいい経験になったのか…?

あと初期速度分布の使い方がわからないんだけど…

clangでQt

GCCに吐かせたQtのプログラムのバイナリだと起きないのに,Clangに吐かせたバイナリを実行するとSIGSEGV(Segmentation fault)するという事態に遭遇した.落ちる箇所は

  connect(calc, &WaveCalculator::calcFinished, [=]() {
    timer->stop();
    delete faces;
    faces = calc->result();
  });

他にもシグナルとlambdaをconnectしている箇所はあるのに,ここだけダメだったというのも不思議だ…

まあGCC使うべきなんだろうけど


追記

アプリケーション出力を見ると

QObject::connect: invalid null parameter

というメッセージが,つまりcalcかnullなのにconnect使用としてるからだった.直したらClangビルドでも落ちなくなった.自分のミスではあるんだけど,メッセージが出ずに落ちるのはバグ報告したほうがいいんだろうか…

波動方程式の解析解シミュレーション(完)

やったぜ

つらかった

http://nbviewer.ipython.org/gist/yuntan/b904411ca3aa7ffa1922

波動方程式の解析解シミュレーション

波動方程式の解析解シミュレーション(未完)

かなりつまづきながらだったができた.

http://nbviewer.ipython.org/gist/yuntan/b904411ca3aa7ffa1922

波動方程式の解析解シミュレーション

HaskellでLife Gameを作りたい人生だった

だった

参考にしようとしたリンクをとりあえず記しとく

IPythonでもplotのアニメーションがしたい!

学科の縦断合宿から帰ってきた.とてもエキサイティンな合宿だった(ウェイ大学生並みの感想).

まじめに話すと,神岡鉱山の3施設(SK, KamLAND, CANDLES)を見学させていただいたのだが,施設のスケールとロマンに圧倒された.院生の方とも話せたしどんな研究をなさってるのか知ることができたし,そのなかに特に興味のわく物もあった.見学する施設的に素粒子がメインみたいな合宿だったが,素粒子以外の分野の発表も色々聞かせていただけて,物理学科でも色々な研究テーマに進めるのだと分かった.とてもモチベーションの上がる合宿だった.(ちなみにとてもお金がかかっていたらしい.学科と学部の支援を使い果たゴホッゴホッ)

で,IPythonでプロットというとmatplotlibだけど,

http://nbviewer.ipython.org/github/ipython/ipython/blob/master/examples/IPython%20Kernel/Animations%20Using%20clear_output.ipynb

の方法では速度が出なかった.60fpsとまではいかなくとも30fps程度のアニメーションはしたいなーとうろうろ探していると,素晴らしい物を見つけた.

Embedding Matplotlib Animations in IPython Notebooks

matplotlibで描画したものを動画にして,それをvideoタグに埋め込んで使うようだ.このアイデアを使わせてもらおう.

進捗が良くない

進捗が良くない.

あの青い山みたいなのを動かしたいんだけどうまくいかない.

QThreadを使ってデータを更新してやることを考えた.

QThread Class | QtCore 5.3 | Documentation | Qt Project

QThreadを継承したWaveCalculerを作ってそんなかで計算させることにしたが,データの共有が問題になる.

shared_ptr (C++11) - cpprefjp - C++ Library Reference

shared_ptrを使ってみた.

なかなか動き出さない.QThreadの使い方が良くないようだ.結局良く分からなかったので,QTimerで16ms計ってシグナルを飛ばしてもらうことにした.シグナルが飛んだら計算しGLWidgetを更新する.

f:id:yuntan_t:20140922192833p:plain

できた.結構かかった.CPUをすごく食う.1コアまるごと持って行かれる.