日曜日, 6月 11, 2006

Fortran90 メモ(疑問)

仕事で市販のCFDソフトを使ってるんですが、
かなり凄いです、当然ですが
(ライセンス料が年間1千万くらい?)。

それに触発されて、GUIで全て操作出来る
(可視化までは難しいかなー)流体計算プログラムを
作ってみようかと思ってます。かなり長期的な目標ですが。
メッシュ生成まではやらないかな。

それでFortranメモ(疑問)をつらつら書いていこうかと
思ってます。

double precision, allocatable :: w(1:100)
は良くても
double precision, dimension :: w(1:100)
real*8,dimension :: w(1:100)
は駄目?コンパイルでエラーが出ちゃいます。

Fortran90で、Fortran77みたいに配列を仮引数として
受け渡すには、interface文を利用。

例:
受け渡し側で
interface
subroutine test(w,n)
double precision, dimension(:), intent(in) :: w
integer :: n
end subroutine test
end interface
.....
call test(de,100) !interface文では適当は配列wを使って、
call test(pr,100) !subroutineの機能を定義。

受け取り側で
subroutine test(ww,nn)
double precision,dimension(1:nn), intent(in) :: ww
integer :: nn

といった感じ。
間違いがあったら是非指摘してください。