离散单元法的颗粒数据粗粒化

注: 本文同步发表于 个人主页知乎

离散单元法(Discrete Element Method,简称DEM)是颗粒流数值模拟的重要数值方法,被用于各种各样的颗粒流定量研究中。颗粒流的粗粒化(Coarse Graining),便是将颗粒流流场的大量数据转化为连续场数据的数值方法。

在开始介绍之前,先简要列出主要的参考资料:

  • Breard, E. C. P., Dufek, J., Fullard, L., & Carrara, A. (2020). The Basal Friction Coefficient of Granular Flows With and Without Excess Pore Pressure: Implications for Pyroclastic Density Currents, Water‐Rich Debris Flows, and Rock and Submarine Avalanches. Journal of Geophysical Research: Solid Earth, 125(12), e2020JB020203. DOI:10.1029/2020JB020203.
  • Lacaze, L., & Kerswell, R. R. (2009). Axisymmetric Granular Collapse: A Transient 3D Flow Test of Viscoplasticity. Physical Review Letters, 102(10), 108305. DOI:10.1103/PhysRevLett.102.108305.
  • Weinhart, T., Labra, C., Luding, S., & Ooi, J. Y. (2016). Influence of coarse‐graining parameters on the analysis of DEM simulations of silo flow. Powder Technology, 293, 138–148. DOI:10.1016/j.powtec.2015.11.052

单种颗粒的粗粒化

为简单起见,先从仅存在单种球形颗粒的颗粒流开始说起,并且只考虑获取空间内一点 r \boldsymbol{r} r t t t 时刻的粗粒化数据。

粗粒化函数

在这里,引入高斯函数

