Fortran Coder

查看: 103|回复: 8

[文件读写] 无法保存dat文件

[复制链接]

24

帖子

5

主题

0

精华

熟手

F 币
117 元
贡献
84 点
发表于 2017-11-14 14:45:53 | 显示全部楼层 |阅读模式
LZ正在调试就算程序,想讲计算结果保存为dat文件格式,但是始终无法生成,不知道是什么原因,请大神指点!
附程序代码如下:
[Fortran] 纯文本查看 复制代码
c***************write data to TECPLOT file
c
      open(unit=15,file='tecplot.dat',form='formatted',status='unknown')
c-------three-dimensional
      text='VARIABLES = X Y Z U V W P K E VIS'
      write(15,90)text
 90   format(1x,70a)
      write(15,92)ni,nj,nk
 92   format(1x,'ZONE T="Zone-One", I= ',i3,' ,J= ',i3,' ,K= ',i3,
     .       ' ,F=POINT')
      do k=1,nk
      do j=1,nj
      do i=1,ni
        write(15,98)xp(i,j,k),yp(i,j,k),zp(i,j,k),phi(i,j,k,u),
     &phi(i,j,k,v),phi(i,j,k,w),phi(i,j,k,p),phi(i,j,k,te),
     &phi(i,j,k,ed),vis(i,j,k)
      end do
      end do
      end do
      close(15)
 88   format(1x,8(1pe13.6,2x))
 98   format(1x,10(1pe13.6,2x))

      return
      end

回复

使用道具 举报

24

帖子

5

主题

0

精华

熟手

F 币
117 元
贡献
84 点
 楼主| 发表于 2017-11-14 14:47:08 | 显示全部楼层
另外说明,二进制文件可以保存,但是dat文件无法生成!

22

帖子

9

主题

0

精华

熟手

F 币
115 元
贡献
161 点
发表于 2017-11-14 16:17:34 | 显示全部楼层
我测试过你的代码,本身写入.dat文件是不存在问题的,是可以生成输出文件的。
主要问题应该出现在你的数组中,可以试着分别将每个数组输出来看一下。

[Fortran] 纯文本查看 复制代码
    !< write data to TECPLOT file
    program printDat
    implicit none
    integer :: i,j,k
    integer :: ni
    integer :: nj
    integer :: nk
    real(kind=8) :: xp(5,5,5) 
    character :: text
  
    ni = 5
    nj = 5
    nk = 5
    
    open(unit=15,file='tecplot.dat',form='formatted',status='unknown')
    !< three-dimensional
    text='VARIABLES = X Y Z U V W P K E VIS'
    write(15,90) text
90  format(1x,70a)
      
    write(15,92) ni,nj,nk
92  format(1x,'ZONE T="Zone-One", I= ',i3,' ,J= ',i3,' ,K= ',i3,' ,F=POINT')
    
    do k=1,nk
        do j=1,nj
            do i=1,ni
!                write(15,98)xp(i,j,k),yp(i,j,k),zp(i,j,k),phi(i,j,k,u),
!                    &phi(i,j,k,v),phi(i,j,k,w),phi(i,j,k,p),phi(i,j,k,te),
!                    &phi(i,j,k,ed),vis(i,j,k)
                write(15,108) xp(i,j,k)
            enddo
        enddo
    enddo
98  format(1x,10(1pe13.6,2x))
108 format(1x,1(1pe13.6,2x))    
    
    close(15)
    endprogram

211

帖子

1

主题

0

精华

宗师

F 币
1234 元
贡献
849 点
发表于 2017-11-15 09:48:02 | 显示全部楼层
对于程序来说,生成任何类型的文件都是一样的,可能是没有权限或文件被占用。

24

帖子

5

主题

0

精华

熟手

F 币
117 元
贡献
84 点
 楼主| 发表于 2017-11-16 08:21:29 | 显示全部楼层
ksfengjia 发表于 2017-11-14 16:17
我测试过你的代码,本身写入.dat文件是不存在问题的,是可以生成输出文件的。
主要问题应该出现在你的数组 ...

你好,非常感谢你的回复!
我也试了一下,将这一段直接做为主程序运行时是可以生成tecplot.dat文件的,
但是将其放在整个程序中做为子程序调用就无法生成,我认为你的建议是正确的,
所以我先试着把这些数组搞清楚再调试。
另外想请教一下,我Fortran能打开的网格类型的文件吗,例如msh,
我有一段程序读入网格文件是这样操作的:
open(unit=11,file='fluent.msh',status='unknown')

24

帖子

5

主题

0

精华

熟手

F 币
117 元
贡献
84 点
 楼主| 发表于 2017-11-16 08:22:41 | 显示全部楼层
li913 发表于 2017-11-15 09:48
对于程序来说,生成任何类型的文件都是一样的,可能是没有权限或文件被占用。 ...

你好,谢谢回复!
请问如果是没有权限或文件被占用
一般应当怎么解决?

376

帖子

2

主题

0

精华

大宗师

F 币
2585 元
贡献
1549 点

水王勋章元老勋章热心勋章

发表于 2017-11-16 10:35:41 | 显示全部楼层
vidasll 发表于 2017-11-16 08:22
你好,谢谢回复!
请问如果是没有权限或文件被占用
一般应当怎么解决? ...

最快的办法还是加入本站QQ讨论群,加群主好友然后开启QQ远程桌面

24

帖子

5

主题

0

精华

熟手

F 币
117 元
贡献
84 点
 楼主| 发表于 2017-11-22 15:21:01 | 显示全部楼层
pasuka 发表于 2017-11-16 10:35
最快的办法还是加入本站QQ讨论群,加群主好友然后开启QQ远程桌面

请问群号是多少,谢谢!

376

帖子

2

主题

0

精华

大宗师

F 币
2585 元
贡献
1549 点

水王勋章元老勋章热心勋章

发表于 2017-11-22 15:55:38 | 显示全部楼层
vidasll 发表于 2017-11-22 15:21
请问群号是多少,谢谢!

http://v.fcode.cn/
点击网页右上角的
QQ群交流
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|QQ群|Fcode

GMT+8, 2017-12-18 15:09

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

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