目录

  • 一、VisIt简介
    • 1.1 VisIt基本介绍
    • 1.2 为什么选择VisIt?
    • 1.3 VisIt可视化策略选取
  • 二、使用要求
  • 三、安装流程
  • 四、基本绘图方法
  • 五、编程前的配置
  • 六、编程实例
    • 6.1 创建一个基本的silo文件
    • 6.2 写入一维粒子数据
    • 6.3 写入二维场强数据
    • 6.4 串行到并行绘图
    • 6.5 写入其他类型的数据
  • 七、常见问题和解决办法
  • 八、后期工作

一、VisIt简介

1.1 VisIt基本介绍

VisIt是一种免费、开放源代码、跨平台、分布式、并行的可视化工具,用于可视化在二维和三维结构化和非结构化网格上定义的数据。VisIt的分布式体系结构使其可以利用远程大型并行计算机进行计算和本地计算机的硬件进行绘图。VisIt的用户界面通常在Windows,Linux或OSX台式计算机上本地运行,而其计算引擎组件则在远程计算机上并行运行。

VisIt 具有一种客户端-服务器体系结构,该体系结构由一个或多个连接到查看器的客户端组成,该查看器连接到一个或多个并行服务器。客户端和查看器通常在用户桌面系统上本地运行,而并行服务器在某些远程高性能计算平台上运行。如下图所示。这是最常见的情况,但是组件也可以全部运行在单个系统上,无论是在台式机上还是在远程高性能计算平台上。对于少量的数据集,该服务器还可以串行运行。

VisIt 支持许多不同的客户端,包括图形用户界面(GUI),基于 Python 的命令行界面(CLI)和 Java 编程界面。一次可以有多个客户端处于活动状态,VisIt 会协调它们之间的状态,使它们保持同步。

1.2 为什么选择VisIt?

几种常用绘图工具的比较如下所示。


VisIt、Matlab和Origin对粒子数据和场数据的可视化效果如下图所示。

VisIt、Matlab和Origin对粒子数据和场数据作图时间的比较如下表所示。

综合考虑绘图效果、作图速度、灵活性、可处理规模、程序发展等方面,VisIt都是一个更为合适的选择。

1.3 VisIt可视化策略选取

通过VisIt实现可视化共有三种方法:

  1. 编写VisIt可以识别的文件,如果模拟程序是C、Fortran语言则导出Silo文件,如果是C、Python等其它语言则导出VTK文件。这里用的是Fortran,所以选择Silo文件格式。
  2. 给VisIt编写插件,以读取现有程序能生成的文件,比如DAT格式文件。
  3. 在程序内编写调用模块,直接调取 VisIt进行在线作图。

三种方式的优缺点比较如下表所示:


对于一般的模拟程序而言,采用第一种方式最为简单和直接。经过实际的比较,Silo格式的文件比Dat文件的文件写入速度要快得多,而且生成的文件大小也更小,具有明显的优势。

文件格式 粒子数据写入时间 场强数据写入时间
Silo 0.015625 秒 0.015625 秒
Dat 1.218750 秒 0.390625 秒
文件格式 写入粒子数据 写入场强数据
Silo 5.37M 0.207M
Dat 17.3M 4.28M

综上,目前以第一种可视化策略为主。本教程也主要是在Windows平台上实现第一种绘图方法。

二、使用要求

VisIt能支持在多种平台上运行,但是其对运行环境有一些特殊的要求,尤其是对于程序开发人员来说。

1、计算机系统必须是 64 位的,VisIt目前均为64位的安装包,不支持在32位的操作系统上运行。
2、VisIt 要求计算机上安装好 64 位的 Visual Studio 2017 和 CMAKE 等专业软件,如果已经有了silo文件,不需要自己存储数据的话可以不需要。
3、计算机需要有较好的处理器和显示器,以保证运行的流畅性。本机的参考配置为i7八核处理器 2.90GHz、16G内存、intel UHD Graphics 630第八代核显(推荐使用独立显卡)、1080P 27寸戴尔显示器。
4、安装好2017或2019版本的IVF编译器,以及MPI并行程序接口,以满足VisIt和模拟程序的并行运行要求,并进行相应的配置,同理,不需要编程的话可以不用,本教程是从需要编程开发的角度写的。

