みそっこ日記

みそっこ研究者の雑感

F2PY/ALLOCATABLE ARRAY

2015-01-30 23:31:51 | Weblog
備忘録をかねたメモ。MatlabスクリプトをFortranで書き換える作業の続き。最終的にpythonから呼び出して、フォワード計算とか、インバージョンをやろうと思っているので、F2PYでうまく呼び出せるようにしておく必要がある。

最近のFortranでは形状引き継ぎ配列を使うのが主流っぽい。つまり
subroutine hoge(a)
real(dp) :: a(:)
とか書いておいて、
メインでおもむろに
real(dp),allocatable :: b
allocate(b(100))
call hoge(b)
とかやるわけだ。

ただ、このときメインプログラムでinterface文を使ってサブルーチンの引数を指定しておかないとうまく動かない。

interface
subroutine hoge(a)
real(dp) :: a(:)
end subroutine
end interface

pythonから呼び出す場合、interface文なんて使えないからどうするのかなぁ。ちょっと調べたけどよくわからなかった。

ま、昔ながらの形状指定配列を使って
subroutine hoge(a,n)
real(dp),dimension(n) :: a
とかすればできるので、実害はないのだが。。。

MATLAB->FORTRAN

2015-01-24 05:01:36 | Weblog
件の論文のモデルを修正するため、まず、楕円柱の圧力源でどうなるか試してみること。

火山地殻変動のモデリングツールとして、USGSからdMODELSという便利なツールが公開されていて、楕円柱の圧力源も取り扱えるので、ありがたく使わせてもらうことにした。
http://pubs.usgs.gov/tm/13/b1/

ただ、これがMATLABで書かれていて不便なので、とりあえずFORTRANに書き直すことに。

はまったこと:
○MATLABでは変数名の大文字と小文字が区別されている
○MATLABのドット演算子は、配列要素に対する演算。FORTRANでは、通常の演算子が同等の機能を持っている

とりあえず大体動くようになったので、いろいろ試してみる予定。標高も入れないといけないし、場合によっては複合モデルも試してみないといけないかも。

リジェクト

2015-01-14 04:54:24 | Weblog
がっかり。

ま、救いは、いわゆるひとつの"reject and resubmit"というやつであることで、Editorは結構好意的で、リジェクトしたのはreviseに十分な時間を与えるためで(出したのがSpecial Issueだということもある)、直せばよい論文になるはずだから時間をかけてちゃんと直して再投稿しろ、と言っているので、一度は再投稿するのが吉かな。

それにしても、モデルの評判が悪い。どうするにせよなんとかせねば。

仕事はじめ

2015-01-06 01:15:08 | Weblog
なかなか計算がすすまなくて、気もそぞろな仕事はじめ。

ずっと前からGNSS解析において、Kinematicで解いてから日平均を取るのと、Staticで解くのとでどんな違いがあるのか気になっていたので(←ちなみにMatt Kingかだれかがすでに書いている)、とりあえず試しに見てみようとしてどつぼにはまる。昔からの習慣で一日毎の座標ファイルをcompressで固めていたのだが、どうもpythonでcompressされたファイルを読み込むよいライブラリはないっぽい。うーむ。compressなんて効率悪くて使うもんじゃない、というのはもちろん知っていたのだが、なんとなく学生時代からの習慣でだらだらと。

スクリプトを修正するよりフォーマットをそもそも変えておいたほうがあとあとよいだろう、ということで、現在フォーマットを変換中。ファイル数がおおいので、結構時間がかかるかも。ま、新年を迎えたことだし、昔からの悪習も一掃する、ということで。