最近收到不少同学关于作业1的问题,这里汇总回复一下:
首先简单回顾一下作业要求:
- 本次作业中,⼤家可以选择⾃⼰最喜欢的模拟器,实现隐式时间积分(只要有线性系统求解就可以)。从性能(模拟同样时⻓的物理系统所需的运⾏时间)、准确度(如能量守恒)、数值稳定性等⻆度进⾏对⽐。
- 可选模拟器:
- implicit mass-spring/FEM, PCI-SPH, DF-SPH, MPS, Eulerian fluid (with pressure projection)…
- 提交格式(论坛提交GitHub链接和⼀些关键图表)
- README.md 中加⼊性能(如每帧计算时间)、准确度(机械能守恒)、稳定性的分析(允许的dt大小)等。
- 建议在README.md中加入一些图片,这样更能吸引别的同学去研究你的代码仓库。
- 评奖日期:7月11日
常见问题与回复
-
Q: 我选择的算法有线性系统求解,但并不是隐式时间积分器(如Eulerian fluid simulation里面的projection需要解Poisson equation),符合要求不?
A: 完全可以,但是请实现两种线性系统求解方法(如Jacobi iteration, Conjugate gradients, Multigrid等)。
需要注意的是,由于在课上讲到的Advection-projection求解器里面的advection是explicit而projection是implicit,少数文献也会把这样的算法叫做"semi-implicit"。但是这里的"semi-implicit"和"semi-implicit Euler"中的"semi-implicit"其实不是一回事。 -
Q: 我想实现Gauss-Seidel (GS),但是GS必须串行执行,而Taichi会自动并行…
A: 一般大家会用red-black Gauss-Seidel方法进行GS的并行实现。 -
Q: 我对于advection scheme很感兴趣,可否加入一些关于advection scheme的讨论?
A: 当然可以 -
Q: 可否基于别的同学的作业0
A: 当然,但是请注明复制的代码的出处。 -
Q: 有没有详细介绍Explicit和Implicit时间积分的资料?
A: 其实任何一本《数值分析》教材中应该都会提到“显格式”与“隐格式”。张老师的[知乎post] 中也有相关讨论。 -
Q: 我乐于挑战自我,想用张老师讲的FMM实现一个Poisson equation solver,可以不?
A: 完全可以,不过请做好打持久战的准备… -
Q: 文档需要写多长?
A: 有两三个图表(建议使用matplotlib.pyplot
绘制),和一百字左右的讨论即可。文档的目的是准确传达信息,并不是越长越好。一个很棒的作业提交案例:Homework 1: 多种显式/隐式方法求解弹簧质点系统 -
Q: 优秀作品还有奖品不?
A: 是的,我们会选取实现准确、文档清晰的作者发放“Taichi编程语言纪念茶杯”一只。 -
Q: 我和小伙伴组队(2-3人)参与,如果获奖是否每人都有奖品?
A: 是的,如果组队参与,那么每个成员都会收到一份奖品。在报告中,请简要注明每位同学的贡献。
如果有别的问题,欢迎在本帖提出!