W ( r ) = { 1 V w exp ⁡ ( − ∣ r ∣ 2 2 w ) , ∣ r ∣ < c 0 , otherwise W(\boldsymbol{r}) = \begin{cases} \frac{1}{V_w} \exp{\left(- \frac{\vert\boldsymbol{r}\vert^2}{2w} \right)} ,& {\vert\boldsymbol{r}\vert} < c \\ 0 ,& \text{otherwise} \end{cases} W(r)={Vw1exp(2wr2),0,r<cotherwise

其中: w w w 为粗粒化宽度; c = 3 w c = 3 w c=3w 为粗粒化截断长度; V w V_w Vw 是确保其密度积分等于总质量的系数

V w = 2 2 ⋅ w 3 π 3 2 e r f ( c 2 2 w ) − 4 c w 2 π exp ⁡ ( − c 2 2 w 2 ) V_w = 2 \sqrt{2} \cdot w^3 \pi^{\frac{3}{2}} \mathrm{erf}\left( \frac{c \sqrt{2}}{2 w} \right) - 4 c w^2 \pi \exp{\left( \frac{- c^2}{2 w^2} \right)} Vw=22 w3π23erf(2wc2 )4cw2πexp(2w2c2)

Weinhart 等建议 w w w 的取值范围应在 [ 0.75 d m e a n , 1.25 d m e a n ] [0.75 d_{\mathrm{mean}}, 1.25 d_{\mathrm{mean}}] [0.75dmean,1.25dmean] 之间,其中 d m e a n d_{\mathrm{mean}} dmean 为平均颗粒直径。

密度和动量的计算

t t t 时刻,单种颗粒的集合为 q q q 。对于其中的第 i i i 个球,其位置矢量为 r i \boldsymbol{r}_i ri ,质量为 m i m_i mi ,速度为 u i \boldsymbol{u}_i ui

密度的粗粒化表达式为:
ρ ( r , t ) = ∑ i ∈ q m i W ( r − r i ( t ) ) \rho(\boldsymbol{r}, t) = \sum\limits_{i \in q} m_i W(\boldsymbol{r} - \boldsymbol{r}_{i}(t)) ρ(r,t)=iqmiW(rri(t))

动量的粗粒化表达式为:
j ( r , t ) = ∑ i ∈ q m i u i W ( r − r i ( t ) ) \boldsymbol{j}(\boldsymbol{r}, t) = \sum\limits_{i \in q} m_i \boldsymbol{u}_i W(\boldsymbol{r} - \boldsymbol{r}_{i}(t)) j(r,t)=iqmiuiW(rri(t))

所以,速度的计算需要通过 j \boldsymbol{j} j ρ \rho ρ 完成:

u ( r , t ) = j ( r , t ) / ρ ( r , t ) \boldsymbol{u}(\boldsymbol{r}, t) = \boldsymbol{j}(\boldsymbol{r}, t) / \rho(\boldsymbol{r}, t) u(r,t)=j(r,t)/ρ(r,t)

根据 W ( r ) W(\boldsymbol{r}) W(r) 的定义,当 ∣ r − r i ( t ) ∣ ≥ c \vert \boldsymbol{r} - \boldsymbol{r}_{i}(t) \vert \ge c rri(t)c 时, W ( r − r i ( t ) ) = 0 W(\boldsymbol{r} - \boldsymbol{r}_{i}(t)) = 0 W(rri(t))=0
因此在实际计算中可根据这一点跳过某些球的计算。

应力张量的计算

应力张量 [ σ ] = σ α β [\boldsymbol{\sigma}] = \sigma_{\alpha\beta} [σ]=σαβ 被表示为由接触作用产生的部分 σ α β ( c ) \sigma_{\alpha\beta}^{(c)} σαβ(c) ,以及由动能作用产生的部分 σ α β ( k ) \sigma_{\alpha\beta}^{(k)} σαβ(k) 。即:

σ α β = σ α β ( k ) + σ α β ( c ) \sigma_{\alpha\beta} = \sigma_{\alpha\beta}^{(k)} + \sigma_{\alpha\beta}^{(c)} σαβ=σαβ(k)+σαβ(c)

对于 σ α β ( k ) \sigma_{\alpha\beta}^{(k)} σαβ(k) ,有:

σ α β ( k ) ( r , t ) = ∑ i ∈ q m i v i , α ′ v i , β ′ W ( r − r i ( t ) ) \sigma_{\alpha\beta}^{(k)}(\boldsymbol{r}, t) = \sum\limits_{i \in q} m_i v_{i,\alpha}^{'} v_{i,\beta}^{'} W(\boldsymbol{r} - \boldsymbol{r}_{i}(t)) σαβ(k)(r,t)=iqmivi,αvi,βW(rri(t))

其中 v i , α ′ = u i , α − u α ( r , t ) v_{i,\alpha}^{'} = u_{i,\alpha} - u_{\alpha}(\boldsymbol{r}, t) vi,α=ui,αuα(r,t) 为第 i i i 个球的速度波动值。

对于 σ α β ( c ) \sigma_{\alpha\beta}^{(c)} σαβ(c) ,考虑第 i i i 个球的所有接触:

σ α β ( c ) ( r , t ) = ∑ i ∈ q ∑ j ∈ Q ˉ j ≠ i F i j , α l i j , β ∫ 0 1 W ( r − r i ( t ) + s l i j ) d s \sigma_{\alpha\beta}^{(c)}(\boldsymbol{r}, t) = \sum\limits_{i \in q} \sum\limits_{j \in \bar{Q}}^{j \neq i} F_{ij,\alpha} l_{ij,\beta} \int_{0}^{1} W(\boldsymbol{r} - \boldsymbol{r}_{i}(t) + s \boldsymbol{l}_{ij}) \mathrm{d}s σαβ(c)(r,t)=iqjQˉj=iFij,αlij,β01W(rri(t)+slij)ds

式中

  • j j j 是整个颗粒系统 Q ˉ \bar{Q} Qˉ 中的一个球( j ≠ i j \neq i j=i),并且球 i i i 与球 j j j 发生接触;
  • F i j \boldsymbol{F}_{ij} Fij 是球 i i i 所受到的来自球 j j j 接触的力, F i j , α F_{ij,\alpha} Fij,α 为其 α \alpha α 方向分量;
  • l i j \boldsymbol{l}_{ij} lij 是球 i i i 与球 j j j 的接触矢量(从 i i i j j j), l i j , α l_{ij,\alpha} lij,α 为其 α \alpha α 方向分量。

在实际操作中,对于
∫ 0 1 W ( r − r i ( t ) + s l i j ) d s \int_{0}^{1} W(\boldsymbol{r} - \boldsymbol{r}_{i}(t) + s \boldsymbol{l}_{ij}) \mathrm{d}s 01W(rri(t)+slij)ds
我选择使用复化 Simpson 积分计算其数值,以简化操作。

多种颗粒的粗粒化

假设一个颗粒流系统 Q ˉ \bar{Q} Qˉ 中有 Q Q Q 类颗粒,对于第 q q q 类颗粒 q ∈ Q q \in Q qQ, 可以使用单类颗粒粗粒化的公式计算出:第 q q q 类颗粒的粗粒化密度 ρ q ( r , t ) \rho^{q}(\boldsymbol{r}, t) ρq(r,t) 、速度 u q ( r , t ) \boldsymbol{u}^{q}(\boldsymbol{r}, t) uq(r,t) 和应力张量 σ α β q ( r , t ) \sigma_{\alpha\beta}^{q}(\boldsymbol{r}, t) σαβq(r,t)

所以整个颗粒流系统 Q ˉ \bar{Q} Qˉ 的粗粒化结果为:

ρ ( r , t ) = ∑ q ∈ Q ρ q ( r , t ) u ( r , t ) = ∑ q ∈ Q u q ( r , t ) σ α β ( r , t ) = ∑ q ∈ Q σ α β q ( r , t ) \begin{aligned} \rho(\boldsymbol{r}, t) &= \sum_{q \in Q} \rho^{q}(\boldsymbol{r}, t) \\ \boldsymbol{u}(\boldsymbol{r}, t) &= \sum_{q \in Q} \boldsymbol{u}^{q}(\boldsymbol{r}, t) \\ \sigma_{\alpha\beta}(\boldsymbol{r}, t) &= \sum_{q \in Q} \sigma_{\alpha\beta}^{q}(\boldsymbol{r}, t) \\ \end{aligned} ρ(r,t)u(r,t)σαβ(r,t)=qQρq(r,t)=qQuq(r,t)=qQσαβq(r,t)

使用粗粒化数据提取颗粒流流变参数

这里以 μ ( I ) \mu(I) μ(I) 流变关系为例子,以上文的文献作为参照。

记速度剪切率张量 γ i j = ∂ u i ∂ x j + ∂ u j ∂ x i \gamma_{ij} = \frac{\partial u_i}{\partial x_j} + \frac{\partial u_j}{\partial x_i} γij=xjui+xiuj ,其中 u i u_i ui 源自粗粒化速度场。令:

γ i j d = γ i j − δ i j 3 t r ( [ γ ] ) \gamma_{ij}^{d} = \gamma_{ij} - \frac{\delta_{ij}}{3} \mathrm{tr}([\gamma]) γijd=γij3δijtr([γ])

其中 t r ( [ γ ] ) = γ x x + γ y y + γ z z \mathrm{tr}([\gamma]) = \gamma_{xx} + \gamma_{yy} + \gamma_{zz} tr([γ])=γxx+γyy+γzz [ γ ] [\gamma] [γ] 的迹。

所以剪切应变率定义为:

∣ γ ˙ ∣ = 1 2 γ i j d γ i j d |\dot{\gamma}| = \sqrt{\frac{1}{2} {\gamma}_{ij}^{d} {\gamma}_{ij}^{d} } γ˙=21γijdγijd

定义压强为 p = 1 3 t r ( [ σ ] ) = ( σ x x + σ y y + σ z z ) / 3 p = \frac{1}{3} \mathrm{tr}([\sigma]) = (\sigma_{xx} + \sigma_{yy} + \sigma_{zz}) / 3 p=31tr([σ])=(σxx+σyy+σzz)/3,偏应力张量为: [ τ ] = τ i j = σ i j − p ⋅ δ i j [\tau] = \tau_{ij} = \sigma_{ij} - p \cdot \delta_{ij} [τ]=τij=σijpδij, 所以切应力为:
∣ τ ∣ = 1 2 τ i j τ i j |\tau| = \sqrt{\frac{1}{2} \tau_{ij} \tau_{ij} } τ=21τijτij

简单的粗粒化代码示意

我用 Python 写了一份对单种颗粒系统进行粗粒化的代码,详情见此网页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值