QuantumATK Forum

QuantumATK => Scripts, Tutorials and Applications => Topic started by: eastnobil on December 29, 2010, 09:00

Title: How to get the value of work function with ATK 10.8.2
Post by: eastnobil on December 29, 2010, 09:00
The script of work function calculating, getting from the QuantumWise wibsite, can run with ATK and VNL 2008.10 but fails with ATK 10.8.2 . How to calculate the work function with ATK 10.8.2?
Title: Re: How to get the value of work function with ATK 10.8.2
Post by: kstokbro on December 29, 2010, 21:25
Hi,
I attach a custom analyzer which will calculate the work function using a netcdf file with an electrostatic difference potential and a calculator.
drop the file workfunction-analyzer.py on the custom analyzer tool.

I attach a script, au.py,  for calculating the workfunction of au, this script will generate the file au.nc which can be dropped on the custom analyzer.

Note that the localized basis set gives a poor description of the electro-static dipole at the surface and therefore a poor value for the workfunction.
In this case the value is 4.0 eV, which is more than 1 eV wrong.

The solution is to include a socalled ghost atom on top of the surface, this functionality will be available in ATK 11.2 which is released in february and available as an alpha version in january. With a ghost atom the value is 5.38 eV in good accordance with reference values. Thus, I recommend that you wait with calculating the workfunction until this functionality is available.
Title: Re: How to get the value of work function with ATK 10.8.2
Post by: nori on January 21, 2011, 03:15
I modified workfunction-analyzer.py as workfunction-analyzer2.py so that work function is calculated from effective potential.
I've found that in some cases(e.g. Al), a vacuum level is NOT the largest in electro static potential.
That's why, it is more efficient to calculate work function from effective potential ;)
Title: Re: How to get the value of work function with ATK 10.8.2
Post by: jdgayles16 on January 21, 2011, 19:23
Thanks very much for the script,

How would you change the script to average along a different axis
Title: Re: How to get the value of work function with ATK 10.8.2
Post by: kstokbro on January 22, 2011, 00:30
change the following:
 # Calculate the mean
    v_z = (numpy.apply_over_axes(numpy.mean,potential[:,:,:],[0,1]).flatten() * potential[:,:,:].unit()).inUnitsOf(eV)
    # determine the z values
    dX, dY, dZ = potential.volumeElement()
    dz = numpy.linalg.norm(dZ.inUnitsOf(Ang))
    z = dz *numpy.arange(potential.shape()[2])
    plot1.addData([z,v_z])

into
 # Calculate the mean
    v_x = (numpy.apply_over_axes(numpy.mean,potential[:,:,:],[1,2]).flatten() * potential[:,:,:].unit()).inUnitsOf(eV)
    # determine the z values
    dX, dY, dZ = potential.volumeElement()
    dx = numpy.linalg.norm(dX.inUnitsOf(Ang))
    x = dx *numpy.arange(potential.shape()[0])
    plot1.addData([x,v_x])
Title: Re: How to get the value of work function with ATK 10.8.2
Post by: Anders Blom on July 26, 2011, 11:31
We have published a new tutorial (http://quantumwise.com/publications/tutorials/mini-tutorials/134) on computing the work function with ATK 11.2 today.
Title: Re: How to get the value of work function with ATK 10.8.2
Post by: ramkrishna on July 26, 2011, 14:15
Does the approach to calculate work function for Hydrogen passivated  [100] SiNW (built by  nanowire custom builder) will be same like that tutorial? If so, then how can I specify the ghost atom (or atoms)?
Title: Re: How to get the value of work function with ATK 10.8.2
Post by: ramkrishna on August 11, 2011, 09:19
Dear Sir,
        To calculate the work function, how will we define the vacuum level  and how is it calculating in ATK 11.2.3 ?

Regards
Ramkrishna
Title: Re: How to get the value of work function with ATK 10.8.2
Post by: Anders Blom on August 11, 2011, 16:52
If you read the tutorial I linked to above, you will see that if we do the calculation properly we don't really have to worry about this technicality. By setting the value of the potential to zero at the boundary of the cell far away from the surface (via the Dirichlet boundary condition), we set the vacuum level there to be zero too, and thus the Fermi level becomes equal to the work function.
Title: Re: How to get the value of work function with ATK 10.8.2
Post by: ramkrishna on August 11, 2011, 18:19
Dear Sir,
        Thank you for your kind reply.

Regards
Ramkrishna