Help!advection reflection,maccormack, MICPCG

尝试大作业

作业描述

基于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天后见

可以参考这个例子,这里实现了stable fluid with MGPCG, Maccormack, reflection,ggui上2k分辨率无reflection应该可以real-time, https://github.com/erizmr/stable_fluid_MGPCG

2 个赞

坏了,看了你的代码之后我觉得我写的好乱,而且参考了参考文献和自带的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 个赞