马上注册,下载丰富资料,享用更多功能,让你轻松玩转阳光石油论坛。
您需要 登录 才可以下载或查看,没有账号?欢迎注册
x
1. RSM文件介绍 Eclipse和IAM中的模型结果输出为RSM为后缀的文件。此文件的数据为文本型,内部是以块表的形式保存了所有已定义的结果数据:每个数据块为10列的块表,块表的行内容为模型的数据结果值,行数是基于模拟的天数的变值,达到最大列数(10)后,将其他参数再继续写入下一个块表,重复此过程,直到将将所有参数结果写入完毕。 此文件结构中的列定义和行定义都不是一个固定值,是基于模型的数据结果而定,所以很难直接将这些结果直接导入其他软件使用。为了解决此问题,可以用编程的方法自动化的将RSM文件转换为csv文件,这样其他软件都可以轻松的导入csv文件来使用Eclipse或IAM的模拟结果。以下示例是用C# .NET编写,当然也可以用其他的编程语言,实现思路可参考此文实现。 2. 技术实现 如介绍中所述,RSM文件具有非常规文件结构。 要将此文件转换为csv文件,需要首先解析RSM文件。 因此,首先编写一个解析器,它遍历RSM文件中的所有块表,并将它们存储在表的数组中,再循环遍历解析每个块表中的数据将其写入到csv文件。 创建的类结构如下: •RsmFile:表示实际的RSM文件 •RsmBlock:每个RSM文件由许多块表组成,块列为1个日期列和9个参数列 •RsmTable:包含参数值的实际表 2.1 RSMFile数据结构 RSMFile结构定义如下: •块1 ØBlockHeader1 ØTableHeader1 ØTableValues1 •块2 ØBlockHeader2 ØTableHeader2 ØTableValues2 •等等 为了显示RSM文件结构,使用了Eclipse示例中的SPE9示例。 这是RSM块表的示例。红色标题显示模型的名称,使用的Eclipse版本,执行的日期戳和电脑名,以虚线结束。 绿色的表头显示表的列定义。在此示例中,表头的第一行是参数类型,第二行是参数单位,第三行是井名称。 蓝色表格包含所有值。第一列始终是日期或时间戳(使用关键字DATE或TIME)。该表在新块开始的位置结束,或者在到达最后一个块的位置结束,为空行。 块的开始由数字1识别。这可用于解析RSM文件中的不同块。 2.2 RsmFile.Parse() 为了解析RSM文件,我们需要调用RsmFile.Parse()。 这将创建RsmFile对象的新实例。 RsmFile rsmFile = RsmFile.Parse(File.ReadAllLines(rsmPath).ToArray()); .Parse()方法要求包含实际文件的所有行的字符串数组。 2.3 RsmFile.ToCsv() 创建RsmFile对象时,我们可以使用ToCsv()方法创建csv文件。 下一个示例显示如何调用ToCsv()方法并将结果写入文件: 3. 工具使用 此示例中实现的转换工具编写为命令行,应用举例: C:\EclipseRsmToCsv>EclipseRsmToCsv.exe EclipseRsmToCsv 1.0.0.0 Copyright c 2017 -i, --input 必填项. RSM文件. -o, --output 必填项..csv文件. -m, --measurements 必填项. 参数项. -s, --start [可选] 开始日期. Format[dd/MM/yyyy]. -e, --end [可选] 结束日期. Format[dd/MM/yyyy]. -h, --help 显示帮助信息. 前三个参数是必需的: -i 输入RSM文件的路径 -o csv文件写入的位置 -m 输出中需要哪些参数类型(例如WGPR和WGIR)。 最后两个参数是可选的:可以指定开始日期和结束日期,以便仅将部分模拟结果写入csv。 注意:如果TIME关键字用作RSM文件中的时间戳,则需要开始日期才能计算日期戳。 如果未选择开始日期,则使用默认的开始日期01/01/1900。 如果使用DATE关键字,则不必指定开始日期。 例子: C:\ EclipseRsmToCsv> EclipseRsmToCsv.exe -i SPE9.RSM -o SPE9.csv -m WGPR 将WGPR写入SPE9.csv。 C:\ EclipseRsmToCsv> EclipseRsmToCsv.exe -i SPE9.RSM -o SPE9.csv -m WGPR WGIR 将WGPR和WGIR写入SPE9.csv。 C:\ EclipseRsmToCsv> EclipseRsmToCsv.exe -i SPE9.RSM -o SPE9.csv -m WGPR -s 01/01/2015 -e 31/12/2015 将2015年的WGPR和WGIR写入SPE9.csv。 4. CSV结果文件 EclipseRsmToCsv以下列格式输出csv: WGPR,MSCF/DAY,,PROD2,1-1-2015,0 WGPR,MSCF/DAY,,PROD2,2-1-2015,2054.024 WGPR,MSCF/DAY,,PROD2,3-1-2015,2028.551 WGPR,MSCF/DAY,,PROD2,7-1-2015,2004.881 WGPR,MSCF/DAY,,PROD2,13-1-2015,2004.653 第一列是参数类型,第二列是单位,第三列是可选倍数,第四列是井名,第五列是日期戳,第六列是参。
|