详细内容

CNT拉伸

#变量设置,poro为删除原子的比例

variable    poro equal 0.03 

#随机数种子,不同随机数获得不同的状态

variable    seed equal 15462

#初始温度

variable    T equal 300 

#模拟步长

variable    dt equal 0.0005  

#模型基本设置

units       metal # required by airebo

atom_style  full

boundary    p p p

#势函数类型airebo

pair_style      airebo 2.5 1 1

#读取模型文件

read_data   data.mysystem

#改变box大小,便于z方向拉伸

change_box  all z final -30 70 y final -20 20 x final -20 20

#势函数设置,映射原子类型为CCC

pair_coeff  * * ./CH.airebo C C C

#原子分组

group       CNT type 1

#bound函数返回CNT在z两个方向的尺寸

#下面的尺寸用于确定两端固定部分的边界范围

variable    zmax equal bound(CNT,zmax)-10

variable    zmin equal bound(CNT,zmin)+10

variable    zmax0 equal bound(CNT,zmax)-20

variable    zmin0 equal bound(CNT,zmin)+20

#划分为3个区域

region      top block INF INF INF INF ${zmax} INF

region      bot block INF INF INF INF INF ${zmin}

region      mob block INF INF INF INF ${zmin0} ${zmax0}

#对区域内原子进行分组

group       topgroup region top

group       botgroup region bot

group       mobile region mob

#设置两端固定部分为不同的原子类型,便于显示不同的颜色

set         group topgroup type 2 # control group 1

set         group botgroup type 3 # control group 2

#随机删除mob区域内3%的原子,便于cnt从缺陷处断裂

delete_atoms    porosity mob ${poro} ${seed} 

#nve系综,berendsen方式控温

fix     myber all temp/berendsen ${T} ${T} 0.1

fix     mynve all nve

#输出轨迹文件

dump        mydmp all atom 500 dump.eq.xyz

#模拟步长

timestep    ${dt}

#热力学输出

thermo      500

#弛豫5000步

run     5000 # 

#去掉全局控温

unfix       myber

undump      mydmp

#重新设置轨迹文件输出

dump        mydmp all atom 1000 dump.run.xyz

#固定端z方向受力为0,xy方向受力保持原值

fix         sf1 topgroup setforce NULL NULL 0.0 

fix         sf2 botgroup setforce NULL NULL 0.0 

#上下部分沿z方向速度设为0,cnt在z方向被固定

velocity    topgroup set NULL NULL 0  

velocity    botgroup set NULL NULL 0 

#计算三部分温度,只计算xy两个方向维度

compute Ttop topgroup temp/partial 1 1 0 

compute Tbot botgroup temp/partial 1 1 0 

compute Tmob mobile temp

#对thermo命令进行温度修正

thermo_modify   temp Tmob 

#上下部分单独控温

fix     myber1 topgroup temp/berendsen ${T} ${T} 0.1

fix_modify  myber1 temp Ttop 

fix     myber2 botgroup temp/berendsen ${T} ${T} 0.1

fix_modify  myber2 temp Tbot 

#计算长度

variable    L equal v_zmax-v_zmin 

#没100步输出长度平均值

fix         myat1 all ave/time 10 10 100 v_L file tubeLength.dat

#计算拉力,拉力为两固定端受力之差

variable    longforce equal f_sf1[3]-f_sf2[3]

#对拉力进行平均后输出到文件

fix         myat2 all ave/time 10 10 100 v_longforce file forcetube.dat

# 循环设置两固定的位移,实现拉伸

variable    a loop 100

label       loop

displace_atoms  topgroup move 0 0 0.1

displace_atoms  botgroup move 0 0 -0.1

run     1000

next        a

#input.lammps为本文件的文件名,文件名不同会出错

jump        input.lammps loop


技术支持: CLOUD | 管理登录
seo seo