监视器

监视器是一个用于从求解器中捕获模型数据的工具。

在求解器运行时,给定监视器区域的数据(如体积分数、压力、速度等)会被写入 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” 表示如果文件已存在则追加到文件

  • “trunc” 表示如果文件存在则覆盖输出文件

字符串

“app”

[monitor].output.setw

设置输出文件的字段宽度

整数

0

[monitor].output.setfill

设置输出文件的填充字符

字符

‘’

[monitor].output.setprecision

设置格式化输出文件中浮点值的精度

整数

0

[monitor].output.format

设置格式标志。可接受的值为:

  • “defaultfloat”

  • “fixed”

  • “scientific”

字符串

“”

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|}\]