将我的程序文本文件输出转换为xml-output有什么好处?

时间:2012-10-30 21:08:43

标签: xml fortran

我有一个Fortran程序,通过编写大量文本文件来输出模拟数据。文本文件将为网格单元的集合和导体网格单元集合的导体数据提供流体属性数据。类似下面的例子。

Cell Group 1
Axial Level | Pressure | Temperature | Velocity
1           | 150.1    | 198         | 3.5
2           | 150      | 200         | 3.5
...         | ...      | ...         |

Cell Group 2
Axial Level | Pressure | Temperature | Velocity
1           | 150.1    | 201         | 3.5
2           | 150      | 205         | 3.5
...         | ...      | ...         |

Conductor Group 1
Axial Level | Conductivity | Temperature 
1           | 19.8         | 301         
2           | 19.7         | 305          
...         | ...          | ...         

通常,我们希望将这些数据组织成某种图形方式,以便解释或呈现它。例如,我可能想知道Fluid-Cell Group 1,302的压力变化是什么。要获取此信息,我会执行以下操作之一:

  1. 重新编写我的Fortran程序的输出子程序,以便它在表格中提供我想要的特定数据,我可以使用GNUplot来绘制图形。
  2. 编写一个Python脚本来获取文本文件的输出并将其写入我可以使用GNUplot处理的新文件。
  3. 将数据复制并粘贴到电子表格软件中并以此方式构建图表。
  4. 我已经开始遇到在我参与的一些项目中使用的XML,但我几乎一无所知。我想弄清楚是否值得花时间学习XML并开始为此Fortran程序添加功能以XML格式编写数据。如果我开始将数据写入XML,我的先前分析模拟数据的方法是否可以通过使其更容易,更快速和更自动化来改进?如果是这样,我该如何以及如何开始?

3 个答案:

答案 0 :(得分:7)

我同意Kevin的观点,除非您的下游工具链读取XML,否则编写XML几乎没有意义。

我建议您考虑使用HDF5这是一种广泛使用的科学数据集格式。 HDF Group发布了C,C ++,Fortran和Java的绑定(如果内存对我很好),但许多其他语言/系统可以读取和写入HDF5文件,包括Python,Matlab,Mathematica,IDL和一些open-源科学可视化工具,包括ParaView。我还没有找到在HDF5文件上使用GNUPlot的简单方法。

如果您真的需要XML h5dump,HDF Group提供的其中一个实用程序可以将HDF5文件转换为XML。

答案 1 :(得分:2)

数据输出的格式与下游流程所需的输入直接相关。当你作为读者的唯一东西是.csv进程时写XML是愚蠢的。

如果您发现您的读者请求XML,那么一定要学习XML并开始以这种方式编写。

了解您需要学习的内容,让自己保持最新并继续学习。

答案 2 :(得分:1)

如果您想以图形形式查看数据,那么vtk或silo格式可能就是您所需要的。它们专门用于表示科学软件在网格上生成的数据。使用诸如visit之类的软件,您可以查看文件,比较多个运行(听起来像您想要这样做)等等。 This document介绍了如何将数据转换为这些格式,并应说明所需的工作量以及是否值得解决您的问题。

这与@ HighPerformancemark建议使用HDF5格式有关。然而,HDF5是一种非常灵活的格式,你不能指望绘图软件能够解释HDF5形式的任意数据。 silo使用HDF5进行存储,但具有应该如何存储网格和字段数据的特定格式。 vtk类似,但基于xml而不是。