三、安装流程

开始安装之前先准备好上面的运行环境,其中安装Visual Studio、IVF等软件可以参考网上教程,安装好VS2017、IVF2017/2019、MPI等Fortran编程开发环境。

首先进入官方下载地址:
https://wci.llnl.gov/simulation/computer-codes/visit/executables。进入官网后,找到对应的 VisIt 版本,这里以最新的 VisIt 3.1 版本为例,点击 Windows(10/8/7)64 Bit 后面的Download按钮进行下载。

将文件下载到指定目录下后,双击exe文件运行。

如果电脑上安装了杀毒软件的话,需要全部关掉,同时也要把系统自带的防火墙关掉,否则将会出现如下图所示的报错提示,导致安装无法进行。


因为本电脑只安装了Windows自带的防火墙,所以只需要将其关闭即可,在电脑右下角的任务栏里面找到 Windows Security并打开。


在弹出来的 Windows Security 窗口中找到下图所示的图标,点进去。

在 Virus & threat protection 页面里面,找到 Virus & threat protection Settings 板块,点击下面的 Manage settings。

在 Virus & threat protection Settings 页面里面,找到 Real-time protection,在它下面有一个开关按钮,把它拨到 Off 的状态。同理,把 Real-time protection 下面还有 Cloud-delivered protection、Automatic sample submission 和 Tamper Protection 三项,也按同样的方法关闭。



接下来再重新运行visit3.1.0_x64.exe文件。如果还提示安全警告可以点图中的 More info,然后选择Run anyway,也可以运行。



点击Next进行下一步。


点击I Agree。


选择All Users,Next。


自动下载相关文件中。

选择安装位置。注意安装路径不要有中文,点击Next。


选择要安装的组件,建议都安装,其中Plugin development组件安装必须先安装好Microsoft Visual Studio 2017,全部勾选后点击Next。


选择默认的数据库读取插件,这里默认不选择,点击Next。


选择网络配置,这里也默认不选择,点击Next。


关联文件类型,这里是可选项,如果后面用到Python控制VisIt则勾选上第一项,这里建议两个都勾选,点击Install。


正在安装,稍等几分钟。

安装过程会提示你如果想要用到VisIt的远程处理功能,则需要将VisIt添加到系统防火墙的例外清单中,点击OK,再点击Finish完成安装。



安装完成之后,按照相同的方法再去把系统防火墙打开。此时桌面就会有一个VisIt软件的图标,双击运行它。会弹出两个安全警告窗口,都选择Allow access。至此,软件的安装完成。


第一次运行会弹出三个窗口,GUI操作面板、图形显示窗口和用户指导手册。

其他注意事项:

  1. 如果运行VisIt后发现窗口出现绿色闪烁条纹,影响显示效果,多半是核心显卡的问题,可以通过切换为独立显或卸载当前显卡来解决,参考教程:http://cadclub.glodon.com/question/detail/4402。
  2. 如果出现运行VisIt后只弹出一个窗口,找不到另一个窗口,多半是显示器的问题,显示器的分辨率过小,默认无法全部显示出来,可以调高显示器的分辨率,如果无法继续调高显示器的分辨率,可以使用Windows自带的分屏功能将另一个窗口调出来——将其中一个窗口用鼠标拖拽到显示器最左侧,松开后在右侧会显示其余活动窗口,单击Window窗口即可调出来。


4. 每次导入一个数据文件到VisIt时,会让你选择操作模式,Serial是串行,parallel是并行,如果想要缩短绘图时间并且处理器性能较好时建议选择并行模式,同时还可以设置要使用处理器的数量,默认是CPU的最大核数。
5.

四、基本绘图方法

当运行 VisIt图形用户界面时,可以看到一个基于Qt的 GUI 窗口(左)。GUI 是 VisIt 的客户端,提供了用户界面和菜单,可以选择要显示的内容。查看器显示所有可视化内容,并负责跟踪 VisIt的状态并将该状态与其他组件进行协调。因为需要利用本地计算机的图形硬件,所以GUI和查看器均应在本地运行。其它两个组件也可以在客户端计算机上运行,但它们通常是在生成数据文件的远程并行计算机或群集上运行。

