【分子相互作用】基于MATLAB的分子相互作用的表征模型仿真

1.软件版本

matlab2013b

2.本算法理论知识

        分子在永不停息地作无规则运动。扩散现象是分子作无规则运动的例证。所谓扩散是指两种不同的物质相互接触时,彼此进入对方的现象。分子之间既有引力,又有斥力。固体能保持一定的形状和体积且难以拉断,说明分子之间存在引力,而固体和液体分子间保持一定的间隙且很难被压缩,说明分子间又存在斥力。物质内分子间引力和斥力是同时存在的,引力和斥力都随分子间距离的增大而减小,斥力减小得更快。当分子间距为某一定值r0时,引力等于斥力,此时分子处于平衡位置;当分子间距大于r0时,引力起主要作用;当分子间距小于r0时,斥力起主要作用。若分子间距大于分子直径的10倍时,分子间作用力变得十分微弱,可以认为此时分子间作用力为零。

       一般认为,分子间作用力比化学键力(离子键、共价键、金属键)弱得多,其作用能在几到几十kJ•mol-1范围内,比化学键能(通常在200-600kJ•mol-1范围内)小一、二个数量级。作用范围远大于化学键,称为长程力。不需要电子云重叠,一般无饱和性和方向性。

       分子间作用能本质上是静电作用,包括两部分,一是吸引作用能,如永久偶极矩之间的作用能、偶极矩与诱导偶极矩的作用能、非极性分子之间的作用能;另一是排斥作用能,它在分子间距离很小时表现出来。实际的分子间作用力,应该是吸引作用和排斥作用之和。而通常所说的分子间相互作用及其特点,主要指分子间引力作用,常称作Vande Waals力。

Vande Waals力的主要形式有:

·取向力:存在于极性分子偶极子-偶极子间的相互作用力;

·诱导力:包括偶极子-感应偶极子间的相互作用力;

·弥散力:非极性分子因为电子与原子核的运动,互相感应产生随时间涨落的瞬时偶极矩间的相互作用力,这种引力普遍存在于所有分子中。

        除上述物理作用力外,在分子间作用力和化学键作用之间还存在一些较弱的化学键作用,这种作用有饱和性和方向性,但作用能比化学键能小得多,键长较长,现在归为分子间的弱键相互作用。

3.部分源码

function fenzi(x1,x2,y1,y2,z1,z2);



Mx=71;
My=61;
Mz=51;



x=linspace(x1,x2,Mx);%输出的点数
y=linspace(y1,y2,My);%输出的点数
z=linspace(z1,z2,Mz);%输出的点数


load pot.out;%加载数据
data=pot(1:220881);
va=reshape(data,My,Mx,Mz);%分子成形
load FF.out;%加载数据
data1=FF(1:220881);
w=reshape(data1,My,Mx,Mz);%分子成形
p = patch(isosurface(x, y, z, va,-0.36073643,w));%多面体成形函数
isonormals(x,y,z,va, p)   %形成的曲面的点集
set(p,'FaceColor','interp','EdgeColor','none');%设置
           
hidden on
daspect([1 1 1])          %设置或查询轴的纵横比
view(3)
lighting phong

hsurf=isosurface(x, y, z, va,-0.3566);%其中xyz是整个三维空间的网格点,可以用meshgrid生成。
vertices=hsurf.vertices(:,:);
save vertice.txt vertices -ascii;
faces=hsurf.faces(:,:);
save face.txt faces -ascii    ;      

hold on;
%========定位==============================================
%(x1,y1,z1)UP
hndl=plot3(x1,y1,z1);%立方体的顶点1
set(hndl,'markersize',30,'marker','.','color','k');%设置点的属性
A=text(x1,y1,z1,'A');%设置显示文本
set(A,'fontsize',18,'color','k');%设置文本的属性
hold on

%(x1,y2,z1)UP
hndl=plot3(x1,y2,z1);%立方体的顶点2
set(hndl,'markersize',30,'marker','.','color','k');
B=text(x1,y2,z1,'B');
set(B,'fontsize',18,'color','k');
hold on

%(x2,y1,z1)UP
hndl=plot3(x2,y1,z1);%立方体的顶点3
set(hndl,'markersize',30,'marker','.','color','k');
C=text(x2,y1,z1,'C');
set(C,'fontsize',18,'color','k');
hold on

