nano_exit

基礎的なことこそ、簡単な例が必要だと思うのです。

gfortran での変数の次元の制約。

何も考えずにプログラムを作っていたら、配列の次元が7個を超えるとコンパイルできないらしい。

program test_array7

real( kind( 0d0 ) ) :: r( 1, 2, 3, 4, 5, 6, 7, 8 )

end program test_array7

これを gfortran でコンパイルすると

test_array7.f90:3:46:

 real( kind( 0d0 ) ) :: r( 1, 2, 3, 4, 5, 6, 7, 8 )
                                              1
Error: Array specification at (1) has more than 7 dimensions

添字が11個ある変数の計算しようとしていたので、これはちょっと困った。。。
構造体とかを使って、何とか逃げるしかないか。。。
ちなみに構造体なら7個以上の要素があっても大丈夫であった。

program test_type7                                                              
 
implicit none
 
type :: test
    real( kind( 0d0 ) ) :: r1
    real( kind( 0d0 ) ) :: r2
    real( kind( 0d0 ) ) :: r3
    real( kind( 0d0 ) ) :: r4
    real( kind( 0d0 ) ) :: r5
    real( kind( 0d0 ) ) :: r6
    real( kind( 0d0 ) ) :: r7
    real( kind( 0d0 ) ) :: r8
end type
 
type( test ) :: t
 
end program test_type7