Skip to content

Bug with makeStr.py for arrows #126

Description

@nhew1994

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions