我目前正在编写一个程序,它将以非常基本的术语模拟气体在 3D 体积中的扩散和压力,整个边界都有边界 - 例如蚂蚁洞。我想要达到的效果: 1. 随着时间的推移,气体在整个环境中扩散,尊重墙壁。2. 我想测量每个网格点的压力或气体压缩。这样做的效果应该是,如果打开房间,气体将以反映压力差的速度从开口中扩散出来。
我的问题是我缺乏完全理解理论数学方程的知识,老实说,我真的不是在寻找准确的模拟。我只想实现物理学的一些突出效果。我对流体动力学(例如烟雾的模拟)不感兴趣。
我将在 OpenCL 中编写这个程序,但很乐意采用任何形式的代码示例,无论是 C 代码还是伪代码。
我想我应该传入 3 个 3D 阵列 - 一个用于气体,一个用于定义墙壁(例如 1 个位于 xyz = 墙壁),一个用于存储压力。我目前假设检查墙壁很容易。只需检查每个相邻单元格,如果它不是墙,则说明该单元格:
For each grid point,
is wallmatrix[x+1] a wall?
[diffusion math here]
is wallmatrix[x-1] a wall?
[diffusion math here]
is wallmatrix[y+1] a wall?
[diffusion math here]
etc...
但我只是不确定如何处理扩散数学,也不知道如何在这一切中包含压力?