Author Topic: different basis sets for same-type atoms  (Read 4905 times)

0 Members and 1 Guest are viewing this topic.

Offline aschenk

  • Regular QuantumATK user
  • **
  • Posts: 8
  • Country: au
  • Reputation: 0
    • View Profile
different basis sets for same-type atoms
« 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

Offline Nordland

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 812
  • Reputation: 18
    • View Profile
Re: different basis sets for same-type atoms
« Reply #1 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.
  • Build your system the way you want it.
  • Find the atoms which you want described in special way, and change to another element - choose something wild. In my case I selected Osmium, but it could be anything that is not present in your script already.
  • Drop the configuration on the scripter, and setup the basis set the way you want it. So in my case I set Osium (the surface gold) to DZDP and the normal gold to szp.
  • Drop the script on the editor and do a minor edit by hand.
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. :)
« Last Edit: November 20, 2011, 16:49 by Nordland »

Offline aschenk

  • Regular QuantumATK user
  • **
  • Posts: 8
  • Country: au
  • Reputation: 0
    • View Profile
Re: different basis sets for same-type atoms
« Reply #2 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 :)

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5576
  • Country: dk
  • Reputation: 96
    • View Profile
    • QuantumATK at Synopsys
Re: different basis sets for same-type atoms
« Reply #3 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 :)