1 Star 0 Fork 63

张泰威 / openFoamUserManual

forked from poplee / openFoamUserManual 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
50.sample.md 7.07 KB
一键复制 编辑 原始数据 按行查看 历史
poplee 提交于 2020-08-27 22:11 . chapter 49,50,52 updated by skf

50 提取数据

​ 采样(sample)是一个简单的后处理器。此工具由文件sampleDict控制。采样从一个特定区域的解中提取数据。采样可以从以下几何区域提取数据:

​ •从空间中的一个或多个点

​ •沿一条线

​ •在一个面上

采样通常在模拟完成后执行。

50.1使用

​ 使用采样最简单的方法是调用sample命令。在本例中,示例将查找名为位于系统目录中的sampleDict。使用**-dict**,可以使用不同名称的替代文件明确规定。但是,此文件必须位于系统目录中。

​ 默认情况下,采样执行所有时间步。选项**-latestTime可用于仅对最新的数据解决方案。选项-time**可用于指定要操作的特定时间或时间范围。

​ 指定限定数量的时间步来执行采样可以显著减少这中动作。由采样生成的数据所使用的磁盘空间通常最多为几个兆字节。因此,在使用采样时,节省硬盘空间不是要考虑问题。

50.2样本

sampleDict文件控制要采样的数据和位置。

50.2.1输出格式

​ 有6种输出格式(csv、gnuplot、jplot、raw、vtk、xmgr)。列出格式的差别是在文件中组织数据的方式不同。

​ 采样给标量的量和矢量的量创建一个文件。数据文件的名称由采样场的名称、输出格式和几何集的名称生成。例如lineXuniform_Ua_Ub.csv,该文件包含沿lineXuniform线的速度场UaUb。这个采样数据的数据格式为逗号分隔文件(csv)。

50.2.2场

​ 要采样的场量在列表fields中。

​ 忽略无效条目,没有任何警告消息。在列表337的示例中,场量列表包含名字banana。但是,没有名字为banana的字段,因此sample将直接忽略此条目,不会发出任何警告或错误消息。因此,sampleDict中的打字错误并不是那么容易找到的。取样报告没有警告,但未对预期场进行采样。始终要仔细检查子字典场中输入错误的条目,尤其是对具有复合名称的场量进行采样时,例如U2MeanU2Prime2Mean

// Fields to sample .
fields
(
	alpha
	banana
	Ua
	Ub
);

​ 列表337:在文件sampleDict中要采样的字段

50.2.3几何区域

样本可以操作的几何区域有:

sets 集合可以包含一个或多个点或一条直线。沿着一条线,点可以按等距分布。

surfaces 曲面可以用多种方式定义。可能是切割平面或等值曲面。

50.2.4陷阱

缺少关键字

如果sampleDict中缺少关键字setssurfaces,取样会运行而不会产生任何错误消息或任何数据。如果在列表338中,单词bananasets替换,而orangesurfaces替换,取样就会像预期的那样工作。如果像列表338中那样,sampleDict调用sample,则sample不生成数据,并且不发出警告。

setFormat raw;

surfaceFormat vtk;

formatOptions
{
	ensight
	{
	format ascii;
	}
}

interpolationScheme cellPoint;

fields
(
	p
	U
);

banana
(
	lineX1
	{
		type 	uniform;
		axis 	distance ;
		start 	(0.0015 0.5027 0.05);
		end 	(0.0995 0.5027 0.05);
		nPoints 20;
	}
);

orange
(
);

​ 列表338: sampleDict不工作的例子

错误的线定义

​ 如果要对一条直线上的数据进行采样,由于此直线在外部域,因此该直线的定义是错误的,示例将发出警告消息。列表339显示了一个警告消息的示例。然而,sample不会报告错误,它将完成它的运行。所以,如果不检查sample输出,这可能会被忽视。

--> FOAM Warning :
	From function sampledSets::combineSampledSets(..)
	in file sampledSet/sampledSets/sampledSets.C at line 102
	Sample set lineX0 has zero points.

​ 列表339:由于错误的线定义sample给出的警告信息

写入精度不足

​ 在OpenFOAM教程中,大多数情况下使用6位数的写入精度,在大多数情况下,这应该足够了。但是,在某些情况下,可能需要更大的位数。

​ 当我们对压力场进行采样时,6位数的写入精度是否足够,这取决于我们使用的是不可压缩的还是可压缩的求解器。不可压缩求解器使用的压力场,它要除以流体密度。此外,对于不可压缩求解器,压力绝对大小是无关紧要的。因此,许多情况下,例如在出口处,使用0作为参考压力或环境压力。另一方面,对于可压缩求解器,我们使用压力场和相关压力的绝对值。因此,在许多情况下,压力场的环境压力为100000 Pa。这是书写精度是关键。在列表340中,我们看到了在使用6位数字的写入精度时,对可压缩情况下的压力进行采样的结果。在这种情况下,1000000Pa的参考压力几乎淹没了一切压力变化的信息,因为6位数字几乎完全用于表示环境压力。由于缺少有效数字,求解域中的小变化无法完全反应。

x,p
0 ,100001
0.00055 ,100001
0.0011 ,100001
0.00165 ,100001
0.0022 ,100001
0.00275 ,100001
...  

​ 列表340:写入精度为6位数时, 可压缩算例的采样压力场

​ 更糟糕的是只使用5位数的结果。在本例中,请参见列表341,OpenFOAM切换到科学记数法,只能表示环境压力。压力的微小变化现在完全丢失了。

x,p
0,1e +05
0.00055 ,1e +05
0.0011 ,1e +05
0.00165 ,1e +05
0.0022 ,1e +05
0.00275 ,1e +05
...  

​ 列表341:写入精度为5位数时, 可压缩算例的采样压力场

​ 使用足够大的有效数字可以确保求解域内的压力变化可以取样和进一步处理。

x,p
0 ,100001.1161
0.00055 ,100001.116
0.0011 ,100001.1153 
0.00165 ,100001.1145
0.0022 ,100001.1134
0.00275 ,100001.1123
...  

​ 列表342:写入精度为10位数时, 可压缩算例的采样压力场

​ 选择足够的位数似乎是非常明显的解决方案。那么,我们什么时候会遇到采样数据位数不足的问题?当文件运行模拟以二进制写入场数据格式时。在这种情况下,压力场以最大精度用二进制格式写入磁盘。但是,采样数据将始终以ascii格式写入磁盘。这就是我们本节讨论的陷入麻烦的问题。使用二进制格式保存时,我们就不必考虑数字位数。

50.3 更新OpenFOAM-4

后处理实用工具sample和其他工具,已被集成在一起的工具postProcess所取代。幸运的是,并不是所有的东西都丢失了。所有被postProcess取代的实用工具都会给出关于它们正在过时的警告消息。而且,此消息包含有关如何继续的重要信息。在sample的例子中,现有的sampleDicts只需稍作修改可以进一步使用。

sample has been superceded by the postProcess utility :
	postProcess -func sample
To re-use existing ’sampleDict’ files simply add the following entries :
	type sets ;
	libs ("libsampling.so ");
and run
	postProcess -func sampleDict  

​ 列表343:在OpenFOAM-4中试图使用sample的警告信息

1
https://gitee.com/roychang/openFoamUserManual.git
git@gitee.com:roychang/openFoamUserManual.git
roychang
openFoamUserManual
openFoamUserManual
master

搜索帮助