Inaccurate uniaxial tensile test simulation results for AlN, GaN, and TiN

Good day to everyone!

I’ve run multiple simulations where I stretch cubic models of AlN, GaN, and TiN along their x-axis at a constant strain rate. The initial runs yielded Young’s modulus values (taken as the slope of the generated stress-strain curves) that were way beyond experimental and theoretical values recorded in literature. As advised by my mentors, I ran further simulations that varied the size of the initial models to see if larger sizes would bring my results closer to known values. While it did, the results were still quite high (see screenshot attached).

Given all that, I wonder if there are ways to improve my results aside from increasing the model size (something that my laptop is poorly equipped to handle.) I’m considering varying the strain rate and initial system temperature after equilibration.

My input scripts generally follow this flow (following this LAMMPS tutorial: Uniaxial Tension - EVOCD):

------------------------ INITIALIZATION ----------------------------

units metal
atom_style atomic
dimension 3
boundary p p p
atom_modify map array

------------------------- SETTINGS ---------------------------------

variable a equal 3.00770274
variable b equal 3.00770274
variable c equal 3.00770274
#lattice hcp ${latconst}
region whole block 0 $a 0 $b 0 $c units lattice
create_box 2 whole

#create Ti atoms
lattice custom 1.0 &
a1 $a 0.0 0.0 &
a2 0.0 $b 0.0 &
a3 0.0 0.0 $c &
basis 0.50000000 0.50000000 0.50000000
create_atoms 1 region whole

#create N atoms
lattice custom 1.0 &
a1 $a 0.0 0.0 &
a2 0.0 $b 0.0 &
a3 0.0 0.0 $c &
basis 0.00000000 0.00000000 0.00000000
create_atoms 2 region whole

replicate 8 8 8

------------------------- POTENTIAL ---------------------------------

pair_style meam/c
pair_coeff * * libraryTiN.meam Ti N TiN.meam Ti N
neighbor 2.0 bin
neigh_modify delay 10 check yes

#-------------------------- COMPUTATIONS -------------------------------
compute csym all centro/atom fcc
compute peratom all pe/atom

------------------------- EQUILIBRATION ------------------------------------

reset_timestep 0
timestep 0.001
velocity all create 300 12345 mom yes rot no
fix 1 all npt temp 300 300 1 iso 0 0 1 drag 1

Set thermo output

thermo 10
thermo_style custom step lx ly lz press pxx pyy pzz pe temp

dump 1 all custom 10 equilibration_TiN.lammpstrj id type x y z ix iy iz c_peratom c_csym
write_data data.relaxationTiN

run 50000
unfix 1
undump 1

Store final cell length for strain calculations

variable tmp equal “lx”
variable L0 equal {tmp} print "Initial Length, L0: {L0}"

------------------------- DEFORMATION ------------------------------------

reset_timestep 0
write_restart restart.TiN

fix 1 all npt temp 300 300 1 y 0 0 1 z 0 0 1 drag 1
variable srate equal 1.0e10
variable srate1 equal “v_srate / 1.0e12”
fix 2 all deform 1 x erate ${srate1} units box remap x

variable strain equal “(lx - v_L0)/v_L0”
variable p1 equal “v_strain”
variable p2 equal “-pxx/1000”
variable p3 equal “-pyy/1000”
variable p4 equal “-pzz/1000”
fix def1 all print 100 “{p1} {p2} {p3} {p4}” file TiN.deformation.txt screen no

thermo 10
thermo_style custom step v_strain temp v_p2 v_p3 v_p4 ke pe press

dump 1 all custom 10 deformation_TiN.lammpstrj id type x y z ix iy iz c_peratom c_csym
write_data data.deformationTiN
dump 2 all custom 10 data.atoms_deformation_TiN id type x y z ix iy iz

run 300000

Thank you very much for your time and patience!

Have you checked (in the original paper describing the parametrization) whether the potential you use can accurately predict Young’s modulus for these materials? If it isn’t mentioned there, there’s a chance the potential is unsuitable for your simulations.

