2013年10月27日日曜日

計算コードの誤り

先日の、どこが改良されたのかわからない Fortran のコードを読んでいました。
http://phreeqc.blogspot.jp/2013/10/avsmicroavsmvs.html

説明書もコメントもありませんので、数人の書いたコードを順に比較するしかありません。

最初の内は、軽微な修正で確認も早く終わりました。が、最後の方で、いくつか重要な修正がありました。変数の追加や配置、計算内容を見ると、何をしようとしているのか意図はわかります。が、どうも式がおかしい。

半日くらい考えて、たぶん間違えられたのだろうと、と結論付けかかったころ、コードが入っているフォルダの中にReadMe.txtを見つけました。お、っと思って開いてみると、ビンゴ。変更点の概略と参考文献が書かれてました。


文献を確認したが、やはりコードが違っていました。危ういですね。

といっても、その方が書かれた前の段階で、既に誤っている箇所がありました。計算部分ではなく吐き出しの箇所なので、修正は簡単です。
私の使用している post で読みやすいように、あわせて修正しておきましょう。

地震関連の調査

先日、地元の方に事業説明をしていたのですが、事前の情報が誤って伝わっており、「活断層の調査かと思っていた」と言われました。近いものはあるのですが、活断層調査ではありません。

そういえば、以前お世話になっていた方に原発の調査 = 活断層調査に声をかけられました。が、無理。おもしろそうだったんですけど。


全国で地震・耐震がブームになっているようです。

ブームで終わらせないたくないですよね。
点検や補強、数十年耐える物を作るのも良いですが、それだと一過性になりそうです。ヒトは必ず忘れます。できれば子供達への教育にお金を回したいですよね。
ベースアップした技術、というよりも意識で、さらに次の世代へつないでくれることになるでしょう。


2013年10月20日日曜日

崩壊前の地形

時間があったので、崩壊後、土砂がどの程度移動するかを再現していました(今度は LSFLOW です)。

最初は簡単に考えていました。

崩壊前後の LP を使用すれば、モデルは簡単にできてしまう、と考えていたのです。が、これが誤り。多くの場合、崩壊後の LP はありますが、崩壊前はありません。写真から復元したとしても、その精度はLPに比べて落ちます。場合によっては10m以上の標高差が生じます。今回も部分的に5~10m、最大20m近いギャップが生じました。

崩壊後のLPにしても、そのままではすべり面として使えません。冠頭部はそのままで使えるのですが、末端部は土砂で隠れています。そのため、ボーリング結果を使って面を作ってやらないといけません。こんな当たり前のことも、手を動かすまで気づきませんでした。迂闊でしたね。

こういった前処理に手間をかけることが、精度を大きく向上させるための一因になります。
案外、パラスタより時間がかかるかもしれません。


動的配列

EXCEL2010 の VBA で、TXT の並び替えをしようとしました。

あるソフトの吐き出した結果が、以下のような並び。
X1 Y1 Z11
X2 Y1 Z21
・ ・ ・

それを、並べなおして、新しい TXT ファイルにしたかったのです。
1 1 Z11
1 2 Z12
・ ・ ・

TXT ファイルを開いて、ソートして(他にもいくつか計算過程を入れて)、書き出すという流れにしようかと思ったのですが、X1, Y1 を1から始まる番号で書き直すので、Zのみの2次元配列でこなした方が早いことに気づきました。で、以下のように記述。

Dim Z(1 To NX, 1 To NY) As Long

ところが、「定数式が必要です」とエラーが出ます。
調べてみると、通常の2次元配列に2変数が使えない仕様のようです。知りませんでした。
動的配列の場合は、以下の通り書けばよいようです。

ReDim Z(1 To NX, 1 To NY) As Long


微妙です。が、忘れそうなので書き残しておきましょう。


2013年10月15日火曜日

物理演算の手抜き

3ds MAX を触っていた時に、NVIDIA の PhysX が使えるということを知りました。

MAX で PhysX の何が使えるのか、精度はどうなのか、など、知りたいことは多いのですが、なかなか詳しい解説に出会えません。が、GPU を計算に使用でき、レンダリングも可能な環境が既に用意されているのなら、使わない手はありません。少しづつ調べましょう。

