2DEulerianFluidSolver
A interactive demo of 2D Eulerian Fluid Solver based on Taichi Lang
Install / Use
/learn @Lee-abcde/2DEulerianFluidSolverREADME
2D Eulerian Fluid Solver
A interactive demo of 2D Eulerian Fluid Solver based on Taichi Lang :)
这是一个使用太极语言编程的2D欧拉流体求解器,该项目已经向太极语言提交pr,即将成为ti example的一部分, 该项目有以下特色:
- 水面能够与鼠标进行交互
- 添加旋度运算,更好的流体表现 :)
- 自定义流体颜色场为背景图片,测试图片位于img目录下方(该功能默认不启用,默认用代码初始化太极图片,开启方法见下文2.2)
- 在 [512,512] 网格 830pfs左右 on RTX 4060 (laptop) (默认使用的是限制帧率60帧的GUI,为突破帧数限制需要使用taichi语言提供的CGUI系统,开启方法见下文2.3)
- 代码简短清晰(200 lines),方便阅读

1. Demo依赖包安装
python version == 3.9.16
taichi == 1.4.1
conda install taichi
conda install matplotlib
安装以上两个包之后,运行main.py即可以和demo玩耍
2. 代码阅读指北
scr/main.py:流体求解器主要代码,建议先看最后的循环部分。
src/Util.py:双Buffer类和双线性差值函数的实现,以及代码初始化太极图片的实现
2.1 流体模拟所需参数
eulerSimParam = {
'use_image': False,
'load_image':'../img/test2.jpg',
'shape': [512, 512],
'dt': 1 / 60.,
'iteration_step': 20,
'mouse_radius':0.01,# [0.0,1.0] float
'mouse_speed': 125.,
'mouse_respondDistance':0.5, # for every frame, only half the trace of the mouse will influence water
'curl_param':15,
'GUI_type':'GUI' #fill 'GUI' or 'CGUI'
}
2.2 如何切换流体初始图片
修改上方代码中以下参数:
use_image为True(如果该参数为False代码默认生成太极图像)load_image为你希望初始化的流体的图片位置(默认为image下的一张图像)- 修改
shape为所需图片的大小
2.3 如何开启CGUI
- 修改上方代码中
GUI_type为CGUI即可,同时建议调低curl_param(小于等于1)以获取更好的视觉表现。
3. 致谢
-
双Buffer类和双线性差值函数部分参考Taichi_HW1_EulerianFluid by @JerryYan97
-
生成太极图形代码参考Taichi Example
4. To do list
- ~~修复底部有部分黑色的渗漏问题~~(fix on 3/11/2023)
- ~~添加自动生成太极图形的代码~~(fix on 3/14/2023)
- ~~添加CGUI相关代码,突破帧数限制~~(fix on 3/23/2023)
Related Skills
node-connect
352.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