VisIt最多支持 16个绘图窗口。每个窗口彼此独立。VisIt使用活动窗口概念,在主窗口或其弹出窗口之一中所做的所有更改都将应用于当前活动的可视化窗口。主窗口和可视化窗口如下图所示。


VisIt 的主界面由五个部分组成:运算符区模块、表达式模块、数据库模块、绘图模块和查询区域。数据库从文件读取数据,并将数据作为变量显示在用户界面中。根据不同的变量类型,系统将自动显示出可以进行的绘图操作供用户选择。表达式对变量执行计算以生成新变量。查询通常将变量作为输入并生成单个值或少量值。查询还可以创建曲线,其中最常见的是随时间查询的结果,该查询随时间创建标量值的曲线。

下面以一个VisIt自带的Silo数据文件为例,演示VisIt作图的流程。

第一步 ,在GUI界面的Source模块中,点击Open以打开数据库读取工具,会弹出下图所示的File open窗口。


第二步,在 Path框中,输入要读取文件的路径然后回车,对应的文件将显示在右下角的 Files 方框中,这里以 multi-rect2d.silo 文件为例,multi-rect2d.silo文件在data文件夹中,选中对应的文件后,点击OK打开。


成功打开后,在 GUI 窗口中的 Sources 模块中就可以看当前激活的文件名称,并且下方的 Add 图标会从灰色变成彩色,表示成功读取了文件。


第三步,点击 Plots 模块中的 Add 按钮,先选择需要呈现的图形类型,这里选择伪色图(Pseudo color),再选择需要可视化的变量,能选择的变量是由Silo文件决定的,VisIt只负责识别并且呈现出来,这里以第一个变量d为例进行绘图。VisIt绘图的思路是先读取文件,识别其中的数据类型以及各种变量,以各种变量或者网格为基本单元进行绘图。


选择完之后,其下方会出现一个列表,列表名字为绘图类型-变量名称。刚读入的时候该列表的字体是绿色的,表示还没进行数据的处理;


第四步,作图。点击Draw进行画图,字体颜色会从绿色变成黄色,黄色表示数据正在进行处理;当处理完成之后,字体会变为黑色,表示已经处理完毕并且在图形查看窗口中将图形显示出来。做出来的图如下图所示。


如果要切换可视化的变量,点击Plots模块中的Variables按钮,即可直接切换变量进行显示。

如果想要对图像的显示进行一些设置,直接双击列表中激活的任务栏即可,会弹出对应的参数数值窗口,可以对显示的方式进行更加细致的调整。


绘制好你想要的图形后,如果想要保存图像,可以在左侧窗口中,选择File,然后选择Set Save options… 就可以自定义选择要保存的方式。

保存的设置窗口如下图所示,可以保存多种类型的格式,还有设置大小、保存位置等等,除此之外,VisIt还能保存为Movie模式,就是动态演示的视频,目前来看还用不到这个功能。

更加详细的介绍请参考用户指导手册https://visit-sphinx-github-user-manual.readthedocs.io/en/develop/gui_manual/index.html。

五、编程前的配置

上一小节已经实现用VisIt读取写好的数据文件,但是这种文件格式和我们现在用的DAT格式不同,这种Silo文件格式是LLNL公司推荐的一种更高效的存储数据格式,并且对于链接Fortran程序和VisIt绘图是最佳的选择。

因此。为了能够在Fortran程序中将数据导出为Silo格式的文件,需要插装LLNL提供的第三方库,插装Silo库主要分为四个步骤。

第一步,下载并安装。在官网中找到对应版本的Silo库文件,如果是在 Windows平台的话,参考链接:https://wci.llnl.gov/simulation/computer-codes/visit/source,找到对应版本下面的VisIt Windows sources下载包,下载好后是一个名为visitdev3.1.0.exe的文件,需要双击进行安装,安装完后会生成一个名为VisItDev3.1.0 的文件夹,这个里面就有我们所需要的 Silo库文件。

第二步,更改头文件。首先定位到Silo库的目录位置:…\VisItDev3.1.0\windowsbuild\MSVC2017\ 这里会有两个文件夹:include和lib,分别代表头文件和库文件,进入include文件夹,里面会有一个名为silo.inc的文件,这个是一个包含文件,将所有的头文件打包起来的一个总文件,只需要在模拟程序的最前面进行声明就可以声明所有 Silo 库中的函数和变量。但是这个文件是固定格式的Fortran文件,需要先将其转换为自由格式才能使用,推荐使用鹅毛笔http://quill.fcode.cn/这个小工具。转换为自由格式后,在主程序里面声明:include “silo.inc” 。

