-
-
Notifications
You must be signed in to change notification settings - Fork 60
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
nsc should not belong to Lattice #553
Comments
I agree, it would be nice to put the supercells into the placeholder that really uses them. In this case it would be the Considerations for alternate names,
|
I think of it as just a bigger cell, so I don't have a problem with removing the plural 😅 |
What about |
Kind of like |
So should this be a class in it-self, probably that would be the best thing. Since |
Could |
As @pfebrer pointed out this would still be a bit ambiguous. The supercell is intrinsically connected to some ranged property (orbital in this case) + the lattice vectors. So it is not only due to the Lattice, it is some combination of the Atom + coordinates + Lattice that results in the supercell. At least conceptually. Users may then overwrite the intrinsic supercells. The idea that |
The part I don't understand about SIESTA's way of handling supercells is why aren't atoms moved into the unit cell for computing neighbors. Because then computing the number of supercells needed would be much simpler, no? E.g. you would be able to tell if you need |
In principle a structure can be periodic even if orbitals don't overlap, no? So |
I guess |
That's not entirely true. It might be for simple cells, but for some cells with angles very large/small the calculation of supercells is not merely a case of orbital ranges. Secondly, in some cases you can shrink the required supercell depending on atomic positions since their overlaps do depend on positions.
True, ok, but what about
Agreed, but manually overriding |
You can see in the Siesta code that the simple estimation of |
Comment for remembering: the object holding |
Would it make sense to make nsc part of
|
And who will store the supercell offsets? |
Agreed, it just becomes clunky to have a class which collects the geometry and the lattice, but then it gets stored in the geometry. Wouldn't it be better if the geometry contained the integer offsets, and when requesting real offsets, they are calculated (very simple MM). |
I also start to wonder about this. For instance this behaviour seems a bit odd to me: >>> g = sisl.geom.graphene()
>>> g.xyz[0] += 10 * g.cell[0] # translate atom by multiple of lattice vector
>>> for ia in g:
... print(ia, g.close(ia, R=1.5)) # no neighbours found because nsc = [3, 3, 1]
...
0 [0]
1 [1]
>>> g.optimize_nsc(R=20)
array([35, 19, 3], dtype=int32)
>>> for ia in g:
... print(ia, g.close(ia, R=1.5))
...
0 [ 0 1947 2013 2015]
1 [ 1 1976 1978 2044] In the first Thus, it seems that having atoms outside the primitive cell is prone to complications or errors. |
Thats a current known bug in sisl... :( |
So
lattice
would holdcell
andpbc
, andaux_cell
would holdnsc
.Originally posted by @pfebrer in #550 (comment)
The text was updated successfully, but these errors were encountered: