下面这段程序是我在某大神德基础上修改的binary二进制文件的输出程序,得到的文件会提示“invalid header in the binary datafile!” (见附件“捕获.JPG”) 程序改了好多遍,都没解决问题。希望各位前辈,师兄指点一下。
"捕获2.JPG"是我想输出的三维图形,就是一个网格,没有其他的东西。
f90文件是我的程序节选。
open(99,file="tecbin.plt",form="binary"
!----1.1 Magic number, Version number
write(99) "#!TDV101"
!---1.2. Integer value of 1.----------------------------------------------------------
! +-----------+
! | INT32 | This is used to determine the byte order
! +-----------+ of the reader relative to the writer.
write(99) 1
!---1.3. Title and variable names.-------------------------------------------------
!---1.3.1. The TITLE. (See note 1.)
write(99) ICHAR('A')
write(99) 0
!---1.3.2 Number of variables (NumVar) in the datafile.
write(99) 3
!----1.3.3 Variable names. N = L[1] + L[2] + .... L[NumVar]
write(99) ichar('X') ! name of variables (NumVar) in the datafile
write(99) 0
write(99) ichar('Y')
write(99) 0
write(99) ichar('Z')
write(99) 0
!---1.4. Zones-------------------------------------------------------------------
!---1.4.1 Zone 1+++++++++++++++++++++++++++++++++++++++++++
write(99) 299.0 ! Zone marker. Value = 299.0
write(99) ichar('Z') ! Zone name. (See note 1.) N = length of zone name + 1.
write(99) ichar('O')
write(99) ichar('N')
write(99) ichar('E')
write(99) ichar('0')
write(99) ichar('1')
write(99) 0
write(99) -1 !-------Zone Color (set to -1 if you want tecplot todetermine).
write(99) 0 !-------ZoneType 0=ORDERED,1=FELINESEG,2=FETRIANGLE,3=FEQUADRILATERAL,4=FETETRAHEDRON,5=FEBRICK
write(99) 1 !-------DataPacking 0=Block, 1=Point
write(99) 0 !-------Specify Var Location. 0 = Don't specify, all data is located at the nodes. 1 = Specify
write(99) 0 !-------Number of user defined face neighbor connections (value >= 0)
write(99) IMax !-------IMax,JMax,KMax
write(99) JMax
write(99) KMax
write(99) 0 ! 1=Auxiliary name/value pair to follow 0=No more Auxiliar name/value pairs
! 0=No more Auxiliar name/value pairs
!---1.4.2 Zone 2+++++++++++++++++++++++++++++++++++++++++++
write(99) 299.0 ! Zone marker. Value = 299.0
write(99) ichar('Z') ! Zone name. (See note 1.) N = length of zone name + 1.
write(99) ichar('O')
write(99) ichar('N')
write(99) ichar('E')
write(99) ichar('0')
write(99) ichar('1')
write(99) 0
write(99) -1 !-------Zone Color (set to -1 if you want tecplot todetermine).
write(99) 0 !-------ZoneType 0=ORDERED,1=FELINESEG,2=FETRIANGLE,3=FEQUADRILATERAL,4=FETETRAHEDRON,5=FEBRICK
write(99) 1 !-------DataPacking 0=Block, 1=Point
write(99) 0 !-------Specify Var Location. 0 = Don't specify, all data is located at the nodes. 1 = Specify
write(99) 0 !-------Number of user defined face neighbor connections (value >= 0)
write(99) IMax !-------IMax=10,JMax=10,KMax=30. the same value as follows
write(99) JMax
write(99) KMax
write(99) 0 ! 1=Auxiliary name/value pair to follow 0=No more Auxiliar name/value pairs
! 0=No more Auxiliar name/value pairs
!---1.4.3 Zone 3+++++++++++++++++++++++++++++++++++++++++++
write(99) 299.0 ! Zone marker. Value = 299.0
write(99) ichar('Z') ! Zone name. (See note 1.) N = length of zone name + 1.
write(99) ichar('O')
write(99) ichar('N')
write(99) ichar('E')
write(99) ichar('0')
write(99) ichar('1')
write(99) 0
write(99) -1 !-------Zone Color (set to -1 if you want tecplot todetermine).
write(99) 0 !-------ZoneType 0=ORDERED,1=FELINESEG,2=FETRIANGLE,3=FEQUADRILATERAL,4=FETETRAHEDRON,5=FEBRICK
write(99) 1 !-------DataPacking 0=Block, 1=Point
write(99) 0 !-------Specify Var Location. 0 = Don't specify, all data is located at the nodes. 1 = Specify
write(99) 0 !-------Number of user defined face neighbor connections (value >= 0)
write(99) IMax !-------IMax,JMax,KMax
write(99) JMax
write(99) KMax
write(99) 0 ! 1=Auxiliary name/value pair to follow 0=No more Auxiliar name/value pairs
! 0=No more Auxiliar name/value pairs
!---2---------data section-----------------------------
write(99) 357.0 ! EOHMARKER, value=357.0
!---2.1------zone 1++++++++++++++++++
write(99) 299.0 ! Zone marker Value = 299.0
write(99) 2 ! variable data format, N=Total number of vars
write(99) 2 ! 1=Float, 2=Double, 3=LongInt, 4=ShortInt, 5=Byte, 6=Bit
write(99) 2
write(99) 0 ! Has passive variables: 0 = no, 1 = yes.
write(99) -1 ! Zero based zone number to share connectivity list with (-1 = no sharing)
do k=1,kmax
do j=1,jmax
do i=1,imax
write(99) xg(i,j,k,1),yg(i,j,k,1),zg(i,j,k,1) !--------Zone Data. Each variable is in data format asspecified above.
end do
end do
end do
!---2.2------zone 2 +++++++++++++++++
write(99) 299.0 ! Zone marker Value = 299.0
write(99) 2 ! variable data format, N=Total number of vars
write(99) 2 ! 1=Float, 2=Double, 3=LongInt, 4=ShortInt, 5=Byte, 6=Bit
write(99) 2
write(99) 0 ! Has passive variables: 0 = no, 1 = yes.
write(99) -1 ! Zero based zone number to share connectivity list with (-1 = no sharing)
do k=1,kmax
do j=1,jmax
do i=1,imax
write(99) xg(i,j,k,2),yg(i,j,k,2),zg(i,j,k,2) !--------Zone Data. Each variable is in data format asspecified above.
end do
end do
end do
!---2.3------zone 3 +++++++++++++
write(99) 299.0 ! Zone marker Value = 299.0
write(99) 2 ! variable data format, N=Total number of vars
write(99) 2 ! 1=Float, 2=Double, 3=LongInt, 4=ShortInt, 5=Byte, 6=Bit
write(99) 2
write(99) 0 ! Has passive variables: 0 = no, 1 = yes.
write(99) -1 ! Zero based zone number to share connectivity list with (-1 = no sharing)
do k=1,kmax
do j=1,jmax
do i=1,imax
write(99) xg(i,j,k,3),yg(i,j,k,3),zg(i,j,k,3) !--------Zone Data. Each variable is in data format asspecified above.
end do
end do
end do
close(99)
![fortran程序中输出tecplot二进制文件]()
捕获.JPG
![fortran程序中输出tecplot二进制文件-1]()
捕获2.JPG |