【发布时间】:2018-01-19 01:15:51
【问题描述】:
我是 C++ 新手,作为练习,我试图重现 Metropolis 等人所做的事情。 (大都会蒙特卡洛)。
到目前为止我所做的 - 做了 2 个类:Vector 和 Atom
class Vector {
public:
double x;
double y;
Vector() {
}
Vector (double x_, double y_) {
x = x_;
y = y_;
}
double len() {
return sqrt(x*x + y*y);
}
double lenSqr() {
return x*x + y*y;
}
};
class Atom {
public:
Vector pos;
Vector vel;
Vector force;
Atom (double x_, double y_) {
pos = Vector(x_, y_);
vel = Vector(0, 0);
force = Vector(0, 0);
}
double KE() {
return .5 * vel.lenSqr();
}
};
我不确定我定义 Atom 类的方式是......最好的处理方式,因为我不会使用随机数生成器将原子放入盒子中。
我的问题: 我需要初始化一个长度为 L 的盒子(在我的情况下 L=1),并在偏移晶格中加载 224 个原子/粒子(我已经包含了一张图片)。我做了一些阅读,我想知道这里是否适合使用数组。
让我感到困惑的一件事是如何标准化阵列以获得粒子之间的适当距离以及一旦粒子开始移动阵列会发生什么。我也不确定数组如何为我提供盒子中每个原子的 x 和 y 位置。
【问题讨论】:
-
欢迎来到 Stack Overflow,请查看:stackoverflow.com/help/how-to-ask
-
@Daniel - 我希望我编辑的问题更清楚一点。
-
您是指
box of length L的立方体吗?是3维实体吗? -
@MrPisarik - 这是一个 2D 盒子,我匆忙复制了一些代码,忘记删除 z 组件!我现在对其进行了更改以反映这一点。
标签: c++ montecarlo