浅水方程的cfd-python软件包

mattflow的Python项目详细描述


mattflow

浅水方程的cfd-python软件包。

mattflow在任何初始条件(如水滴或石头掉落)之后模拟水的表面。


requirementsos
python 3GNU/Linux
numpy 1.16.4Windows
matplotlib 3.1.1
ffmpeg (optional)

如何安装并运行mattflow

  1. 水蟒环境(推荐)
$ conda create --name mattflow python=3 matplotlib
$ conda activate mattflow
$ pip install mattflow
$ mattflow
  1. venv(python>;=3.3)
$ python3 -m venv mattflow_env
$ source mattflow_env/bin/activate
$ pip install mattflow
$ mattflow
$ pip install --user mattflow
$ mattflow

吞水方程

swe是一个简化的cfd问题,在假设
水平长度比例尺远大于垂直长度比例尺。

swe是一个由3个双曲偏微分方程组成的耦合系统,它们来自
质量守恒和线性动量守恒(navier-stokes)方程,in
水平河床的情况,没有科里奥利力、摩擦力或粘滞力(wiki)。

{\displaystyle {\begin{aligned}{\frac {\partial (\rho \eta )}{\partial t}}&+{\frac {\partial (\rho \eta u)}{\partial x}}+{\frac {\partial (\rho \eta v)}{\partial y}}=0,\\[3pt]{\frac {\partial (\rho \eta u)}{\partial t}}&+{\frac {\partial }{\partial x}}\left(\rho \eta u^{2}+{\frac {1}{2}}\rho g\eta ^{2}\right)+{\frac {\partial (\rho \eta uv)}{\partial y}}=0,\\[3pt]{\frac {\partial (\rho \eta v)}{\partial t}}&+{\frac {\partial (\rho \eta uv)}{\partial x}}+{\frac {\partial }{\partial y}}\left(\rho \eta v^{2}+{\frac {1}{2}}\rho g\eta ^{2}\right)=0.\end{aligned}}}

其中:
η:高度
{EM1}$UEEE>:沿X轴的速度
{EM1} $ < EEM >:沿Y轴的速度
ρ:密度
g:重力加速度

mattflow结构

更多详细信息请参见jupyter notebook

  1. 通过配置文件配置模拟
  2. 预处理
    结构化/笛卡尔网格
  3. 解决方案
    支持的解算器:
  4. 后处理
    matplotlib动画

附加配置

  • 网格大小
  • 域大小调整
  • 初始条件(单滴、多滴、雨)
  • 边界条件(当前:反射)
  • 解算器
  • 打印样式
  • 动画选项

目前,您可以在config模块配置模拟

待办事项

  1. 例外情况
  2. pytest
  3. 绒布
  4. 配置模拟的简单api
  5. 高阶方案的实现
  6. 添加源项
  7. 增加粘性模型
  8. 移动核心到C++,Cython或NUBA
  9. 支持在域内移动对象
  10. 非结构网格
  11. 扩展到3D CFD

启动流!

(C) 2019, Thanasis Mattas
atmattas@physics.auth.gr

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在Java中比较忽略大小写的字符串   Swing应用程序中的java本机接口Jni字体错误   在maven spark java应用程序中运行html文件的javascript   JavaMaven和jboss模块   会话过期后java自动注销   java Android警报对话框强制关闭错误   java为分级栏添加边距/填充   java JPanel在使用BoxLayout时不会调整大小   java如何在编辑JTable的JSpinner单元格后重新应用或重新提交我的JTable   java异步任务FTP上载Android服务崩溃?   java如何从对象列表中获取字符串属性数组   java在许多片段中使用BroadcastReceiver   java Sockets聊天应用NotSerializableException   Java audio无法在Linux中播放wav文件   空的花括号/大括号在Java中是什么意思?   intellij idea如何告诉草书Clojure模块依赖于本地Java/Scala模块?   swing Java键绑定在按住键的同时触发按下和释放   当使用via时,java Log4j不显示行记录。jar文件