# This first part is just an initialisation
# Edit below 
M_={}
Z_={}
Y_={}
K_={}
VWs_={}
LJs_={}
BMs_={}
BK_L={}
SM_L={}
BK_T={}
SM_T={}
BK_L['Cu_G0']={}
SM_L['Cu_G0']={}
BK_T['Cu_G0']={}
SM_T['Cu_G0']={}
SM_L['Cu_G0']['Cu_G0']={}
SM_T['Cu_G0']['Cu_G0']={}
SM_L['Cu_G0']['O_G0']={}
SM_T['Cu_G0']['O_G0']={}
SM_L['Cu_G0']['O_G1']={}
SM_T['Cu_G0']['O_G1']={}
SM_L['Cu_G0']['La_G0']={}
SM_T['Cu_G0']['La_G0']={}
BK_L['O_G0']={}
SM_L['O_G0']={}
BK_T['O_G0']={}
SM_T['O_G0']={}
SM_L['O_G0']['Cu_G0']={}
SM_T['O_G0']['Cu_G0']={}
SM_L['O_G0']['O_G0']={}
SM_T['O_G0']['O_G0']={}
SM_L['O_G0']['O_G1']={}
SM_T['O_G0']['O_G1']={}
SM_L['O_G0']['La_G0']={}
SM_T['O_G0']['La_G0']={}
BK_L['O_G1']={}
SM_L['O_G1']={}
BK_T['O_G1']={}
SM_T['O_G1']={}
SM_L['O_G1']['Cu_G0']={}
SM_T['O_G1']['Cu_G0']={}
SM_L['O_G1']['O_G0']={}
SM_T['O_G1']['O_G0']={}
SM_L['O_G1']['O_G1']={}
SM_T['O_G1']['O_G1']={}
SM_L['O_G1']['La_G0']={}
SM_T['O_G1']['La_G0']={}
BK_L['La_G0']={}
SM_L['La_G0']={}
BK_T['La_G0']={}
SM_T['La_G0']={}
SM_L['La_G0']['Cu_G0']={}
SM_T['La_G0']['Cu_G0']={}
SM_L['La_G0']['O_G0']={}
SM_T['La_G0']['O_G0']={}
SM_L['La_G0']['O_G1']={}
SM_T['La_G0']['O_G1']={}
SM_L['La_G0']['La_G0']={}
SM_T['La_G0']['La_G0']={}
# HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
# Edit the followin part
# Masses : M 
_mass_unit = 1.0 / 6.0221367e23 

M_['Cu_G0']=63.546  * _mass_unit
M_['O_G0']=15.9994  * _mass_unit
M_['O_G1']=15.9994  * _mass_unit
M_['La_G0']=138.9055  * _mass_unit

# Coulomb interaction : Z 
e_to_stat= 1.0/2081923155.64
Zfactor= e_to_stat *1.0e12
  
Z_['Cu_G0']=1.64 *Zfactor
Z_['O_G0']=-1.56 *Zfactor
Z_['O_G1']=-1.56 *Zfactor
Z_['La_G0']=2.30 *Zfactor

# Shells Model : shell charge 
Y_['Cu_G0']=+3. *Zfactor
Y_['O_G0']=-3. *Zfactor
Y_['O_G1']=-3. *Zfactor
Y_['La_G0']=-4. *Zfactor

# Shells Model : polarizability  
Nm_dycm = 1.0e3

K_['Cu_G0']=2000.0 *Nm_dycm
K_['O_G0']=1800.0 *Nm_dycm
K_['O_G1']=1800.0 *Nm_dycm
K_['La_G0']=8000.0 *Nm_dycm

# Van der Walls  : sigma  
VW_V0=0.0
VWs_['Cu_G0']=1.0
VWs_['O_G0']=1.0
VWs_['O_G1']=1.0
VWs_['La_G0']=1.0

# Lenard Jones   : sigma  
LJ_V0=0.0
LJs_['Cu_G0']=1.0
LJs_['O_G0']=1.0
LJs_['O_G1']=1.0
LJs_['La_G0']=1.0

# Born-Mayer  : sigma  
BM_V0=0.0
BMs_['Cu_G0']=1.0
BMs_['O_G0']=1.0
BMs_['O_G1']=1.0
BMs_['La_G0']=1.0

#Local Born-Mayer+Van der Walls 

ev_erg = 1.602e-12
A_cm   = 1.0e-8

class BMpar:
  ZZ=0.0

def bm_L(x, BMpar=BMpar):
#  print x
#  print "ZL", BMpar.ZZ*1.0e-8/x/x/x *2.0
#  print "BML=", BMpar.A*math.exp(-x/BMpar.R)/BMpar.R  /BMpar.R
  return    BMpar.A*math.exp(-x/BMpar.R)/BMpar.R  /BMpar.R

