def calc_me(atoms, nbands): """Do the calculation.""" molecule_name = atoms.get_chemical_formula() atoms.set_initial_magnetic_moments([-1.0, 1.0]) fname = '.'.join([molecule_name, 'PBE-SIN']) calc = GPAW(h=0.25, xc='PBE', eigensolver=CG(niter=5), nbands=nbands, txt=fname + '.log', occupations=FermiDirac(0.0, fixmagmom=True), convergence={ 'energy': 0.005, 'bands': nbands, 'eigenstates': 1e-4, 'density': 1e-3 }) atoms.set_calculator(calc) try: atoms.get_potential_energy() except KohnShamConvergenceError: pass if calc.scf.converged: for calcp in calc_parms: calc.set(**calcp) try: calc.calculate(system_changes=[]) except KohnShamConvergenceError: break if calc.scf.converged: calc.write(fname + '.gpw', mode='all')
atoms.set_calculator(calc) atoms.get_potential_energy() # Get the valence band maximum efermi = calc.get_fermi_level() Nk = len(calc.get_ibz_k_points()) Ns = calc.get_number_of_spins() eigval = np.array([[calc.get_eigenvalues(kpt=k, spin=s) for k in range(Nk)] for s in range(Ns)]) evbm = np.max(eigval[eigval < efermi]) # Next, a band structure calculation calc.set( nbands=nbnd, # 4 occupied and 4 unoccupied bands fixdensity=True, eigensolver=CG(niter=5), symmetry='off', kpts={ 'path': spath, 'npoints': 50 }, convergence={'bands': 'all'}, ) calc.get_potential_energy() bs_gpaw = calc.band_structure() #bs_gpaw.reference = evbm bs_gpaw_reference = evbm bs_gpaw.plot(filename='bs_gpaw_data.png', show=False, emax=evbm + 5.,
# Fraction of Tw lambda_coeff = 1.0 name = 'lambda_{0}'.format(lambda_coeff) filename = 'atoms_' + name + '.dat' f = paropen(filename, 'w') elements = ['N'] for symbol in elements: mixer = Mixer() eigensolver = CG(tw_coeff=lambda_coeff) poissonsolver = PoissonSolver() molecule = Atoms(symbol, positions=[(c, c, c)], cell=(a, a, a)) calc = GPAW(h=h, xc=xcname, maxiter=240, eigensolver=eigensolver, mixer=mixer, setups=name, poissonsolver=poissonsolver) molecule.set_calculator(calc) E = molecule.get_total_energy()