Dear all,
Do anyone have experience in simulating temperature-induce phase transformation? I was trying to reproduce a work on simulating the temperature-induced phase transformation of NiTi by Zhong, Yuan, et al. (2011), “Atomistic study of nanotwins in NiTi shape memory alloys.” Journal of Applied Physics 110(3): 033532.
As the author did in that paper, I set the starting phase of NiTi as B19’ monoclinic phase at 100K, which is stable at low temp. Then I heated up the system to 450K in 200,000 steps with timestep 0.5fs in NPT ensemble. I did obtained the B2 cubic phase of NiTi at 450K (stable at high temp), which was the same with the result of Zhong’s paper.
However, when I cooled down the system from 450K to 100K in 200,000 steps with timestep 0.5fs, the resulting phase was not B19’ monoclinic anymore, but became triclinic. And I also compared the total energy of the B19’ monoclinic and triclinic phases, both two have almost the same energy -5813.1411 eV. This result is very strange because a triclinic phase of NiTi is not observed experimentally or predicted theoretically.
I guess there maybe something set improperly when I cooled down the system, but not sure. The key part of lammps code is as follows. Hope someone give me some advice. Thank you in advance.
Best regards,
WL
---------------Equilibriation----------
reset_timestep 0
dump 1 all custom 100 dump.min id type x y z
fix 3 all box/relax tri 0.0
min_style cg
minimize 1e-12 1e-12 10000 10000
undump 1
fix 1 all npt temp 100.0 100.0 0.05 tri 0.0 0.0 0.5 drag 1
fix 2 all ave/atom 1 20 2000 x y z
dump 1 all custom 2000 dump.equil id type f_2[1] f_2[2] f_2[3]
run 200000
unfix 1
unfix 2
unfix 3
undump 1
-----------------ThermalLoading-----------------------
reset_timestep 0
fix 2 all ave/atom 1 20 1000 x y z
dump 2 all custom 1000 dump.def1 id type f_2[1] f_2[2] f_2[3]
variable x1 equal “100+350*step/200000”
variable y1 equal “abs(xy)+abs(xz)+abs(yz)”
fix 1 all npt temp 100.0 450.0 0.05 tri 0.0 0.0 0.5 drag 1
fix def_print1 all print 1000 “{x1} {y1}” file NiTi.def1 screen no
run 200000
unfix 1
unfix 2
undump 2
unfix def_print1
reset_timestep 0
fix 2 all ave/atom 1 20 1000 x y z
dump 2 all custom 1000 dump.def2 id type f_2[1] f_2[2] f_2[3]
variable x2 equal “450-350*step/200000”
variable y2 equal “abs(xy)+abs(xz)+abs(yz)”
fix 1 all npt temp 450.0 100.0 0.05 tri 0.0 0.0 0.5 drag 1
fix def_print2 all print 1000 “{x2} {y2}” file NiTi.def2 screen no
run 200000
unfix 1
unfix 2
undump 2
unfix def_print2
reset_timestep 0
fix 2 all ave/atom 1 20 1000 x y z
dump 2 all custom 1000 dump.def3 id type f_2[1] f_2[2] f_2[3]
variable x3 equal “100+350*step/200000”
variable y3 equal “abs(xy)+abs(xz)+abs(yz)”
fix 1 all npt temp 100.0 450.0 0.05 tri 0.0 0.0 0.5 drag 1
fix def_print3 all print 1000 “{x3} {y3}” file NiTi.def3 screen no
run 200000