24小时热门版块排行榜    

查看: 3528  |  回复: 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的回帖
相关版块跳转 我要订阅楼主 贺仪 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿华中科技大学071000,求调剂 +3 沿岸有贝壳6 2026-03-21 3/150 2026-03-21 10:35 by 暮云清寒
[考研] 346求调剂[0856] +4 WayneLim327 2026-03-16 7/350 2026-03-21 04:02 by JourneyLucky
[考研] 一志愿山大07化学 332分 四六级已过 本科山东双非 求调剂! +3 不想理你 2026-03-16 3/150 2026-03-21 03:59 by JourneyLucky
[考研] 083200学硕321分一志愿暨南大学求调剂 +3 innocenceF 2026-03-17 3/150 2026-03-21 02:35 by JourneyLucky
[考研] 【考研调剂】化学专业 281分,一志愿四川大学,诚心求调剂 +8 吃吃吃才有意义 2026-03-19 8/400 2026-03-21 00:49 by 刘国森
[考研] 304求调剂 +6 曼殊2266 2026-03-18 6/300 2026-03-21 00:32 by JourneyLucky
[考研] 22408 344分 求调剂 一志愿 华电计算机技术 +4 solanXXX 2026-03-20 4/200 2026-03-20 23:49 by alg094825
[考研] 一志愿南昌大学,327分,材料与化工085600 +9 Ncdx123456 2026-03-19 9/450 2026-03-20 23:41 by lovewei0727
[考研] 294求调剂材料与化工专硕 +15 陌の森林 2026-03-18 15/750 2026-03-20 23:28 by JourneyLucky
[考研] 350求调剂 +5 weudhdk 2026-03-19 5/250 2026-03-20 22:04 by luoyongfeng
[考研] 329求调剂 +9 想上学吖吖 2026-03-19 9/450 2026-03-20 22:01 by luoyongfeng
[考研] 广西大学家禽遗传育种课题组2026年硕士招生(接收计算机专业调剂) +3 123阿标 2026-03-17 3/150 2026-03-20 15:58 by 飞行琦
[考研] 266求调剂 +5 阳阳哇塞 2026-03-14 10/500 2026-03-19 15:08 by 阳阳哇塞
[考研] 一志愿985,本科211,0817化学工程与技术319求调剂 +10 Liwangman 2026-03-15 10/500 2026-03-19 10:25 by 无际的草原
[考研] 化学工程321分求调剂 +15 大米饭! 2026-03-15 18/900 2026-03-18 14:52 by haxia
[考研] 材料,纺织,生物(0856、0710),化学招生啦 +3 Eember. 2026-03-17 9/450 2026-03-18 10:28 by Eember.
[考研] 308求调剂 +4 是Lupa啊 2026-03-16 4/200 2026-03-17 17:12 by ruiyingmiao
[考研] 283求调剂 +3 听风就是雨; 2026-03-16 3/150 2026-03-17 07:41 by 热情沙漠
[考研] 070300化学学硕求调剂 +6 太想进步了0608 2026-03-16 6/300 2026-03-16 16:13 by kykm678
[考研] 复试调剂 +3 呼呼?~+123456 2026-03-14 3/150 2026-03-14 16:53 by WTUChen
信息提示
请填处理意见