matlab 分子动力学,两体的分子动力学模型-MATLAB源程序

编程知识 更新时间:2023-05-01 23:49:41

两原子的分子动力学模拟-MATLAB程序

%假设两个原子的质量相同,都设为1

%两原子之间的相互作用势为Lennard-Jones势

clear;

clc;

n=1000;%模拟步数,可修改

r1=zeros(n,3);%原子1的坐标

r2=zeros(n,3);%原子2的坐标

v1=zeros(n,3);%原子1的速度

v2=zeros(n,3);%原子2的速度

f1=zeros(n,3);%原子1受到的力

f2=zeros(n,3);%原子2受到的力

kinetic=zeros(n,1);%动能

potential=zeros(n,1);%势能

total=zeros(n,1);%总能量

r1(1,1)=0.2*rand()+0.3;

r1(1,2)=-0.2*rand()-0.1;

r1(1,3)=0.1*rand()-0.3;%随机设置原子1的初始位置

r2(1,:)=-r1(1,:);%将系统的质心设置在原点

v1(1,:)=rand(1,3);%速度服从标准正态分布

v2(1,:)=-v1(1,:);%将质心速度设置为0

d=sqrt((r1(1,1)-r2(1,1))^2+(r1(1,2)-r2(1,2))^2+(r1(1,3)-r2(1,3))^2);%初始时刻两原子间的距离k=48*(d^(-14)-0.5*(d^(-8)));%力关于坐标的比例系数

f1(1,:)=(r1(1,:)-r2(1,:))*k;%初始时刻的受力

f2(1,:)=-f1(1,:);%牛顿第三定律

h=0.01;%模拟步长,步长过长会出现机械能不守恒的情况

kinetic(1,1)=v1(1,1)^2+v1(1,2)^2+v1(1,3)^2;%初始动能,两原子具有相同的动能

potential(1,1)=4*(d^(-12)-d^(-6));%初始势能

total(1,1)=kinetic(1,1)+potential(1,1);%总能

for i=1:n-1

r1(i+1,:)=r1(i,:)+v1(i,:)*h+0.5*f1(i,:)*h^2;

r2(i+1,:)=-r1(i+1,:);

d=sqrt((r1(i+1,1)-r2(i+1,1))^2+(r1(i+1,2)-r2(i+1,2))^2+(r1(i+1,3)-r2(i+1,3))^2);

k=48*(d^(-14)-0.5*(d^(-8)));

f1(i+1,:)=(r1(i+1,:)-r2(i+1,:))*k;

f2(i+1,:)=-f1(i+1,:);

v1(i+1,:)=v1(i,:)+0.5*h*(f1(i+1,:)+f1(i,:));

v2(i+1,:)=-v1(i+1,:);

kinetic(i+1,1)=(v1(i+1,1)^2+v1(i+1,2)^2+v1(i+1,3)^2);%两原子的动能相同

potential(i+1,1)=4*(d^(-12)-d^(-6));

total(i+1,1)=kinetic(i+1)+potential(i+1);

更多推荐

matlab 分子动力学,两体的分子动力学模型-MATLAB源程序

本文发布于:2023-04-24 14:59:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/8a4f31b62ccbdcafea488474269b7753.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:动力学   分子   源程序   模型   matlab

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 100877文章数
  • 26071阅读数
  • 0评论数