Fortran Coder

查看: 18007|回复: 11
打印 上一主题 下一主题

[输入输出] 在循环语句中分别计算上千次,需要将数据输出到文本文...

[复制链接]

8

帖子

2

主题

0

精华

入门

F 币
37 元
贡献
22 点
跳转到指定楼层
楼主
发表于 2019-11-9 13:48:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问大神们,怎样把计算数据直接输出到文本或指定文件。
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

798

帖子

2

主题

0

精华

大宗师

F 币
3793 元
贡献
2268 点
沙发
发表于 2019-11-9 15:43:48 | 只看该作者
看书,文件操作部分。
[Fortran] 纯文本查看 复制代码
program test
open(10,file='out.txt')
do i=1,n
write(10,*) i
end do 
close(10)
end program 

8

帖子

2

主题

0

精华

入门

F 币
37 元
贡献
22 点
板凳
 楼主| 发表于 2019-11-9 17:02:30 | 只看该作者
li913 发表于 2019-11-9 15:43
看书,文件操作部分。
program test
open(10,file='out.txt')

前辈你好,如果将你所回答的输出为文件的代码正确加入具体程序在怎么加,下面是我具体程序;如能帮助,大恩大德,没齿难忘。
[Fortran] 纯文本查看 复制代码
IMPLICIT NONE 
        REAL*8 N1,N2,MU1,MU2,EPS1,EPS2
        REAL*8 ETA1,ETA2,C11,C12,C21,C22
        REAL*8 LAM,D,PI,C,OME
      REAL*8 K1,K2
        REAL*8 R,T,A
        COMPLEX*16 i,B11,B12,B21,B22,T11,T12,T21,T22
        PARAMETER(PI=3.14159D0)
        PARAMETER(C=3.99792D8)
        N1=1.00D0
      N2=1.50D0
      MU1=1.00D0
      MU2=1.00D0
        i=(0,1)
        EPS1=(N1)**2
        EPS2=(N2)**2
        ETA1=DSQRT(EPS1/MU1)*N1
        ETA2=DSQRT(EPS2/MU2)*N2
        C11=(ETA1+ETA2)/(2*ETA1)
        C12=(ETA1-ETA2)/(2*ETA1)
        C21=(ETA1-ETA2)/(2*ETA1)
      C22=(ETA1+ETA2)/(2*ETA1)
      LAM=3.00D-7
        DO LAM = 3.00D-7,12.00D-7,0.01D-7
                D=2.00D-7
          OME=2*PI*C/LAM
                K1=(OME*N1)/C
                K2=(OME*N2)/C
                B11=CDEXP(i*K1*D)*DEXP(-K2*D)
                B12=(0,0)
                B21=(0,0)
                B22=CDEXP(-i*K1*D)*DEXP(K2*D)
                T11=C11*B11+C12*B21
                T12=C11*B12+C12*B22
                T21=C21*B11+C22*B21
                T22=C21*B12+C22*B22
                R=(CDABS(-T12/T22))**2
                T=(CDABS(T11-(T12*T21)/T22))**2
                A=1-R-T
        WRITE(*,100)R,T,A
100        FORMAT(1X,F8.3,2X,F8.3,2X,F8.3)
      END DO
        WRITE(*,*)'FINISH'
        END

8

帖子

2

主题

0

精华

入门

F 币
37 元
贡献
22 点
地板
 楼主| 发表于 2019-11-9 17:03:54 | 只看该作者
li913 发表于 2019-11-9 15:43
看书,文件操作部分。
[mw_shl_code=fortran,true]program test
open(10,file='out.txt')

我是FORTRAN77,书上的我看了试不成功。

1961

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1350 元
贡献
570 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

5#
发表于 2019-11-10 10:35:44 | 只看该作者
注意 !/////======= 注释的行
[Fortran] 纯文本查看 复制代码
IMPLICIT NONE 
        REAL*8 N1,N2,MU1,MU2,EPS1,EPS2
        REAL*8 ETA1,ETA2,C11,C12,C21,C22
        REAL*8 LAM,D,PI,C,OME
      REAL*8 K1,K2
        REAL*8 R,T,A
        COMPLEX*16 i,B11,B12,B21,B22,T11,T12,T21,T22
        PARAMETER(PI=3.14159D0)
        PARAMETER(C=3.99792D8)
        N1=1.00D0
      N2=1.50D0
      MU1=1.00D0
      MU2=1.00D0
        i=(0,1)
        EPS1=(N1)**2
        EPS2=(N2)**2
        ETA1=DSQRT(EPS1/MU1)*N1
        ETA2=DSQRT(EPS2/MU2)*N2
        C11=(ETA1+ETA2)/(2*ETA1)
        C12=(ETA1-ETA2)/(2*ETA1)
        C21=(ETA1-ETA2)/(2*ETA1)
      C22=(ETA1+ETA2)/(2*ETA1)
      LAM=3.00D-7
      open(12,file='out.txt')!/////=======
        DO LAM = 3.00D-7,12.00D-7,0.01D-7
                D=2.00D-7
          OME=2*PI*C/LAM
                K1=(OME*N1)/C
                K2=(OME*N2)/C
                B11=CDEXP(i*K1*D)*DEXP(-K2*D)
                B12=(0,0)
                B21=(0,0)
                B22=CDEXP(-i*K1*D)*DEXP(K2*D)
                T11=C11*B11+C12*B21
                T12=C11*B12+C12*B22
                T21=C21*B11+C22*B21
                T22=C21*B12+C22*B22
                R=(CDABS(-T12/T22))**2
                T=(CDABS(T11-(T12*T21)/T22))**2
                A=1-R-T
        WRITE(12,100)R,T,A !/////=======
