next up previous contents
Next: Dipolar Fluctuation Model with Up: Files structure and use Previous: Structure definition   Contents

Definition of Potentials and eigenvectors calculations

The distribution archive contains parinputedited that corresponds to the test case [4]. Such a file describes the interatomic potentials. Units are CGS. Some knowledge of Python and of the Numerical extension (NumPy) is necessary. Interactions are book-keept by a Python dictionary. For example the dictionary entry

BK_L['O_G1']['Nd_G0']
describes the longitudinal Born-Karman interactions between oxygen atoms of the equivalency group $1$ and the Lantanium atoms of the equivalence group $0$. The spring values are given in a list where each entry corresponds to a O_G1-Nd_G0 distance. This is a typical example extracted from the parameter file ( file parinputedited in the example directory texttttest_OP ):
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
# Interactions between 'O_G1' and 'Nd_G0' 
# Shell N0 going from 2.327062 to 2.327062  like O7 in 0 and Nd2 in 0 0 0 
# Shell N1 going from 4.584508 to 4.584508  like O7 in 0 and Nd2 in -1 0 0 
# Shell N2 going from 5.192371 to 5.192371  like O7 in 0 and Nd1 in 0 0 1 

BMpar.A= 2000  * ev_erg 
BMpar.R= 0.316  * A_cm
distances= [ 2.327062 * A_cm ,4.584508* A_cm ]
BMpar.ZZ= Z_['Nd_G0']*Z_['O_G0' ]
 
print " ['Nd_G0']*Z_['O_G0' ]  "

BK_L['O_G1']['Nd_G0']=map(bm_L,distances)
BK_T['O_G1']['Nd_G0']=map(bm_T,distances)

where $bm_l$ is an user defined function (see input file) of distance.

The parameters file specifies also other thing like, atom polarizability, Charges and analytical potentials. A few words should be spent on analytical potentials that can be of the Born-Mayer, Van der Walls, Lenard Jones type. They are specified by atom-dependent parameters, contrarily to the spring constants which are interaction (bond) dependent, .i.e. are given for each couple of interacting atom-types.

However in the literature one often finds analytical parameter that are bond dependent. In this case on can include them as spring constant. this is done in our example perinputedited file, where the function $bm_L$ is mapped on the shell distances to get spring constants.

Then the calculation is performed running dispersionDeb.py under Python with three arguments:

python dispersionDeb.py  <parinputedited-filename> <cella-filename> 
  <additional-filename>

The significance of parinputedited and cella has been explained before. The last parameter specifies a file containing some parameters concerning the q-points at which phonons are calculated and other parameters governing the treatement of coulomb interactions. This is an examples :

astar=2*math.pi/3.95
cstar=2*math.pi/12.06556
eps=0.0011
Q=Numeric.array( [ [astar*0.01*i+eps,-astar*0.01*i+eps,0] \
 for i in range(1,100)])
debyerange=[8,8,2]
debye=astar/4
SMcellrange=[2,2,2]
cellrange= [-1,-1,-1]
Kcellrange=[8,8,2]
sigmacellrange=[8,8,2]
sigmacharge=3
IS_IT_SCREENED=1
selectors=[(1.0,1.0,0.0), (1.0,-1.0,0.0), (1.0,0.0,1.0), (-1.0,1.0,0.0)]

The distribution archive contains an examples file (dispersionDebinput).

The q-points are defined by the variable Q, cstar and astar being just auxiliary variables. When summing up the contributions from spring constants a loop is done over all atoms in several cells. The variable SMcellrange gives the extent of this loop over the unit cells in the three directions a,b,c. Giving $SMcellrange=[0,0,0]$, for example, implies considering just the central unit-cell, but that might loose several interactions, particularly in the considered case where we include also second neighbours. For the example considered, $SMcellrange=[2,2,2]$ is enough. The variable $cellrange$ specifies the extent of the summation of analytical potentials, namely Born-Mayer, Van der Waals, Lennard Jones. The variables $IS\_IT\_SCREENED$ determines if the Coulomb interactions are screened or not. In the case of unscreened interactions the summation shows convergence problems that are cured by decomposing it partly in reciprocal space and partly in real space thanks to an appropriate charge smearing ( see Unisoft manual for details [5]). The Gaussian charge smearing is governed by $sigmacharge$, given in Angstroem. The extensions of reciprocal-space and real-space summation are given by the variables $Kcellrange$ and $sigmacellrange$ respectively. Taking a large sigma for charge smearing will make Kcellrange smaller( faster reciprocal space convergence) but will give a bigger sigmacellrange. Convergence has to be checked against these variables.

In the case of a screened potential, two variables have to be given : $debye$ which multiplies the distance in the exponential damping of the Coulomb potential and the extent of the real space summation, debyerange.

Finally the variable $selectors$ gives a set of directions against which the simmetry of the eigenmodes is checked.

The output is contained in three files : storeall, disp_res, disp_ressq. The ASCII files disp_res, disp_ressq contain the squares and the values of the phonon frequencies respectively. The file storeall stores in Python ``pickled'' form the calculated eigenvectors and frequencies. This file is finally used by the program scattering_shifted.py to calculate scattering intensities.

If the variable $selectors$ is set, an additional file, named polar_res, where for each directions the index of the eigenvalues ( referring to the ordering given in the output file) is given following the order of growing eigenvector projections over the $selectors$ direction. This can help to retrieve eigenvectors of specific symmetries, whose signal is enhanced by the experimental geometry.


next up previous contents
Next: Dipolar Fluctuation Model with Up: Files structure and use Previous: Structure definition   Contents
Alessandro Mirone 2003-11-17