24小时热门版块排行榜    

查看: 3915  |  回复: 11

贺仪

铁杆木虫 (著名写手)

[求助] fortran编译 read出错 完毕

错误提示
POSITION.F(31): error #6358: Constants and expressions are invalid in read-only I/O lists.   [MSP]
      read(15,*) (msp(i),i=1,10)
前面msp有定义
character msp(10)
  read(15,*) (msp(i),i=1,10)
语法有问题吗?

一下是全部程序
      program getpos
ccccccccc  12 is SPPARKS OUTPUT  cccccccc
ccccccccc 15 is the molecure  ccccccccc
ccccccccc  13 is OUTPUT   ccccccccccc
      integer mnum nsp
      real coord(2000,3)
      real species(10,3)
      integer nsp(10)
      real x y z
      character tile cellp cella cellb cellz msp(10)  
      open(12,file='POSCAR',status='old')
      open(15,file='POSCAR',status='old')
      open(13,file='CONTCAR',status='new')
ccccccccccccccccccc sys param a b c cccccccccccccc
      read(12,*) tile
      write(13,*) tile
      read(12,*) cellp
      write(13,*) cellp
      read(12,*) cella ;
      write(13,*) cella
      read(12,*) cellb ;
      write(13,*) cellb
      read(12,*) cellc ;
      write(13,*) cellc
      read(15,*);
      read(15,*);
      read(15,*);
      read(15,*);
      read(15,*);
cccccccccccccccccccc atom char ccccccccccccccccccccccc
      read(15,*) (msp(i),i=1,10)
      write(13,*) (msp(i),i=1,10)
      read(12,*);
cccccccccccccccccccc atom num  cccccccccccccccccccccccc
      read(12,*) mnum
      read(15,*) (nsp(i),i=1,10)
      DO i=1, 10
         N_anum=mnum*nsp(i)
         write(13,N_anum)
      END DO
      read(12,*)
      read(15,*)
      write(13,*) 'R'
cccccccccccccccc  read molecue coord cccccccccccc
      DO i=1, mnum
         read(12,*) (coord(i,j),j=1,13)
      ENDDO
      close(12)
cc
      DO j=1, 10                !!! species cyc !!!!!!
            DO i=1, nsp(j)          !!! the j atom cyc !!!!!!
                  read(15,*) x y z  !!!!!!!!!!!!!!!!!!!!!!!! molecure coord !!!!!!!!!!!!!
                      DO k=1, mnum
                                nx=x+coord(k,1)
                                ny=y+coord(k,2)
                                nz=z+coord(k,3)
                                write(13,*) nx ,ny ,nz
                      ENDDO
            ENDDO
      ENDDO
          close(15)
          close(13)
      END

