Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Binary paraview无法使用fortran代码中用于直线网格的二进制vtk_Binary_Fortran_Vtk_Paraview - Fatal编程技术网

Binary paraview无法使用fortran代码中用于直线网格的二进制vtk

Binary paraview无法使用fortran代码中用于直线网格的二进制vtk,binary,fortran,vtk,paraview,Binary,Fortran,Vtk,Paraview,我使用stackoverflow发布的代码,并将其修改为: program VTKBinary implicit none real*4 :: x(2) = (0., 1.) real*4 :: y(2) = (0., 1.) real*4 :: z(2) = (0., 1.) character :: buffer*80, lf*1, str1*8, str2*8, str3*8 integer :: ivtk = 9, int,i lf = char(10) !

我使用stackoverflow发布的代码,并将其修改为:

program VTKBinary

implicit none

real*4    :: x(2) = (0., 1.)
real*4    :: y(2) = (0., 1.)
real*4    :: z(2) = (0., 1.)

character :: buffer*80, lf*1, str1*8, str2*8, str3*8
integer   :: ivtk = 9, int,i

lf = char(10) ! line feed character

!open(unit=ivtk,file='test_bin.vtk',form='binary',convert='BIG_ENDIAN')
open(unit=ivtk,file='test_bin.vtk',access='stream',convert='BIG_ENDIAN')

buffer = '# vtk DataFile Version 3.0'//lf      ; write(ivtk) trim(buffer)
buffer = 'vtk output'//lf                      ; write(ivtk) trim(buffer)
buffer = 'BINARY'//lf                          ; write(ivtk) trim(buffer)
buffer = 'DATASET RECTILINEAR_GRID'//lf        ; write(ivtk) trim(buffer)

! WRITE GRID
write(str1(1:8),'(i8)') size(x)
write(str2(1:8),'(i8)') size(y)
write(str3(1:8),'(i8)') size(z)
buffer = 'DIMENSIONS '//str1//str2//str3//lf         ; write(ivtk) trim(buffer)
buffer = 'X_COORDINATES '//str1//'  float'//lf                 ; write(ivtk) trim(buffer)
!write(ivtk) x
write(ivtk) (x(i),i=1,size(x))
buffer = lf//'Y_COORDINATES '//str2//'  float'//lf             ; write(ivtk) trim(buffer)
!write(ivtk) y
write(ivtk) (y(i),i=1,size(y))
buffer = lf//'Z_COORDINATES '//str3//'  float'//lf             ; write(ivtk) trim(buffer)
!write(ivtk) z
write(ivtk) (z(i),i=1,size(z))

close(ivtk)

end program VTKBinary
这段代码由gfortran很好地编译,可以很好地生成vtk文件

问题:paraview读取vtk时出错,如下所示:

Warning: In C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\Core\vtkRenderer.cxx, line 1029
vtkOpenGLRenderer (000000000BF00BF0): Resetting view-up since view plane normal is parallel
问题:你能帮我解决这个问题吗


非常感谢。

主要问题由@AlexanderVoigt指出。数组被指定为
[0,1.]
,而不是
(0,1.)
,它是一个等于一个虚单位i的复数

另一个问题是末尾缺少
lf
。只用

buffer = 'X_COORDINATES '//str1//'  float'//lf             ; write(ivtk) trim(buffer)
write(ivtk) x, lf
buffer = 'Y_COORDINATES '//str2//'  float'//lf             ; write(ivtk) trim(buffer)
write(ivtk) y, lf
buffer = 'Z_COORDINATES '//str3//'  float'//lf             ; write(ivtk) trim(buffer)
write(ivtk) z, lf
最好始终将
lf
放在末尾,这样您就不会忘记它

顺便说一句,您不必将字符串放入缓冲区,然后对其进行修剪,甚至可以直接写入:

write(ivtk) 'X_COORDINATES '//str1//'  float'//lf

@AlexanderVoigt指出了主要问题。数组被指定为
[0,1.]
,而不是
(0,1.)
,它是一个等于一个虚单位i的复数

另一个问题是末尾缺少
lf
。只用

buffer = 'X_COORDINATES '//str1//'  float'//lf             ; write(ivtk) trim(buffer)
write(ivtk) x, lf
buffer = 'Y_COORDINATES '//str2//'  float'//lf             ; write(ivtk) trim(buffer)
write(ivtk) y, lf
buffer = 'Z_COORDINATES '//str3//'  float'//lf             ; write(ivtk) trim(buffer)
write(ivtk) z, lf
最好始终将
lf
放在末尾,这样您就不会忘记它

顺便说一句,您不必将字符串放入缓冲区,然后对其进行修剪,甚至可以直接写入:

write(ivtk) 'X_COORDINATES '//str1//'  float'//lf

你能发布你获取代码的链接吗?gfortran从什么时候开始支持
convert='BIG_ENDIAN'
?好的,不知道从什么时候开始,但它确实存在问题之一可能是
(a,b)
表示复数
a+ib
。要指定数组,请使用
[a,b]
。不幸的是,这并不能帮助我调试您的问题……好吧,并不是真的建议:“此外,convert=BIG_ENDIAN是非标准的,不能与许多编译器一起工作(例如,gfortran,如果我记得正确的话)。”我甚至都不记得这一点,我更正了答案,结果是,在这样做之后,它们只是重复的。也许人们不应该接受不能解决问题的答案。你能发布你获取代码的链接吗?gfortran从什么时候开始支持
convert='BIG_ENDIAN'
?好的,我不知道从什么时候开始,但问题之一可能是
(a,b)
表示复数
a+ib
。要指定数组,请使用
[a,b]
。不幸的是,这并不能帮助我调试您的问题……好吧,并不是真的建议:“此外,convert=BIG_ENDIAN是非标准的,不能与许多编译器一起工作(例如,gfortran,如果我记得正确的话)。”我甚至都不记得这一点,我更正了答案,结果是,在这样做之后,它们只是重复的。也许人们不应该接受那些不能解决问题的答案。你可能也想改变你的其他答案。。。复杂符号的问题是从那里复制过来的。也许它们毕竟是重复的。我看到了,我看到了一个4点的立方体…非常感谢Alexander,我将(a,b)改为[a,b],效果很好。谢谢你可能还想更改你的其他答案。。。复杂符号的问题是从那里复制过来的。也许它们毕竟是重复的。我看到了,我看到了一个4点的立方体…非常感谢Alexander,我将(a,b)改为[a,b],效果很好。谢谢