basavyr

Untitled

Jul 29th, 2018
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.65 KB | None | 0 0
  1. import numpy as np
  2. from numpy import pi, r_
  3. import matplotlib.pyplot as plt
  4. from scipy import optimize
  5. import csv
  6. from scipy.optimize import curve_fit
  7. from math import cos,sin,sqrt
  8.  
  9. class MyData:
  10.     spin=[]
  11.     energy=[]
  12.     tag=[]
  13. mydata=MyData()
  14.  
  15. with open('tsd1.csv','r') as csv_file:
  16.     file=csv.reader(csv_file)
  17.     for i in file:
  18.         x=i[0]
  19.         mydata.spin.append(float(x))
  20.         y=i[1]
  21.         mydata.energy.append(float(y))
  22.         z=1
  23.         mydata.tag.append(int(z))
  24.  
  25. #pre-requisites
  26. def moi(angle,k):
  27.     pi=3.141592654
  28.     beta=0.38
  29.     result=1.0/(1+pow(5.0/(16.0*pi),0.5)*beta)*(1-pow(5.0/(4*pi),0.5)*beta*cos(angle*pi/180.0+(2.0/3.0)*pi*k))
  30.     return result
  31. def a1(angle):
  32.     return 1.0/(2.0*moi(angle,1))
  33. def a2(angle):
  34.     return 1.0/(2.0*moi(angle,2))
  35. def a3(angle):
  36.     return 1.0/(2.0*moi(angle,3))
  37. def n1(spin,angle):
  38.     rad3=sqrt(3.0)
  39.     gamma=angle*pi/180.0
  40.     result=(2*spin-1)/(spin*(spin+1))*rad3*(rad3*cos(gamma)+sin(gamma))
  41.     return result
  42. def n2(spin,angle):
  43.     rad3=sqrt(3.0)
  44.     gamma=angle*pi/180.0
  45.     result=(2*spin-1)/(spin*(spin+1))*2*rad3*sin(gamma)
  46.     return result
  47. def t1(spin,angle,singleparticle,izero):
  48.     result=(2*spin-1)*(1.0/izero*a3(angle)-1.0/izero*a1(angle))+2*singleparticle*1/izero*a1(angle)
  49.     return result
  50. def t2(spin,angle,singleparticle,izero):
  51.     result=(2*spin-1)*(1.0/izero*a2(angle)-1.0/izero*a1(angle))+2*singleparticle*1/izero*a1(angle)
  52.     return result
  53. def t3(spin,angle,singleparticle,izero,v):
  54.     result=(2*singleparticle-1)*(1.0/izero*a3(angle)-1.0/izero*a1(angle))+2.0*spin*1.0/izero*a1(angle)+v*n1(singleparticle,angle)
  55.     return result
  56. def t4(spin,angle,singleparticle,izero,v):
  57.     rad3=sqrt(3.0)
  58.     gamma=angle*pi/180.0
  59.     result=(2*singleparticle-1)*(1.0/izero*a2(angle)-1.0/izero*a1(angle))+2.0*spin*1.0/izero*a1(angle)+v*n2(singleparticle,angle)
  60.     return result
  61. def big1(spin,angle,singleparticle,izero,v):
  62.     minus=-1
  63.     result=(t1(spin,angle,singleparticle,izero)*t2(spin,angle,singleparticle,izero))+8.0*spin*singleparticle*(1.0/izero)*(1.0/izero)*a2(angle)*a3(angle)+t3(spin,angle,singleparticle,izero,v)*t4(spin,angle,singleparticle,izero,v)
  64.     return result*minus
  65. def big2(spin,angle,singleparticle,izero,v):
  66.     result=(t1(spin,angle,singleparticle,izero)*t3(spin,angle,singleparticle,izero,v)-4*spin*singleparticle*(1.0/izero)*(1/izero)*a3(angle)*a3(angle))*(t2(spin,angle,singleparticle,izero)*t4(spin,angle,singleparticle,izero,v)-4*spin*singleparticle*(1.0/izero)*(1/izero)*a2(angle)*a2(angle))
  67.     return result
  68. def omega1(spin,angle,singleparticle,izero,v):
  69.     minus=-1
  70.     result=sqrt(0.5*(minus*big1(spin,angle,singleparticle,izero,v)-sqrt(pow(big1(spin,angle,singleparticle,izero,v),2)-4*big2(spin,angle,singleparticle,izero,v))))
  71.     return result
  72. def omega2(spin,angle,singleparticle,izero,v):
  73.     minus=-1
  74.     result=sqrt(0.5*(minus*big1(spin,angle,singleparticle,izero,v)+sqrt(pow(big1(spin,angle,singleparticle,izero,v),2)-4*big2(spin,angle,singleparticle,izero,v))))
  75.     return result
  76. def hmin(spin,angle,singleparticle,izero,v):
  77.     gamma=angle*pi/180.0
  78.     result=(1.0/izero*a2(angle)+1.0/izero*a3(angle))*0.5*(spin+singleparticle)+pow(spin-singleparticle,2)*1/izero*a1(angle)-v*(2*singleparticle-1)/(singleparticle+1)*sin(gamma+pi/6.0)
  79.     return result
  80. def tsd1(spin,angle,singleparticle,izero,v):
  81.     pi=3.141592654
  82.     result=hmin(spin,angle,singleparticle,izero,v)+0.5*(omega1(spin,angle,singleparticle,izero,v)+omega2(spin,angle,singleparticle,izero,v))
  83.     return result
  84. def fun1(x,a,b):
  85.     result=tsd1(x,17,6.5,a,b)
  86.     return result
  87.  
  88. params, extras = curve_fit(fun1,mydata.spin,mydata.energy)
  89. print(params)
Add Comment
Please, Sign In to add comment