我有一个Fortran 90代码,它填充矩阵元素,这些矩阵元素表示源点和观察点之间的相互作用。
我想要的是将矩阵填充为子块,而不是将矩阵填充为一个完整的矩阵。
假设我有
这是填充整个矩阵的方式
do q=1, N
do p=1, N
do j=1, quad
do i=1,quad
但是,我希望填充块而不是顺序填充矩阵。
像这个例子
我将上面的示例分为4个块,以便它填充第一个块,然后移至第二个块,依此类推。括号中的对表示补丁号
那怎么办?
答案 0 :(得分:0)
不确定您要问的是什么,但是根据您给出的描述,我认为按列填充数组会更容易。像
program arrayfill
implicit none
integer, parameter :: n = 6
integer :: m(n, n), i
! Fill matrix m column-wise
m(:, 1) = 11
m(:(n/2), 2) = 11
m((n/2+1):, 2) = 12
m(:, 3) = 12
m(:, 4) = 21
m(:(n/2), 5) = 21
m((n/2+1):, 5) = 22
m(:, 6) = 22
do i = 1, n
print *, m(i, :)
end do
end program arrayfill