You should also try reproducing some published results for a simpler system, using exactly the same potential and simulation conditions as reported. This way you can make sure your input script is correct.

Small advice: Enclose input scripts in ```, so that formatting rules are blocked.

1 Like

Hi @Gewell_Llorin,
I worked a bit on this kind of simulation, here are a few comments I can make:

Be aware that MD time scales are quite different compared to experiments and that can be seen in short dynamical tensile tests, and that you also have to know with regards to which properties your potential was developed. So comparison with experimental results and theory must be done carefully. Also note that there are updated versions of the tutorial you shared on the github repo linked in the page. There are some comments there that you might find useful. Anyway I did not find any mention of computation of elastic constant there so beware of what you are using.

What do you mean by “Improve”? MD simulations do what you ask them to do. If you want to see if your potential is fitted for what you plan to do, maybe look in the literature how people did this kind of computation with it, and what are the strain rate value and strain the used. There are more than one way to do what you want. Also, consider the value you obtain from a crystalline structure. Is the modulus along a crystalline axe equivalent to the modulus of a crystalline material? I can recommend you some of our previous work discussing both of this topics. Do not hesitate to go further and ask comments on what you find from your mentors. I can tell you that reliable computations of this kind can be done on a good enough laptop, but you might need a bit of patience.

(As @mkanski said, do not hesitate to learn a bit of markdown formating :wink: even outside of your script, it is of great help around the internet today.)

1 Like

Have you checked (in the original paper describing the parametrization) whether the potential you use can accurately predict Young’s modulus for these materials? If it isn’t mentioned there, there’s a chance the potential is unsuitable for your simulations.

I hadn’t fully read them aside from noting down the details of the potentials themselves so thank you for pointing this option out. After reading them, I realized that the papers for TiN and AlN make no mention of validating the computed Young’s modulus. However, the potentials were still well-performing for other properties like the free surface energy and bulk modulus, aside from being widely-used in similar simulations. As the potentials repository offers no alternative potentials, and making my own potential parameters is outside my current skill set, I believe I will have to make do with the ones I’m currently using.

You should also try reproducing some published results for a simpler system, using exactly the same potential and simulation conditions as reported. This way you can make sure your input script is correct.

Two of the papers do not explicitly report their model system specifications so this is a bit difficult to carry out. I will definitely attempt it for my AlN system however!

Small advice: Enclose input scripts in ```, so that formatting rules are blocked.

This is very much noted!

Many apologies for this late reply. Thank you very much for your patience and suggestions!

Hello!

Be aware that MD time scales are quite different compared to experiments and that can be seen in short dynamical tensile tests, and that you also have to know with regards to which properties your potential was developed. So comparison with experimental results and theory must be done carefully.

I now understand this very well. I’m looking into studies that generally compare the results of their experimental and computational methods to understand how they account for the differences.

Also note that there are updated versions of the tutorial you shared on the github repo linked in the page . There are some comments there that you might find useful. Anyway I did not find any mention of computation of elastic constant there so beware of what you are using.

What do you mean by “Improve”? MD simulations do what you ask them to do. If you want to see if your potential is fitted for what you plan to do, maybe look in the literature how people did this kind of computation with it, and what are the strain rate value and strain the used. There are more than one way to do what you want . Also, consider the value you obtain from a crystalline structure. Is the modulus along a crystalline axe equivalent to the modulus of a crystalline material? I can recommend you some of our previous work discussing both of this topics.

I wasn’t aware of the updated tutorial page so thank you very much. I wasn’t aware either of the other methods to derive the elastic modulus of a material so the knowledge is very appreciated. I’ll be attempting to apply the uniaxial tensile test to other axes, and reading through the alternative ensemble methods presented in your paper to see if they’ll give alternative results. I’m also looking into the general mechanisms of how factors like strain rate and system temperatures influence my simulation results.

Thank you again for your weighty insights!