【发布时间】:2014-10-29 14:03:41
【问题描述】:
我是 fortran 的新手,我想编写一个包含 Matrix 元素的双复数矩阵派生类型。我需要做的是定义类型并初始化矩阵,定义一个以可读形式将矩阵类型写入文件的例程,然后在我的屏幕上打印这个矩阵。我试过这个程序,它应该将值 1d0 分配给矩阵的每个元素,我不知道出了什么问题,但它不起作用。有人可以帮帮我吗?
这是我的程序
module matrices
type matrix
double complex, dimension(:,:), allocatable :: aa
end type
contains
function assign(var)
type(matrix) :: var
integer*4 ii, jj
do ii = 1, 2
print *, ii
do jj = 1, 3
var%aa(ii, jj) = var%aa
end do
end do
end function
end module matrices
program test
use matrices
type(matrix) :: AA
AA = matrix(2d0)
integer :: kk, ll
do kk = 1, 2
do ll = 1, 3
write (*, *) AA(kk, ll)
end do
end do
end program test
【问题讨论】:
-
“它不起作用”是什么意思?在好的问题中避免使用这个短语。
-
我收到以下错误:var%aa(ii,jj)=var%aa 1 错误:在 (1) 使用矩阵 1 的分配中不兼容的排名 0 和 2 致命错误:无法打开模块文件 'matrices.mod' 在 (1) 处读取
-
如果它是可分配的,你在哪里
ALLOCATE(var(2,3))? -
如果
AA是type(matrix)那么AA%aa = 2d0应该初始化这些值,而不是AA = matrix(2d0) -
我认为当你定义我想要分配给矩阵的值时你得到了分配。我想错了吗?我应该先分配,然后分配价值吗?在这种情况下,我应该简单地将矩阵定义为:double complex, dimension(2,3) :: a ??