Software ASE2SPRKKR for electronic structure calculation
Autoři:
- Minár Ján (RAM) [100 %]
- Novák Matyáš
Číslo projektu:
(EVT-Minár) EVT-Minár-Výpočetní a experimentální design pokročilých materiálů s novými funkcionalitami - EF15_003/0000358
Abstrakt:
ASE2SPRKKR is a software package, that allows using SPR-KKR, a program for electronic structure calculation, within ASE (The atomic simulation environment). The atomic simulation environment is a Python package, that allows using various programs for electronic structure calculation through one well-proposed interface. Thus, ASE2SPRKKR opens a new and more user-friendly and configurable way how to use SPR-KKR. Moreover, the interface makes it possible to combine the capabilities of the programs to achieve a synergy effect. Hence, the implementation of the SPR-KKR wrapper for ASE allows to solve problems related to electronic structure calculations, which can not be solved before, e.g. to interconnect the SPR-KKR program with programs for spectroscopy. The main task of the ASE2SPRKKR package is to read and write configuration and problem definition files for SPR-KKR and to extract information from its output. SPR-KKR is a legacy program; its do not use any of today’s standard formats (e.g. YAML or JSON), but it uses their proprietary one. The SPR-KKR configuration and problem-definition files are divided into sections, each section contains configuration values, identified either by its name or by its position within the file, each value has its data type (including even complex ones as e.g. tuples of values or even data tables). Each section has a different content and sometimes even a different format of its content. To solve the task, ASE2SPRKKR defines a set of classes, with which the elements of the configuration files formats (i.e. sections and configuration options) are defined in a declarative way. This approach allows keeping the definition of the formats of the files in a very readable, maintainable, and (since some files have very similar structures) reusable form. This makes it easy e.g. to update the format definition to reflect the changes introduced with new versions of SPR-KKR, same as to define a new section of a problem-definition file if there is a need. Moreover, the methods for both reading and writing the configuration files are automatically derived from the definition: thus one can avoid the pain of keeping them mutually synchronized. And last but not least, this approach also allows defining the object that can hold the particular configuration: such object can validate the configuration, suggest the configuration options to the user, supply him documentation of a given configuration option, etc.