吾生有涯 学海无涯
析模有界 知识无界

OpenFOAM|12 了解Sampling操作

本文介绍OpenFOAM中samping操作基础。

functionObject可以在求解过程中输出指定的物理量信息。当求解计算完毕后,可以选择使用Sampling获取特定位置物理信息,此时主要使用postProcess程序来实现。

利用postProcess进行采样,需要定义采样字典文件,这些文件位于system路径下,文件可以任意命名。当采样计算完毕后,算例路径中将会新建一个名为postProcessing的新文件夹,在该文件夹里面包含与字典文件同名的子目录,其中存储了采样获取的结果数据。

下面结合实际算例来进行描述。

如下图所示,算例文件system文件夹中包含两个字典文件probeDict及sampleDict,其中定义了取样操作所需的参数。

1、probesDict字典文件

该文件中定义了需要在计算域中进行取样的点。本算例取样点的位置如下图所示。

probesDict文件内容如下所示。

FoamFile
{
version 2.0;
format ascii;
class dictionary;
object probesDict;
}
// * * * * * * * * * * * * * * * * * //
// 指定类型为probes
type probes;

// 指定需要提取的物理场
fields
(
p
U
);

// 取样点的坐标列表
probeLocations
(
(1.0     0     0)
(1.25     0     0)
(1.5     0     0)
(1.75     0     0)
(2.0     0     0)
(2.0     -0.25     0)
(2.0     -0.5     0)
(2.0    0 .25     0)
(2.0    0 .5     0)
);

文件准备完毕后可以使用命令:

postProcess -func probeDict -time 2000

这里指定参数-time 2000,则只输出2000 s时刻的数据,若不指定此参数,则会每一时刻的数据。

运行完毕后,算例文件夹中的postProcessing路径下会多出一个名为probesDict的子文件夹,其中包含了2000 s时刻监测点位置的U与p的值。

对于本算例,2000/U文件中的内容如下所示,列举了所检测的9个点位置的速度分量:

# Probe 0 (1     0     0)
# Probe 1 (1.25     0     0)
# Probe 2 (1.5     0     0)
# Probe 3 (1.75     0     0)
# Probe 4 (2     0     0)
# Probe 5 (2     -0.25     0)
# Probe 6 (2     -0.5     0)
# Probe 7 (2     0.25     0)
# Probe 8 (2     0.5     0)
# Time 0     1     2     3     4     5     6     7     8
2000 (1.0960031     -0.61045141     0) (1.0003352     -0.35057338     1.1984886e-20) (0.99511675     -0.22368641     -1.4884685e-20) (0.99587925     -0.17217799     6.8574687e-21) (0.99434334     -0.13173595     0) (0.85681371     -0.10854681     3.6035834e-20) (0.95135192     -0.1125737     2.353505e-20) (1.0221783     -0.12625997     -1.5616405e-20) (1.041875     -0.12290482     -6.6065831e-20)

文件2000/p内容如下所示,其列举了9个定位置的压力值:

# Probe 0 (1    0    0)
# Probe 1 (1.25    0    0)
# Probe 2 (1.5    0    0)
# Probe 3 (1.75    0    0)
# Probe 4 (2    0    0)
# Probe 5 (2    -0.25    0)
# Probe 6 (2    -0.5    0)
# Probe 7 (2    0.25    0)
# Probe 8 (2    0.5    0)
# Time    0    1    2    3    4    5    6    7    8
2000     -0.60129439     -0.061042557     -0.020796443     -0.011252459     -0.0028472253     0.020868043     0.041151249     -0.030775763     -0.050775396

2、sampleDict字典文件

该文件定义了一条线,之后对该线上的物理量进行提取。

FoamFile
{
version 2.0;
format ascii;
class dictionary;
object sampleDict;
}
// * * * * * * * * * * * * * * * //
// 指定类型为sets,通常可以为points及lines
type sets;
libs ("libsampling.so");

// 插值方式,可以是cellPoint、cellPointFace、
// cellPointWallModified或cell
interpolationScheme cellPoint;

// 文件存储格式
setFormat raw;
surfaceFormat raw;

// 指定待取样的物理场
// 这里指定了速度与壁面剪切应力
// 本算例中并不能提取到壁面剪切应力
// 物理量不存在也没有关系
fields
(
U
wallShearStress
);

// 定义集合
sets
(
profile0
{
// 指定几何类型为线
type lineCellFace;
axis distance;
// 两个点确定一条线
start ( 0.75150     0.04767     0 );
end ( 0.76168     0.14715     0 );
}
);
/////
// 若不清楚关键字选项,可以使用banana方法

执行以下命令提取数据:

postProcess -func sampleDict –time 2000

命令执行完毕后会在postProcessing文件夹中增加子文件夹sampleDict,并在其中存储采样数据。

可以使用gnuplot绘制速度分量沿直线长度的分布:

set xlabel 'length(m)'
set ylabel 'velocity(m/s)'
set key outside
plot 'profile0_U.xy' u 1:2 w l lw 2 lc 7 t 'u_x','' u 1:3 w l lw 2 t 'u_y','' u 1:4 w l lw 2 t 'u_z'

如下图所示。

对于选用不同的数据集,其存储的文件形式有所不同。

如点集采样,对于标量场,其文件存储形式为:

#POINT_COORDINATES (X Y Z)        SCALAR_VALUE
0     0     0.05                     13.310995
0     0     0.1 1                    9.263215
...

若为矢量场,则其存储形式为:

#POINT_COORDINATES (X Y Z)        VECTOR_COMPONENTS (X Y Z)
0     0     0.05                     0     0     13.310995
0     0     0.1                     0     0     19.263215
...

若采样集为线,则存储形式为:

#AXIS_COORDINATE                SCALAR_VALUE
0                                 13.310995
0.0015 1                          9.263215
...

若为矢量场,则其存储形式为:

#AXIS_COORDINATE                VECTOR_COMPONENTS (X Y Z)
0                                 0     0     13.310995
0.0015                           0     0    19.263215
...

若采样的为表面,则存储形式

#POINT_COORDINATES (X Y Z)                SCALAR_VALUE
0     0     0.05                             13.310995
0     0     0.1                             19.263215
...

若为矢量场,则其存储形式为:

#POINT_COORDINATES (X Y Z)                VECTOR_COMPONENTS (X Y Z)
0     0     0.05                             0     0     13.310995
0    0     0.1                             0     0     19.263215
...

本篇文章来源于微信公众号: CFD之道

赞(2) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《OpenFOAM|12 了解Sampling操作》
文章链接:https://www.topcfd.cn/12135/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册