-
Notifications
You must be signed in to change notification settings - Fork 36
Description
I'm trying Ex. 6: Including displacement directions in the enumeration of a
concentration restricted cell. in EXAMPLES.
../../src/enum.x arrow_enum_struct_enum.in works and generates the expected number of unique configurations. However, there appears to be a bug when I try to use makeStr.py.
command: makeStr.py all -displace 0.3
error:
Traceback (most recent call last):
File "/mnt/c/Users/nigel/OneDrive/Desktop/enumlib/aux_src/makeStr.py", line 1416, in
run(_parser_options())
File "/mnt/c/Users/nigel/OneDrive/Desktop/enumlib/aux_src/makeStr.py", line 1412, in run
_make_structures(args)
File "/mnt/c/Users/nigel/OneDrive/Desktop/enumlib/aux_src/makeStr.py", line 1179, in _make_structures
_write_POSCAR(system, space_data, structure, args)
File "/mnt/c/Users/nigel/OneDrive/Desktop/enumlib/aux_src/makeStr.py", line 1107, in _write_POSCAR
directions.append(array(arrow_directions[int(arrow)]))
~~~~~~~~~~~~~~~~^^^^^^^^^^^^
IndexError: list index out of range
The source of this error is the following. In struct_enum.out, the arrows column numbers go from 0 to 6 (7 elements). In makeStr.py line 1068 in def _write_POSCAR, arrow_directions only has 6 elements. Thus, an arrow number of 6 will trigger the error above.
Also, in the current state, an arrow number of 0 will trigger a displacement of [1, 0 0] times the lattice constant. Shouldn't 0 mean no displacement be applied?
To fix this issue, I think the following change should be made in makeStr.py:
arrow_directions = [
[0, 0, 0],
[1, 0, 0],
[-1, 0, 0],
[0, 1, 0],
[0, -1, 0],
[0, 0, 1],
[0, 0, -1],
]
Please let me know your thoughts.
Nigel