Exemplo n.º 1
0
def K3cubicA(E, pvec, lp, mp, kvec, l, m):
    p = norm(pvec)
    k = norm(kvec)
    Ep = defns.E2k(E, p)
    Ek = defns.E2k(E, k)
    wp = defns.omega(p)
    wk = defns.omega(k)
    ap = defns.qst(E, p)
    a = defns.qst(E, k)
    pterm = E * wp - 3
    kterm = E * wk - 3

    if lp == l == mp == m == 0:
        D3p = Ep**2 - 4
        D3 = Ek**2 - 4
        out = D3p**3 + D3**3 + 2 * (pterm**3 + kterm**3) + 8 * E**2 * (
            pterm * (p * ap / Ep)**2 + kterm * (k * a / Ek)**2)
    elif lp == 0 and l == 2:
        #out = 16/5 * kterm * (E*a/Ek)**2 * defns.y2real(kvec,m)
        out = 16 / 5 * kterm * (E / Ek)**2 * defns.y2real(
            kvec, m)  # removed a=qk* factor (no q)
    elif lp == 2 and l == 0:
        #out = 16/5 * pterm * (E*ap/Ep)**2 * defns.y2real(pvec,m)
        out = 16 / 5 * pterm * (E / Ep)**2 * defns.y2real(
            pvec, mp)  # removed ap=qp* factor (no q)
    else:
        out = 0

        #out *= ap**lp * a**l   # q factors are NOT included here (no q)

    if out.imag > 1e-15:
        print('Error: imaginary part in K3cubicA')
    return out.real
Exemplo n.º 2
0
def K2inv(E,kvec,l,m,a0,r0,P0,a2):
  k = LA.norm(kvec)
  omk = defns.omega(k)
  E2star = defns.E2k(E,k)
  qk = defns.qst(E,k)
  h = sums.hh(E,k)

  if h==0:
    print('Error: invalid kvec in K2inv')

  if l==m==0:
    out = 1/(32*pi*omk*E2star) * ( -1/a0 + r0*qk**2/2 + P0*r0**3*qk**4 + abs(qk)*(1-h))

  elif l==2 and -2<=m<=2:
    # out = 1/(32*pi*omk*E2star*qk**4) * ( -1/a2**5 + abs(qk)**5*(1-h) )
    out = 1/(32*pi*omk*E2star) * ( -1/a2**5 + abs(qk)**5*(1-h) ) # TB, no q

  else:
    return 0
  
  if out.imag > 1e-15:
    print('Error in K2inv: imaginary part in output')
  else:
    out = out.real
  return out
Exemplo n.º 3
0
def K3cubicB(E, pvec, lp, mp, kvec, l, m):
    #pvec=np.array(pvec); kvec=np.array(kvec)
    p = norm(pvec)
    k = norm(kvec)
    phat = np.array([x / p for x in pvec]) if p != 0 else pvec
    khat = np.array([x / k for x in kvec]) if k != 0 else kvec

    Ep = defns.E2k(E, p)
    Ek = defns.E2k(E, k)
    wp = defns.omega(p)
    wk = defns.omega(k)
    ap = defns.qst(E, p)
    a = defns.qst(E, k)
    # Bp = p/(E-wp); Bk = k/(E-wk)
    # gp = 1/sqrt(1-Bp**2); gk = 1/sqrt(1-Bk**2)
    k_p = np.dot(pvec, kvec)

    # Denote primed (outgoing) momenta with t
    # Denote p_{12}^+ by p12, and p_{12}^- by m12; add t for primed versions

    pstark_vec = K3_defns.pstark(
        E, pvec, kvec)  #gk*Bk*wp*khat + (gk-1)*p*khat_phat*khat + pvec
    kstarp_vec = K3_defns.pstark(
        E, kvec, pvec)  #gp*Bp*wk*phat + (gp-1)*k*khat_phat*phat + kvec
    p12t_stark_vec = K3_defns.p12stark(
        E, pvec, kvec)  #gk*Bk*(E-wp)*khat - (gk-1)*p*khat_phat*khat - pvec
    p12_starp_vec = K3_defns.p12stark(
        E, kvec, pvec)  #gp*Bp*(E-wk)*phat - (gp-1)*k*khat_phat*phat - kvec

    pstark = norm(pstark_vec)
    kstarp = norm(kstarp_vec)
    p12t_stark = norm(p12t_stark_vec)
    p12_starp = norm(p12_starp_vec)

    p3_p3t = wk * wp - k_p
    p12_p12t = (E - wk) * (E - wp) - k_p
    p12_p3t = (E - wk) * wp + k_p
    p3_p12t = (E - wp) * wk + k_p

    t = K3_defns.T(E, pvec, kvec)
    u = np.outer(p12t_stark_vec, p12_starp_vec)  # tensor needed for full U

    if lp == l == mp == m == 0:
        out = p3_p3t**3 + 1/4*( (p12_p3t)**3 + (p3_p12t)**3 ) + p12_p3t*pstark**2*a**2 + p3_p12t*kstarp**2*ap**2 \
        + 1/16*p12_p12t**3 + 1/4*p12_p12t*( p12t_stark**2*a**2 + p12_starp**2*ap**2 ) \
        + 1/3*p12_p12t*a**2*ap**2*Sspher(t,0,0,0,0) + 2/3*a**2*ap**2*Uspher(t,u,0,0,0,0)

    elif lp == mp == 0 and l == 2:
        out = 2/5*p12_p3t*y2real(pstark_vec,m) + 1/10*p12_p12t*y2real(p12t_stark_vec,m) \
        + p12_p12t*ap**2*Sspher(t,0,0,2,m) + 2*ap**2*Uspher(t,u,0,0,2,m) # removed a^2=qk*^2 factor (no q)
        # factor of 1/sqrt(15) that Steve has is inside Sspher and Uspher

    elif lp == 2 and l == m == 0:
        out = 2/5*p3_p12t*y2real(kstarp_vec,mp) + 1/10*p12_p12t*y2real(p12_starp_vec,mp) \
        + p12_p12t*a**2*Sspher(t,2,mp,0,0) + 2*a**2*Uspher(t,u,2,mp,0,0) # removed ap^2=qp*^2 factor (no q)
        # factor of 1/sqrt(15) that Steve has is inside Sspher and Uspher

    elif lp == l == 2:
        out = 3 * p12_p12t * Sspher(t, 2, mp, 2, m) + 6 * Uspher(
            t, u, 2, mp, 2, m)  # removed (ap*a)^2=(qk*qp*)^2 factor (no q)
        # factor of 1/15 that Steve has is inside Sspher and Uspher
    else:
        out = 0

        #out *= ap**lp * a**l   # q factors are NOT included here (no q)

    if out.imag > 1e-15:
        print('Error: imaginary part in K3cubicB')
    return out.real