Fortran Coder

查看: 11565|回复: 8
打印 上一主题 下一主题

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

[复制链接]

25

帖子

6

主题

0

精华

熟手

F 币
126 元
贡献
91 点
跳转到指定楼层
楼主
发表于 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

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

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

9#
发表于 2017-11-22 15:55:38 | 只看该作者
vidasll 发表于 2017-11-22 15:21
请问群号是多少,谢谢!

http://v.fcode.cn/
点击网页右上角的
QQ群交流

25

帖子

6

主题

0

精华

熟手

F 币
126 元
贡献
91 点
8#
 楼主| 发表于 2017-11-22 15:21:01 | 只看该作者
pasuka 发表于 2017-11-16 10:35
最快的办法还是加入本站QQ讨论群,加群主好友然后开启QQ远程桌面

请问群号是多少,谢谢!

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

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

7#
发表于 2017-11-16 10:35:41 | 只看该作者
vidasll 发表于 2017-11-16 08:22
你好,谢谢回复!
请问如果是没有权限或文件被占用
一般应当怎么解决? ...

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

25

帖子

6

主题

0

精华

熟手

F 币
126 元
贡献
91 点
6#
 楼主| 发表于 2017-11-16 08:22:41 | 只看该作者
li913 发表于 2017-11-15 09:48
对于程序来说,生成任何类型的文件都是一样的,可能是没有权限或文件被占用。 ...

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

25

帖子

6

主题

0

精华

熟手

F 币
126 元
贡献
91 点
5#
 楼主| 发表于 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')

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
地板
发表于 2017-11-15 09:48:02 | 只看该作者
对于程序来说,生成任何类型的文件都是一样的,可能是没有权限或文件被占用。

35

帖子

17

主题

0

精华

熟手

F 币
136 元
贡献
240 点
板凳
发表于 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

25

帖子

6

主题

0

精华

熟手

F 币
126 元
贡献
91 点
沙发
 楼主| 发表于 2017-11-14 14:47:08 | 只看该作者
另外说明,二进制文件可以保存,但是dat文件无法生成!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-11-23 15:04

Powered by Tencent X3.4

© 2013-2024 Tencent

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