我正在C++ (为大学)做一个项目。目标是编写一个程序,可以或多或少地模拟粒子在LHC同步加速器中飞行的光束。
不想急于求成,我和我的团队正在考虑如何实现这一点,我想知道是否有通用的设计模式被用来解决这类问题。
到目前为止,我们提出的一般办法如下:
WorldParticle、Dipole和Quadrupole。Particle,计算和总结World中每个物体产生的磁力和电磁力(幸运的是电磁力是线性的)。Particle相应地移动(使用一种简单的估计方法来求解微分方程)Particle位置这似乎是一种很好的方法,但是,例如,很难考虑到可能存在的对称性(例如每个Quadrupole的磁场),这是否是次优的。
考虑到像Quadrupole字段这样的对称性,将Quadrupole字段的空间离散并以某种方式存储起来要容易得多。(由于存储了大约2532个Quadrupoles,这将导致性能的巨大提高,而不必重新计算每个Quadrupole字段)
有什么设计模式吗?World-approach是可行的,还是过时的、糟糕的编程?对称性是怎样的呢,一般情况下是怎样被考虑进去的?
发布于 2012-03-27 02:41:19
检查图形社区的粒子物理模拟。有许多现有的模式(物理求解器和粒子系统的模式),对于这个群体来说,它是一个很好理解的概念,并且有许多实现。你会节省很多时间。
https://softwareengineering.stackexchange.com/questions/141607
复制相似问题