#include <iostream>
#include <cstdlib>
#include <cmath>
#include <fstream>
#include<ctime>using namespace std;ofstream out("data.dat");
const int L = 50;                //模拟尺寸
const int MCS = 20000;           //总的模拟步数
const int MS = 10000;             //除去预热统计的步数
const double J = -1;             //J=1AFM,J=-1FMdouble H = 0;double InitialSpin(int s[][L])
{for (int i = 0; i < L; i++){for (int j = 0; j < L; j++){//s[i][j] = 1; s[i][j]= 2 * (rand() % 2) - 1;}}return 0;
}
//随机初始化自旋分布
//----------------------------------------double ExchangeEnergy(int Spin[][L])
{int down,up,left,right;double e = 0;for (int i = 0; i < L; i++){for (int j = 0; j < L; j++){e += J*Spin[i][j]*(Spin[(i+1)%L][j]+Spin[(i-1+L)%L][j]+Spin[i][(j+1)%L]+Spin[i][(j-1+L)%L]);}}return e;
}
// 计算体系的总能量 //计算格点的局域能量
double Magnetization(int s[][L])
{double m = 0;for (int i = 0; i < L; i++){for (int j = 0; j < L; j++){m += s[i][j];}}return m;
}
//输出体系的磁性
void MonteCarlo(int Spin[][L],double T)
{int iaccept = 0;//统计接受样本 double se = 0;double se2 = 0;double sm = 0;double sm2 = 0;double de = 0;double m;int up,down,right,left;int E1,E2;double p,r;for (int mcs = MCS; mcs > 0; mcs--){for(int i=0;i<L;i++){for(int j=0;j<L;j++){E1=J*Spin[i][j]*(Spin[(i+1)%L][j]+Spin[(i-1+L)%L][j]+Spin[i][(j+1)%L]+Spin[i][(j-1+L)%L]);E2=-J*Spin[i][j]*(Spin[(i+1)%L][j]+Spin[(i-1+L)%L][j]+Spin[i][(j+1)%L]+Spin[i][(j-1+L)%L]);if(E2<=E1)Spin[i][j]=-Spin[i][j];else{p=1.0*rand()/ RAND_MAX;r=exp(1.0*(E1-E2)/T);if(r>p){Spin[i][j]=-Spin[i][j];iaccept++;}}}}if (mcs < MS){m=0;m = Magnetization(Spin) / L / L;         //输出总磁矩 sm += m;         //将每一步磁矩求和取平均 sm2 += m*m;      //将每一步磁矩的平方求和 double e = ExchangeEnergy(Spin) / L / L - H*m;  //体系总能量 se += e;        //将每一步能量求和取平均 se2 += e*e;    //将每一步能量平方求和取平均 }}se/=MS;se2 /= MS;sm /= MS;sm2 /= MS;double Capacity = (se2 - se*se) / T / T;//热容的定义 double Manet = (sm2 - sm*sm) / T;   //磁化率定义 out << T << '\t'  << '\t' << se << '\t' << Capacity << '\t' << sm << '\t' <<Manet<<'\t'<<endl;
}
int main()
{srand((unsigned)time(NULL));  //初始化时间 int s[L][L] = { 0 };InitialSpin(s);double T;int i=0;for (T = 1; T <4; T += 0.01){MonteCarlo(s,T);printf("%d\n",i++);}out.close();system("pause");return 0;
}

二维方格子Ising模型代码相关推荐

  1. 只显示小方格_不妨谈谈二维方格子吧

    (想借该模型 讲清直积态以及TB Model哈密顿量) 入手复杂的事物之前,从手算几个简单的例子开始是最好的. 所以,不妨谈谈二维方格子吧. 一个复杂的晶体,其内部的具有复杂的元胞(最小重复单元),每 ...

  2. 有限体积法求解二维方腔流(一)——动量方程和连续性方程的离散

    1. 有限体积法求解二维方腔流–理论手册 1.1. 不可压缩流体控制方程 连续性方程 ∇⋅U=0(1)\nabla \cdot U=0 \tag{1} ∇⋅U=0(1) 动量方程 ∂U∂t+∇⋅(UU ...

  3. 卷积算子的矩阵向量乘积表示二维离散降质模型

    @图像处理入门学习知识(一) 卷积算子的矩阵向量乘积表示&二维离散降质模型 在图像处理过程中,有时候我们需要将卷积运算转化为矩阵乘积运算,这也是离散降质模型构成的基础,那么怎么将卷积乘法转化为 ...

  4. 二维数组转datatable的代码

    二维数组转datatable的代码 转自http://access911.net/ocr/doc1.asp?mode=a&bid=005201&aid=5226970 这样更简洁: s ...

  5. 微信QQ的二维码登录原理js代码解析

    这篇文章主要大家详细解析了微信QQ的二维码登录原理js代码, 具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在很多地方就是都出现了使用二维码登录,二维码付款,二维码账户等应用(这里的二维码种马,诈 ...

  6. 两张二维人物图像互相换脸代码

    之前看了一篇介绍两张二维人物图像互相换脸代码:http://www.cnblogs.com/wm123/p/5370064.html,但是配置环境挺麻烦文章没讲清楚,而且代码有问题,特此重新写个清楚的 ...

  7. java二维数组长度表示,java二维数组指定不同长度代码实例

    本篇文章小编给大家分享一下java二维数组指定不同长度代码实例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 1.二维数组的每个元素都是一个一维数组, ...

  8. 【运筹优化】蚁群算法求解二维矩形装箱问题(java代码实现)

    文章目录 1 前言 2 代码迁移 3 蚁群算法 3.1 蚂蚁类 Ant 3.2 蚁群算法类 ACO_Packing 4 运行结果 5 后话 [运筹优化]求解二维矩形装箱问题的算法合辑(Java代码实现 ...

  9. 棒棒的二维数据可视化分类模型

    文章目录 源码 优势 局限 代码 API 实现原理 预处理 创建标记和颜色生成器 确定坐标轴数据范围 基于数据范围创建网格坐标 获得预测结果的三维网格坐标 绘制 绘制等高线图 绘制样本分布散点图 高亮 ...

最新文章

  1. Dell 戴尔预装Windows8改成Windows7
  2. linux执行命令段错误,Linux运行fortran程序 出现段错误(segmentation fault)
  3. 中点坐标公式 矩形_二次函数中矩形的存在性问题
  4. MariaDB(MySQL)_MariaDB(Mysql)-主从搭建
  5. c语言中的字符串总是以,C语言字符串的结束标志是什么?
  6. JavaScript:学习笔记(9)——Promise对象
  7. 前端学习(2652):初始化项目
  8. python如何用色度表示数值大小_python中色度通道的YUV子采样
  9. 数据结构之查找算法:折半查找
  10. APP应用下载站源码-带后台
  11. Web开发小结 - 2
  12. AFNetworking 图片的本地缓存问题
  13. ibm服务器修改ide,IBM刀片服务器配置IDE RAID的方法
  14. SC_FDE仿真平台:卷积编码 -> 矩阵交织 -> QPSK调制 -> 插入导频 -> 插入CP -> RayleighFading->channel
  15. M3U8视频解密下载
  16. GPIO的同步性约束
  17. 取出字符串中数字的最大值
  18. Cat源码分析(三):10种分析器
  19. Android开发 自定义控件 边框TextView
  20. 爱奇艺视听体验再升级,上线杜比视界独家电影内容

热门文章

  1. C语言:数组、字符串长度
  2. 人工智能遗传算法求函数极值
  3. VC6下miniblink应用开发简单实例
  4. 一个老基民谈购买基金技巧
  5. 智能消防疏散应急照明系统在高层建筑的设计与应用
  6. 计算机软件专业技术资格和水平考试各地咨询地址
  7. Android开发——Java基础(2)
  8. 200人面试经验,都在这里了
  9. springboot+vue的全平台支付系统
  10. TIPTOP ERP 调试debug时如何查看临时表中的数据