Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
nomad-lab
parser-elk
Commits
d05af29c
Commit
d05af29c
authored
Nov 16, 2016
by
Pardini, Lorenzo (lopa)
Browse files
fixed bug with atom positions
parent
99a190a6
Pipeline
#8443
passed with stage
in 5 minutes and 56 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
parser/parser-elk/parser_elk.py
View file @
d05af29c
...
@@ -22,7 +22,10 @@ class ElkContext(object):
...
@@ -22,7 +22,10 @@ class ElkContext(object):
self
.
parser
=
parser
self
.
parser
=
parser
# allows to reset values if the same superContext is used to parse different files
# allows to reset values if the same superContext is used to parse different files
self
.
initialize_values
()
self
.
initialize_values
()
self
.
enTot
=
[]
self
.
enTot
=
[]
self
.
atom_pos
=
[]
self
.
atom_labels
=
[]
def
onClose_x_elk_section_lattice_vectors
(
self
,
backend
,
gIndex
,
section
):
def
onClose_x_elk_section_lattice_vectors
(
self
,
backend
,
gIndex
,
section
):
latticeX
=
section
[
"x_elk_geometry_lattice_vector_x"
]
latticeX
=
section
[
"x_elk_geometry_lattice_vector_x"
]
...
@@ -118,16 +121,33 @@ class ElkContext(object):
...
@@ -118,16 +121,33 @@ class ElkContext(object):
backend
.
addArrayValues
(
'configuration_periodic_dimensions'
,
np
.
asarray
([
True
,
True
,
True
]))
backend
.
addArrayValues
(
'configuration_periodic_dimensions'
,
np
.
asarray
([
True
,
True
,
True
]))
self
.
secSystemDescriptionIndex
=
gIndex
self
.
secSystemDescriptionIndex
=
gIndex
atom_pos
=
[]
# atom_pos = []
for
i
in
[
'x'
,
'y'
,
'z'
]:
# for i in ['x', 'y', 'z']:
api
=
section
[
'x_elk_geometry_atom_positions_'
+
i
]
# api = section['x_elk_geometry_atom_positions_' + i]
if
api
is
not
None
:
# if api is not None:
atom_pos
.
append
(
api
)
# atom_pos.append(api)
if
atom_pos
:
# if atom_pos:
backend
.
addArrayValues
(
'atom_positions'
,
np
.
transpose
(
np
.
asarray
(
atom_pos
)))
# backend.addArrayValues('atom_positions', np.transpose(np.asarray(atom_pos)))
atom_labels
=
section
[
'x_elk_geometry_atom_labels'
]
# atom_labels = section['x_elk_geometry_atom_labels']
if
atom_labels
is
not
None
:
# if atom_labels is not None:
backend
.
addArrayValues
(
'atom_labels'
,
np
.
asarray
(
atom_labels
))
# backend.addArrayValues('atom_labels', np.asarray(atom_labels))
if
self
.
atom_pos
:
backend
.
addArrayValues
(
'atom_positions'
,
np
.
asarray
(
self
.
atom_pos
))
self
.
atom_pos
=
[]
if
self
.
atom_labels
is
not
None
:
backend
.
addArrayValues
(
'atom_labels'
,
np
.
asarray
(
self
.
atom_labels
))
self
.
atom_labels
=
[]
def
onClose_x_elk_section_atoms_group
(
self
,
backend
,
gIndex
,
section
):
pos
=
[
section
[
'x_elk_geometry_atom_positions_'
+
i
]
for
i
in
[
'x'
,
'y'
,
'z'
]]
pl
=
[
len
(
comp
)
for
comp
in
pos
]
natom
=
pl
[
0
]
if
pl
[
1
]
!=
natom
or
pl
[
2
]
!=
natom
:
raise
Exception
(
"invalid number of atoms in various components %s"
%
pl
)
for
i
in
range
(
natom
):
self
.
atom_pos
.
append
([
pos
[
0
][
i
],
pos
[
1
][
i
],
pos
[
2
][
i
]])
self
.
atom_labels
=
self
.
atom_labels
+
(
section
[
'x_elk_geometry_atom_labels'
]
*
natom
)
def
onClose_section_scf_iteration
(
self
,
backend
,
gIndex
,
section
):
def
onClose_section_scf_iteration
(
self
,
backend
,
gIndex
,
section
):
Etot
=
section
[
"energy_total_scf_iteration"
]
Etot
=
section
[
"energy_total_scf_iteration"
]
...
@@ -164,6 +184,7 @@ mainFileDescription = \
...
@@ -164,6 +184,7 @@ mainFileDescription = \
SM
(
r
"\s*Unit cell volume\s*:\s*(?P<x_elk_unit_cell_volume__bohr3>[-0-9.]+)"
),
SM
(
r
"\s*Unit cell volume\s*:\s*(?P<x_elk_unit_cell_volume__bohr3>[-0-9.]+)"
),
SM
(
r
"\s*Brillouin zone volume\s*:\s*(?P<x_elk_brillouin_zone_volume__bohr_3>[-0-9.]+)"
),
SM
(
r
"\s*Brillouin zone volume\s*:\s*(?P<x_elk_brillouin_zone_volume__bohr_3>[-0-9.]+)"
),
SM
(
r
"\s*Species\s*:\s*[0-9]\s*\((?P<x_elk_geometry_atom_labels>[-a-zA-Z0-9]+)\)"
,
repeats
=
True
,
SM
(
r
"\s*Species\s*:\s*[0-9]\s*\((?P<x_elk_geometry_atom_labels>[-a-zA-Z0-9]+)\)"
,
repeats
=
True
,
sections
=
[
"x_elk_section_atoms_group"
],
subMatchers
=
[
subMatchers
=
[
SM
(
r
"\s*muffin-tin radius\s*:\s*(?P<x_elk_muffin_tin_radius__bohr>[-0-9.]+)"
),
SM
(
r
"\s*muffin-tin radius\s*:\s*(?P<x_elk_muffin_tin_radius__bohr>[-0-9.]+)"
),
SM
(
r
"\s*number of radial points in muffin-tin\s*:\s*(?P<x_elk_muffin_tin_points>[-0-9.]+)"
),
SM
(
r
"\s*number of radial points in muffin-tin\s*:\s*(?P<x_elk_muffin_tin_points>[-0-9.]+)"
),
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment