Fortran Coder

查看: 58|回复: 4

[求助] Unclassifiable statement 错误

[复制链接]

3

帖子

1

主题

0

精华

入门

F 币
32 元
贡献
16 点
发表于 2021-11-25 21:12:24 | 显示全部楼层 |阅读模式
本帖最后由 sqs 于 2021-11-25 21:14 编辑

请问在这个地方为什么关于这个k(x,y)会报错呢,报错如下“Unclassifialbe statement at (1)”
我这一步的目的是想要得到每一个k值,如果可以使用k(x,y)表示更好,应该如何实现呢


QQ图片20211125211345.png
回复

使用道具 举报

185

帖子

2

主题

0

精华

宗师

F 币
1429 元
贡献
749 点

规矩勋章

发表于 7 天前 | 显示全部楼层
k声明为变量没有声明为二维数组,不能当数组用
(x/n)b1里,b1前缺运算符
两个整数除法会自动取整,可能你要的是x*1.0/n
b1,b2都是有2个元素的数组,如果不指定元素,计算结果也是2个元素的数组

评分

参与人数 1F 币 +3 收起 理由
fcode + 3

查看全部评分

3

帖子

1

主题

0

精华

入门

F 币
32 元
贡献
16 点
 楼主| 发表于 7 天前 | 显示全部楼层
necrohan 发表于 2021-11-26 08:22
k声明为变量没有声明为二维数组,不能当数组用
(x/n)b1里,b1前缺运算符
两个整数除法会自动取整,可能你要 ...

好的,那这个地方就相当于如果需要两个整数相除得到的是一个浮点数,需要给整数乘上一个浮点数是吧
另外
我不是很清楚,这个地方b1,b2都是具有两个元素的数组,但是我通过分割计算后,需要得到的k也要是一个两个元素的数组,但是怎么通过把这个k(2)和分割的指标x,y联系起来呢,取地址吗?
(其实我本来想着,因为下x,y=1,999嘛,b1,2又是两个元素的数组,而如果这样的话,k会是一个1998*999的矩阵吗,但是这样的话,每一个k值对应的是1,3,5...的奇数,似乎不太好定义k矩阵的指标)
大佬看能有什么办法嘛

80

帖子

0

主题

0

精华

专家

F 币
571 元
贡献
247 点

规矩勋章元老勋章新人勋章

发表于 7 天前 | 显示全部楼层
本帖最后由 胡文刚 于 2021-11-26 22:44 编辑

这样是你想要的吗?

[Fortran] 纯文本查看 复制代码
Program workfile
  Implicit None
  integer , parameter :: n = 1000
  real , parameter :: PI = acos(-1.0) , a = 1.42e-10
  real :: b1(2), b2(2)
  real , allocatable :: k(:,:,:)
  integer :: x , y
  allocate(k(2,n-1,n-1))
  b1 = [ 2*PI/a*sqrt(3.0) , 2*PI/a ]
  b2 = [ 2*PI/a*sqrt(3.0) ,-2*PI/a ]
  Forall(x=1:size(k,2) , y=1:size(k,3))
    k(:,x,y) = (b1*x+b2*y)/n
  End Forall
End Program workfile


评分

参与人数 1F 币 +3 收起 理由
fcode + 3

查看全部评分

天之道,损有余而补不足

3

帖子

1

主题

0

精华

入门

F 币
32 元
贡献
16 点
 楼主| 发表于 5 天前 | 显示全部楼层
胡文刚 发表于 2021-11-26 22:28
这样是你想要的吗?

[mw_shl_code=fortran,true]Program workfile

是的是的,十分感谢您了
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2021-12-3 02:09

Powered by Tencent X3.4

© 2013-2021 Tencent

快速回复 返回顶部 返回列表