[ Last edited by 贺仪 on 2011-8-23 at 14:53 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

嘟啦啦嘟啦啦嘟
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

★ ★
贺仪(金币+5): 多谢指教! 2011-08-23 14:53:23
余泽成(金币+2): 谢谢参与应助! 2011-08-24 16:20:44
引用回帖:
1楼: Originally posted by 贺仪 at 2011-08-23 09:57:29:
错误提示
POSITION.F(31): error #6358: Constants and expressions are invalid in read-only I/O lists.   [MSP]
      read(15,*) (msp(i),i=1,10)
前面msp有定义
character msp(10)
  read(15,*) (msp(i ...

character 类型数据不能用 read(15, *) 这种方式来读取吧。 * 只适合于数值,而且读出来的格式只能是浮点数……

如果你的 msp 是用来存单个字符(10个?),那么你可以用下面的代码试试(没有测试,不保证正确……)
CODE:
read(15, '(a1)') (msp(i), i=1,10)

2楼2011-08-23 14:31:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

★ ★
贺仪(金币+5): 多谢指教! 2011-08-23 14:53:34
余泽成(金币+2): 辛苦了! 2011-08-24 16:20:55
看来我前面的说法没有切入要点,你的问题在于
      real x y z
      character tile cellp cella cellb cellz msp(10)  
上面两行各个变量之间应该用逗号来分隔……

当然,字符的确不能用 read(15,*) 这种方式来读……
3楼2011-08-23 14:47:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

贺仪

铁杆木虫 (著名写手)


余泽成(金币+1): 谢谢参与应助! 2011-08-24 16:21:05
不是读取的原因
在定义的时候用“::”后就可以了
嘟啦啦嘟啦啦嘟
4楼2011-08-23 14:55:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

引用回帖:
4楼: Originally posted by 贺仪 at 2011-08-23 14:55:38:
不是读取的原因
在定义的时候用“::”后就可以了

不知道你这个是啥意思?

你给出的代码中太多不规范的东西,呵呵,反正我用 gfortran 会提示很多错误……
5楼2011-08-23 15:00:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

贺仪

铁杆木虫 (著名写手)

余泽成: 刚才发错了,呵呵,金币送你了,常来程序语言版! 2011-08-24 16:22:03
引用回帖:
5楼: Originally posted by snoopyzhao at 2011-08-23 15:00:35:
不知道你这个是啥意思?

你给出的代码中太多不规范的东西,呵呵,反正我用 gfortran 会提示很多错误……

是的 错误很多 这是最开始的 现在调好了,程序如下:
      program getpos
ccccccccc  12 is SPPARKS OUTPUT  cccccccc
ccccccccc 15 is the molecure  ccccccccc
ccccccccc  13 is OUTPUT   ccccccccccc
      integer mnum Nanum
      real::coord(2000,3)
      integer::nsp(4)
      real x y z
      character tile cellp
      character::msp(4)
      real::cella(3)
      real::cellb(3)
      real::cellc(3)  
      open(12,file='POSCARS',status='old')
      open(15,file='POSCARV',status='old')
      open(13,file='CONTCAR',status='new')
ccccccccccccccccccc sys param a b c cccccccccccccc
      read(12,*) tile
      write(13,"(2XA10)" tile
      read(12,*) cellp
      write(13,*) cellp
      read(12,*) (cella(i),i=1,3)
      write(13,"(3(2XF10.7))" (cella(i),i=1,3)
      read(12,*) (cellb(i),i=1,3)
      write(13,"(3(2XF10.7))" (cellb(i),i=1,3)
      read(12,*) (cellc(i),i=1,3)
      write(13,"(3(2XF10.7))" (cellc(i),i=1,3)
      read(15,*)
      read(15,*)
      read(15,*)
      read(15,*)
      read(15,*)
cccccccccccccccccccc atom char ccccccccccccccccccccccc
      read(15,*) (msp(i),i=1,4)
      write(13,"(4(2XA2))" (msp(i),i=1,4)
      read(12,*)
cccccccccccccccccccc atom num  cccccccccccccccccccccccc
      read(12,*) mnum
      read(15,*) (nsp(i),i=1,4)
      DO i=1, 4
               Nanum=mnum*nsp(i)
         write(13,10) Nanum
      END DO
      read(12,*)
      read(15,*)
      write(13,"(/,A1)" 'D'
      DO i=1, mnum
         read(12,*) (coord(i,j),j=1,3)
      END DO
      close(12)
cc
      DO j=1, 4                !!! species cyc !!!!!!
            DO i=1, nsp(j)          !!! the j species atom cyc !!!!!!
                  read(15,*) x, y, z  !!!!!!!!!!!!!!!!!!!!!!!! molecure coord !!!!!!!!!!!!!
                      DO k=1, mnum
                          write(13,100) x+coord(k,1), y+coord(k,2), z+coord(k,3)
                      END DO
            END DO
      END DO
      close(15)
      close(13)
10    FORMAT(2XI5.0,\)
100   FORMAT(3(2XF10.6))
      END
嘟啦啦嘟啦啦嘟
6楼2011-08-23 15:06:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖


贺仪(金币+5): 多谢指教! 2011-08-23 15:29:55
余泽成(金币+1): 谢谢参与应助! 2011-08-24 16:22:51
至少
      integer mnum Nanum
      character tile cellp
还是不正确的吧……
另外,\ 似乎也有问题……
7楼2011-08-23 15:10:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

贺仪

铁杆木虫 (著名写手)

引用回帖:
7楼: Originally posted by snoopyzhao at 2011-08-23 15:10:46:
至少
      integer mnum Nanum
      character tile cellp
还是不正确的吧……
另外,\ 似乎也有问题……

我用ifort -O2 已经通过编译了
拿到自己想要的文件了 就不管那么多了 呵呵
嘟啦啦嘟啦啦嘟
8楼2011-08-23 15:14:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖


贺仪(金币+5): 多谢指教! 2011-08-23 15:30:10
余泽成(金币+1): 谢谢应助到底,呵呵! 2011-08-24 16:23:08
引用回帖:
8楼: Originally posted by 贺仪 at 2011-08-23 15:14:08:
我用ifort -O2 已经通过编译了
拿到自己想要的文件了 就不管那么多了 呵呵

你运行一下看看得到的结果是不是你想要的,呵呵……

在 Fortran 中,像 real x y z 这样的语句,你本来声名了三个变量,但编译之后是一个变量 xyz。你或许会说,为什么没有报错,你试着在 program 那句之后加一句 implicit none 看看……
9楼2011-08-23 15:16:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

贺仪

铁杆木虫 (著名写手)

引用回帖:
9楼: Originally posted by snoopyzhao at 2011-08-23 15:16:59:
你运行一下看看得到的结果是不是你想要的,呵呵……

在 Fortran 中,像 real x y z 这样的语句,你本来声名了三个变量,但编译之后是一个变量 xyz。你或许会说,为什么没有报错,你试着在 program 那句之后加 ...

这个就不清楚了…… 我不是专业编程的
real x y z 这样的语句,你本来声名了三个变量,但编译之后是一个变量 xyz  应该怎么声明呢?


我要处理的是坐标文件,得到的文件打开是没有问题的, 我看了结构也没什么问题
嘟啦啦嘟啦啦嘟
10楼2011-08-23 15:26:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 贺仪 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 朋友圈看到的 +4 wangzilk 2026-08-18 5/250 2026-08-18 19:25 by wangzilk
[基金申请] 欢迎发来filecode的Mz6后的代码验证其规律 +51 医学老男孩 2026-08-13 110/5500 2026-08-18 19:07 by icerianxia
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
[基金申请] 时间戳变了,能看出什么问题? +8 基诺咪客 2026-08-17 11/550 2026-08-18 17:13 by 悠然熊猫
[基金申请] 重要消息,中午系统在维护 +9 yuleib84 2026-08-18 10/500 2026-08-18 16:52 by archvillain
[教师之家] 两姐妹,一个辛辛苦苦30岁工作当大学教师,另一个23岁就工作当开车教练 +3 瞬息宇宙 2026-08-11 7/350 2026-08-18 16:42 by LNP@mRNA
[论文投稿] 投稿咨询 +4 wwm09 2026-08-17 6/300 2026-08-18 15:36 by wwm09
[基金申请] 时间戳又变了8-15 +14 archvillain 2026-08-15 26/1300 2026-08-18 13:37 by phantomgost
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +13 Ldrop2023 2026-08-13 16/800 2026-08-18 12:25 by 淀粉搬运工
[基金申请] 2027广东省杰青 +3 奶牛小黑 2026-08-15 8/400 2026-08-18 11:47 by gltch
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +4 Tide man 2026-08-14 5/250 2026-08-18 11:35 by Tide man
[基金申请] 93BebMhtakh前后11位开头都是大写 +4 且听虎啸 2026-08-17 5/250 2026-08-18 00:49 by 蔡棒棒菂
[基金申请] 感觉是下周放榜了 +6 angus9576 2026-08-17 11/550 2026-08-17 23:57 by angus9576
[基金申请] filecode=后面第一个是大写字母 +8 wangze12014 2026-08-14 10/500 2026-08-17 17:05 by xter9665
[基金申请] 咱们一起用铁证分析2026国家社科基金中标与否 +7 启萌科技 2026-08-12 26/1300 2026-08-16 12:35 by 启萌科技
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
[基金申请] 重要来源:本周末出结果 +10 瞬息宇宙 2026-08-12 10/500 2026-08-13 15:46 by likettle
[基金申请] 不应该看fileCode +7 且听虎啸 2026-08-12 9/450 2026-08-13 14:27 by flydreamws
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
信息提示
请填处理意见