24小时热门版块排行榜    

Znn3bq.jpeg
查看: 3568  |  回复: 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的回帖
相关版块跳转 我要订阅楼主 贺仪 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 本人女孩 +5 吼吼, 2026-04-10 6/300 2026-04-11 00:09 by 任文亮
[考研] 求调剂288 +6 ioodiiij 2026-04-10 8/400 2026-04-10 21:07 by zhouxiaoyu
[考研] 362求调剂 +10 我要考大 2026-04-06 14/700 2026-04-10 17:00 by luoyongfeng
[考研] 343求调剂 +5 王国帅 2026-04-10 5/250 2026-04-10 16:56 by 猪会飞
[考研] 080100力学316求调剂 +7 L_Hairui 2026-04-07 7/350 2026-04-10 09:45 by vgtyfty
[考研] 347材料专硕求调剂 +19 zj8215216 2026-04-06 19/950 2026-04-10 09:36 by 690616278
[考研] 296求调剂 +6 汪!?! 2026-04-09 6/300 2026-04-09 20:49 by lbsjt
[考研] 调剂 +8 只叙离别辞 2026-04-09 10/500 2026-04-09 20:25 by zl8213662
[考研] 材料299专硕求调剂 +10 +21 2026-04-09 10/500 2026-04-09 17:34 by 1753564080
[考研] 349学科化学045106求调剂,化学类都可以 +8 保好懂懂 2026-04-08 8/400 2026-04-09 14:03 by xulei3024
[考研] 311求调剂 +6 surte 2026-04-08 13/650 2026-04-09 14:00 by surte
[考研] 086000生物与医药调剂 +7 awwwwwooooo 2026-04-09 7/350 2026-04-09 13:31 by 北极159263
[考研] 招收有机化学、化工,药学,食品灯专业学生 +3 yrfhjgdj 2026-04-08 3/150 2026-04-09 10:15 by QYQX_123
[考研] 一志愿211,化学学硕,310分,本科重点双非,求调剂 +10 努力奋斗112 2026-04-07 10/500 2026-04-08 15:01 by screening
[考研] 315求调剂 +17 欣喜777 2026-04-04 18/900 2026-04-08 13:54 by hangsimei
[考研] 071000生物学,一志愿深圳大学296分,求调剂 +12 TIckLw 2026-04-06 13/650 2026-04-07 20:34 by lijunpoly
[考研] 295求调剂 +18 xndjjj 2026-04-04 19/950 2026-04-07 11:02 by wangjy2002
[考研] 327考研调剂推荐 +6 呜呜呜呜呢 2026-04-06 6/300 2026-04-06 21:39 by 啵啵啵0119
[考研] 298求调剂 +7 manman511 2026-04-05 7/350 2026-04-05 10:29 by 唐沐儿
[考研] 能动调剂326专硕 +4 wan112233 2026-04-04 4/200 2026-04-04 22:47 by yu221
信息提示
请填处理意见