Consider the following atoms object. atoms_al = ase.build.fcc111('Al', size=(1,2,2), vacuum=16.0, orthogonal=True) To set the periodic boundary conditions along the x-direction I use: atoms_al.pbc=np.array([1,0,0],dtype=bool) I am trying to understand what exactly changes, mathematically, in the atoms_al object once the periodic boundary conditions are applied? Will some attributes of the atoms_al object change once the pbc are applied? If so, what can they be for example?

I have looked up the source code to find what atoms.pbc does to the atoms object but I did not have any luck. If you could please point me to where I can see the implementation, that would be very helpful.


1 Answer 1


The PBC attribute in ASE is used for:

  • finding nearest neighbours
  • input for calculators that may use that information (dftd3, dmol, etc.)
  • creation of surfaces
  • finding the Bravais lattice
  • certain constraints
  • certain optimization strategies

Nothing is per se changed in the object. But much of the functionality of ASE depends on that attribute.

If you are interested then you could grep for the pbc uses grep '\.pbc' **/*.py which will list where it is used.

  • 1
    $\begingroup$ +1 for a very quick, yet thorough answer! That's the way to do it! Just in case you didn't know, we have an ASE chat room too :) $\endgroup$ Jun 28, 2021 at 18:22
  • $\begingroup$ Thanks! Especially for the grep command. $\endgroup$
    – prananna
    Jun 28, 2021 at 22:28

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .