Exemplo n.º 1
0
    def __init__(self,Z,Ne=0,ni=None,spin=2,scf=True,\
                     gridN=350,gridMin=1e-4,gridMax=100,Lmax=3,\
                     convCrit=1e-3, mixConst=0.3):
        """
        Main class to calculate find LSDA solution of atom
        in:
           Z    : Atomic number
           Ne   : Additional electrons 0, +-1 etc.
           ni   : Initial electron density on radial grid
           spin : 1 (non) or 2 (spin) polarized solution 
           scf  : Find SCF solution (True) one iteration (False)
           grid N,min,max : Radial grid specification
        """
        self.grid = FEM.radialGrid(NN=gridN,rmin=gridMin,rmax=gridMax)
        print len(self.grid.x)
        self.spin, self.Lmax = spin, Lmax
        self.Z, self.Ne, self.convCrit = Z, Ne, convCrit
        self.mixConst = mixConst

        if ni==None:
            self.initDensity()
        else:
            self.n = ni
        
        self.initMat()
        if scf:
            self.runSCF()
Exemplo n.º 2
0
import time as t

Z=4         #Mass number
Ne=4       #No of electrons
l=0          #max value of l
L=l*(l+1)/2
spinn=0    #0=y,1=n
NN=350   #grid pts

elec=N.zeros(shape=50);elec[0:Ne]=N.ones(shape=Ne)
if spinn==0:
    s1=N.sum(elec[0:2]);s2=N.sum(elec[2:4]);s3=N.sum(elec[4:10]);s4=N.sum(elec[10:12])  
    s5=N.sum(elec[12:18]);s6=N.sum(elec[18:28]);s7=N.sum(elec[28:30]);s8=N.sum(elec[30:36]);s9=N.sum(elec[36:46])  


g=F.radialGrid(NN=350,rmin=1e-4,rmax=100)
D2, S=F.D2mat(g), F.Smat(g)

n=N.zeros(shape=NN)
Vxc=N.zeros(shape=(NN))

def excorrutanspinn(n):
    rs=(3./4./N.pi/n)**(1./3);bb=3.72744;c=12.9352;K=0.0621814;    
    y0=-0.10498;Q=N.sqrt(4*c-bb**2);y=N.sqrt(rs);Y=y**2+bb*y+c;Yy0=y0**2+bb*y0+c;
    
    Ex=-3./4./N.pi*(3*N.pi**2*n)**(1./3)
    DEx=-1./4*n**(-2./3)*(3./N.pi)**(1./3)
    Ec=K/2*(N.log(y**2/Y)+2*bb/Q*N.arctan(Q/(2*y+bb))-bb*y0/Yy0*(N.log((y-y0)**2/Y)+2*(bb+2*y0)/Q*N.arctan(Q/(2*y+bb))))
    DEc=(-0.327938-0.910488/n**(2./3)-4.54825/n**(1./2)-20.1334/n**(1./3)-5.06527/n**(1./6))/(4.0967+39.8675*n**(1./6)+273.006*n**(1./3)+879.214*n**(1./2)+2001.37*n**(2./3)+489.179*n**(5./6)+31.6434*n)
    Vxc=Ex+Ec+n*(DEx+DEc)
    Exc=Ex+Ec