def create_setup(symbol, xc, lmax=0, type='paw', basis=None, setupdata=None, world=None): if setupdata is None: if type == 'hgh' or type == 'hgh.sc': lmax = 0 from gpaw.hgh import HGHSetupData, setups, sc_setups if type == 'hgh.sc': table = sc_setups else: table = setups parameters = table[symbol] setupdata = HGHSetupData(parameters) elif type == 'ah': from gpaw.ah import AppelbaumHamann ah = AppelbaumHamann() ah.build(basis) return ah elif type == 'ghost': from gpaw.lcao.bsse import GhostSetupData setupdata = GhostSetupData(symbol) else: setupdata = SetupData(symbol, xc.get_setup_name(), type, True, world=world) if hasattr(setupdata, 'build'): return LeanSetup(setupdata.build(xc, lmax, basis)) else: return setupdata
def create_setup(symbol, xc='LDA', lmax=0, type='paw', basis=None, setupdata=None, filter=None, world=None): if isinstance(xc, str): xc = XC(xc) if isinstance(type, str) and ':' in type: # Parse DFT+U parameters from type-string: # Examples: "type:l,U" or "type:l,U,scale" type, lu = type.split(':') if type == '': type = 'paw' l = 'spdf'.find(lu[0]) assert lu[1] == ',' U = lu[2:] if ',' in U: U, scale = U.split(',') else: scale = True U = float(U) / units.Hartree scale = int(scale) else: U = None if setupdata is None: if type == 'hgh' or type == 'hgh.sc': lmax = 0 from gpaw.hgh import HGHSetupData, setups, sc_setups if type == 'hgh.sc': table = sc_setups else: table = setups parameters = table[symbol] setupdata = HGHSetupData(parameters) elif type == 'ah': from gpaw.ah import AppelbaumHamann ah = AppelbaumHamann() ah.build(basis) return ah elif type == 'ae': from gpaw.ae import HydrogenAllElectronSetup assert symbol == 'H' ae = HydrogenAllElectronSetup() ae.build(basis) return ae elif type == 'ghost': from gpaw.lcao.bsse import GhostSetupData setupdata = GhostSetupData(symbol) else: setupdata = SetupData(symbol, xc.get_setup_name(), type, True, world=world) if hasattr(setupdata, 'build'): setup = LeanSetup(setupdata.build(xc, lmax, basis, filter)) if U is not None: setup.set_hubbard_u(U, l, scale) return setup else: return setupdata
def create_setup(symbol, xc='LDA', lmax=0, type='paw', basis=None, setupdata=None, filter=None, world=None): if isinstance(xc, basestring): xc = XC(xc) if isinstance(type, basestring) and ':' in type: # Parse DFT+U parameters from type-string: # Examples: "type:l,U" or "type:l,U,scale" type, lu = type.split(':') if type == '': type = 'paw' l = 'spdf'.find(lu[0]) assert lu[1] == ',' U = lu[2:] if ',' in U: U, scale = U.split(',') else: scale = True U = float(U) / units.Hartree scale = int(scale) else: U = None if setupdata is None: if type == 'hgh' or type == 'hgh.sc': lmax = 0 from gpaw.hgh import HGHSetupData, setups, sc_setups if type == 'hgh.sc': table = sc_setups else: table = setups parameters = table[symbol] setupdata = HGHSetupData(parameters) elif type == 'ah': from gpaw.ah import AppelbaumHamann ah = AppelbaumHamann() ah.build(basis) return ah elif type == 'ae': from gpaw.ae import HydrogenAllElectronSetup assert symbol == 'H' ae = HydrogenAllElectronSetup() ae.build(basis) return ae elif type == 'ghost': from gpaw.lcao.bsse import GhostSetupData setupdata = GhostSetupData(symbol) elif type == 'sg15': from gpaw.upf import UPFSetupData upfname = '%s_ONCV_PBE-*.upf' % symbol upfpath, source = search_for_file(upfname, world=world) if source is None: raise IOError('Could not find pseudopotential file %s ' 'in any GPAW search path. ' 'Please install the SG15 setups using, ' 'e.g., "gpaw install-data".' % upfname) setupdata = UPFSetupData(upfpath) if xc.name != 'PBE': raise ValueError('SG15 pseudopotentials support only the PBE ' 'functional. This calculation would use ' 'the %s functional.' % xc.name) else: setupdata = SetupData(symbol, xc.get_setup_name(), type, True, world=world) if hasattr(setupdata, 'build'): setup = LeanSetup(setupdata.build(xc, lmax, basis, filter)) if U is not None: setup.set_hubbard_u(U, l, scale) return setup else: return setupdata