[ase-users] lammps.py forces rotation matrix [SEC=UNCLASSIFIED]
Paul White
Paul.White at dsto.defence.gov.au
Wed Mar 23 02:00:02 CET 2011
Thanks Bohumir,
I think I understand. I was just using a cubic cell. The transformation
matrix lammps.py gives is a unit matrix when I specify all periodic
boundary conditions which gives me the right answers, but is a diagonal
[1,1,1.33] if I use PBC=[True,True,False].
Hence it scales the forces in the Z direction. This scaling factor in
the matrix increases with the size of the box by including vacuum
spacing.
Paul
-----Original Message-----
From: bohumir <bohumir at gmail.com>
To: Paul White <Paul.White at dsto.defence.gov.au>,
ase-users at listserv.fysik.dtu.dk
Subject: Re: [ase-users] lammps.py forces rotation matrix
[SEC=UNCLASSIFIED]
Date: Mon, 21 Mar 2011 23:10:41 -0500
Hello Paul,
I would check if the magnitudes of LAMMPS and ASE forces are equal.
Jörg's Meyer, author and contributor of "lammps.py" knows all the
intricate details. My understanding is as follows:
ASE allows arbitrary orientation of the simulation cell.
But in LAMMPS, "triclinic box" must have a specific orientation:
http://lammps.sandia.gov/doc/Section_howto.html#4_12
"Note that in LAMMPS the triclinic simulation box edge vectors
A,B,C cannot be arbitrary vectors. As indicated, A must be aligned
with the x axis, B must be in the xy plane, and C is arbitrary.
However, this is not a restriction since it is possible to rotate any
set of 3 crystal basis vectors so that they meet this restriction."
Thus the forces (and any vectors) from LAMMPS calculation will be in
terms of the LAMMPS specific coordinate system, and they need to be
transformed back to ASE coordinate system. That's what the
transformation does. The orientational restriction is specific for
LAMMPS, so it is only in lammps.py. I hope it makes sense. So far I
tried several triclinic boxes and obtained correct ASE coordinates -
with gratitude to Jörg's Meyer and ASE developers.
-Bohumir
On Mon, Mar 21, 2011 at 7:02 PM, Paul White
<Paul.White at dsto.defence.gov.au> wrote:
> Hello,
>
> I was just writing an eam potential in ASE and comparing the results
> from lammps using lammps.py but noticed the forces are different. It
> seems lammps.py applies a rotation matrix to the forces to convert them
> from lammps to ASE. I cannot seem to find any mention in the
> documentation for ASE as to why the forces should be different.
>
> Can someone explain to me what this transformation does and why in
> lammps.py ?
>
> forces_atoms = np.array( [np.dot(np.array(f),rotation_lammps2ase) for f
> in forces] )
>
> Thanks
>
> Paul White
> DSTO
>
>
> IMPORTANT: This email remains the property of the Department of Defence and is subject to the jurisdiction of section 70 of the Crimes Act 1914. If you have received this email in error, you are requested to contact the sender and delete the email.
> _______________________________________________
> ase-users mailing list
> ase-users at listserv.fysik.dtu.dk
> https://listserv.fysik.dtu.dk/mailman/listinfo/ase-users
>
More information about the ase-users
mailing list