不符合传染病传播模型,仅作学习离散元用。
1. 限制行动
在离散元的Hertz接触模型中,接触的刚度系数与颗粒叠合量有关,所以每个时步都需要更新,在计算接触刚度系数的时候,加入如下三行伪代码,修改接触颗粒的颜色,可实现传染病传播过程模拟。
- 红:传染源
- 蓝:易感颗粒 接触红色就被传染
if ((spheres[index_o].color == red) || (spheres[index_a].color == red))
{
spheres[index_o].color = red;
spheres[index_a].color = red;
}
- 假设:密闭空间有200个健康的蓝色颗粒,所有颗粒自动运动,接触就感染,永远治不好。
- 边界条件:一个编号为0的颗粒突然感染红色病毒,10%(20个)的颗粒开始活动,并带动其他颗粒活动。
- 模拟结果:
- 都是从第一个病例向外逐渐扩散,离0号红色颗粒越近,感染越快。
- 无阻尼自由移动的时候,仅幸存一颗粒。
- 有阻尼自由移动的时候,左边一半颗粒尚未感染。
2. 群体免疫
中国地质大学(武汉)张老师建议让60%的颗粒获得免疫
- 红:传染源
- 蓝:易感颗粒 接触红色就被传染
- 绿:免疫颗粒 不会被红色颗粒传染,也不会传染别人。
// 都不是绿色,才考虑彼此是否感染
if ((spheres[index_o].color != green) && (spheres[index_a].color != green))
{
if ((spheres[index_o].color == red) || (spheres[index_a].color == red))
{
spheres[index_o].color = red;
spheres[index_a].color = red;
}
}
- 实验3:密闭空间有200个健康的蓝色颗粒,(60%)120个已获得免疫的绿色颗粒,所有颗粒自动运动,蓝色接触红色就感染,永远变成红色。
- 边界条件:一个编号为0的颗粒突然感染红色病毒,10%(20个)的颗粒开始活动,并带动其他颗粒活动。
- 模拟结果:
- 都易感染时,199个颗粒感染红色。
- 60%获得免疫,14个颗粒感染红色。