【问题标题】:Distributing particles over a volume starting from a couple of density functions从几个密度函数开始在体积上分布粒子
【发布时间】:2014-01-14 12:55:10
【问题描述】:

基本上,我想做的是为星系的 n 体模拟设置初始条件。我试图通过的论文可以在这里找到http://arxiv.org/abs/1204.0513

论文描述了两个密度函数:

  • rho(r) 形式的表面密度函数,用于距离中心 r 处的密度

  • 和形式为 rho(r, z) 的密度函数,其中 z 是 (x,y,z) 坐标中的 z 分量。

到目前为止,我对每个粒子(星)所做的是:

  • 使用带有第一个函数的蒙特卡罗方法来获取距星系中心的距离
  • 使用带有第二个函数的蒙特卡罗方法来获取 z 分量
  • 在半径为 r、高度为 z 的圆上随机生成 x,y 坐标

但也许这方面的代码会更有帮助:

/* generate 3 random numbers x,y,z having a domain from 0 to 1 (not including 0.0) */

// The distance from the galaxy center for the current star.
// Rs is a constant parameter in the surface density function.
float r = -Rs * log(1.0f - x);

// The z coordinate for the current star
float Sz = -0.5f * (0.1f * Rs) * log(-((z-1)/z));

// The x,y coordinates for the current star
float Sx = sqrt(r*r - Sz*Sz) * cos(2.0f * PI * y);
float Sy = sqrt(r*r - Sz*Sz) * sin(2.0f * PI * y);

在视觉上,这会产生预期的形状,直到出现明显的情况,即如果生成的 Sz 值高于生成的 r 值。

所以我的问题首先是我是否一开始就走在正确的轨道上,如果是这样,是否有人可以针对我上面描述的情况提出一种更正机制或生成这些坐标的替代方法。

【问题讨论】:

    标签: distribution volume galaxy montecarlo


    【解决方案1】:

    我认为您在这里有两个基本选择。选项 1 是接受/拒绝 - 如果生成的 Sz 值使您超过 r 阈值,则丢弃当前尝试并重试。选项 2 是缩放结果 - 将三个维度归一化为 r,然后按随机数缩放,因此向量的长度是某个比例

    【讨论】:

    • 缩放结果是我目前正在研究的事情。由于此代码背后的逻辑,拒绝给定的 Sz 或生成新的随机 z 直到一个合适的值都是不可取的。
    • 生成一个新的 z 直到一次拟合会扭曲分布,结果将产生给定 x 和 y 的 z 的条件分布,而不是 x、y 和 z 的联合分布。
    猜你喜欢
    • 1970-01-01
    • 2010-09-10
    • 2013-02-24
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    相关资源
    最近更新 更多