第三步,添加头文件路径。在VS2017编辑器中,右键项目,选择 Properties 选项,定位到Configuration->Fortran->General->Additional Include Directories的位置,下拉,然后选择编辑,添加Silo库的include文件夹路径,如下图所示…\VisItDev3.1.0\windowsbuild\MSVC2017\silo\ 4.10.3\include。


第四步,添加库文件路径。在VS2017编辑器中,右键项目,选择 Properties 选项,定位到Configuration->Linker->General->Additional Library Directories 的位置,下拉,然后选择编辑,添加 Silo 库的 lib 文件夹路径:… \VisItDev3.1.0\windowsbuild\MSVC2017\silo\4.10.3\lib。此外,还需要在 Configuration->Linker->Input-> Additional Dependencies 的位置添加附加依赖库:silohdf5.lib,如下图所示。

至此, Silo库就成功地插装到模拟程序中了,只需要在程序中声明好include “silo.inc”(这里的silo.inc文件必须是要转换成了自由格式的文件才行),就可以在 Fortran 程序中直接调用 Silo 的函数接口了。

六、编程实例

首先要强调的是,VisIt仅支持64位的环境,所以不管是操作系统还是编译器调试环境,都只能选择64位(x64)的。

这里以等离子体模拟程序中的一维粒子数据和二维场强数据为例,分别导出对应的Silo格式的数据文件,并在VisIt中进行作图。

6.1 创建一个基本的silo文件

首先,需要创建一个基本的silo格式的文件,然后才能在上面添加网格等数据。

先新建一个空项目。


添加一个.f90文件。



首先需要更改编译环境位数为64为,即x64。下拉选择配置管理。

选择<New…>

下拉,选择x64,然后OK。关闭窗口,现在就可以选择为x64了。

在main文件中输入以下程序代码。

Program mainImplicit NoneInclude 'silo.inc'Integer dbfile, ierr
! The 11 and 22 arguments represent the lengths of stringsierr = dbcreate('fbasic.silo', 11, db_clobber, db_local, 'Comment about the data', 22, db_hdf5, dbfile)If (dbfile==-1) ThenWrite (6, *) 'Could not create Silo file!\n'Goto 10000End If
! Add other Silo calls here.
! Close the Silo file.ierr = dbclose(dbfile)10000 Stop
End Program main

添加头文件和添加库路径,再添加附加库的名称“silohdf5.lib”,表示要创建以HDF5为基础的silo文件,具体添加方法见前文“编程前的配置”。

全部配置完成后,就可以编译运行了。先Compile编译。


再Build链接。

最后再Debug运行。

成功运行完之后,main文件的同级目录下就会生成一个空的silo文件,这时里面没有具体数据,所以也无法用VisIt打开和查看。

这时可以用到一个叫browser的小工具来查看silo文件的具体信息。具体查看方法参考链接:http://yushimin123.com/browser.html。

6.2 写入一维粒子数据

基本的配置和上面一致,将程序代码改为下面的程序。

本教程中的所以例程和参考手册均已上传至百度网盘中:链接:https://pan.baidu.com/s/1-lRnd1gyYdhLJAyrPXtXKw 提取码:yusm