先日の PBF は PhysX に取り込まれるかもしれません。
http://physxinfo.com/news/11109/introduction-to-position-based-fluids/
http://phreeqc.blogspot.jp/2013/09/blog-post.html

粒子法の SPH は既に実装済みのようです。でも、MAX でこの SPH が使えるのかは知りません。
http://sa08.idav.ucdavis.edu/CUDA_physx_fluids.Harris.pdf



ただ、引っかかっているのは「手抜き」が入っているのかどうか。以前見た本で書かれていました。
http://phreeqc.blogspot.jp/2010/11/cg.html

先日見た工学社「物理エンジンPhysX&DirectX10」にも、以下のように書かれていました。
「物理エンジン」は、与えられた時間内に処理を完了するため、必要な計算を捨てることがあります。
物理計算を”手抜き”します。
「物理エンジン」の物理学は、不完全な場合が多くあります。
でも、どのエンジンが、計算中のどこを、どの程度「手抜き」するのかが分かりません。
こういうのは、CG分野で学ばないとわからないのでしょうか?

個人的には、物理法則に忠実に問題を解いた方が better だとは思います。が、扱っている多くの問題では、所詮、パラスタで再現しているだけ = パラメーターの物理的根拠がそれらしければ良い = 同定値が真理かどうかは別問題、なので、多少手抜きしていようが再現できるのであれば良いのではないかと思います。
ま、話す場所と、相手は選ばないといけませんが。

こういうのを読むと、手を出そうかどうか、迷いますね。

2013年10月14日月曜日

微分形と積分形 その2

図書館で流体力学の本をいくつか借りてきました。

今回、役に立ったのは以下の本です。

松本洋一郎監修・山口浩樹著「道具としての流体力学」


基本的な式の展開が丁寧に掲載されています。どちらかというと、専門書というよりは一般向けかもしれません。そのため、全体的にやや物足りない感はありましたが、知識の欠落していた部分は簡単に補うことがでいました。

特に、積分形の併記が良かったですね。
質量保存則や運動量保存則より PDE を導く際、私は今まで微小領域の収支より展開する形しか知りませんでした。この本では、積分形も併記されており、2つの方法があることを知りました。これはラッキーでしたね。最近読んでいた論文が、この積分形の展開を使用していたのですが、なぜこのような数学的な展開をするのだろうと思っていたのです。これも一般的なんですね。基礎が抜けているというのは、恐ろしいことです。
微分形は微小領域(直方体)の収支から、テーラー展開経由で PDE を構成して行くのに対し、積分形は直方体にこだわらない領域の質量や運動量を体積分や面積分を使って表現し、展開して行きます(最終的には微分形で同じ式にできます)。微分形・積分形というのは、単純に式の形だけでなく、このような2種の展開の前提をも指すのかもしれません。


ナビエ-ストークスの解釈も問題ないようでした。導出も簡単です。

これで、ようやくスタートラインに立てました。

2013年10月13日日曜日

サラリーマン技術者の報酬

私の長期出張が終わったのと、次の仕事を一緒にする方が支社に来られていたのとを兼ねて、数人で飲んでいました。

いろいろ話をしていたのですが、驚いたのは報酬の話。

つい先日、私の基本給が2年間で6千円しか上がっていないことに気づきました。ここ2年間、ノルマの1.3~2倍の成果を上げ、利益を数千万出していたにも関わらずです。驚きでした。10年前と比べても、下がっていました。
これを肴に飲んでいますと、「それはまだ良い方」とのこと。 ?とおもって聞いていると、皆、千円上がっただけだったり、下がったりとのことでした。世知辛い話です。

今年度の12月末までの作業量を数えると、ざっと100人。一緒に飲んでいる方との次の仕事を入れても、心身ともに余裕でこなせる量です。しかし、許可された残業+就業時間ベースで考えると、80人程度しか費やせません。数字上は業務過多となっています。さらに先日、管理職より追加の仕事を打診されました。が、断りました。受けたとしても、サラリーマン技術者としての報酬は0円です。管理職による部下の管理もこの程度ということです。(ま、ここ2年の評価(報酬)に気づいていなければ、受けていたでしょうが。)

先日、NHK でブラック企業の話題が出ていました。
人の世です。それほどきれいな世ではありません。