处理fortran程序中的许多矩阵

use*_*852 1 fortran matrix

这是我的计划

program matrix
real :: J1(38,38),J2(38,29),J3(29,38),J4(29,29)
real :: J13(38,1),J23(29,1),J33(1,68),Jac(68,68)
!!all matrices contains some values except Jac

Jac=[J1 J2 J13
     J3 J4 J23
     J33      ]
end program matrix
Run Code Online (Sandbox Code Playgroud)

现在我想将所有这些矩阵放入1矩阵Jac(68,68),以便Jac = [J1 J2 J13 J3 J4 J23 J33]应该是什么样的fortran代码..请帮助我.

Hig*_*ark 10

或者,如果你不喜欢写循环,你可以写;

Jac(1:38,1:38) = J1
Jac(1:38,39:38+29) = J2
Run Code Online (Sandbox Code Playgroud)

等等.

编辑

我不知道你发布了什么,如果这个位有兴趣,但我推断出Fortran知识水平,不包括这个......

你可以定义:

real, target :: jac(68,68) 
real, dimension(:,:), pointer :: j1, j2, j3, j4, j13, j23, j33
Run Code Online (Sandbox Code Playgroud)

并使用这样的子数组:

j1 => jac(1:38,1:38)
j33 => jac(1,:)
Run Code Online (Sandbox Code Playgroud)

等等.这样,内存中只有一个数据副本,对于这样的小数组可能无关紧要.如果子数组和超级数组的内容应该不同,那么这是错误的方法.