Source code for ase2sprkkr.potentials.definitions.sections.reference_system

from ...potential_definitions import PotSectionDefinition, \
                                   PotValueDefinition
from ...potential_sections import UniqueListSection

from ....common.grammar_types import Table
from ....sprkkr.reference_systems import ReferenceSystem

[docs] class ReferenceSystemSection(UniqueListSection): _value_name = 'reference_systems' _value_class = ReferenceSystem
[docs] def _set_from_atoms(self, atoms, io_data): super()._set_from_atoms(atoms, io_data) self['NREF'].set(io_data.reference_systems.len_of_unique())
[docs] class ReferenceSystemSectionDefinition(PotSectionDefinition):
[docs] def __init__(self, name='REFERENCE SYSTEM', alternative_names='REFERENCE SYSTEM FOR TIGHT BINDING MODE', write_alternative_name=True, **kwargs): V = PotValueDefinition members = [ V('NREF', int), V('DATA', Table({'VREF': float, 'RMTREF' :float}, numbering='IREF')), ] super().__init__(name, members, has_hidden_members=True, alternative_names = alternative_names)
[docs] def validate(self, values, why='set'): return values['NREF'] == len(values['DATA']) or \ 'Number of reference systems differs from NREF'
result_class = ReferenceSystemSection
section = ReferenceSystemSectionDefinition