| 查看: 2726 | 回复: 7 | |||||
| 【奖励】 本帖被评价4次,作者zyj8119增加金币 3 个 | |||||
[资源]
【转帖】2维无外场Ising模型的Monte Carlo模拟的C++实现
|
|||||
资源收集 | graphene | 学习 | 量子蒙特卡洛模拟 |
» 猜你喜欢
写了一篇“相变储能技术在冷库中应用”的论文,论文内容以实验为主,投什么期刊合适?
已经有6人回复
带资进组求博导收留
已经有10人回复
最近几年招的学生写论文不引自己组发的文章
已经有11人回复
需要合成515-64-0,50g,能接单的留言
已经有3人回复
中科院杭州医学所招收博士生一名(生物分析化学、药物递送)
已经有3人回复
临港实验室与上科大联培博士招生1名
已经有8人回复
想换工作。大多数高校都是 评职称时 认可5年内在原单位取得的成果吗?
已经有4人回复
» 本主题相关价值贴推荐,对您同样有帮助:
泵站进水流道出口断面轴向流速分布不均匀度的求解方法
已经有4人回复
matlab解微分方程
已经有10人回复
模拟结果实验结果不一致
已经有11人回复
fluent中的体热源加载问题(实际上是热流密度,不是热生成率)
已经有19人回复
dynaform 软件模拟问题,三通管成形的冲头怎么设置
已经有5人回复
纤维素酸解的相关资料
已经有4人回复
C++编程,关于循环结构的,大家看看我这程序哪里错了?
已经有21人回复
Ansys Fluent的计算能力有多大(最多能计算多少网格?)
已经有18人回复
用DPM模型时,solution里面会不会有 discrece model方程
已经有4人回复
是什么原因导致纤维素的耐盐性不好?
已经有6人回复
Monte Carlo 模拟时图是用什么软件做的
已经有10人回复
【求助】用monte carlo法做分子模拟,用什么编程语言实现比较好?
已经有25人回复
【讨论】大家对未来GPU在monte carlo中的应用持有什么样的态度(CUDA)?
已经有15人回复
【求助】有用Monte Carlo 编过有关Fluid中粒子运动的程序
已经有6人回复
【求助】求Monte Carlo 关于扩散系数计算的源代码
已经有5人回复
【在线答疑】经典粒子体系的Monte Carlo 模拟之基础篇
已经有73人回复
★ ★ ★ ★ ★ ★ ★
zh1987hs(金币+5):谢谢yahoohoo的精彩回复 2010-09-10 22:54:51
lei0736(金币+2):谢谢 2010-09-11 08:44:08
zh1987hs(金币+5):谢谢yahoohoo的精彩回复 2010-09-10 22:54:51
lei0736(金币+2):谢谢 2010-09-11 08:44:08
|
这是你自己写的程序吗?很不错啊,:-)。 这是个巨正则系综下的Monte Carlo模拟,因为总的自旋 $ S = \sum_i {s_i} $ 是变化的。 随机数的种子是无所谓精确与否的,代码中的做法只是为了使得不同的模拟使用不同的随机数序列。 建议将程序模块话,比如 Ising MC的一般模块为: void INIT(); // Set initial configuration double totalEnergy(); // Calc total energy double SpinEnergy(int i, int j); // Energy of a given spin void flip(); // flip a randomly chosen spin 主程序部分的周期性边界条件处理可以更快: int iRight = i + 1, iLeft = i - 1, jUp = j + 1, jDown = j - 1; if (iRight = BOXLX) iRight = 0; if (iLeft = -1) iLeft = BOXLXM1; // BOXLXM1 = BOXLX - 1; if (jUp = BOXLY) jUp = 0; if (jDown = -1) jDown = BOXLYM1; // BOXLYM1 = BOXLY - 1; 这样做的好处是将if else 分支结构转变成单独的if, 既形式简单又速度更快 能量判断可以简单写成如下代码: double dE = Enew - Eold; if (dE <= 0 || rng.gen_open0_open1() < exp(-BETA * dE)) { // 这样的好处是如果dE <= 0 成立那么后面的部分就不用计算 // ACCEPTED } else { // REJECTED } 关于能量与温度的关系,建议能量用 $ E/NJ $, 这样的话在低温区,所有的自旋方向一致,那么构象能为 $ E_{min} = -2 N |J| $。所以最低能量应该为 $ E / NJ = -2 $。而在高温区,自旋向上与向下的概率相等,因为每个自旋近邻的四个自旋和为0,因为总能量也为0。根据这两点,模拟得到的结果是有问题的。 [ Last edited by yahoohoo on 2010-9-10 at 21:13 ] |
2楼2010-09-10 21:05:59
3楼2010-09-10 22:56:11
4楼2010-09-11 12:02:55
5楼2012-04-26 19:13:43
6楼2012-05-23 00:43:45
7楼2012-08-17 23:18:37
8楼2013-01-09 00:15:45








回复此楼