Source code for multipie.multipole.base.base_atomic_multipole_set

"""
BaseAtomicMultipoleSet manages a set of atomic multipoles for lm, jm, cubic, and hexagonal basis.
"""
from gcoreutils.nsarray import NSArray
from multipie.tag.tag_multipole import TagMultipole
from multipie.tag.tag_list import TagList
from multipie.data.data_atomic_multipoles import (
    _data_atomic_multipoles_lm,
    _data_atomic_multipoles_jm,
    _data_atomic_multipoles_cubic,
    _data_atomic_multipoles_hexagonal,
)


_data_atomic_multipoles_set = {
    "lm": _data_atomic_multipoles_lm,
    "jm": _data_atomic_multipoles_jm,
    "cubic": _data_atomic_multipoles_cubic,
    "hexagonal": _data_atomic_multipoles_hexagonal,
}


# ==================================================
[docs] class BaseAtomicMultipoleSet(dict): # dict of (multipole tag, matrix) { TagMultipole: Matrix }. """ a set of atomic multipoles for lm, jm, cubic, and hexagonal basis. Attributes: tag (str): tag """ # ================================================== def __init__(self, b_type): """ initialize the class. Args: b_type (str): basis type, (lm/jm/cubic/hexagonal). """ self.tag = b_type """basis type, (lm/jm/cubic/hexagonal).""" for mtag, m in _data_atomic_multipoles_set[b_type].items(): self[TagMultipole(mtag)] = NSArray(m, style="matrix", fmt="sympy", real=False) # ================================================== def __str__(self): return self.tag # ================================================== def __repr__(self): return self.tag # ================================================== def latex(self): return self.tag # ================================================== def __getitem__(self, tag): if type(tag) == str: return self.get(TagMultipole(tag)) else: return self.get(tag) # ================================================== def key_list(self): return TagList(self.keys())