分子动力学的模拟程序设计.docxVIP

  • 11
  • 0
  • 约9.8千字
  • 约 11页
  • 2018-12-18 发布于广东
  • 举报
分子动力学的模拟程序设计 一、课题名称:分子动力学的模拟程序设计 二、班级和姓名:*** 三、主要内容: 1.研究的内容和算法 分子动力学模拟方法–确定性的演化过程。 按该体系内部的内禀动力学规律计算、确定位形的转变。 出发点:物理系统确定的微观描述。具体的说就是描述系统的哈密顿、拉格朗日或者牛顿运动方程,用这些方程去驱动粒子的位置、速度和取向随时间的演化。 模拟过程: (1)通过对物理体系的微观数学描述建立一组方程组,直接求解每个分子的运动方程。得到每个时刻、每个分子的坐标和动量。 (2)利用统计方法计算系统的静态和动态过程。 计算机模拟的问题 1 观测时间是有限的 对于某些问题,有限观测时间可以看成是无限长的。如对一个分子系统的计算,它的观测时间远大于分子时间尺度。 2 观测体系是有限的。 引入周期性、全反射、漫反射等边界条件。 分子动力学模拟的计算 对体系的分子动力学方程组进行求解时,需要将运动的连续性方程离散化变成有限差分方程,常用的方法有:欧拉法,龙格-库塔法、辛普生法等。 误差来源: (1) 动力学模型的近似程度; (2) 数值求解法的近似阶数; (3) 数值计算的舍入误差。 分子动力学的适用范围 原则上,分子动力学方法所适用的微观物理体系并无任何限制。这个方法适用的体系既可以是少体系统,也可以是多体系统;既可以是点粒子体系,也可以是具有内部结构的体系;处理的微观客体既可以是分子,也可以是其它的微观粒子。 微正则系综(NVE)的分子动力学模拟 步骤如下: (1) 给定初始空间位置 (2) 计算第n步时粒子所受的力 (3) 计算第n+1步粒子的空间位置 (4) 计算第n步的速度 ,根据速度得出系统的温度。 (5) 返回第(2)步,开始下一步计算。 2.源程序 简立方结构 /* #include cmath #include cstdlib #include fstream #include iostream #include string */ #include iostream #include string.h #include math.h #include iomanip #include stdlib.h #include fstream #include cstdio using namespace std; const int N = 64; // number of particles double r[N][3]; // positions double v[N][3]; // velocities double a[N][3]; // accelerations double L = 10; // linear size of cubical volume,简单立方 double vMax = 0.1; // maximum initial velocity component void initialize() { // initialize positions int n = int(ceil(pow(N, 1.0/3))); // number of atoms in each direction double a = L / n; // lattice spacing,晶格常数 int p = 0; // particles placed so far for (int x = 0; x n; x++) for (int y = 0; y n; y++) for (int z = 0; z n; z++) { if (p N) { r[p][0] = (x + 0.5) * a; r[p][1] = (y + 0.5) * a; r[p][2] = (z + 0.5) * a; } ++p; } // initialize velocities for (int p = 0; p N; p++) for (int i = 0

文档评论(0)

1亿VIP精品文档

相关文档