可以宣告自订型态,像这样
A是一个3x3的矩阵,每个矩阵元都是layer这种变量,
layer是自订的型态,p是宣告成layer型态的变量,
所以p%n(:)就是长度为3的一维阵列。
type layer
integer,dimension(3) :: n
end type layer
type(layer),dimension(3,3) :: A
type(layer) :: p
p%n(1)=100
p%n(2)=200
p%n(3)=300
A(1,1)%n=(/0,0,-1/)
A(1,2)%n=(/0,0,-2/)
A(1,3)%n=(/0,0,-3/)
A(2,1)%n=(/0,1,-2/)
A(2,2)%n=(/0,1,-3/)
A(2,3)%n=(/0,1,-4/)
A(3,1)%n=(/1,0,-3/)
A(3,2)%n=(/1,0,-4/)
A(3,3)%n=(/1,0,-5/)
但是好像直接宣告一个3x3x3的阵列就可以了。
integer,dimension(3,3,3) :: B
integer :: i,j
do j=1,3
do i=1,3
B(:,i,j)=A(i,j)%n(:)
enddo
enddo
※ 引述《etu4315 (成大海龙王)》之铭言:
: 各位前辈好
: 小弟fortran新手
: 在处理网格时碰到了问题
: 如照片所示
: http://imgur.com/Xwwg2MC
: 我本来有一个计算完的9*3矩阵
: 为了运算公式方便我需要压缩成3*3的矩阵
: 即按照如中的逻辑分层放进去
: 有翻过书都没找到矩阵中放进矩阵的写法
: 还请版上的高手大大们帮小弟解惑
: 谢谢