Yes,thank you,Axel.
I know that method. But I don’t know whether it can reflect real physical problem in my oxidation process?
Could I use “fix 1 substrate momentum 1 linear 0 0 1” to put constraints on the substrate without oxygen atmospher in order to remove the translational and the angular momentums of the substrate? Is that OK?
Also, I use langevin thermostat to relax the metal substrate first to 900K. Then I add two oxygen atoms with velocities(vz) according to mv*v/2=3/2Kb T. And thermostat the substrate only. But the substrate temperature could not be kept as 900K. Actually, it drops down to 700K and increase then. How can I do right temperature control in the dynamic process? Thank you so much in advance.
my input file:
ReaxFF MD simulation for Fe(100)-O
1. Initialization
units real
dimension 3
boundary p p f
atom_style full
2. Atom definition
lattice bcc 2.8700
region box block 0 11 0 11 0 27.875
create_box 2 box
create_atoms 1 box
region up block INF INF INF INF 19.2 INF
region down block INF INF INF INF INF 8.0
region substrate block INF INF INF INF 8.0 19.2
group up region up
group down region down
delete_atoms group up
delete_atoms group down
group substrate region substrate
3. Settings
pair_style reax/c NULL checkqeq yes
pair_coeff * * ffield.reax.Fe_O_C_H Fe O
mass 1 55.8450
mass 2 15.9994
group Fe type 1
group oxygen type 2
neighbor 2 bin
neigh_modify every 1 delay 0 check yes
#=================relaxation==================
variable T equal 900
fix 1 substrate nve
fix 2 substrate langevin $T $T 100 587283
fix charge all qeq/reax 1 0.0 10.0 1e-6 reax/c
timestep 1
compute mtemp substrate temp
compute_modify mtemp dynamic yes
thermo 1
run 10000
reset_timestep 0
#=================end relaxation=================
#============dynamic=================
region upadd block 0 11 0 11 25 26
fix ref oxygen wall/reflect zhi EDGE
fix 4 oxygen nve
fix 77 substrate momentum 1 linear 0 0 1
dump 1 all custom 100 dump_dynamic.atom id type xs ys zs vx vy vz q
dump 2 all image 100 image.*.jpg type type axes yes 0.8 0.02 view 80 -30
label loopt
variable t loop 500000
compute p1 oxygen property/atom type q
compute h1 oxygen reduce ave c_p1[1]
compute h11 oxygen reduce min c_p1[2]
compute p2 oxygen coord/atom 1.4 2
compute h2 oxygen reduce sum c_p2
thermo_style custom step temp pe c_h1 c_h11 c_h2
run 0
variable nq atom “(c_p1[2] >(-0.65))&&(c_p1[1] == 2)”
group gas variable nq
variable m equal count(gas)
thermo_style custom step atoms temp etotal press v_Nsubtot v_Oxysub v_Oxytot v_m
if “($m==0.0)” then “fix 33 oxygen deposit 2 2 1 12345 region upadd near 1 vz -0.0077 -0.0077”
run 2
uncompute p1
uncompute h1
uncompute h11
uncompute p2
uncompute h2
group gas delete
next t
jump in.process-lal2 loopt
write_restart restart.oxidation
Axel Kohlmeyer 写: