Libreoffice Writerで数式挿入+式番号の自動生成 [電子工作・プログラミング]

「fn」を入力してからF3を押すと、自動で中央配置にして、かつ式番号も振ってくれるらしい。

https://bipedu.wordpress.com/2012/12/20/automatic-numbering-of-the-equations-in-libreoffice/

で、式番号を参照するには、「メニューの挿入→フィールド→他のフィールド→相互参照→テキスト→参照テキスト」だそうです。参照はともかく、fnを記述してからF3とか難解すぎる。。。

でも、補って余りある便利さに思います。

10月22日19時46分
fartrip
コメント(0) 

Meepで四面体形状 [電子工作・プログラミング]

FDTD法電磁界シミュレータ Meepを久し振りに触ってみたところ、使えるgeometryが円筒、球、円錐、ブロック、楕円体しか見つからなくて、自由形状がつくれなくてもやもやしていました。メーリングリストを見ると、2次元ならブロックの断面をとって三角形が作れるので、任意の図形をDelaunay分割して表現できる、などとあったのですが、3次元ではできないようで。そこで、material-functionを定義する方法で四面体を作ってみました。



ただ、これが動作が遅い遅い。領域の判定部分ではなくて、epsilon-funcを使ったときのsubpixel-averagingに恐ろしい時間がかかります。設定で「eps-averaging?」をfalseに設定したのですが、なんだか言うことを聞いてくれず。(meep-1.3)

もう、かなりやる気なくしました。というか、3辺が任意方向の直方体が作れるのだから、同じ入力の四面体をgeometryに用意してくれていれば良いのに。python対応にエネルギーが注がれているのでしょうか。というか、pythonインターフェースならちゃんとできるのかなぁ?それか、ソースの「geom.cpp」あたりをいじればどうにかなるのだろうか。

10月15日25時54分
fartrip



コメント(0) 

MEEPから出力されたhdf5ファイルをParaviewで見る [電子工作・プログラミング]

FDTD法電磁界シミュレータMEEPでは、出力ファイルがhdf5形式で作成されます。サンプルにはpngに切り出して画像化する方法があるのですが、どうにも煩雑で見づらいということで、最近覚えたParaviewで見られないか調べてみました。

hdf5ファイルを見る方法自体はいくつか見つかって、例えば以下のページで紹介されていました。

http://bigvalley.hatenablog.com/entry/2015/11/19/115306

ただ、今回扱うファイルは、自由形状のメッシュというよりは規則的にデータ点が並んでいるStructured Gridにあたるので、どうやってポイントの座標を表現するのか悩んでいたところ、キーワードは「TopologyType="3DCORECTMesh"」と「GeometryType="ORIGIN_DXDYDZ"」ということが分かりました。

結局、以下のコード例のようにしてxmfファイルを用意したところ、無事に読み込みができてめでたしめでたし。

コード例:


参考ページ:
http://www.xdmf.org/index.php/Write_Xdmf
http://www.xdmf.org/index.php/Examples/imagedata

でも、x座標とz座標が入れ替わっているような気がします。「ItemType="Coordinate"」とか使えば訂正できるだろうか?

(10月15日追記:結構根が深そうな話です。
http://public.kitware.com/pipermail/paraview/2014-September/032267.html
とりあえず、xdmfの記述で「Spacing」を0.1 0.1 -0.1などにすれば、本来のxyz座標→表示上のzy(-x)座標として、プロットすることは出来そうです。ただ、Clipをとったりするとやはり挙動はおかしいです)

10月10日21時50分
fartrip
コメント(0) 

ParaViewで複素振幅のアニメーション [電子工作・プログラミング]

(追記 2019年10月20日)
「Programmable Filter」の各欄に実際に入力したスクリプトを記載しました。Paraview 5.1.2で動作を確認しています。

----------------------------------

ParaViewで複素振幅のデータを表示するとき、位相(時刻と言っても良いかもしれません)を少しずつ替えながら実部をプロットしてアニメーションにする、というのをやるとイメージが沸いてなかなか良いのですが、これをいざやろうとすると中々苦労しました。

僕の場合では、ParaView(もう少し言うとvtkフォーマット)での複素数データの取扱いが分からなかったので、実部と虚部で2つの系列のデータとして保存してあります。これらに時刻に応じた適当な位相をかけて足してやれば目的の値になるのですが、アニメーション表示時にこの「時刻」を取得するところが本当にわからなかったです。ParaViewには170MB超のpdfのリファレンスがあるのですが、関係すると思われるPython Calculator とか Programmable Filterとかの記述がほとんど無く。Webで断片的な情報を探ることしかできませんでした。で、結局いくつかのページを参照して、Programmable Filerを用いることで望みの動作ができました。

