监视器
监视器是一个用于从求解器中捕获模型数据的工具。
在求解器运行时,给定监视器区域的数据(如体积分数、压力、速度等)会被写入 CSV 文件中。 要定义监视器,以下输入必须以 “mfix.” 为前缀:
描述 |
类型 |
默认值 |
|
|---|---|---|---|
monitors |
要计算的监视器的名称 |
字符串 |
无 |
monitors.[monitor] |
监视器类型 |
字符串 |
无 |
mfix.monitors = my_monitor0 my_monitor1
mfix.monitors.my_monitor0 = Eulerian::VolumeIntegral::MassWeightedIntegral
mfix.monitors.my_monitor1 = Lagrangian::Average::VolumeWeightedAverage
区域选择
要定义一个监视器,必须在区域输入中已有一个区域定义。监视器区域可以是一个点、平面或体积。 多个区域不能组合用于一个监视器。以下输入必须以 “mfix.monitors.” 为前缀:
描述 |
类型 |
默认值 |
|
|---|---|---|---|
[monitor].region |
定义计算监视器的区域 |
字符串 |
无 |
# regionA 和 regionB 需要在 "regions" 输入部分中定义
mfix.monitors.my_monitor0.region = regionA
mfix.monitors.my_monitor1.region = regionB
监视器输出
监视器数据将输出到由输入 “plot_file” 给定的文件中,自动添加扩展名 .csv 。
监视器输出文件采用逗号分隔值 (CSV) 格式。文件的第一行提供头部信息。以下输入必须以
“mfix.monitors.” 为前缀:
描述 |
类型 |
默认值 |
|
|---|---|---|---|
[monitor].plot_file |
定义保存监视器输出的绘图文件的名称 |
字符串 |
无 |
[monitor].plot_int |
定义保存监视数据到文件的时间步频率 |
整数 |
-1 |
[monitor].plot_per_approx |
定义保存监视数据的近似仿真时间 |
实数 |
0 |
[monitor].output.openmode |
设置监视器输出文件的打开模式。 可接受的值为:
|
字符串 |
“app” |
[monitor].output.setw |
设置输出文件的字段宽度 |
整数 |
0 |
[monitor].output.setfill |
设置输出文件的填充字符 |
字符 |
‘’ |
[monitor].output.setprecision |
设置格式化输出文件中浮点值的精度 |
整数 |
0 |
[monitor].output.format |
设置格式标志。可接受的值为:
|
字符串 |
“” |
mfix.monitors.my_monitor0.plot_file = monitor0_output
mfix.monitors.my_monitor0.plot_int = 10
mfix.monitors.my_monitor1.plot_file = monitor1_output
mfix.monitors.my_monitor1.plot_per_approx = 0.01
监视器变量
可以通过包含以下以 “mfix.monitors.” 为前缀的输入来指定要监视的变量:
描述 |
类型 |
默认值 |
|
|---|---|---|---|
[monitor].variables |
定义此监视器要监视的变量 |
字符串 |
无 |
mfix.monitors.my_monitor0.variables = T_g vel_g p_g gp_y X_gk
mfix.monitors.my_monitor1.variables = density drag_y T_s txfr_vel_x
欧拉监视器
有不同类型的监视器可用。监视器类型对变量应用一个操作符(例如求和、面积积分或体积积分)。 区域的维度决定了可以应用哪些操作符。
下表总结了用于描述监视器操作符的命名法:
符号 |
描述 |
|---|---|
\(\phi_{ijk}\) |
索引单元的变量值 |
\(\varepsilon_{ijk}\) |
索引单元的相位 体积分数 |
\(\rho_{ijk}\) |
索引单元的相位 密度 |
\(\vec{v}_{ijk}\) |
索引单元的相位 速度 |
\(A_{ijk}\) |
单元的截面积 |
\(V_{ijk}\) |
索引单元的体积 |
下表列出了所有可以监测的流体相变量:
描述 |
|
|---|---|
ep_g |
流体体积分数 |
p_g |
流体压力 |
ro_g |
流体密度 |
trac |
示踪剂 |
vel_g |
流体速度 (速度的三个分量) |
vel_g_[x/y/z] |
流体速度的 x、y 或 z 分量 |
gp |
流体压力梯度 (梯度的三个分量) |
gp_[x/y/z] |
流体压力梯度的 x、y 或 z 分量 |
T_g |
流体温度 |
h_g |
流体焓 |
X_gk |
流体组分质量分数(监测所有流体组分) |
X_gk_[species] |
流体 “组分” 的质量分数(仅监测组分 “species” ) |
vort |
流体涡度 (涡度的三个分量) |
vort[x/y/z] |
流体涡度的 x、y 或 z 分量 |
txfr_velocity |
转移到流体的相间速度 (速度的三个分量) |
txfr_vel_[x/y/z] |
转移到流体的相间速度的 x、y 或 z 分量 |
txfr_beta |
阻力系数 |
txfr_gammaTp |
对流系数乘以固体温度 |
txfr_gamma |
对流系数 |
chem_txfr_X_gk |
由于异相化学反应转移到流体相的质量速率(监测所有流体组分) |
chem_txfr_X_gk_[species] |
流体 “组分” 由于异相化学反应转移的质量速率(仅监测组分 “species” ) |
chem_txfr_velocity |
由于异相化学反应转移到流体相的速度速率(速度的三个分量) |
chem_txfr_vel_[x/y/z] |
由于异相反应转移的速度速率的 x、y 或 z 分量 |
chem_txfr_h |
由于异相化学反应转移到流体相的焓速率 |
divtau |
粘性应力张量的散度(所有三个分量) |
divtau_[x/y/z] |
粘性应力张量散度的 x、y 或 z 分量 |
均匀标量场
下表列出了所有可以监测的流体相空间均匀变量:
描述 |
|
|---|---|
thermo_p_g |
流体热力学压力 |
对于均匀标量场,监测数据值就是当前时间下变量的值:
- 值
Eulerian::UniformScalarField::Value
返回选定区域内场量的值。
\[\phi_{ijk}\]
点区域
对于点区域,监测数据值就是该点处变量的值:
- 值
Eulerian::PointRegion::Value
返回选定区域内场量的值。
\[\phi_{ijk}\]
面积或体积区域
以下监测类型对于面积和体积区域是有效的:
- 总和
Eulerian::AreaRegion::Sum
Eulerian::VolumeRegion::Sum
通过对选定区域内场量的所有值求和来计算总和。
\[\sum_{ijk}\phi_{ijk}\]- 最小值
Eulerian::AreaRegion::Min
Eulerian::VolumeRegion::Min
选定区域内场量的最小值。
\[\min_{ijk} \phi_{ijk}\]- 最大值
Eulerian::AreaRegion::Max
Eulerian::VolumeRegion::Max
选定区域内场量的最大值。
\[\max_{ijk} \phi_{ijk}\]- 平均值
Eulerian::AreaRegion::Average
Eulerian::VolumeRegion::Average
选定区域内场量的平均值,其中 \(N\) 为选定区域内观测(单元)的总数。
\[\phi_0 = \frac{\sum_{ijk} \phi_{ijk}}{N}\]- 标准偏差
Eulerian::AreaRegion::StandardDeviation
Eulerian::VolumeRegion::StandardDeviation
选定区域内场量的标准偏差,其中 \(\phi_0\) 是选定区域内变量的平均值。
\[\sigma_{\phi} = \sqrt{\frac{ \sum_{ijk} (\phi_{ijk}-\phi_{0})^2 }{N}}\]
表面积分
以下类型仅对面积区域有效:
- 面积
Eulerian::SurfaceIntegral::Area
选定区域的面积通过对定义表面的面的面积求和来计算。
\[\int dA = \sum_{ijk} \lvert A_{ijk} \rvert\]- 面积加权平均
Eulerian::SurfaceIntegral::AreaWeightedAverage
面积加权平均通过将选定变量与面的面积的乘积之和除以区域的总面积来计算。
\[\frac{\int\phi dA}{A} = \frac{\sum_{ijk}{\phi_{ijk} \lvert A_{ijk} \rvert}}{\sum_{ijk}{\lvert A_{ijk} \rvert}}\]- 流量
Eulerian::SurfaceIntegral::FlowRate
场变量通过一个表面的流量通过对相体积分数、密度、选定场变量、面法向速度 \(v_n\) 和面的面积的乘积求和来计算。
\[\int\varepsilon\rho\phi{v_n}dA = \sum_{ijk}\varepsilon_{ijk}\rho_{ijk}\phi_{ijk} {v}_{n,ijk} \lvert A_{ijk} \rvert\]- 质量流量
Eulerian::SurfaceIntegral::MassFlowRate
质量流量通过对相体积分数、密度、面法向速度 \(v_n\) 和面的面积的乘积求和来计算。
\[\int\varepsilon\rho{v_n} dA = \sum_{ijk}\varepsilon_{ijk}\rho_{ijk}{v}_{n,ijk} \lvert A_{ijk} \rvert\]- 质量加权平均
Eulerian::SurfaceIntegral::MassWeightedAverage
质量加权平均通过将相体积分数、密度、选定场变量、面法向速度和面的面积的乘积之和除以相体积分数、密度、面法向速度和面的面积的乘积之和来计算。
\[\frac{\int\varepsilon\rho\phi{v_n}dA}{\int\varepsilon\rho{v_n}dA} = \frac{\sum_{ijk}\varepsilon_{ijk}\rho_{ijk}\phi_{ijk} {v}_{n,ijk} \lvert A_{ijk} \rvert}{\sum_{ijk}\varepsilon_{ijk}\rho_{ijk} {v}_{n,ijk} \lvert A_{ijk} \rvert}\]- 体积流量
Eulerian::SurfaceIntegral::VolumeFlowRate
体积流量通过对相体积分数、面法向速度 \(v_n\) 和面的面积的乘积求和来计算。
\[\int\varepsilon{v_n}dA = \sum_{ijk}\varepsilon_{ijk}{v}_{n,ijk} \lvert A_{ijk} \rvert\]
体积积分
以下类型仅对体积区域有效:
- 体积
Eulerian::VolumeIntegral::Volume
体积通过对选定区域内所有单元体积求和来计算。
\[\int dV = \sum_{ijk}{ \lvert V_{ijk}} \rvert\]- 体积积分
Eulerian::VolumeIntegral::VolumeIntegral
体积积分通过对选定场变量与单元体积的乘积求和来计算。
\[\int \phi dV = \sum_{ijk}{\phi_{ijk} \lvert V_{ijk}} \rvert\]- 体积加权平均
Eulerian::VolumeIntegral::VolumeWeightedAverage
体积加权平均通过将选定场变量与单元体积的乘积之和除以单元体积之和来计算。
\[\frac{\int\phi dV}{V} = \frac{\sum_{ijk}{\phi_{ijk} \lvert V_{ijk} \rvert}}{\sum_{ijk}{\lvert V_{ijk} \rvert}}\]- 质量加权积分
Eulerian::VolumeIntegral::MassWeightedIntegral
质量加权积分通过对相体积分数、密度、选定场变量和单元体积的乘积求和来计算。
\[\int \varepsilon\rho\phi dV = \sum_{ijk}\varepsilon_{ijk}\rho_{ijk}\phi_{ijk} \lvert V_{ijk}\rvert\]- 质量加权平均
Eulerian::VolumeIntegral::MassWeightedAverage
质量加权平均通过将相体积分数、密度、选定场变量和单元体积的乘积之和除以相体积分数、密度和单元体积的乘积之和来计算。
\[\frac{\int\phi\rho\varepsilon dV}{\int\rho\varepsilon dV} = \frac{\sum_{ijk}\varepsilon_{ijk}\rho_{ijk}\phi_{ijk} \lvert V_{ijk}\rvert}{\sum_{ijk}\varepsilon_{ijk}\rho_{ijk} \lvert V_{ijk}\rvert}\]
拉格朗日监测器
有不同类型的监测器可用。监测器类型对变量应用一个算子(例如求和、面积积分或体积积分)。区域的维度决定了可以应用哪些算子。
下表总结了用于描述监测器算子的命名法:
符号 |
描述 |
|---|---|
\(\phi_p\) |
已索引粒子的变量值 |
\(m_p\) |
已索引粒子的 质量 |
\(V_p\) |
已索引粒子的 体积 |
\(\mathcal{w}_p\) |
已索引粒子的 统计权重 [1] |
下表列出了所有可以监测的固体相变量:
描述 |
|
|---|---|
position |
粒子位置(所有三个分量) |
pos_[x/y/z] |
粒子位置的 x、y 或 z 分量 |
id |
粒子标识 |
cpu |
粒子 CPU |
radius |
粒子半径 |
volume |
粒子体积 |
mass |
粒子质量 |
density |
粒子密度 |
oneOverI |
粒子惯性矩的逆 |
velocity |
粒子速度(所有三个分量) |
vel_[x/y/z] |
粒子速度的 x、y 或 z 分量 |
omega |
粒子角速度(所有三个分量) |
omega_[x/y/z] |
粒子角速度的 x、y 或 z 分量 |
statwt |
粒子统计权重 |
dragcoeff |
粒子阻力系数 |
drag |
粒子阻力(所有三个分量) |
drag_[x/y/z] |
粒子阻力的 x、y 或 z 分量 |
cp_s |
粒子比热系数 |
T_s |
粒子温度 |
convection |
粒子对流热传递 |
phase |
粒子相 |
state |
粒子状态 |
X_sn |
粒子组分质量分数(对于所有的固体组分) |
X_sn_[species] |
固体“组分”质量分数(仅监测组分“species”) |
txfr_velocity |
由于异质化学反应,传递到流体相的速度速率(所有三个分量) |
txfr_vel_[x/y/z] |
由于异质反应,传递速度的 x、y 或 z 分量 |
txfr_h |
由于异质化学反应传递的焓速率 |
txfr_X_sn |
由于异质化学反应传递的质量速率(对于所有组分) |
txfr_X_sn_[species] |
由于异质反应传递的固体“组分”速率(仅监测组分“species”) |
一般粒子属性
一般粒子属性可以从面积(平面)和体积区域获得。对于面积区域,使用与平面相交的欧拉单元中的所有粒子来评估平均值。
- 求和
Lagrangian::GeneralProperty::Sum
选定区域内粒子属性 \(\phi_p\) 的总和通过以下表达式计算。
\[\sum_p w_p \phi_p\]
质量加权求和
Lagrangian::GeneralProperty::MassWeightedSum
选定区域内粒子属性 \(\phi_p\) 的质量加权总和通过以下表达式计算。
\[\sum_p w_p m_p \phi_p\]
- 最小值
Lagrangian::GeneralProperty::Min
选定区域内粒子属性 \(\phi_p\) 的最小值通过以下表达式获得。
\[\min_p \phi_p\]- 最大值
Lagrangian::GeneralProperty::Max
选定区域内粒子属性 \(\phi_p\) 的最大值通过以下表达式获得。
\[\max_p \phi_p\]
平均粒子属性
粒子属性可以在面积(平面)和体积区域上进行平均。对于面积区域,使用与平面相交的欧拉单元中的所有粒子来评估平均值。
- 平均值
Lagrangian::AveragedProperty::Average
选定区域内粒子属性 \(\phi_p\) 的平均值通过以下表达式计算。对于DEM模拟,粒子的统计权重 \(w_p\) 为1,因此权重的总和是选定区域内的总观测次数。
\[\bar{\phi} = \frac{\sum_p w_p \phi_p}{\sum_p w_p}\]- 标准差
Lagrangian::AveragedProperty::StandardDeviation
选定区域内粒子属性 \(phi_p\) 的标准差通过以下表达式计算。 \(\bar{\phi}\) 是选定区域内的平均变量。
\[\sigma_{\phi} = \sqrt{\frac{ \sum_p w_p (\phi_p-\bar{\phi})^2 }{\sum_p w_p}}\]- 质量加权平均
Lagrangian::AveragedProperty::MassWeightedAverage
选定区域内粒子属性 \(\phi_p\) 的质量加权平均值通过以下表达式计算。
\[\bar{\phi}_m = \frac{\sum_{p} w_p m_p \phi_p}{\sum_p w_p m_p }\]- 体积加权平均
Lagrangian::AveragedProperty::VolumeWeightedAverage
选定区域内粒子属性 \(\phi_p\) 的体积加权平均值通过以下表达式计算。
\[\bar{\phi}_v = \frac{\sum_{p} w_p V_p \phi_p}{\sum_p w_p V_p}\]
流率
对于类型为 FlowRate 的拉格朗日监测器,必须在输入中指定流动平面,并且必须由区域输入中定义的区域之一定义。可以使用以下输入为类型为 FlowRate 的监测器 [monitor] 设置前缀 “mfix.monitors”。
描述 |
类型 |
默认值 |
|
|---|---|---|---|
[monitor].plane |
定义通过监测区域 [region] 中的粒子流率计算的平面 |
字符串 |
None |
拉格朗日粒子(DEM/PIC)的流率监测器仅对面积(平面)区域有效。通过平面 \(\Gamma\) 的粒子集合使用平面高度 \(h\)、粒子位置 \(x_p\) 和粒子垂直于平面的速度 \(v_p\) 近似计算,使得
\[(v_p)\left(\frac{x_p - h}{\Delta t}\right) > 0\]
并且
\[\left|v_p\right| \geq \left| \frac{x_p - h}{\Delta t} \right|\]
- 流率
Lagrangian::FlowRate::FlowRate
一般粒子属性 \(\phi_p\) 的净流率通过对预计穿过流动平面 \(\Gamma\) 的粒子集合的属性求和来计算。
\[\sum_{p \in \Gamma} w_p \phi_p \frac{v_p}{\left| v_p \right|}\]- 质量加权流率
Lagrangian::FlowRate::MassWeightedFlowRate
净质量加权流率是一般粒子属性 \(\phi_p\) 乘以粒子质量 \(m_p\) 的和,计算对象为预计穿过流动平面 \(\Gamma\) 的粒子集合。
\[\sum_{p \in \Gamma} w_p m_p \phi_p \frac{v_p}{\left| v_p \right|}\]- 体积加权流率
Lagrangian::FlowRate::VolumeWeightedFlowRate
净体积加权流率是一般粒子属性 \(\phi_p\) 乘以粒子体积 \(V_p\) 的和,计算对象为预计穿过流动平面 \(\Gamma\) 的粒子集合。
\[\sum_{p \in \Gamma}\phi_p w_p V_p \frac{v_p}{\left| v_p \right|}\]