備忘録をかねたメモ。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
とかすればできるので、実害はないのだが。。。
最近の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
とかすればできるので、実害はないのだが。。。