100        FORMAT(1X,F8.3,2X,F8.3,2X,F8.3)
      END DO
      close(12) !/////=======
        WRITE(*,*)'FINISH'
        END

8

帖子

2

主题

0

精华

入门

F 币
37 元
贡献
22 点
6#
 楼主| 发表于 2019-11-10 12:54:00 | 只看该作者
fcode 发表于 2019-11-10 10:35
注意 !/////======= 注释的行
[mw_shl_code=fortran,true]IMPLICIT NONE
        REAL*8 N1,N2,MU1,MU2,EP ...

感谢前辈。我改试了,加了一行在屏幕输出,发现屏幕输出结果与输出文本中的数据不一致(一共输出三列数据,第一列R一样,到第二三列的T,A不一样)这是什么原因,怎么修改?

1961

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1350 元
贡献
570 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

7#
发表于 2019-11-10 13:06:10 | 只看该作者
给出你修改后的代码

8

帖子

2

主题

0

精华

入门

F 币
37 元
贡献
22 点
8#
 楼主| 发表于 2019-11-10 15:40:52 | 只看该作者
fcode 发表于 2019-11-10 13:06
给出你修改后的代码

就加了一行屏幕输出,屏幕输出和文本居然不一样
[Fortran] 纯文本查看 复制代码
IMPLICIT NONE 
        REAL*8 N1,N2,MU1,MU2,EPS1,EPS2
        REAL*8 ETA1,ETA2,C11,C12,C21,C22
        REAL*8 LAM,D,PI,C,OME
      REAL*8 K1,K2
        REAL*8 R,T,A
        COMPLEX*16 i,B11,B12,B21,B22,T11,T12,T21,T22
        PARAMETER(PI=3.14159D0)
        PARAMETER(C=3.99792D8)
        N1=1.00D0
      N2=1.50D0
      MU1=1.00D0
      MU2=1.00D0
        i=(0,1)
        EPS1=(N1)**2
        EPS2=(N2)**2
        ETA1=DSQRT(EPS1/MU1)*N1
        ETA2=DSQRT(EPS2/MU2)*N2
        C11=(ETA1+ETA2)/(2*ETA1)
        C12=(ETA1-ETA2)/(2*ETA1)
        C21=(ETA1-ETA2)/(2*ETA1)
      C22=(ETA1+ETA2)/(2*ETA1)
      LAM=3.00D-7
      OPEN(12,FILE='out.txt')
        DO LAM = 3.00D-7,12.00D-7,0.01D-7
                D=2.00D-7
          OME=2*PI*C/LAM
                K1=(OME*N1)/C
                K2=(OME*N2)/C
                B11=CDEXP(i*K1*D)*DEXP(-K2*D)
                B12=(0,0)
                B21=(0,0)
                B22=CDEXP(-i*K1*D)*DEXP(K2*D)
                T11=C11*B11+C12*B21
                T12=C11*B12+C12*B22
                T21=C21*B11+C22*B21
                T22=C21*B12+C22*B22
                R=(CDABS(-T12/T22))**2
                T=(CDABS(T11-(T12*T21)/T22))**2
                A=1-R-T
        WRITE(*,100)R,T,A
        WRITE(12,100)R,T,A 
100        FORMAT(1X,F8.3,2X,F8.3,2X,F8.3)
      END DO
      CLOSE(12)
        WRITE(*,*)'FINISH'
        END

1961

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1350 元
贡献
570 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

9#
发表于 2019-11-10 17:15:55 | 只看该作者
我试了一下,是一样的。
如果你的不一样,可否告知你的屏幕输出和文件输出分别是什么?
(以最后十行为例)

在我这里,最后十行内容为:
    0.148     0.081     0.771
    0.148     0.081     0.771
    0.148     0.081     0.771
    0.148     0.081     0.771
    0.148     0.082     0.771
    0.148     0.082     0.770
    0.148     0.082     0.770
    0.148     0.082     0.770
    0.148     0.082     0.770
    0.148     0.083     0.769

8

帖子

2

主题

0

精华

入门

F 币
37 元
贡献
22 点
10#
 楼主| 发表于 2019-11-10 17:56:10 | 只看该作者
fcode 发表于 2019-11-10 17:15
我试了一下,是一样的。
如果你的不一样,可否告知你的屏幕输出和文件输出分别是什么?
(以最后十行为例) ...

后面部分的确是相同的,但是开始部分不一样
屏幕上是
0.148   0.029  0.823
文本是
0.148   0.000  0.852
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-4-25 12:44

Powered by Tencent X3.4

© 2013-2024 Tencent

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