def format_basis(basis_tab): """Convert the input :attr:`Cell.basis` to the internal data format. ``{ atom: (l, kappa, ((-exp, c_1, c_2, ..), nprim, nctr, ptr-exps, ptr-contraction-coeff)), ... }`` Args: basis_tab : list Similar to :attr:`Cell.basis`, it **cannot** be a str Returns: Formated :attr:`~Cell.basis` Examples: >>> pbc.format_basis({'H':'gth-szv'}) {'H': [[0, (8.3744350009, -0.0283380461), (1.8058681460, -0.1333810052), (0.4852528328, -0.3995676063), (0.1658236932, -0.5531027541)]]} """ fmt_basis = {} for atom in basis_tab.keys(): symb = _symbol(atom) rawsymb = _rm_digit(symb) stdsymb = _std_symbol(rawsymb) symb = symb.replace(rawsymb, stdsymb) if isinstance(basis_tab[atom], str): fmt_basis[symb] = basis.load(basis_tab[atom], stdsymb) else: fmt_basis[symb] = basis_tab[atom] return fmt_basis
def _basis_offset_for_atoms(atoms, basis_tab): basoff = [0] n = 0 for at in atoms: symb = mole._symbol(at[0]) if symb in basis_tab: bas0 = basis_tab[symb] else: bas0 = basis_tab[mole._rm_digit(symb)] for b in bas0: angl = b[0] n += _num_contract(b) * (angl * 2 + 1) basoff.append(n) return n, basoff
def format_pseudo(pseudo_tab): r'''Convert the input :attr:`Cell.pseudo` (dict) to the internal data format:: { atom: ( (nelec_s, nele_p, nelec_d, ...), rloc, nexp, (cexp_1, cexp_2, ..., cexp_nexp), nproj_types, (r1, nproj1, ( (hproj1[1,1], hproj1[1,2], ..., hproj1[1,nproj1]), (hproj1[2,1], hproj1[2,2], ..., hproj1[2,nproj1]), ... (hproj1[nproj1,1], hproj1[nproj1,2], ... ) )), (r2, nproj2, ( (hproj2[1,1], hproj2[1,2], ..., hproj2[1,nproj1]), ... ) ) ) ... } Args: pseudo_tab : dict Similar to :attr:`Cell.pseudo` (a dict), it **cannot** be a str Returns: Formatted :attr:`~Cell.pseudo` Examples: >>> pbc.format_pseudo({'H':'gth-blyp', 'He': 'gth-pade'}) {'H': [[1], 0.2, 2, [-4.19596147, 0.73049821], 0], 'He': [[2], 0.2, 2, [-9.1120234, 1.69836797], 0]} ''' fmt_pseudo = {} for atom in pseudo_tab: symb = _symbol(atom) rawsymb = _rm_digit(symb) stdsymb = _std_symbol(rawsymb) symb = symb.replace(rawsymb, stdsymb) if isinstance(pseudo_tab[atom], str): fmt_pseudo[symb] = pseudo.load(pseudo_tab[atom], stdsymb) else: fmt_pseudo[symb] = pseudo_tab[atom] return fmt_pseudo
def format_pseudo(pseudo_tab): '''Convert the input :attr:`Cell.pseudo` (dict) to the internal data format. ``{ atom: ( (nelec_s, nele_p, nelec_d, ...), rloc, nexp, (cexp_1, cexp_2, ..., cexp_nexp), nproj_types, (r1, nproj1, ( (hproj1[1,1], hproj1[1,2], ..., hproj1[1,nproj1]), (hproj1[2,1], hproj1[2,2], ..., hproj1[2,nproj1]), ... (hproj1[nproj1,1], hproj1[nproj1,2], ... ) )), (r2, nproj2, ( (hproj2[1,1], hproj2[1,2], ..., hproj2[1,nproj1]), ... ) ) ) ... }`` Args: pseudo_tab : dict Similar to :attr:`Cell.pseudo` (a dict), it **cannot** be a str Returns: Formatted :attr:`~Cell.pseudo` Examples: >>> pbc.format_pseudo({'H':'gth-blyp', 'He': 'gth-pade'}) {'H': [[1], 0.2, 2, [-4.19596147, 0.73049821], 0], 'He': [[2], 0.2, 2, [-9.1120234, 1.69836797], 0]} ''' fmt_pseudo = {} for atom in pseudo_tab.keys(): symb = _symbol(atom) rawsymb = _rm_digit(symb) stdsymb = _std_symbol(rawsymb) symb = symb.replace(rawsymb, stdsymb) if isinstance(pseudo_tab[atom], str): fmt_pseudo[symb] = pseudo.load(pseudo_tab[atom], stdsymb) else: fmt_pseudo[symb] = pseudo_tab[atom] return fmt_pseudo