%(x2,y2,z1)UP
hndl=plot3(x2,y2,z1);%立方体的顶点4
set(hndl,'markersize',30,'marker','.','color','k');
D=text(x2,y2,z1,'D');
set(D,'fontsize',18,'color','k');
hold on



%(x1,y1,z1)DOWN
hndl=plot3(x1,y1,z2);%立方体的顶点5
set(hndl,'markersize',30,'marker','.','color','k');
E=text(x1,y1,z2,'E');
set(E,'fontsize',18,'color','k');
hold on

%(x1,y2,z2)DOWN
hndl=plot3(x1,y2,z2);%立方体的顶点6
set(hndl,'markersize',30,'marker','.','color','k');
F=text(x1,y2,z2,'F');
set(F,'fontsize',18,'color','k');
hold on

%(x2,y1,z2)DOWN
hndl=plot3(x2,y1,z2);%立方体的顶点7
set(hndl,'markersize',30,'marker','.','color','k');
G=text(x2,y1,z2,'G');
set(G,'fontsize',18,'color','k');
hold on

%(x2,y2,z2)DOWN
hndl=plot3(x2,y2,z2);%立方体的顶点8
set(hndl,'markersize',30,'marker','.','color','k');
H=text(x2,y2,z2,'H');
set(H,'fontsize',18,'color','k');
hold on

%========================================================

lx2=[x1 x2];ly2=[y1 y1];lz2=[z1 z1];%连接两个点的连线1
BL2=plot3(lx2,ly2,lz2,'b');         %用plot3显示
set(BL2,'linewidth',1);             %直线的显示方式
hold on

lx4=[x1 x2];ly4=[y2 y2];lz4=[z1 z1];%连接两个点的连线2
BL4=plot3(lx4,ly4,lz4,'b');
set(BL4,'linewidth',1);
hold on

lx8=[x1 x2];ly8=[y2 y2];lz8=[z2 z2];%连接两个点的连线3
BL8=plot3(lx8,ly8,lz8,'b');
set(BL8,'linewidth',1);
hold on

lx11=[x1 x2];ly11=[y1 y1];lz11=[z2 z2];%连接两个点的连线4
BL11=plot3(lx11,ly11,lz11,'b');
set(BL11,'linewidth',1);
hold on
%====================================================

lx1=[x1 x1];ly1=[y1 y2];lz1=[z1 z1];%连接两个点的连线5
BL1=plot3(lx1,ly1,lz1,'b');
set(BL1,'linewidth',1);
hold on


lx7=[x2 x2];ly7=[y1 y2];lz7=[z1 z1];%连接两个点的连线6
BL7=plot3(lx7,ly7,lz7,'b');
set(BL7,'linewidth',1);
hold on

lx9=[x2 x2];ly9=[y1 y2];lz9=[z2 z2];%连接两个点的连线7
BL9=plot3(lx9,ly9,lz9,'b');
set(BL9,'linewidth',1);
hold on

lx12=[x1 x1];ly12=[y1 y2];lz12=[z2 z2];%连接两个点的连线8
BL12=plot3(lx12,ly12,lz12,'b');
set(BL12,'linewidth',1);
hold on
%====================================================

lx3=[x1 x1];ly3=[y1 y1];lz3=[z1 z2];%连接两个点的连线9
BL3=plot3(lx3,ly3,lz3,'b');
set(BL3,'linewidth',1);
hold on

lx5=[x1 x1];ly5=[y2 y2];lz5=[z1 z2];%连接两个点的连线10
BL5=plot3(lx5,ly5,lz5,'b');
set(BL5,'linewidth',1);
hold on

lx6=[x2 x2];ly6=[y2 y2];lz6=[z1 z2];%连接两个点的连线11
BL6=plot3(lx6,ly6,lz6,'b');
set(BL6,'linewidth',1);
hold on

lx10=[x2 x2];ly10=[y1 y1];lz10=[z1 z2];%连接两个点的连线12
BL10=plot3(lx10,ly10,lz10,'b');
set(BL10,'linewidth',1);
hold on

axis([-100,100,-100,100,-100,100]);%显示坐标比值。。。。。。。



       
             

4.仿真结论

 

 

 A09-03

猜你喜欢

转载自blog.csdn.net/ccsss22/article/details/125124577