Coverage for gpaw/atom/gpaw_basis.py: 100%
27 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-14 00:18 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-14 00:18 +0000
1from __future__ import annotations
3from argparse import ArgumentParser
4from collections.abc import Sequence
6from .basis import BasisMaker
7from .basisfromfile import (BasisGetter, add_common_args,
8 get_basis_getter, read_setup_and_generate_basis)
11def get_parser() -> ArgumentParser:
12 parser = ArgumentParser(description='Generate LCAO basis sets for '
13 'the specified elements.')
14 add = parser.add_argument
15 add('symbols', metavar='<symbol>', nargs='+', help='chemical symbols')
16 add('--version', action='version', version='%(prog)s 0.1')
17 add('-n', '--name', default=None, metavar='<name>',
18 help='name of generated basis files')
19 add('-f', '--xcfunctional', default='PBE', metavar='<XC>',
20 help='exchange-Correlation functional [default: %(default)s]')
21 add_common_args(add)
22 add('--save-setup', action='store_true',
23 help='save setup to file')
24 return parser
27def main(args: Sequence[str] | None = None) -> None:
28 def generate_basis_set(symbol_or_path: str, getter: BasisGetter, /,
29 **kwargs) -> None:
30 if '.' in symbol_or_path: # symbol is actually a path
31 _, basis = read_setup_and_generate_basis(
32 symbol_or_path, getter, **kwargs)
33 else:
34 bm = BasisMaker.from_symbol(symbol_or_path, **kwargs)
35 basis = getter(bm)
36 basis.write_xml()
38 parser = get_parser()
39 arguments = parser.parse_args(args)
40 get_basis = get_basis_getter(arguments)
42 for symbol in arguments.symbols:
43 generate_basis_set(symbol, get_basis,
44 name=arguments.name,
45 xc=arguments.xcfunctional,
46 save_setup=arguments.save_setup)