Program mainImplicit NoneInclude 'silo.inc'Integer dbfileReal :: start, finishInteger err, ierr, iReal Xcurve(117091), Vxcurve(117091), Vycurve(117091), Vzcurve(117091), Axcurve(117091),  Aycurve(117091),  Azcurve(117091)Open(2, file='10000Electron.dat', status='old')Do i=1,117091 read(2,*) Xcurve(i), Vxcurve(i), Vycurve(i), Vzcurve(i), Axcurve(i), Aycurve(i), Azcurve(i)End DoClose(2)call cpu_time(start)ierr = dbcreate('Curve.silo', 11, db_clobber, db_local, 'Write a curve object into a Silo file', 22, db_hdf5, dbfile)If (dbfile == -1) ThenWrite(6, *) 'Could not create Silo file!\n'Goto 10000End Iferr = dbputcurve(dbfile, 'X2Vx', 4, Xcurve, Vxcurve, db_float, 117091, db_f77null, ierr)err = dbputcurve(dbfile, 'X2Vy', 4, Xcurve, Vycurve, db_float, 117091, db_f77null, ierr)err = dbputcurve(dbfile, 'X2Vz', 4, Xcurve, Vzcurve, db_float, 117091, db_f77null, ierr)err = dbputcurve(dbfile, 'X2Ax', 4, Xcurve, Axcurve, db_float, 117091, db_f77null, ierr)err = dbputcurve(dbfile, 'X2Ay', 4, Xcurve, Aycurve, db_float, 117091, db_f77null, ierr)err = dbputcurve(dbfile, 'X2Az', 4, Xcurve, Azcurve, db_float, 117091, db_f77null, ierr) Write(*,*) 'Write a curve object into a Silo file successful.'ierr = dbclose(dbfile)call cpu_time(finish)print '("Time = ",es21.14," seconds.")',finish-start10000 Stop
End Program main

这里有一点需要注意的是,考虑到程序的通用性,这里程序不是直接写在原有的iPM程序里面,而是用读取iPM程序运行后生成的DAT文件的形式,可以称为二次读写,所以程序的正常运行还需要有10000Electron.dat文件,如果想要移植到iPM程序中也是非常容易的,只需要把写入DAT文件部分的程序去掉,将相应的变量替换为模拟程序中需要存储和作图的变量即可。

该程序的设计思路比较清晰,先定义好各个变量参数,然后打开要写入的.dat 文件,然后依次将.dat 文件中的数据写入自定义的变量中,循环次数就是粒子数量,然后再关闭刚打开的.dat 文件,下一步就是创建一个.silo 文件,并检查 dbcreate 函数的返回值,如果文件创建失败则在输出窗口上提示“Could not create Silo file! ”,如果创建成功了,则开始将变量里的数据通过 dbputcurve 函数以曲线的格式写入到 Silo 文件中,数据全部写入完成后在输出窗口上提示操作者“Write a curve object into a Silo file successful.”,最后再关闭 Silo 文件,这样就生成了粒子数据的可视化接口。

程序运行完成后,用 VisIt 打开生成的 Silo 文件,选择变量进行绘图,这里选择粒子X轴方向的速度变量进行绘图,然后进行相应的参数设置和调整,最终效果如下图所示。

双击左侧的Curve-X2Vx,图形显示的设置参考如下:


图中,横坐标是粒子的位置,纵坐标是粒子的速度,总共约有 130000个粒子,从图中可以看到,粒子速度的分布较为均匀,粒子数据的可视化效果也很不错。

6.3 写入二维场强数据

基本的配置和上面一致,将程序代码改为下面的程序。

Program mainImplicit NoneInclude 'silo.inc'Integer dbfile
! Write a scalar variable StartInteger err, ierr, dims(2),dimsV(2), ndims, nx, ny, i, jParameter (nx=500)Parameter (ny=101)Real x(nx), y(ny)Real nodal(nx, nx)Real Dx(nx*ny), Dt(nx*ny), Value1(nx*ny), Value2(nx*ny)Real :: start, finishData dims/nx, ny/do i = 1,nx x(i) = (i-1)/5.0!x(i) = (i-1)/3200.0end dodo j = 1,nyy(j) = (j-1)!y(j) = (j-1)/50.0end do
! opening the file for readingopen (2, file='Grid2D21002.dat', status='old')do i=1,nx*nyread(2,*) Dx(i), Dt(i), Value1(i), Value2(i)end do close(2)do i = 1,ny do j = 1,nxnodal(j, i) = Value2(j+(i-1)*nx)end doend doData dimsV/nx, ny/ndims = 2
! Write a scalar variable Endcall cpu_time(start)
! The 11 and 22 arguments represent the lengths of stringsierr = dbcreate('Grid2D21002.silo', 16, db_clobber, db_local, 'Comment about the data', 22, db_hdf5, dbfile)If (dbfile==-1) ThenWrite (6, *) 'Could not create Silo file!\n'Goto 10000End If
! Add other Silo calls here.! Write a rectilinear mesh Starterr = dbputqm(dbfile, 'quadmesh', 8, 'xc', 2, 'yc', 2, 'zc', 2, x, y, db_f77null, dims, ndims, db_float, db_collinear, db_f77null, ierr)! Write a scalar variable Start err = dbputqv1(dbfile, "nodal", 5, "quadmesh", 8, nodal, dimsV, ndims, db_f77null, 0, db_float, db_nodecent, db_f77null, ierr)! Write a scalar variable End!Close the Silo file.ierr = dbclose(dbfile)call cpu_time(finish)print '("Time = ",es21.14," seconds.")',finish-start10000 Stop
End Program main

