Source code for pynao.m_system_vars_gpaw


from __future__ import print_function, division
import numpy as np
import sys

[docs]def system_vars_gpaw(self, **kw): """ Initialise system variables with gpaw inputs: Input parameters: ----------------- calc: GPAW object kvargs: optional arguments, need a list of precise arguments somewhere """ from pyscf.lib import logger from pyscf.lib.parameters import ELEMENTS as chemical_symbols from pynao.m_gpaw_wfsx import gpaw_wfsx_c from pynao.m_gpaw_hsx import gpaw_hsx_c from pynao.ao_log import ao_log import ase.units as units #gpaw=calc, label="gpaw", chdir='.', **kvargs self.gpaw = calc = kw['gpaw'] self.label = kw['label'] if 'label' in kw else 'gpaw' self.chdir = kw['cd'] if 'cd' in kw else '.' self.verbose = logger.NOTE self.ao_log = ao_log(setups=calc.setups, **kw) self.atom2coord = calc.get_atoms().get_positions()/units.Bohr self.natm = self.natoms = len(self.atom2coord) self.atom2sp = np.array([list(self.ao_log.sp2key).index(key) for key in calc.setups.id_a], dtype=np.int64) self.ucell = calc.atoms.get_cell()/units.Bohr self.norbs = calc.setups.nao self.norbs_sc = self.norbs self.nspin = calc.get_number_of_spins() self.nkpoints = 1 self.fermi_energy = float(calc.get_fermi_level()/units.Ha) # ensure that fermi_energy is float type self.atom2s = np.zeros((self.natm+1), dtype=np.int64) for atom, sp in enumerate(self.atom2sp): self.atom2s[atom+1] = self.atom2s[atom] + self.ao_log.sp2norbs[sp] self.atom2mu_s = np.zeros((self.natm+1), dtype=np.int64) for atom, sp in enumerate(self.atom2sp): self.atom2mu_s[atom+1] = self.atom2mu_s[atom] + self.ao_log.sp2nmult[sp] self.sp2symbol = [chemical_symbols[Z] for Z in self.ao_log.sp2charge] self.sp2charge = self.ao_log.sp2charge self.wfsx = gpaw_wfsx_c(calc) self.hsx = gpaw_hsx_c(self, calc) #print(self.atom2coord) #print(self.natoms) #print(self.atom2sp) #print(self.norbs) #print(self.nspin) #print(self.nkpoints) #print(self.fermi_energy) #print(self.atom2s) #print(self.atom2mu_s) #print(self.sp2symbol) #print(self.sp2charge) self.state = 'should be useful for something' return self