2012/02/11(土)最近の趣味のプログラミング動向

金曜日の夜という物はやはり解放感があって良いです.

前から,趣味と仕事半々でプログラムを書いています.
これからも書き続けると思いますし,
最近やったことを簡単に紹介してみようかと思います.
主にC言語で開発してます.処理系はWindows版のgccです.

最近書いたプログラムですが,
主な物でいうと,誘電体多層膜の分光特性の計算をするやつを書きました.
仕事柄,誘電体多層膜の分光特性の計算法をマスターしておく必要があり,
その勉強もかねて,簡単な条件での計算に関してはプログラムを作り終えました.
膜構成を書いたファイルを読み込んで,計算して,グラフを描画+画像で保存するものです.
任意の膜構成(1層→200層以上で厚みも各層バラバラ可)での分光特性を算出できます!
業務で使っているソフトの計算結果と比べて,その妥当性とかも検証しました.
個人的にはなかなか良い出来です.
次は入射角度と物質の吸収を考慮し,
ガラス基板の表裏面反射も考慮した計算を行うプログラムを書こうと思ってます.
目指せ,市販ソフトと同等以上の性能のプログラム完成!
勉強+趣味でやってるんでいつできるかわかりませんがね.

あとは業務用のジグソフトをちょくちょく書いている感じです.
こういうものはある意味での資産だと思います.
完成度が低いので今は自分専用ですが,
ゆくゆくは職場の人にも使ってもらえるレベルに持っていきたいです.

他には構想段階ですが,
有限要素法とFDTD法を使った電磁場解析プログラム作成を目論んでます.
学生時代からやってみたいと思っていましたが,
資金力が学生時代よりも向上した関係で,
良い本をたくさん手元に置けるようになったため,実現に目処がついてきました.
今はRitz-Galerkin法の算法を勉強しているところです.
学生時代,数学をまじめにやらなかったので結構躓いてますが,
しがみついて前に進んでいくつもりです.

プログラムを書くことだけでなく,最近また開発環境を整えることも始めました.
gccのバージョンアップ作業もそうです.
今まではversion 4.5.2を使っていましたがそれを4.6.1に更新したのです.
そうしたらOpenMPオプションのバグが直ってました.かなりこれは重要です.
素直にVisual C++ とICCで計算しろという話かも知れないですが,
個人でも会社でもあまり資金的に余裕がないので,gccな訳です.
OpenMPは並列処理を行う仕組みでして,これで並列計算が試せます!

あと,ライブラリを増やしました.
クロスプラットフォームのwxWidgetsなるGUIライブラリです.これはC++です.
今は基本的にコマンドラインで動作するプログラムを書いていますが,
徐々にGUIアプリも作れるようにならなければなりません.
特に有限要素法のプログラムは高度な可視化も必要です.その布石です.
このwxWidgetsはOpenGLやグラフ描画用のクラスもありますので,有用だと判断しています.

それにしてもフリーソフトでプログラムを書くのは面白いが大変です.環境構築が特に.
wxWidgetsのインストールも,数日間は夜の時間を潰しています.
ま,これからも気楽に進めていこうかと思います.