不同于一维粒子数据,一维粒子数据采用的是曲线的格式保存,而二维场量数据采用的是网格的格式进行存储,二维数据本身是不能体现可视化的呈现形式的,只能借助自定义的网格来进行表现。这里程序的实现思路和一维程序的实现思路大体相同,都是先打开模拟程序生成的 DAT 文件,对文件数据进行读取,然后将数据以网格的形式写入一个 Silo文件中。

和上面相同,此程序的运行也需要先将DAT文件放在main文件的同级目录下。

6.4 串行到并行绘图

除了可以编写串行的程序接口外,还可以编写并行的程序接口,让数据通过并行的方式写入silo文件中。并行的原理是将数据文件拆分为多个,每个子文件分别分配一个处理器进行处理,分别处理好后再整合到一个文件里面,基本原理如下图所示。

并行处理会产生多个子文件,需要将其整合起来,因此需要一些额外的配置,这里的处理方式就是在上一小节的基础上,多写一个子例行程序,将需要设置的并行处理操作都写在这个子程序里面,最后在主程序中调用这个程序即可,子例行程序代码如下所示。

subroutine write_master()implicit noneInclude 'silo.inc'integer err, ierr, dbfile, nmesh, oldlencharacter*20 meshnames(2) /'multimesh.1:quadmesh', 'multimesh.2:quadmesh'/integer lmeshnames(2) /20,20/integer meshtypes(2) /DB_QUAD_RECT, DB_QUAD_RECT/err = dbcreate('multimesh.root', 14, DB_CLOBBER, DB_LOCAL, 'multimesh root', 14, DB_HDF5, dbfile)If (dbfile==-1) Thenwrite (6,*) 'Could not create Silo file!'returnendifoldlen = dbget2dstrlen()err = dbset2dstrlen(20)nmesh = 2err = dbputmmesh(dbfile, "quadmesh", 8, nmesh, meshnames, lmeshnames, meshtypes, DB_F77NULL, ierr)err = dbset2dstrlen(oldlen)err = dbclose(dbfile)
End

这里设置的是两路并行,子文件分别为 multimesh.1: quadmesh 和 multimesh.2: quadmesh,整合出来的文件就是 quadmesh。程序的主要实现过程就是先将数据并行写入多个子文件,再将这些子文件进行合并。合并出来的效果和上一小节是一样的,在主程序中,还需要在前面先调用子例行程序:call write master (),位置如下,即在创建silo文件之前。

… …call cpu_time(start)
! Write parallel function in here! write herecall write_master()! The 11 and 22 arguments represent the lengths of stringsierr = dbcreate('Grid2D21002.silo', 16, db_clobber, db_local, 'Comment about the data', 22, db_hdf5, dbfile)If (dbfile==-1) ThenWrite (6, *) 'Could not create Silo file!\n'Goto 10000End If
… …

可以看出,并行操作相比于串行操作,就是增加了一个并行程序模块,其余步骤都是一样的。采用并行写入数据的方式,可以减少程序运行的时间,提高工作效率。

6.5 写入其他类型的数据

如果是其他类型的数据需要写入到silo文件中,基本方法都和上面类似,其中关键的步骤就是学会使用silo库中的函数库,只需要规范调用其中的函数,就可以写入自己想要的数据。LLNL公司提供了silo库的详细介绍和参考手册, 参考手册里面包含了函数的具体使用方法,输入输出参数规范,以及并行I/O的配置。

具体可参考链接:https://wci.llnl.gov/simulation/computer-codes/silo https://wci.llnl.gov/simulation/computer-codes/silo/documentation https://wci.llnl.gov/content/assets/docs/simulation/computer-codes/silo/LLNL-SM-654357.pdf

