Tech Note

wxWidgetsのインストールは多くの場合は簡単です。Windows環境では、Visual Studio用のファイルが用意されており、所望のライブラリを作成することが出来ます。また、多くのLinux環境では、プレインストールされています。MacOS Xでも実はシステムにインストール済み(10.5で確認)ですが、古いバージョンでした。2012年10月現在、wxWidgetsは2.9がリリースされていますが、既に十分に枯れた2.8もまだ実用になります。

FreeFEM++は、フランスのパリ第6大学のJ.L.Lions研究所やINRIAで開発が進められている有限要素法のためのインタープリター環境とでも言うべきものである。日本では、広島国際大学の大塚厚二教授がプロジェクトに参加されていて、啓蒙活動を進められている。筆者も学会で隣に座られた教授に直接啓蒙されて、マニュアルまでいただいたという様な経緯がある。

1次元から3次元まで解くことが出来る環境であるが、2次元のマイクロストリップ線路の準TEMモード解析を例にして説明する。

wxWidgetsは、グラフィカルユーザインターフェースを構築するための多くのOSプラットフォームを対象としたC++のライブラリです。かなりアクティブに活動しており、ユーザコミュニティも活発です。日本語による解説はあまり見かけることはありませんが、英語でのサポートは、ボランティアベースですが、かなり手厚いです。バージョン2.6以降、ユニコードの実装も進んでおり、日本語などのマルチバイトコードにも不具合は見かけなくなっています。

wxWidgetsが活躍するのは、メニューを表示させてユーザに選択させたり、警告ダイアローグを表示させたりというコンピュータとユーザを橋渡しする部分の設計・開発の部分です。デザインをWYSWYGで作成し、プログラムコードを自動的に生成してくれる、いわゆるRADツールも開発され、無償・オープンソースで提供されています。最も良く使われているのは、wxFormBuilderというツールです。若干、不安定なところもありますが、素晴らしいツールです。

マルチプラットフォームライブラリなので、同じコードを異なるOS環境下で動作させることが出来ます。その時に困るのが、開発環境が全く異なることが多いと言うことです。wxWidgetsにはたくさんの機能の異なるライブラリが存在し、またコンパイルオプションやリンクオプションも少なくありません。手作業でこれらの設定を開発環境毎に作るのは大変です。そこで、おすすめしたいのが、Kitwave Inc.の提供している、cmakeというツールです。このツールを使うと、かなり作業が楽になります。各プラットフォームでのメジャーな開発環境のプロジェクトファイルも作成してくれます。

Electro Magnetica Numerica (EM)は、広義ではFinite-Difference Time-Domain法を用いたシミュレータです。Maxwell方程式の離散化手法は、正確に言うと、Thomas Weiland教授(Technische Universität Darmstadt)の提唱した、Finite Integral Technique (FIT)を用いて離散化しています。EMが他のシミュレータと最も異なる部分は用いている格子が非構造格子系の技術を用いているところです。このレポートでは、その独自の格子についてご紹介します。

Macで様々なUNIX系のオープンソースソフトウェア(OSS)をインストールするのは大変な事です。インストール作業が楽しい方は別として、様々必要なライブラリを集めてインストールするのはかなり時間がかかります。 商用UNIX系やLinux系では予めバイナリがメンテナンスサーバに用意されていて、簡単にインストールできる仕組みが出来ています。rpm, yum, zypperなどがそれです。MacがUNIX系になったので、このようなOSSを管理してくれるプログラムが幾つかボランティアの手によって作成されました。Finkはその内の一つになります。
Finkはとても便利です。いろいろなOSSアプリが様々なボランティアの手によってメンテされています。アプリの必要とされるライブラリなども用意されていて、依存するライブラリも自動的にサーバからダウンロードしてくれます。初期の頃は全てソースコードから自分のMac上でコンパイル・リンク(ビルド)作業がされていましたが、バイナリインストールも大分用意されるようになって、インストール時間が短縮されました。
便利なFinkですが、時々、自分の設定とは異なる場合があります。ソースコードからビルドする際、オプションはそのアプリのメンテナーの設定が反映されます。例えば、Open MPIパッケージは、2017年4月3日現在、1.10.4がインストールされますが、これはMPI_THREAD_MULTIPLEスイッチがオフの状態になっています。これをオンにしたい場合、自分でFinkとは別にインストールしなければならなくなってしまいます。
そこで、ここでは、そのオプションを変更する方法について、解説いたします。
Finkのパッケージは全て、ディレクトリ、

/sw

以下に存在します。様々なディレクトリが内包していますが、

/sw/fink/10.9-libcxx/stable/main/finkinfo/devel/openmpi.info

というファイルが存在します。この中には、このopenmpiというパッケージの依存情報や、configureのオプションが記述されています。この記述の内、

ConfigureParams: --preix=%p \
--datadir=%p/share/doc \
--sysconfdir=%p/etc/%n \
--sharedstatedir=%p/var/%n/shared \
--localstatedir=%p/var/%n/local \
--libdir=%p/lib/%n \
...

のブロックに、

--enable-mpi-thread-multiple

を追加します。その後、

%> fink rebuild openmpi

とすることで、新しく追加したオプションが反映されます。
確認のため、

%> ompi_info -c | grep -i thread
ConfigureParams: Thread support: posix (MPI_THREAD_MULTIPLE: yes, OPAL support: yes, OMPI progress: no, ORTE progress: yes, Event lib: yes) FT Checkpoint support: no (checkpoint thread: no)

となり、無事MPI_THREAD_MULTIPLEがyesになりました。

その他の記事...

サブカテゴリ

FaLang translation system by Faboba