首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用“数组引用中的秩不匹配”错误调试文件?

如何用“数组引用中的秩不匹配”错误调试文件?
EN

Stack Overflow用户
提问于 2014-10-12 18:35:45
回答 1查看 388关注 0票数 0

我试图使用两个“do”循环来创建一个数组。但是,在某些情况下,我创建数组的方式显示了标题中提到的错误。请您指出问题所在。我对Fortran很陌生。

下面是代码:

代码语言:javascript
复制
program energy
integer::Nx=100,Ny=10
real::kx(101),Epos(101),Eneg(101),E0=0.12,ts=0.2,tsp=2.0,ky(11),Es,Ep
Es=-(E0-4.0*ts)
Ep=(Eo-4.0*ts)
kx(1)=-0.50
do i=1,Nx
  kx(i+1)=kx(1)+i*(1.00/Nx)
end do

ky(1)=-0.50
do j=1,Ny
  ky(j+1)=ky(1)+j*(1.00/Ny)
end do

do j=1,11
  do i=1,101

错误将下面的行作为它的源。”

代码语言:javascript
复制
    Epos(i,j)=sqrt(-Es*(Ep+2*ts*(cos(kx(i))+cos(ky(j)))) &
                  -(2*ts*(cos(kx(i))+cos(ky(j)))*(Ep-2*ts*(cos(kx(i))+cos(ky(j))))) &
                +(4*tsp**2)*((sin(kx(i)))**2 +(sin(ky(j)))**2))
  end do
end do

open(unit=1, file='data.dat')
do i=1,101
  write(1,*) kx(i), Epos(i,1)
end do

close(unit=1)
end program energy

另外,如何在保持j或'ky‘作为参数的同时,将Epos(i,j)与Kx(i)进行比较?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-12 19:15:06

对于您问题的秩不匹配部分:Epos被声明为一维数组。

代码语言:javascript
复制
real::Epos(101)

你需要的是一个二维数组!从您的代码中,我认为应该是

代码语言:javascript
复制
real::Epos(101,11)

对于绘图部分,我建议将结果写入ASCII文件(如果数据量不太大),然后使用一个外部工具,如GNUPLOT、Python或Octave/Matlab来绘制数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26328550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档