首页/文章/ 详情

OpenFOAM|12 了解Sampling操作

精品
作者优秀平台推荐
详细信息
文章亮点
作者优秀
优秀教师/意见领袖/博士学历/特邀专家
平台推荐
内容稀缺
4年前浏览3423

本文介绍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
...


科普求解技术代码&命令OpenFOAM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2020-11-11
最近编辑:4年前
CFD之道
博士 | 教师 探讨CFD职场生活,闲谈CFD里外
获赞 2559粉丝 11255文章 732课程 27
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