Source code for meanfi.params.rparams
import numpy as np
from meanfi.params.param_transforms import (
complex_to_real,
flat_to_tb,
real_to_complex,
tb_to_flat,
)
from meanfi.tb.tb import _tb_type
[docs]
def tb_to_rparams(tb: _tb_type) -> np.ndarray:
"""Parametrise a hermitian tight-binding dictionary by a real vector.
Parameters
----------
tb :
tight-binding dictionary.
Returns
-------
:
1D real vector that parametrises the tight-binding dictionary.
"""
return complex_to_real(tb_to_flat(tb))
[docs]
def rparams_to_tb(
tb_params: np.ndarray, tb_keys: list[tuple[None] | tuple[int, ...]], ndof: int
) -> _tb_type:
"""Extract a hermitian tight-binding dictionary from a real vector parametrisation.
Parameters
----------
tb_params :
1D real array that parametrises the tight-binding dictionary.
tb_keys :
List of keys of the tight-binding dictionary.
ndof :
Number internal degrees of freedom within the unit cell.
Returns
-------
:
Tight-biding dictionary.
"""
flat_matrix = real_to_complex(tb_params)
return flat_to_tb(flat_matrix, ndof, tb_keys)