def bm_T(x, BMpar=BMpar):
#  print x
#  print "ZT", -BMpar.ZZ*1.0e-8/x/x/x 
#  print "BMT=", - BMpar.A*math.exp(-x/BMpar.R)/BMpar.R  /x
  return  - BMpar.A*math.exp(-x/BMpar.R)/BMpar.R  /x

class VWpar:
   pass

VWpar.a=100 *ev_erg * 1.0e-48

def vw_L(x, VWpar=VWpar):
  return    -42*VWpar.a/(x*x*x* x*x*x) /x/x

def vw_T(x, VWpar=VWpar):
  return      6*VWpar.a/(x*x*x* x*x*x) /x        /x

def vwpbm_L(x,f1=bm_L, f2=vw_L):
  return f1(x)+f2(x)

def vwpbm_T(x,f1=bm_T, f2=vw_T):
  return f1(x)+f2(x)


# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
# Interactions between 'Cu_G0' and 'Cu_G0' 
# Shell N0 going from 3.781700 to 3.781700  like Cu1 in 0 and Cu1 in 1 0 0 
# Shell N1 going from 5.348131 to 5.348131  like Cu1 in 0 and Cu1 in -1 1 0 
BK_L['Cu_G0']['Cu_G0']=[]
BK_T['Cu_G0']['Cu_G0']=[]
SM_L['Cu_G0']['Cu_G0']['SS']=[]
SM_T['Cu_G0']['Cu_G0']['SS']=[]
SM_L['Cu_G0']['Cu_G0']['SC']=[]
SM_T['Cu_G0']['Cu_G0']['SC']=[]
SM_L['Cu_G0']['Cu_G0']['CS']=[]
SM_T['Cu_G0']['Cu_G0']['CS']=[]
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
# Interactions between 'Cu_G0' and 'O_G0' 
# Shell N0 going from 1.890850 to 1.890850  like Cu1 in 0 and O5 in 1 0 0 
# Shell N1 going from 4.228069 to 4.228069  like Cu1 in 0 and O5 in 0 1 0 

BMpar.A= 3950.0 * ev_erg 
BMpar.R= 0.228  * A_cm
distances= [ 1.890850* A_cm, 4.228069* A_cm ]

BK_L['Cu_G0']['O_G0']=map(bm_L, distances)
BK_T['Cu_G0']['O_G0']=map(bm_T, distances)
SM_L['Cu_G0']['O_G0']['SS']=[0.0,0.0]
SM_T['Cu_G0']['O_G0']['SS']=[0.0,0.0]
SM_L['Cu_G0']['O_G0']['SC']=[0.0,0.0]
SM_T['Cu_G0']['O_G0']['SC']=[0.0,0.0]
SM_L['Cu_G0']['O_G0']['CS']=[0.0,0.0]
SM_T['Cu_G0']['O_G0']['CS']=[0.0,0.0]
# just for symmetry 
SM_L['O_G0']['Cu_G0']=SM_L['Cu_G0']['O_G0']
SM_T['O_G0']['Cu_G0']=SM_T['Cu_G0']['O_G0']
BK_L['O_G0']['Cu_G0']=BK_L['Cu_G0']['O_G0']
BK_T['O_G0']['Cu_G0']=BK_T['Cu_G0']['O_G0']
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
# Interactions between 'Cu_G0' and 'O_G1' 
# Shell N0 going from 1.844219 to 1.844219  like Cu1 in 0 and O6 in 0 0 0 
# Shell N1 going from 4.207422 to 4.207422  like Cu1 in 0 and O7 in 1 0 0 

BMpar.A= 460.0 * ev_erg 
BMpar.R= 0.353  * A_cm
distances= [ 1.844219* A_cm, 4.207422* A_cm ]


