Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.45 KB | None | 0 0
  1. #//****** Переменные ниже нужно указать самостоятельно ******//
  2. nla = 25.;                    #сколько спинов в системе
  3. g={0:1,2:3,4:5}     # массив ln(g(E)).  Ключем является энергия, значение - ln(g(E))
  4. # Например, если энергия E=5 вырождена 10 раз в системе, то g[5]=ln(10)=2.302585093;
  5. tmin=0.001; #минимальная и максимальная температура, в интервале которых строить
  6. tmax=5;     #термодинамическое усреднение. Для модели Изинга можно оставить как есть
  7. #//****** Переменные выше нужно указать самостоятельно ******//
  8.  
  9.  
  10. iener0 = next(iter(g))
  11.  
  12. for ix in range(int(tmin*1000),int(tmax*1000)):
  13.     x=0.001*ix
  14.     beta=1./x
  15.     gmax=-1000.
  16.  
  17.     for ie in g:
  18.         if g[ie]-beta*(ie-iener0)>gmax:
  19.             gmax=g[ie]-beta*(ie-iener0)
  20.  
  21.     a0=0; ae=0; ae2=0; aecp=0; as2=0;
  22.  
  23.     for ie in g:
  24.         weight=math.exp(g[ie]-beta*(ie-iener0)-gmax)
  25.         a0  += weight
  26.         ae  += weight*ie
  27.         ae2 += weight*ie*ie
  28.  
  29.     aecp=a
  30.  
  31.     ae  /= nla; ae2 /= nla*nla;
  32.     ae  /= a0; ae2 /= a0; aecp /= a0;
  33.  
  34.     as2 = (math.log(a0) + gmax - beta*iener0 + aecp*beta)/nla;
  35.     cv = beta*beta*(ae2-ae*ae)*nla;
  36.  
  37.     printf("%f %e %e %e \n" % (x,ae,cv,as2));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement