不符合传染病传播模型,仅作学习离散元用。

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号红色颗粒越近,感染越快。
    • 无阻尼自由移动的时候,仅幸存一颗粒。
    • 有阻尼自由移动的时候,左边一半颗粒尚未感染。

      实验1 阻尼=0.0

      实验2 阻尼=0.2

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个颗粒感染红色。

      实验1 所有人都易感染

      实验3 60%获得了免疫