上图为基于光滑粒子流体动力学(SPH)的Python溃坝程序图,Python程序点此下载 py-sph
1:本文为转发文章:原文地址:https://github.com/arachih/SPH_Fluid_Simulation#smoothed-particle-hydrodynamics-sph-simulation
2:程序概述
这是2D平滑粒子流体动力学(SPH)模拟的Python实现,用于模拟溃坝场景中的流体行为。该模拟使用SPH方法对二维域中的流体行为进行建模。它包括粒子特性、域维度、时间步长和其他特定于模拟的设置的参数。
3:运行说明
Python运行依赖项为numpy,matplotlib,pyvista,其中pyvista用于获取vtk输出,以使用ParaView来可视化流动。可以使用以下命令安装它们:pip安装numpy matplotlib pyvista
通过执行Python脚本运行模拟:python sph.py
4:相关文件介绍
4-1
acceleration.py: 该模块包含基于各种力和相互作用计算粒子加速度的函数。它考虑了重力、压力梯度和人工粘度来更新每个粒子的加速度分量。
4-2
boundary_conditions.py:文件定义了负责处理边界条件的函数。它确保与边界(如墙)相互作用的粒子发生非弹性碰撞,并适当地反射或投影,以保持模拟的完整性。
4-3
density_pressure.py 本模块中可以找到与计算粒子密度和压力相关的函数。它采用SPH方法根据相邻粒子的贡献来估计密度,并使用状态方程(EOS)来计算相应的压力。
4-4
euler.py:实现欧拉时间积分方案。它根据计算的加速度更新粒子的速度和位置。该方案用于以离散时间步长推进模拟。
4-5
hash_function.py:提供了HashFunction类,该类实现了空间哈希技术。它有助于有效地找到给定细胞内粒子的邻居,优化邻居搜索过程和整体模拟性能。
4-6
post.py:处理模拟结果的后处理任务。它生成PNG图像以可视化粒子分布,还生成VTK文件以使用Paraview等可视化工具进行进一步分析。
5:程序参数定义:
N:
粒子数
h:
平滑长度
edge:
壁面限制
width:
域宽度
height:
域高度
m:粒子质量
rho0:参考密度
c0:声速
alpha:粘度系数
gamma:Tait方程gamma
dt:时间步长
k: EOS系数
g:
重力加速度
final_time:最终模拟时间
frequency:图像的输出频率
vtk_freq:vtk文件的输出频率
visc:人工粘度
eps:
Epsilon值
bdry_reflec:边界非弹性碰撞的反射系数
bdry_proj_dist:将粒子推离边界的距离
此图为效果图,SPH流固耦合,看起来很炫,所以贴出来。