主题:形参实参调用失败,崩溃!!怎么能这样呢?!!
tianhy2010
[专家分:60] 发布于 2012-06-10 21:41:00
各位大侠,大家好!
我有个程序,里面有两个子程序,一个子程序用来产生矩阵H00,H10,另一个矩阵用来调用它们,为什么调用的时候会出错呢?
PROGRAM MAIN
IMPLICIT REAL*8(A-H,O-Z)
character fname*15
PARAMETER (N=34,t=2.8)
COMPLEX*16 H00(N,N),H10(N,N),H01(N,N),H12(N,N),H21(N,N)
OPEN(UNIT=1,STATUS='unknown',FILE='biaomian1.DAT')
CALL GMATRIX(T,N,H00,H10,H12)
H00=H00
H10=H10
H12=H12
DO IA=1,N
DO IB=1,N
WRITE(1,*) IA,IB,REAL(H10(IA,IB))
ENDDO
ENDDO
CALL CESHI(N,H00,H10)
END
subroutine GMATRIX(T,N,H00,H10,H12)
implicit real*8(a-h,o-z)
complex*16 i,H00(N,N),H10(N,N),H12(N,N)
H00=0.0D0
H10=0.0D0
H12=0.0D0
do J=1,N-1
H00(J,J+1)=-t
H00(J+1,J)=-t
enddo
do j=1,N
if(mod(j,2)==1) then
H10(j,j)=-t
endif
enddo
do j=1,N
if(mod(j,2)==0) then
H12(j,j)=-t
endif
enddo
RETURN
end
subroutine CESHI(M,H00,H10)
implicit real*8(a-h,o-z)
complex*16 H00(m,m),H10(M,M)
OPEN(UNIT=2,STATUS='unknown',FILE='JJJ1.DAT')
DO IA=1,M
DO IB=1,M
WRITE(2,*) IA,IB,REAL(H10(IA,IA))
ENDDO
ENDDO
return
END
好郁闷啊!!就几行字,就是检查不出来哪里的问题!!
草了!!
回复列表 (共10个回复)
沙发
tianhy2010 [专家分:60] 发布于 2012-06-10 21:44:00
太操蛋了!!怎么查都查不出来哪里出的问题!!
板凳
Maple42 [专家分:50] 发布于 2012-06-11 02:44:00
运行了,没有你说的错误
3 楼
臭石头雪球 [专家分:23030] 发布于 2012-06-11 08:38:00
我希望你首先提高自己的素质
其次,我希望你给出你的错误提示,以便他人判断。
4 楼
tianhy2010 [专家分:60] 发布于 2012-06-11 09:02:00
这样的,我有几个矩阵,在子程序 GMATRIX(T,N,H00,H10,H12) 里定义,得到之后,向
CESHI(M,H00,H10) 传输,但是很奇怪,子程序得到的矩阵是对的,但是到了子程序里就错了,有两个输出文件,可以看到这两个文件虽然定义的是同一个数组,但是内容却不相同。关键是这个问题。不知道怎么了
5 楼
tianhy2010 [专家分:60] 发布于 2012-06-11 09:04:00
按理说,我没做任何操作,仅仅是把这个矩阵从外面拿到里面去了,应该内部和外部都相同,但是不同啊。期待有人能帮我下了!!
感谢!!
昨天太激,所以用词不当,请勿见怪!!
谢谢啊!!
6 楼
tianhy2010 [专家分:60] 发布于 2012-06-11 09:05:00
老兄,你看下两个文件生成的数组相同吗?我这里为什么得到了两个不同的数组呢?同一个数组只是一个在主程序里,一个在子程序里,怎么会不同呢?
7 楼
tianhy2010 [专家分:60] 发布于 2012-06-11 09:15:00
崩溃!!这里出错了:
DO IA=1,M
DO IB=1,M
WRITE(2,*) IA,IB,REAL(H10(IA,IA))
ENDDO
ENDDO
应该是H10(IA,IBA),写成H10(IA,IA)了
谢谢大家了
8 楼
臭石头雪球 [专家分:23030] 发布于 2012-06-11 09:18:00
subroutine CESHI(M,H00,H10)
implicit real*8(a-h,o-z)
complex*16 H00(m,m),H10(M,M)
OPEN(UNIT=2,STATUS='unknown',FILE='JJJ1.DAT')
DO IA=1,M
DO IB=1,M
WRITE(2,*) IA,IB,REAL(H10(IA,IA)) [color=red]!//此处改为WRITE(2,*) IA,IB,REAL(H10(IA,IB))[/color]
ENDDO
ENDDO
return
END
9 楼
臭石头雪球 [专家分:23030] 发布于 2012-06-11 09:19:00
晕,你自己先发现了。
10 楼
tianhy2010 [专家分:60] 发布于 2012-06-12 15:16:00
石头还是很敬业的!!哎。自认不如啊!!我在这个论坛上有问题才来请教下,很少给论坛做贡献!!向石头老兄学习了。能力不济啊!!
我来回复