BK_L['Cu_G0']['O_G1']=map(bm_L, distances)
BK_T['Cu_G0']['O_G1']=map(bm_T, distances)
SM_L['Cu_G0']['O_G1']['SS']=[0.0,0.0]
SM_T['Cu_G0']['O_G1']['SS']=[0.0,0.0]
SM_L['Cu_G0']['O_G1']['SC']=[0.0,0.0]
SM_T['Cu_G0']['O_G1']['SC']=[0.0,0.0]
SM_L['Cu_G0']['O_G1']['CS']=[0.0,0.0]
SM_T['Cu_G0']['O_G1']['CS']=[0.0,0.0]
# just for symmetry 
SM_L['O_G1']['Cu_G0']=SM_L['Cu_G0']['O_G1']
SM_T['O_G1']['Cu_G0']=SM_T['Cu_G0']['O_G1']
BK_L['O_G1']['Cu_G0']=BK_L['Cu_G0']['O_G1']
BK_T['O_G1']['Cu_G0']=BK_T['Cu_G0']['O_G1']
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
# Interactions between 'Cu_G0' and 'La_G0' 
# Shell N0 going from 3.248349 to 3.248349  like Cu1 in 0 and La0 in 1 0 0 
# Shell N1 going from 4.780131 to 4.780131  like Cu1 in 0 and La3 in 0 0 0 
BK_L['Cu_G0']['La_G0']=[]
BK_T['Cu_G0']['La_G0']=[]
SM_L['Cu_G0']['La_G0']['SS']=[]
SM_T['Cu_G0']['La_G0']['SS']=[]
SM_L['Cu_G0']['La_G0']['SC']=[]
SM_T['Cu_G0']['La_G0']['SC']=[]
SM_L['Cu_G0']['La_G0']['CS']=[]
SM_T['Cu_G0']['La_G0']['CS']=[]
# just for symmetry 
SM_L['La_G0']['Cu_G0']=SM_L['Cu_G0']['La_G0']
SM_T['La_G0']['Cu_G0']=SM_T['Cu_G0']['La_G0']
BK_L['La_G0']['Cu_G0']=BK_L['Cu_G0']['La_G0']
BK_T['La_G0']['Cu_G0']=BK_T['Cu_G0']['La_G0']
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
# Interactions between 'O_G0' and 'O_G0' 
# Shell N0 going from 2.674066 to 2.674066  like O5 in 0 and O4 in -1 1 0 
# Shell N1 going from 3.781700 to 3.781700  like O5 in 0 and O5 in 0 1 0 

BMpar.A= 2000.0 * ev_erg 
BMpar.R= 0.284  * A_cm
distances= [ 2.674066* A_cm, 3.781700* A_cm ]

BK_L['O_G0']['O_G0']=map(vwpbm_L, distances)
BK_T['O_G0']['O_G0']=map(vwpbm_T, distances)
SM_L['O_G0']['O_G0']['SS']=[0.0,0.0]
SM_T['O_G0']['O_G0']['SS']=[0.0,0.0]
SM_L['O_G0']['O_G0']['SC']=[0.0,0.0]
SM_T['O_G0']['O_G0']['SC']=[0.0,0.0]
SM_L['O_G0']['O_G0']['CS']=[0.0,0.0]
SM_T['O_G0']['O_G0']['CS']=[0.0,0.0]
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
# Interactions between 'O_G0' and 'O_G1' 
# Shell N0 going from 2.641298 to 2.641298  like O5 in 0 and O6 in -1 0 0 
# Shell N1 going from 4.612777 to 4.612777  like O5 in 0 and O7 in -1 1 0 

BMpar.A= 2000.0 * ev_erg 
BMpar.R= 0.284  * A_cm
distances= [ 2.641298* A_cm, 4.612777* A_cm ]
 
BK_L['O_G0']['O_G1']=map(vwpbm_L, distances)
BK_T['O_G0']['O_G1']=map(vwpbm_T, distances)
SM_L['O_G0']['O_G1']['SS']=[0.0,0.0]
SM_T['O_G0']['O_G1']['SS']=[0.0,0.0]
SM_L['O_G0']['O_G1']['SC']=[0.0,0.0]
SM_T['O_G0']['O_G1']['SC']=[0.0,0.0]
SM_L['O_G0']['O_G1']['CS']=[0.0,0.0]
SM_T['O_G0']['O_G1']['CS']=[0.0,0.0]
# just for symmetry 
SM_L['O_G1']['O_G0']=SM_L['O_G0']['O_G1']
SM_T['O_G1']['O_G0']=SM_T['O_G0']['O_G1']
BK_L['O_G1']['O_G0']=BK_L['O_G0']['O_G1']
BK_T['O_G1']['O_G0']=BK_T['O_G0']['O_G1']
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
# Interactions between 'O_G1' and 'O_G1' 
# Shell N0 going from 3.688438 to 3.688438  like O7 in 0 and O6 in 0 0 0 
# Shell N1 going from 3.781700 to 3.781700  like O7 in 0 and O7 in 1 0 0 
# Shell N2 going from 3.971172 to 3.971172  like O7 in 0 and O3 in 1 0 0 

BMpar.A= 2000.0 * ev_erg 
BMpar.R= 0.284  * A_cm
distances= [ 3.688438* A_cm , 3.78170* A_cm, 3.971172* A_cm ]

