Skip to content

Commit b723270

Browse files
committed
Straightforward structure input is compatible with basis_params.
1 parent 110c73e commit b723270

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

Crystal.py

+12-7
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from pymatgen.symmetry.analyzer import SpacegroupAnalyzer
88
from pymatgen.io.xyz import XYZ
99
from pymatgen.core.periodic_table import Element
10+
from crystal2qmc import periodic_table # TODO should this be in crystal2qmc?
1011
from xml.etree.ElementTree import ElementTree
1112
import numpy as np
1213
import os
@@ -255,15 +256,19 @@ def is_consistent(self,other):
255256
def geom(self):
256257
"""Generate the geometry section for CRYSTAL"""
257258
if self.struct_input is not None:
259+
# TODO make into function like geom3d?
258260
geomlines=[
259261
'CRYSTAL',
260262
'0 0 0',
261263
str(self.struct_input['symmetry']),
262264
' '.join(map(str,self.struct_input['parameters'])),
263265
str(len(self.struct_input['coords']))
264266
]
267+
self._elements=set()
265268
for coord in self.struct_input['coords']:
266-
geomlines+=[' '.join(coord)]
269+
geomlines+=[' '.join(map(str,coord))]
270+
self._elements.add(periodic_table[coord[0]-200-1].capitalize()) # Assumes ECP!
271+
self._elements = sorted(list(self._elements)) # Standardize ordering.
267272
if self.supercell is not None:
268273
geomlines+=['SUPERCELL']
269274
for row in self.supercell:
@@ -287,6 +292,11 @@ def geom(self):
287292
def geom3d(self):
288293
lat=self.struct['lattice']
289294
sites=self.struct['sites']
295+
self._elements=set()
296+
for s in self.struct['sites']:
297+
nm=s['species'][0]['element']
298+
self._elements.add(nm)
299+
self._elements = sorted(list(self._elements)) # Standardize ordering.
290300

291301
if self.symmetry:
292302
geomlines=[
@@ -373,13 +383,8 @@ def space_group_format(self):
373383

374384
def basis_section(self):
375385
if self.basislines is None:
376-
elements=set()
377-
for s in self.struct['sites']:
378-
nm=s['species'][0]['element']
379-
elements.add(nm)
380386
basislines=[]
381-
elements = sorted(list(elements)) # Standardize ordering.
382-
for e in elements:
387+
for e in self._elements:
383388
basislines+=self.generate_basis(e)
384389
else:
385390
basislines=self.basislines

0 commit comments

Comments
 (0)