1

我有一个 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. 将数据复制并粘贴到电子表格软件中,然后以这种方式构建图表。

我已经开始遇到在我参与的一些项目中使用 XML,但我对此几乎一无所知。我想弄清楚是否值得我花时间学习 XML 并开始向这个 Fortran 程序添加以 XML 格式写入数据的功能。如果我开始将数据写入 XML,是否可以改进我以前分析模拟数据的方法,使其更容易、更快和更自动化?如果是这样,我应该如何以及如何开始?

4

3 回答 3

7

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

我建议您考虑改为HDF5,它是一种广泛用于科学数据集的格式。HDF Group 发布了针对 C、C++、Fortran 和 Java 的绑定(如果我没记错的话),但是许多其他语言/系统可以读写 HDF5 文件,包括 Python、Matlab、Mathematica、IDL 和一些开放的-源科学可视化工具,包括 ParaView。我还没有找到在 HDF5 文件上使用 GNUPlot 的直接方法。

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

于 2012-10-30T22:53:17.667 回答
2

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

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

学习你需要学习的东西,让自己跟上潮流,然后继续前进。

于 2012-10-30T21:11:44.937 回答
1

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

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

于 2012-10-31T06:27:12.467 回答