[ase-users] How to constrain "c" vector in slab optimization
Bernstein, Noam CIV USN NRL (6393) Washington DC (USA)
noam.bernstein at nrl.navy.mil
Fri Mar 19 13:44:40 CET 2021
> On Mar 19, 2021, at 8:01 AM, Reza Behjatmanesh-Ardakani via ase-users <ase-users at listserv.fysik.dtu.dk> wrote:
>
> Hi,
> as you know, we can use "UnitCellFilter" or "ExpCellFilter" to optimize cell vectora and atoms positions simultaneously. I need to optimize a slab with vacuum in "c" direction. I need to constrain "c" vector, but relaxing "a", "b", and all angles: "alpha", "beta", and "gamma". It seems that I should use stress 6-vectors for this. How can one fix some angles and optimize some others by these stress vectors?
If you align the cell with x, y, z, and make sure the c vector is perpendicular to the surface (which is always possible if there's vaccum), you can use the "mask" argument on the stress components. If you use T T F T T T, you'll freeze the zz component, and free all the others.
However, I'd like to point out that it's probably physically incorrect to relax the slab cell vectors at all, at least if you're doing a conventional surface calculation. The _physical_ slab you want is probably much much thicker than your simulated slab. The surface you create induces a stress (surface stress, not to be confused with surface energy), which will cause in-plane relaxation. In the physical thick slab that relaxation is essentially zero, because there's so much more thick bulk-like material. In your thin simulated slab that relaxation will have a much larger effect, and it will be unphysical.
Only if you really are trying to simulate an extremely thin membrane is it physically meaningful to relax the cell.
Noam
More information about the ase-users
mailing list