七、常见问题和解决办法

问题1:
我目前用的是3.1.0的版本,有一个问题就是,在启动VisIt的时候,经常那个绘图窗口飞到桌面以外了,拖拽不出来。(后来发现是显示器分辨率的问题,分辨率太低,软件不适配)

解决办法1:
按住 Alt 键,再点击 Tab 来切换窗口,切换到你要显示的窗口(绘图窗口)为止,切换完之后还是没有显示的,这一步只是激活了当前窗口。

现在可以松开 Alt 和 Tab 键,再按 Alt + Space(空格)键,单击一次就行,完了就会显示当前窗口的可操作选项。如下图所示。

这时候之间选最大化就是了,窗口就会最大化显示在屏幕上。

解决办法2:
windows10有一个强大的快捷操作,就是你把某一个窗口直接往最左侧或者最右侧拖拽的话,一松开就变成左半屏显示或右半屏显示,而另外半边则会展示出所有活动的窗口,你只要点击一个,就会补全另外半屏,就是所谓的二分频工作模式。这个对于VisIt这种双活动窗口的软件来说是非常方便的,你只要先把控制面板窗口往左拖拽至半分屏显示,右边再选中windows绘图窗口就可以了。

问题2:
VisIt 打开一个 Silo 文件报错,显示不能打开。格式错误或是找不到该文件等等提示。

解决办法:
这个问题出现有几种可能:

第一种,这个文件不是用 VisIt 自带的库来创建的文件,因为 Silo 文件是他们自己公司开发的,综合使用了HDF和PDB Lib等模块库,和网上其它的也是HDF等驱动的文件有所不同,VisIt 只能读取用自家的Silo文件,不能读取别的。不过,其它像.txt等通用的格式是可以识别的。

第二种可能,该Silo文件是空文件,啥都没有的,那 VisIt 也是打不开的,因为没有数据的话就没有 Plot 函数可以给你用,读取了也没有用。

另外,其它文件,比如DAT文件,如果也是别的地方生成的话,一般也打不开,这个我不清楚是因为不是 VisIt 库生成的,还是说文件的书写格式不对,我觉得更有可能是前者吧。

问题3:
编译、链接都没问题,运行程序时报错 Unable to start program,如下图

解决办法:
这时只要按照报错的提示设置一下VS就可以,就是要在下面这个选项前面打勾。具体原因还不清楚。

问题4:
报错:error LNK2019: unresolved external symbol DBCREATE referenced in function MAIN

解决办法:
这个是链接错误,报错很有可能是因为位数没选对,请选择 X64 下编译和调试,x86下就会报这种错误,因为silo只是64位的,不能和32位编译器编译出来的目标文件链接的。

八、后期工作

本教程对现有模拟程序的数据文件进行离线处理的,VisIt 还支持在模拟过程中对数据进行在线处理,这意味着可以不需要向磁盘中写入数据文件而直接绘图,这将更大程度的缩短数据可视化的时间和节省更多的磁盘空间。

后期还可以继续开展的工作有如下几项:

  1. 在模拟程序中实现VisIt的在线调用,做到实时可视化。
  2. 在Linux系统中按照上述模式摸索出类似的教程,目前只完成了在Linux系统中安装VisIt并进行基本绘图的工作,还没有进行编程和调试。
  3. 目前的silo库仅适用于 MicrosoftVS2017,要想适配更多种类的编辑器,需要使用CMAKE工具进行编译得到相应的库文件。
  4. 将程序的运行从本机计算机过渡到远程计算机,最后能在本地链接到超级计算机上进行运行。

参考:https://www.llnl.gov/
本教程在我的博客同步发表:http://yushimin123.com/visit-windows.html