1.https://blog.kitware.com/defining-time-varying-sources-with-paraviews-programmable-source/
2.http://www.paraview.org/Wiki/ParaView/Simple_ParaView_3_Python_Filters
(参考として)3.http://www.paraview.org/Wiki/Python_Programmable_Filter

1,のページによると、(このページはPrograrmmable Sourceのトピックですが)「Script (RequestInformation)」にtime-varying dataである旨の記述をして、ParaViewに時間依存データであることを伝える必要があるようです。今回のケースでは元の計算結果データに情報を追加するので、Programmable Filterを適用します。Programmable Filterには似たような記入欄で「RequestInformation Script」というのがあり、ここに1.のページの「Script (RequestInformation)」と同様の内容を記述しました。注意として、Propertiesウィンドウの小さい歯車を押して、詳細表示にしておかないと「RequestInformation Script」は出てこないようです。

「RequestInformation Script」欄


さらに、2.のページの「Tetrahedra Volume (Filter)」を見るとInputのメッシュに新しいCell Dataを追加する方法がわかるので、これを参考にしながら、時刻に相当する「vtk.vtkStreamingDemandDrivenPipeline.UPDATE_TIME_STEP()」(1.のページに記載あり)を値に持つCell Dataを追加するようにProgrammable Filterの「Script」欄に適宜記述することで、全てのCell Dataに時刻の値を持つデータ(ここでは"time"という名前)を生成することができました。

「Script」欄


Propertiesの「Copy Arrays」にチェックを付ければ、時刻の値と当初のデータの両方を持った状態になりました。後はCalculatorなどで位相をかけた後の値を計算するようにし、ツールバー「VCR Controls」の再生ボタンをクリックすれば、アニメーションが表示されました。


できてしまえば何のことは無いのですが、ハマってたときには「sources → Time Source」とかにだいぶ時間を取られたりしていました。単純なことの割には苦労するものです。内部の動作というか大本のパラダイムを理解できていないからかもしれませんが。ともあれ、やりたいことができて満足です。

8月2日26時35分
fartrip

wave.gif



コメント(0) 

gmsh、ParaView覚え書き [電子工作・プログラミング]

【gmsh】
★周期的な3Dジオメトリを作成したいとき
単純な正方形状メッシュで構わないなら、
→ Transfinite Surface {22};
もしくは、 Transfinite Surface {22} Right;
通常のメッシュ形状が必要なら、
→ Periodic Surface 48 {8,23,16,21} = 44 {6,19,14,17};
※後者だと、borderの設定がよくわからない。特に符号の正負。
※Translate {1, 0, 0} { Duplicata { Surface{22}; } } とかも便利かもしれない

【ParaView】
★Cell Dataに値(変位など)を持つデータを「Warp By Vector」などで変形して表示したり、「Glyph」で矢印を表示したいとき
→フィルタ「Cell Data to Point Data」を適用
※むしろ、変形できない原因がCell Dataだと判ってしまえば、そのまんまのネーミング。

★csvファイルのデータを表示したいとき
→フィルタ「Table to Points」もしくは「Table to Structured Grid」を適用

★離散的なPointデータから、平面をつくりたいとき
→ フィルタ「Delaunay 2D」を適用(未検証ですが)

8月1日25時19分
fartrip
コメント(0) 

CentOS7 MKL PARDISO 並列 動作しない [電子工作・プログラミング]

そんなキーワードでググってしまいました。

先日、ずっとFedoraでやってきたメインマシンを、CentOS 7に入れ替えたのですが、そうしたらIntel MKL付属のPARDISOがOpenMP 並列計算時に正しい解を出してくれなくなりました。

PARDISOは疎行列のソルバーでAx = b の解xを計算してくれるはずのルーチンですが、並列数2以上でxの代わりにbを(ただしインデックスは1ずれた状態で)返してくる事態に見舞われました。並列数1では正常に解を出してくるので、当初はOpenMP回りがおかしいのかと思い色々試したところ、リンクするMKLのバージョンやStatic/Dynamicの別、icc/gccの別には関係なくCentOS7ではNGという結果でした。一方、WindowsやWindows上VM Wareのfedora21 では特に苦労することもなくOKでした。(Windowsで、なぜかDynamic Linkの時に限り、OpenMP Threadsは6なのに1並列でしか計算してくれないことはありましたが)

なんだろう。正確に比較するなら、VM Ware上のCentOS 7を見るべきですが、面倒くさくなったのでもう良いです。cuSolverSPの使い方とか調べようかなぁ。

6月18日20時54分
fartrip

AKBの総選挙の中継を横目に見ながら


※7月9日追記
VM Ware上のCentOS 7とかと比べた結果、OSの所為ではなくMKLのバージョンに由来するようでした。

計算失敗: compiler_and_libraries_2016.3.210 付属のMKL
計算成功: compiler_and_libraries_2016.1.150 付属のMKL、composer_xe_2013.5.192 付属のMKL

