Pierce
#1
尝试大作业
作业描述
基于stable_fluid 的代码
尝试添加 advection reflection,maccormack, MICPCG
问题
MacCormack 似乎没效果
advection reflection 会导致烟雾聚集在发出处
MICPCG加速失败,比jacobi性能更差,残差更大。。PCG也是一样
总之,一个都没成功┭┮﹏┭┮
效果展示
这是正常的jacobi 加 涡增强的
这是用了advection reflection的(聚在出发处了)
代码链接
https://github.com/Pierce-qiang/taichi_final_hw/blob/master/fluid_grid.py
太难顶了,题外话
已经踩了一堆坑,最绝的是
fluid notes 里面的Pcg 伪代码 σ 在 分数上写成ρ
我一直找不出错,全麻
不说了, 明天考试,5天后见
mzhang
#2
可以参考这个例子,这里实现了stable fluid with MGPCG, Maccormack, reflection,ggui上2k分辨率无reflection应该可以real-time, https://github.com/erizmr/stable_fluid_MGPCG
2 个赞
Pierce
#3
坏了,看了你的代码之后我觉得我写的好乱,而且参考了参考文献和自带的mgpcg之后我觉得mgpcg真好写, 而且可以并行,而MICPCG我看 fluid notes 得解LLT = b串行写
坏了,我想投靠mgpcg了(这样作业岂不是相似。。)
顺带提醒一下, 你的maccormack 似乎没有约束 error, 我记得Games201 第四课上说要约束的
还有一个问题,advection reflection 老师说只要多消耗一个advection的cost,但我看你的代码和论文中的算法都再做了一次projection, 这样消耗不是翻倍了吗
关于
“还有一个问题,advection reflection 老师说只要多消耗一个advection的cost,但我看你的代码和论文中的算法都再做了一次projection, 这样消耗不是翻倍了吗”
实在是抱歉,上课的时候我嘴瓢了。后来在答疑环节我想起来了并做了更正。Advection Reflection需要翻倍的运算代价。但是它带来的好处远好于2倍的substep带来的数值耗散,所以这仍然是一种非常好的办法。
3 个赞