计算化学公社

标题: 用lammps导出循环变量时总报错,请帮我看看怎么修改 [打印本页]

作者
Author:
skyrmion    时间: 2024-3-14 00:12
标题: 用lammps导出循环变量时总报错,请帮我看看怎么修改
我用lammps导出循环创建的变量时,系统总是报错。代码如下:谁会帮我看看哈,多谢啦。具体出问题的地方我用%%%标出来了
我要实现的功能是:我用循环创建了好几个组中原子的平均应力张量,然后我想把应力都导出来,然后放在voito里面后处理,请各位老哥帮我看看fix print 我是不是没用对,怎么修改。

# 3d W crack simulation
clear
#设置环境参数############################################################################################
log test.log
dimension 3
boundary p p p # p周期 f固定 s收缩 m限制收缩 npt适合ppp
units metal
neighbor 3.0 bin # 建立原子临近列表 skin在外层
# neigh_modify delay 0 every 1 check yes # Dangerous builds后更新列表
atom_style atomic # 大类
atom_modify map yes
comm_modify cutoff 100

#设置状态变量############################################################################################
variable P1 equal 0.0 # pressure (Bar)
variable Py equal 1.0e4 # pressure (Bar)
variable T0 equal 10.0 # desired temperature (K)
variable T1 equal 300.0 # desired temperature (K)
variable T2 equal 10.0 # desired temperature (K)
variable convert equal 1.44e-5 # from Bar*A^2 to Kcal/mol/A
variable sigamP equal 1e-3 # 应变速率1/ps
timestep 0.001 # 设置时间步长

#创建模型############################################################################################
variable nx equal 40 #180
variable ny equal 40 #80
variable nz equal 1  #10
lattice bcc 3.17 origin 0 0 0
variable aW equal 3.165
region box block 0 ${nx} 0 ${ny} 0 ${nz} units lattice
create_box 5 box
create_atoms 1 box
mass 1 183.84
mass 2 183.84
mass 3 183.84
mass 4 183.84
mass 5 183.84

#创建裂纹############################################################################################
# 20*1 条状裂纹
variable xl1 equal 0 #${nx}/2-5 #145
variable xl2 equal 20 #${nx}/2+5 #155
variable yl0 equal ${ny}/2
variable yl1 equal ${ny}/2-11
variable yl2 equal ${ny}/2+11

variable zl1 equal 0
variable zl2 equal ${nz}
region crackupper block ${xl1} ${xl2} ${yl0} ${yl2} ${zl1} ${zl2} units lattice
region cracklower block ${xl1} ${xl2} ${yl1} ${yl0} ${zl1} ${zl2} units lattice

group crackupper region crackupper
group cracklower region cracklower
set group crackupper type 4
set group cracklower type 5
neigh_modify exclude type 4 5

#创建内聚区+计算应力和位移############################################################################################
label loop
variable i loop 1 2 #15

variable xlo equal ((${i}-1)*10)+1+${xl2}
variable xhi equal (${i}*10)-1+${xl2}
variable ylo equal (${ny}/2)-4 #56  8
variable yhi equal (${ny}/2)+4 #64  8
variable zlo equal 0
variable zhi equal ${nz}
variable region_name equal ${i}
variable group_name_str string group_${region_name}
variable id_name string def${region_name}
variable file_name string test.group_${region_name}.xyz

region ${region_name} block ${xlo} ${xhi} ${ylo} ${yhi} ${zlo} ${zhi} units lattice
group ${group_name_str} region ${region_name}
set group ${group_name_str} type 2

variable AV_name_str string AV${region_name}
variable V_name_str string V${region_name}
variable AS_name_str string AS${region_name}
variable ASall_name_str string ASall${region_name}

variable stresxx_name_str string stresxx${region_name}
variable stresyy_name_str string stresyy${region_name}
variable streszz_name_str string streszz${region_name}
variable stresxy_name_str string stresxy${region_name}
variable stresxz_name_str string stresxz${region_name}
variable stresyz_name_str string stresyz${region_name}

compute ${AV_name_str} ${group_name_str} voronoi/atom
compute ${V_name_str} ${group_name_str} reduce sum c_${AV_name_str}[1]
compute ${AS_name_str} ${group_name_str} stress/atom NULL
compute ${ASall_name_str} ${group_name_str} reduce sum c_${AS_name_str}[1] c_${AS_name_str}[2] c_${AS_name_str}[3] c_${AS_name_str}[4] c_${AS_name_str}[5] c_${AS_name_str}[6]

variable ${stresxx_name_str} equal -(c_${ASall_name_str}[1]/c_${V_name_str})/10000
variable ${stresyy_name_str} equal -(c_${ASall_name_str}[2]/c_${V_name_str})/10000
variable ${streszz_name_str} equal -(c_${ASall_name_str}[3]/c_${V_name_str})/10000
variable ${stresxy_name_str} equal -(c_${ASall_name_str}[4]/c_${V_name_str})/10000
variable ${stresxz_name_str} equal -(c_${ASall_name_str}[5]/c_${V_name_str})/10000
variable ${stresyz_name_str} equal -(c_${ASall_name_str}[6]/c_${V_name_str})/10000

%%%%%%%%%%%%%%%%%%
fix ${id_name} ${group_name_str} print 100 "${stresxx_name_str} ${stresyy_name_str} ${streszz_name_str} ${stresxy_name_str} ${stresxz_name_str} ${stresyz_name_str}" "${file_name}" screen no
%%%%%%%%%%%%%%%%%%

next i
jump in.test2.lmp loop

#创建三区############################################################################################
variable ll equal 3
region lower block INF INF INF ${ll} INF INF units lattice
group lower region lower
variable lll equal ${ny}-${ll}
region upper block INF INF ${lll} INF INF INF units lattice
group upper region upper
group boundary union lower upper
group mobile subtract all boundary
set group boundary type 3

write_data test.date
#至此模型创建完毕############################################################################################

#势函数设置############################################################################################
pair_style eam/alloy
pair_coeff * * W_zhou.eam.alloy W W W W W

#第一步:能量最小化############################################################################################
min_style cg
minimize 1e-15 1e-15 100000 100000
reset_timestep 0

#第二步:nvt-npt系综下弛豫结构############################################################################################
velocity all create ${T0} 123456 dist gaussian
reset_timestep 0


#第四步:nve系综下拉伸变形############################################################################################
change_box all boundary s s s # 更改边界条件
fix 1 all nve

variable v1 equal ${sigamP}*${ny}*${aW}
variable v2 equal ${sigamP}*${ny}*${aW}*(-1)
velocity upper set 0.0 ${v1} 0.0 units box
velocity lower set 0.0 ${v2} 0.0 units box

#第五步:输出变量############################################################################################
dump 1 all atom 100 dump.test



各位老师您看这个问题,我这样在循环里用fix print 对不对,要是对的话我怎么修改写法。要是不对能不能给我提供一个方法去实现这个功能。







欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3