#BK_L['O_G1']['O_G1']=map(vwpbm_L, distances)
#BK_T['O_G1']['O_G1']=map(vwpbm_T, distances)
 
BK_L['O_G1']['O_G1']=[0]+map(vwpbm_L, distances[1:])
BK_T['O_G1']['O_G1']=[0]+map(vwpbm_T, distances[1:])
SM_L['O_G1']['O_G1']['SS']=[0.0,0.0,0.0]
SM_T['O_G1']['O_G1']['SS']=[0.0,0.0,0.0]
SM_L['O_G1']['O_G1']['SC']=[0.0,0.0,0.0]
SM_T['O_G1']['O_G1']['SC']=[0.0,0.0,0.0]
SM_L['O_G1']['O_G1']['CS']=[0.0,0.0,0.0]
SM_T['O_G1']['O_G1']['CS']=[0.0,0.0,0.0]
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
# Interactions between 'O_G0' and 'La_G0' 
# Shell N0 going from 2.641298 to 2.641298  like O5 in 0 and La0 in 0 0 0 
# Shell N1 going from 4.612777 to 4.612777  like O5 in 0 and La0 in -1 1 0 

BMpar.A= 2000.0 * ev_erg 
BMpar.R= 0.324  * A_cm
distances= [ 2.641298* A_cm, 4.612777* A_cm ]
 
BK_L['O_G0']['La_G0']=map(bm_L, distances)
BK_T['O_G0']['La_G0']=map(bm_T, distances)
SM_L['O_G0']['La_G0']['SS']=[0.0,0.0]
SM_T['O_G0']['La_G0']['SS']=[0.0,0.0]
SM_L['O_G0']['La_G0']['SC']=[0.0,0.0]
SM_T['O_G0']['La_G0']['SC']=[0.0,0.0]
SM_L['O_G0']['La_G0']['CS']=[0.0,0.0]
SM_T['O_G0']['La_G0']['CS']=[0.0,0.0]
# just for symmetry 
SM_L['La_G0']['O_G0']=SM_L['O_G0']['La_G0']
SM_T['La_G0']['O_G0']=SM_T['O_G0']['La_G0']
BK_L['La_G0']['O_G0']=BK_L['O_G0']['La_G0']
BK_T['La_G0']['O_G0']=BK_T['O_G0']['La_G0']
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
# Interactions between 'O_G1' and 'La_G0' 
# Shell N0 going from 2.674066 to 2.674066  like O7 in 0 and La1 in 1 0 0 
# Shell N1 going from 2.935912 to 2.935912  like O7 in 0 and La3 in 0 0 0 

BMpar.A= 2000.0 * ev_erg 
BMpar.R= 0.324  * A_cm
distances= [ 2.674066* A_cm, 2.935912* A_cm ]

#BK_T['O_G1']['La_G0']=Numeric.add(map(bm_T, distances),[-2.0*Nm_dycm,-2.0*Nm_dycm])

BK_L['O_G1']['La_G0']=map(bm_L, distances)
BK_T['O_G1']['La_G0']=map(bm_T, distances)
SM_L['O_G1']['La_G0']['SS']=[0.0,0.0]
SM_T['O_G1']['La_G0']['SS']=[0.0,0.0]
SM_L['O_G1']['La_G0']['SC']=[0.0,0.0]
SM_T['O_G1']['La_G0']['SC']=[0.0,0.0]
SM_L['O_G1']['La_G0']['CS']=[0.0,0.0]
SM_T['O_G1']['La_G0']['CS']=[0.0,0.0]
# just for symmetry 
SM_L['La_G0']['O_G1']=SM_L['O_G1']['La_G0']
SM_T['La_G0']['O_G1']=SM_T['O_G1']['La_G0']
BK_L['La_G0']['O_G1']=BK_L['O_G1']['La_G0']
BK_T['La_G0']['O_G1']=BK_T['O_G1']['La_G0']
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
# Interactions between 'La_G0' and 'La_G0'
# Shell N0 going from 3.688438 to 3.781700  like La2 in 0 and La3 in 0 0 -1 
# Shell N1 going from 3.971172 to 3.971172  like La3 in 0 and La1 in 1 0 0  
BK_L['La_G0']['La_G0']=[]
BK_T['La_G0']['La_G0']=[]
SM_L['La_G0']['La_G0']['SS']=[]
SM_T['La_G0']['La_G0']['SS']=[]
SM_L['La_G0']['La_G0']['SC']=[]
SM_T['La_G0']['La_G0']['SC']=[]
SM_L['La_G0']['La_G0']['CS']=[]
SM_T['La_G0']['La_G0']['CS']=[]








