QuantumATK Forum

QuantumATK => General Questions and Answers => Topic started by: aschenk on November 20, 2011, 12:53

Title: different basis sets for same-type atoms
Post by: aschenk on November 20, 2011, 12:53
Hi,
Is there any way to modify a script so that different basis sets are used for specific atoms? I know that the GUI allows the easy application of different basis sets to different elements in a structure, I want to take this one step further and apply different basis sets to specific atoms of the same element.
Thanks
Title: Re: different basis sets for same-type atoms
Post by: Nordland on November 20, 2011, 16:45
As always there is a small work around to get it work.

I have attached a example of what I have done when I wanted the surface gold atoms to have a different basis set than the bulk gold atoms.
I will give a little recipe here for how to do it.


Initially the code snippet for the basis set looked like this:
Code
basis_set = [
    LDABasis.Osmium_DoubleZetaDoublePolarized,
    LDABasis.Gold_SingleZetaPolarized,


However I dont want Osium, I want gold. So I replace the LDABasis.Osmium_DoubleZetaDoublePolarized with LDABasis.Gold_DoubleZetaDoublePolarized,
but I need to tell ATK that for this gold basis set I want to use for my Surface Gold (Osmium) and using a gold pseudo-potential, so I enter:
Code
basis_set = [
    LDABasis.Gold_DoubleZetaDoublePolarized(element=Osmium,
                                            pseudopotential = NormConservingPseudoPotential('normconserving/AU.LDAPZ.zip')),
    LDABasis.Gold_SingleZetaPolarized,
    ]

And then you got a simulation with surface gold, labeled as Osmium, but with a different basis set than the rest. :)
Title: Re: different basis sets for same-type atoms
Post by: aschenk on November 21, 2011, 00:50
Brilliant, thank you. That's exactly what I need, and for much the same reason-I want higher basis sets than my surface atoms than for the bulk. Now I can finally get this calculation working properly :)
Title: Re: different basis sets for same-type atoms
Post by: Anders Blom on December 14, 2011, 08:01
Someone asked if this is also possible for Huckel, so I just want to mention that it is.

You could for instance do

Code: python
basis_set = [
    CerdaHuckelParameters.Carbon_graphite_Basis,
    CerdaHuckelParameters.Carbon_diamond_Basis(element=Osmium),
    ]

if you have both sp2 and sp3 bonded carbon atoms in a structure (an organic molecule on graphene would be a good example); to make this work, replace all sp3-bonded Carbon by Osmium.

Moreover, ATK 12.2 will make this a bit easier, without the need to introduce funny elements like osmium :)