Author Topic: Question about padding_length  (Read 3555 times)

0 Members and 1 Guest are viewing this topic.

Offline ziand

  • Heavy QuantumATK user
  • ***
  • Posts: 78
  • Country: de
  • Reputation: 5
    • View Profile
Question about padding_length
« on: September 8, 2010, 20:09 »
Hallo, recently I have made some basic testing on a Carbon dimer. I plotted the molecular spectrum (only 5 lowest states) as a function of C-C distance (see attachement: horizontal black lines are the states of a single carbon atom, dashed black line is the fermi level (which changes with C-C-distance), dotted vertical line could be the equilibrium distance). We see that the spectrum changes over the whole range and approaches the single atom spectrum (but twofold degenerate) for big distances. In a second test, I plotted the spectrum at C-C-dist = 1.27 Ang as a function of padding_length. This gives me straight lines: no dependency. Why is this so? The default padding_length in ATK 10.8 seems to be zero. Is this right? ATK performs a bulk calculation for molecules too. So there is a big but finite unitcell. For the carbon dimer it is:
Code
C = MoleculeConfiguration(elements=[Carbon,],cartesian_coordinates=[[0,0,0],[0,0,1]]*Ang)
Cb = C._bulkConfiguration()
coord = Cb.cartesianCoordinates()
# now coord == PhysicalQuantity([[0.77, 0.77, 0.77],[0.77, 0.77, 1.77]], Ang)
The size of that cell is not too big (1.54 Ang in x and y), compared to the C-C-dist range that I have plotted. Different padding_length should have an influence.

Offline Nordland

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 812
  • Reputation: 18
    • View Profile
Re: Question about padding_length
« Reply #1 on: September 8, 2010, 21:06 »
The default padding length for molecules is 0.0 Ang. The box used for calculating the molecule within, is created in the following way: * First of all the box is extended in all direction such that all the orbitals have compact support within the box. * Then the box is extended by the padding length in all direction to create extra vacuum. The first steps assures that density is, without error, represented inside the box. Therefore increasing the box will not give a better description of the density and hence all the parts of the potential, that depend only on the density point-wise, are therefore also without any error related to the box size. The only term that can still give an error, is the hartree potential, which can have long tails into the vacuum if there is a presence of local dipoles. Therefore a padding length can be added. However the default poisson solver for molecules is the multigrid method using quadrapole expansion at the boundaries, which is perfect to modeling the tails of the hartee potential. Therefore unless you manually choose another poisson solver, you will see no effect of increasing the cell by adding padding length. The routine ( a developer routine ) you have found, is not the one used for setting up the calculation, it is used for converting a molecule to a bulk in the Builder in VNL. If you want a look behind the scene you can have a look at this function:
Code: python
from NL.CommonConcepts.Configurations.AtomicConfigurationUtilities import constructBoundingBox 
lattice = constructBoundingBox(molecule_configuration, radius=6.0*Ang, padding=1.0*Ang)
print lattice.primitiveVectors()
I hope that it helped.  
« Last Edit: September 8, 2010, 21:08 by Nordland »