Fortran代码动画绘图模块

时间:2017-02-07 02:31:31

标签: animation plot fortran gnuplot

有没有人有方便的方式来绘制与时间有关的数据?假设你有一个程序在一段时间内输出一个轨迹,所以一个3列的txt文件(t,x,y)。我想创建一个视频文件(mp4 avi gif等),它将显示后两列的时间演变。我编写了一个程序输出数据,调用gnuplot,输出一个png,重复然后需要很长时间,然后使用ffmpeg将所有png混合成mp4。然而,生成每个png需要很长时间(每个pnel大约0.2秒),因此,2分30fps需要大约12分钟才能执行。另外,我最终创建了一个包含3600 png的目录,然后删除了该目录。我无法帮助,但觉得在过去的几十年中有人通过一种更容易的方式来开发这种方法。必须有一种更优雅的方式来做这样的事情。我也在运行Windows 10。

1 个答案:

答案 0 :(得分:1)

您的应用程序可能有些过分,但您可能希望将数据写入(或转换)为VTK格式(请参阅http://www.cacr.caltech.edu/~slombey/asci/vtk/vtk_formats.simple.html),然后通过Paraview(http://www.paraview.org/)处理结果或VisIt(https://wci.llnl.gov/simulation/computer-codes/visit)。从Fortran编写传统的VTK格式相对容易;最难的部分是理解如此灵活 - 无人能解释 - 如何做简单的事情与文件格式。第二个最难的部分是找到您想要的选项隐藏在VisIt UI中的位置。现有的F90库用于编写VTK(参见https://people.sc.fsu.edu/~jburkardt/f_src/vtk_io/vtk_io.html),这可能会给你一个良好的开端。

发光的赞美,我知道,但是一旦你对这些位进行排序,使用VisIT生成动画图很容易,它应该比gnuplot快得多。我已经使用这种方法根据直接从Fortran代码编写的数据制作温度,热量等的动画2D地图。

另一种策略是寻找VisIt支持的更简单的数据格式并使用它们。我选择了VTK,因为它(有些)记录并由多个观众支持,但可能有更好的格式满足您的需求。