Package: xespresso
xespressoQuantum ESPRESSO Calculator for Atomic Simulation Environment (ASE).For the introduction of ASE , please visithttps://wiki.fysik.dtu.dk/ase/index.htmlFeaturesSupport all QE packages, including: pw, band, neb, dos, projwfc, pp ...Spin-polarized calculationLD(S)A+UAutomatic submit jobAutomatic check a new calculation required or notAutomatic set up "nscf" calculationRead and plot dos, pdos and layer resolved pdosPlot NEBAuthorXing Wangxingwang1991@gmail.comDependenciesPythonASEnumpyscipymatplotlibInstallation using pippip install --upgrade --user xespressoInstallation from sourceYou can get the source using git:gitclone--depth1https://github.com/superstar54/xespresso.gitAdd xespresso to your PYTHONPATH. On windows, you can edit the system environment variables.exportPYTHONPATH="/path/to/xespresso":$PYTHONPATHexportASE_ESPRESSO_COMMAND="/path/to/PACKAGE.x  PARALLEL  -in  PREFIX.PACKAGEi  >  PREFIX.PACKAGEo"exportESPRESSO_PSEUDO="/path/to/pseudo"ExamplesAutomatic submit jobA example of setting parameters for the queue. See example/queue.pyqueue={'nodes':4,'ntasks-per-node':20,'partition':'all','time':'23:10:00'}calc=Espresso(queue=queue)Automatic check a new calculation required or notBefore the calculation, it will first check the working directory. If the same geometry and parameters are used, try to check whether the results are available or not. Automatic check input parameters with Quantum Espresso document.calc=Espresso(label='scf/fe')Show debug information.calc=Espresso(debug=True)Add new speciesSome atoms are special:atoms with different starting_magnetizationatoms with different U valuesatoms with special basis setFor example, Fe with spin state AFM. See example/spin.pyatoms.new_array('species',np.array(atoms.get_chemical_symbols(),dtype='U20'))atoms.arrays['species'][1]='Fe1'Setting parameters with "(i), i=1,ntyp"Hubbard, starting_magnetization, starting_charge and so on. See example/dft+u.pyinput_ntyp={'starting_magnetization':{'Fe1':1.0,'Fe2':-1.0},'Hubbard_U':{'Fe1':3.0,'Fe2':3.0},}input_data['input_ntyp']=input_ntyp,Setting parameters for "Hubbard_V(na,nb,k)"Hubbard, starting_magnetization, starting_charge and so on. See example/dft+u.pyinput_data={'hubbard_v':{'(1,1,1)':4.0,'(3,3,1)':1.0},}Control parallelization levelsTo control the number of processors in each group: -ni,
-nk, -nb, -nt, -nd) are used.calc=Espresso(pseudopotentials=pseudopotentials,package='pw',parallel='-nk 2 -nt 4 -nd 144',# parallel parameters}Non self-consistent calculationA example of nscf calculation following the above one.# start nscf calculationfromxespresso.post.nscfimportEspressoNscfnscf=EspressoNscf(calc.directory,prefix=calc.prefix,occupations='tetrahedra',kpts=(2,2,2),debug=True,)nscf.run()Calculate dos and pdosA example of calculating and plotting the pdos from the nscf calculation.fromxespresso.post.dosimportEspressoDos# dosdos=EspressoDos(parent_directory='calculations/scf/co',prefix=calc.prefix,Emin=fe-30,Emax=fe+30,DeltaE=0.01)dos.run()# pdosfromxespresso.post.projwfcimportEspressoProjwfcprojwfc=EspressoProjwfc(parent_directory='calculations/scf/co',prefix='co',DeltaE=0.01)projwfc.run()Calculate work functionfromxespresso.post.ppimportEspressoPppp=EspressoPp(calc.directory,prefix=calc.prefix,plot_num=11,fileout='potential.cube',iflag=3,output_format=6,debug=True,)pp.get_work_function()Restart from previous calculationcalc.read_results()atoms=calc.results['atoms']calc.run(atoms=atoms,restart=1)NEB calculationSee example/neb.pyfromxespresso.nebimportNEBEspressocalc=NEBEspresso(package='neb',images=images,climbing_images=[5],path_data=path_data)calc.calculate()calc.read_results()calc.plot()WorkflowOxygen evolution reaction (OER) calculationThe workflow includes four modules:OER_bulkOER_pourbaixOER_surfaceOER_siteThe workflow can handle:Generate surface slab model from bulk structureDetermine the surface adsorption siteDetermine the surface coverage(, O, OH*), Pourbaix diagramCalculate the Zero-point energyoer=OER_site(slab,label='oer/Pt-001-ontop',site_type='ontop',site=-1,height=2.0,calculator=parameters,molecule_energies=molecule_energies,)oer.run()To do lists:addqPointsSpecsandLine-of-inputfor phonon input file