以前の、MKLのリンクするバージョン違いを意図した実験では、環境変数の更新ができておらず、結局最新版の何か(libiomp5.soとか、libmkl_**.soとか)を参照していたようです。

リリースノートとかよく読めば、何か対策などできるのでしょうか。。。


コメント(0) 

びっくりした [日記]

突然、メインマシンのWindows7が起動しなくなりました。見ていると、通常通り起動は進むのですが、黒地に田ミが出る画面の後、一瞬だけブルースクリーンが出て、再起動してしまう状態に。

結果だけ書くと、セーフモードでログインして、最近入れたBUFFALOのRAMディスクユーティリティーを消したら通常通り起動できるようになりました。

ただ、セーフモードでログインするまでが大変でした。
1.普通に「修復ユーティリティー」を試みて、要領を得ないコメントのエラーが出た
2.インストールディスクからまた「修復ユーティリティー」を試みて、再度同じエラーが出た。
3.インストールディスクからコマンドプロンプトを立ち上げて、diskpartからEFIパーティションをマウントして、bootrec /RebuildBCD を実行したら、「複数の判別できないデバイスが判別基準に一致するため、要求されたシステムデバイスは判別できません」などと、よくわからないエラーが出た。
4.調べたところ、接続されたディスクたちを合わせて複数のEFIパーティションが見つかると上記が出るとのことだったので、fedoraとCentOSを入れたディスクを外して、再度3.を試したら、成功してBCDが生成された。
5.上記の通り、Windowsがセーフモードで起動成功し、RAMディスクのアンインストールの後、Windows修復成功
6.Linux入りのディスクをつないだら、CentOSのUEFI起動が認識しなくなった。fedoraは起動可能。

最初、Windowsを入れたSSDが逝ったのかと思って、どきどきしましたが、まぁ良かったです。ただ、Windowsのユーティリティが融通きかなすぎて困ったものです。前にWindows Storage Serverで起動できないトラブルになったときも、やきもきした記憶がよみがえりました。

5月22日21時43分
fartrip

(参考:プロンプト、diskpartで打ったコマンドたち@Windows7)


コメント(0) 

祝杯 [日記]

良いことがあった日くらい、良いじゃないですか。よくがんばりました。
4月28日22時17分
fartrip

コメント(0) 

漫画喫茶 [日記]

昨日、久しぶりに漫画喫茶に行ったら、思わず10時間ほど居てしまって、土曜日の午前と午後を丸々つぶしてしまいました。読んだのは、湾岸ミッドナイト16-22巻、エクセルサーガ21-27巻、デスレス1-10巻、「神様、キサマを殺したい」3巻、恋愛ゾンビ1巻、ワンダーラビットガール3巻、あと何か読んだかもしれません。

エクセルサーガを途中まで読んだのはずいぶん昔だったのと、最後の辺りが余りに難解だったのでWebで調べてみたら、Holy Brounieがリンクしていたとのこと。こちらも最後に途中まで読んだのはずいぶん昔なので、さっぱり気づきませんでした。こっちも合わせてもう一回読みたいですが、今日行ったら時間も遅いし、ひどい目に合いそう。

4月10日16時11分
fartrip

コメント(0) 

ペッグハート [日記]

PS1のゲームでサガフロンティア2というのがあるのですが、この1年くらい、時間を見つけてレアアイテムを集めようとがんばっています。今や解析が進んでいてどうということもないのですが。
獣骨の鎧、水鏡、ハードロック、石獣のタグなどはリセットなしでできるので、成長していく楽しみもあるのですが、戦闘回数限定のタイタスグリーブや夜の街のペッグ一族なんかは辛かったです。

で、今日の主題のペッグ一族。シナリオ後半の古戦場ではいくらでも戦えるのですが、シナリオ早めにヴァレリアハートを手に入れてギュスターヴなんかに持たせたかったので、夜の街のペッグからヴァレリアハートを狩るべく、状況再現法を駆使してリセットを繰り返していました。そして、うなるほど多数のペッグハートをかなぐり捨て、何とかヴァレリアハート2本をゲット。
炎の剣を構えるギュスターヴをあらかた鑑賞して満足した後、シナリオも進み、古戦場へ。さぁペッグハートをゲットしようと思ったところ、全然落とさない!もうヴァレリアハート7本くらい出てきたよ…。

これは明らかに確率の偏りがあるように思います。後から気づいたのですが、こちらの方のデータでもそうなっていますし、わざわざ苦しい方の選択をしてしまいました…。

その後、何とか古戦場でもペッグハートをゲットしました。少し気になったのが、ゲットしたときの陣形の配置。下の画像のような配置のときにゲットできたのですが、古戦場では少し珍しい配置になっている…?そして夜の町では大体この配置になっていたような…?かなりあいまいですが、まずは備忘録として残しておきます。



1月2日10時15分
fartrip

コメント(0)