Coverage for gpaw/directmin/functional/fdpw/__init__.py: 80%
15 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-09 00:21 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-09 00:21 +0000
1from gpaw.xc import xc_string_to_dict
2from ase.utils import basestring
3from gpaw.directmin.functional.fdpw.ks import KSFDPW
4from gpaw.directmin.functional.fdpw.pz import PZSICFDPW
7def get_functional(func, *args):
9 if isinstance(func, KSFDPW) or isinstance(func, PZSICFDPW):
10 return func
11 elif isinstance(func, basestring):
12 func = xc_string_to_dict(func)
14 if isinstance(func, dict):
15 kwargs = func.copy()
16 name = kwargs.pop('name').replace('-', '').lower()
17 functional = {'ks': KSFDPW,
18 'pzsic': PZSICFDPW}[name](*args, **kwargs)
19 return functional
20 else:
21 raise TypeError('Check functional parameter.')