Fortran Coder

标题: 无法保存dat文件 [打印本页]

作者: vidasll    时间: 2017-11-14 14:45
标题: 无法保存dat文件
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


作者: vidasll    时间: 2017-11-14 14:47
另外说明,二进制文件可以保存,但是dat文件无法生成!
作者: ksfengjia    时间: 2017-11-14 16:17
我测试过你的代码,本身写入.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

作者: li913    时间: 2017-11-15 09:48
对于程序来说,生成任何类型的文件都是一样的,可能是没有权限或文件被占用。
作者: vidasll    时间: 2017-11-16 08:21
ksfengjia 发表于 2017-11-14 16:17
我测试过你的代码,本身写入.dat文件是不存在问题的,是可以生成输出文件的。
主要问题应该出现在你的数组 ...

你好,非常感谢你的回复!
我也试了一下,将这一段直接做为主程序运行时是可以生成tecplot.dat文件的,
但是将其放在整个程序中做为子程序调用就无法生成,我认为你的建议是正确的,
所以我先试着把这些数组搞清楚再调试。
另外想请教一下,我Fortran能打开的网格类型的文件吗,例如msh,
我有一段程序读入网格文件是这样操作的:
open(unit=11,file='fluent.msh',status='unknown')
作者: vidasll    时间: 2017-11-16 08:22
li913 发表于 2017-11-15 09:48
对于程序来说,生成任何类型的文件都是一样的,可能是没有权限或文件被占用。 ...

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

最快的办法还是加入本站QQ讨论群,加群主好友然后开启QQ远程桌面
作者: vidasll    时间: 2017-11-22 15:21
pasuka 发表于 2017-11-16 10:35
最快的办法还是加入本站QQ讨论群,加群主好友然后开启QQ远程桌面

请问群号是多少,谢谢!
作者: pasuka    时间: 2017-11-22 15:55
vidasll 发表于 2017-11-22 15:21
请问群号是多少,谢谢!

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





欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2