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

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 

5 

6 

7def get_functional(func, *args): 

8 

9 if isinstance(func, KSFDPW) or isinstance(func, PZSICFDPW): 

10 return func 

11 elif isinstance(func, basestring): 

12 func = xc_string_to_dict(func) 

13 

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.')