可视化工具VisIt安装使用教程(Windows)相关推荐

  1. MySQL--》MySQL数据库以及可视化工具的安装与使用—保姆级教程

    目录 数据库简介 MySQL数据库的安装 配置MySQL环境变量 MySQL数据库的启动与使用 MySQL图形化管理工具 Navicat Preminum工具的使用 数据库简介 大多数情况下,特别是企 ...

  2. MongoDB可视化工具--Robo 3T 使用教程

    MongoDB可视化工具--Robo 3T 使用教程 MongoDB可视化工具--Robo 3T 使用教程 1. 到官网下载Robo 3T,网址如: https://robomongo.org/dow ...

  3. Anaconda超详细下载安装配置教程(Windows)

    Anaconda最新超详细下载安装配置教程(Windows) 命令总结写在最前面 1.查看conda版本: conda --version 2.进入python交互模式: python 3.退出pyt ...

  4. HarmonyOS应用如何开发,使用什么开发工具及安装使用教程说明!

    本篇文章主要讲解鸿蒙os的开发工具安装使用教程.鸿蒙os的应用开发说明指引.鸿蒙os对于开发者的机遇以及鸿蒙os是否会成为主流操作系统的问题刨析. 日期:2021-6-30 作者:csdn 任聪聪 一 ...

  5. LightningChart数据可视化工具图形控件教程51-BarSeries3D

    BarSeries3D 演示示例: Horizontal bars; Bars, grouping; Bars, manhattan BarSeries3D 可以以3D视图实现柱状形数据可视化. 柱状 ...

  6. LightningChart数据可视化工具图形控件教程48-SurfaceGridSeries3D(曲线网格系列3D)_续

    LightningChart数据可视化工具图形控件教程48 SurfaceGridSeries3D(曲线网格系列3D)_续 轮廓线 轮廓线可以快速表明高度数据,而不用采取调色板填充来填充曲面.轮廓线可 ...

  7. php单机环境搭建,【完美西游网单服务端】新版单机一键安装游戏客户端带GM管理工具[附安装搭建教程]...

    [完美西游网单服务端]新版单机一键安装游戏客户端带GM管理工具[附安装搭建教程] 完美西游,2012年10月开启封测的一款客户端网游.<完美西游>推出了修真历练,守卫门派,梦桃源,火云洞, ...

  8. 【软件安装】MySQL8.0安装图文教程及可视化工具Navicat安装

    文章目录 前言 一.MySQL安装方式 二.安装步骤 1.压缩包安装 1)下载压缩包 2)配置环境变量 3)配置初始化的my.ini文件(没有的可以自行创建): 4)以管理员身份运行cmd执行安装指令 ...

  9. RedisDesktopManager客户端可视化工具下载安装与使用

    场景 Centos中Redis的下载编译与安装(超详细): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334 Re ...

最新文章

  1. Linux C定时器使用指南
  2. 学习ASP.NET Core Razor 编程系列十八——并发解决方案
  3. python2与python3同时安装_Win10下python3和python2同时安装并解决pip共存问题
  4. python3示例_Python3 实例(七)
  5. mysql 触发器 定时触发_mysql 触发器和存储过程组合使用,实现定时触发操作
  6. Kubernetes:标签、选择器、注解、容忍度、亲和性
  7. 用计算机控制英文,计算机控制
  8. MySQL数据库(六) 一一 基本操作之事物和索引
  9. 【Oracle】手工建库时启动到nomount状态时错误ORA-09925,ORA-01017
  10. 不使用中国手机号码注册网易云音乐
  11. springboot中学成绩管理毕业设计源码100854
  12. 京瓷打印机m5521cdn_京瓷ECOSYS M5521cdn驱动
  13. TF卡(全称Trans Flash)
  14. android北京实时公交,北京实时公交app
  15. python实现指纹识别毕业论文_指纹识别系统设计毕业论文+开题报告+翻译及原文+设计源码...
  16. Win11启动IE浏览器
  17. ff7重制版青魔法_《FF7重制》敌方招式获取方式与效果
  18. Amazon Alexa系列介绍(1)--综述
  19. 使用canvas画二维码
  20. ROS高效入门第一章 -- ROS历史与现状

热门文章

  1. 计算机端口里没有usb,解决打印机端口设置中没有USB选项的方法
  2. 19Python爬虫--爬取新浪新闻标题并保存到数据库
  3. 晨枫U盘启动盘之启动画面OEM
  4. 蓝牙核心规范(V5.2)5.1-深入详解之基带规范
  5. 安卓微信浏览器无法支持input multiple的h5属性多图上传
  6. Google 地图- 基本地图类型
  7. 实验1 OpenGL初识
  8. lbaas l7 policy
  9. android app 唤醒屏幕
  10. 大学生c++实训之职工管理系统设计