how to correctly simulate the screw dislocation core in bcc (Yi Wang)

Sorry, the original post somehow is blank. I have to reply to show the correct contents, Wish this time it works.

hi everyone,

I’m simulating the bcc screw dislocation core structure using the lammps.

The material is bcc-Fe, ab-initio predicts it has a compact core. Also it was told in papers that the Mendelev type potentials can reproduce that kind of core structure.(potential 2 in Phil. Mag., 83 3977-3994 (2003))

However, with my scripts, I always get a split core, though it can reproduce the core structure by Ackland 97 potential.

Could you kindly tell me where to find some detailed tutorial on this? where I made it wrong?

I attached my scripts. Using a110.in do MS simulation, then postprocessed by core.f90, then using asymptote script s.asy to draw the differential displacement map.

I want to use the lammps to built the dislocation dipole, so somehow the dipole building looks strange in my script, though it should work. And in the asy script, the final task of scale arrow length with 1/3b is not performed.

There is also a related problem: the easy core and hard core 1/2<111> dislocation core, do they have energy difference? Is this depending on potentials?

Thanks in advance!

a110.in (3.58 KB)

core.f90 (2.73 KB)

s.asy (673 Bytes)

You aren’t asking LAMMPS-specific questions, but more modeling
questions. For example, which potential is best to reproduce
dislocation structure is something you’ll have to learn from the
literature. For LAMMPS help, you need to ask a specific
question about a specific command, it is isn’t working as you
expect. Not “I did something complicated, and it didn’t work, why?”

Steve

I just thought maybe it could be part of "How do I model this
phenomenon with MD?" in the guideline...Thanks for that.
Actually I have a question maybe very specific to lammps druing my learning.
I found when I use lattice and create_atoms to put atoms in the box,
the coordinates of atoms is not very the same on different systems.
Like sometimes the atom may lie on one site, say 1.0 1.0 1.0, on
windows, the official precompiled version of lammps will give a result
that exactly on 1.0 1.0 1.0, on the linux, it may give a result of
1.0001 1.0001 1.0001.
And I ran some test scripts, found that if I define some regions like
region 1 block INF INF INF INF 1.0 1.0, region 2 block INF INF INF INF
1.0 2.0, it is possible region 2 do not contain the all the atoms in
region 1 on certain systems.
Kind of like that.
I know it maybe the result of different data type on different
systems. But how to avoid problems may rising from this, like how to
add desired atoms into one group without any loss caused by the error?
I mean currently I have to test several scripts to learn the exact
error range, and then expand the region size somehow according to the
error range. But that seems to be not very good. Is there better or
common accepted methods?
Thanks.

I just thought maybe it could be part of "How do I model this
phenomenon with MD?" in the guideline...Thanks for that.

those are two different things.

Actually I have a question maybe very specific to lammps druing my learning.
I found when I use lattice and create_atoms to put atoms in the box,
the coordinates of atoms is not very the same on different systems.
Like sometimes the atom may lie on one site, say 1.0 1.0 1.0, on
windows, the official precompiled version of lammps will give a result
that exactly on 1.0 1.0 1.0, on the linux, it may give a result of
1.0001 1.0001 1.0001.
And I ran some test scripts, found that if I define some regions like
region 1 block INF INF INF INF 1.0 1.0, region 2 block INF INF INF INF
1.0 2.0, it is possible region 2 do not contain the all the atoms in
region 1 on certain systems.
Kind of like that.
I know it maybe the result of different data type on different
systems. But how to avoid problems may rising from this, like how to
add desired atoms into one group without any loss caused by the error?

the solution is simple (and i am personally puzzled over why *so* many
people don't realize it): do not define your regions and box
boundaries to be located exactly on lattice points. just shift it a
bit and that will easily remove any ambiguity that you incur
otherwise.

I mean currently I have to test several scripts to learn the exact
error range, and then expand the region size somehow according to the
error range. But that seems to be not very good. Is there better or

why should this not be "good"?

The error range is different on different systems. I don't know how to
do the shifting on non-perfect lattice in current time. Of cause all
because I'm newbie, I will keep learning that.
Thanks.

You are not paying attention. Just shift it so that it is completely unambiguous and then a bit more. Why is this so difficult to understand? In a periodic system translations don't matter.

I just thought maybe it could be part of “How do I model this
phenomenon with MD?” in the guideline…Thanks for that.

you can certainly ask those Qs - but whether you will get
good answers from the list depends on if someone has expertise
in that particular topic and takes the time to answer. Often I think
those Qs are better answered by a literature search. A better
way to ask those kinds of Qs is: “I’ve read a paper that says
you can model phenonenon ABC or setup model XYZ with MD -
how can I do that in LAMMPS?”

Steve