renorm.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. ######################################################
  2. #
  3. # Fock space Hamiltonian truncation for phi^4 theory in 2 dimensions
  4. # Authors: Slava Rychkov (slava.rychkov@lpt.ens.fr) and Lorenzo Vitale (lorenzo.vitale@epfl.ch)
  5. # December 2014
  6. #
  7. ######################################################
  8. import sys
  9. import math
  10. from math import log, pi
  11. from scipy import integrate
  12. import numpy
  13. import scipy
  14. """
  15. These functions correspond to kappa_0, kappa_2, and kappa_4 as given in Eq. 3.34
  16. in arXiv:1412.3460v6. Given the original couplings g2 and g4 as well as a
  17. reference energy (taken to be the vacuum energy in the raw truncation), we
  18. can compute the effect on the couplings of integrating out the high-energy
  19. states rather than just truncating the basis, and then numerically diagonalize
  20. with respect to the renormalized couplings.
  21. """
  22. def ft0(g2, g4, E, cutoff=0.):
  23. if E<cutoff:
  24. return 0.
  25. else:
  26. return (g2**2/pi + g4**2*(-3/(2*pi) + 18/pi**3 * log(E)**2))/(E**2)
  27. def ft2(g2, g4, E, cutoff=0.):
  28. if E<cutoff:
  29. return 0.
  30. else:
  31. return (g2*g4*12/pi + g4**2*72/pi**2 * log(E))/(E**2)
  32. def ft4(g2, g4, E, cutoff=0.):
  33. if E<cutoff:
  34. return 0.
  35. else:
  36. return (g4**2 * 36/pi) / (E**2)
  37. def renlocal(g2, g4, Emax, Er):
  38. g0r = - integrate.quad(lambda E: ft0(g2,g4,E)/(E-Er),Emax,numpy.inf)[0]
  39. g2r = g2 - integrate.quad(lambda E: ft2(g2,g4,E)/(E-Er),Emax,numpy.inf)[0]
  40. g4r = g4 - integrate.quad(lambda E: ft4(g2,g4,E)/(E-Er),Emax,numpy.inf)[0]
  41. return [g0r,g2r,g4r]
  42. def rensubl(g2, g4, Ebar, Emax, Er, cutoff):
  43. ktab = scipy.linspace(0.,Emax,30,endpoint=True)
  44. rentab = [[0.,0.,0.] for k in ktab]
  45. for i,k in enumerate(ktab):
  46. g0subl = - integrate.quad(lambda E: ft0(g2,g4,E-k,cutoff)/(E-Ebar) - ft0(g2,g4,E,cutoff)/(E-Er),Emax,numpy.inf)[0]
  47. g2subl = - integrate.quad(lambda E: ft2(g2,g4,E-k,cutoff)/(E-Ebar) - ft2(g2,g4,E,cutoff)/(E-Er),Emax,numpy.inf)[0]
  48. g4subl = - integrate.quad(lambda E: ft4(g2,g4,E-k,cutoff)/(E-Ebar) - ft4(g2,g4,E,cutoff)/(E-Er),Emax,numpy.inf)[0]
  49. rentab[i] = [g0subl, g2subl, g4subl]
  50. return ktab,numpy.array(rentab)