Example #1
0
#fields
fieldsF=[sp.Symbol('psi'), sp.Symbol('phi'), sp.Symbol('Ax')]
A=[sp.S(0), fieldsF[1](M.x[0]), fieldsF[2](M.x[0]), sp.S(0)]
psi=fieldsF[0](M.x[0])
fields=[psi,A[1],A[2]]
#Assumptions on the parameters.   -9/4<m^2<-1
ass={m2:-sp.S(2),M.L:1,M.zh:1,alpha3:0,alpha1:0}
m2N=float(m2.subs(ass))
syms=fieldsF+M.x+params+varParams+[M.L,M.zh]


print('Generating Lagrangian...')
try:
    L=sp.sympify(load(open('cache/L')),dict(zip([str(s) for s in syms],syms)))
except IOError:
    L=getLagrangian(M,m2,alpha3,alpha1,alpha2,psi,[A[0],A[1],A[2]*sp.exp(w*M.x[1]),A[3]],verbose=True)
    dump(str(L),open('cache/L','w'))
L=L.subs(ass)
dofs=reduce(lambda a,b:a+b,[[f, f.diff(M.x[0])] for f in fields]) #list of fields and derivatives
dummies=[sp.Dummy('d'+str(i)) for i in range(len(dofs))]
Lfun=sp.lambdify([M.x[0]]+varParams+dummies, L.subs(zip(dofs, dummies)[::-1]).subs(M.x[1],0))


print('Calculating equations of motion...')
eqm=[fieldEqn(L,f,M.x).expand().collect(f) for f in fields]
eqm=[series(e,A[2]).doit().simplify() for e in eqm] #assume small Ax, gives eqm linear in Ax

print('Solving indicial equations...')
try:
    ind=load(open('cache/indicial'))
except IOError:
Example #2
0
fieldsF=[sp.Symbol('psi'), sp.Symbol('phi'), sp.Symbol('Ax'), sp.Symbol('Axf')]
A=[sp.S(0), fieldsF[1](M.x[0]), fieldsF[2](M.x[0],M.x[1]), sp.S(0)]
Axf=fieldsF[3](M.x[0])*sp.exp(M.x[1]*w*sp.I)
psi=fieldsF[0](M.x[0])
fields=[psi,A[1],A[2]]
#Assumptions on the parameters.   -9/4<m^2<-1
ass={m2:-sp.S(2),M.L:1,M.zh:1}
m2N=float(m2.subs(ass))
syms=fieldsF+M.x+params+varParams+[M.L,M.zh]


print('Generating Lagrangian...')
try:
    L=sp.sympify(load(open('cache/L')),dict(zip([str(s) for s in syms],syms)))
except IOError:
    L=getLagrangian(M,m2,0,0,alpha2,psi,A,verbose=True)
    dump(str(L),open('cache/L','w'))
L=L.subs(ass)
dofs=reduce(lambda a,b:a+b,[[f, f.diff(M.x[0])] for f in fields]) #list of fields and derivatives
dummies=[sp.Dummy('d'+str(i)) for i in range(len(dofs))]
Le=L.subs(A[2],0).subs(zip(dofs, dummies)[::-1]).subs(M.x[1],0).doit()
Lfun=sp.lambdify([M.x[0]]+varParams+dummies, Le)


print('Calculating equations of motion...')
eqm=[fieldEqn(L,f,M.x).subs(A[2],0).doit().simplify() for f in fields[:2]]
d=sp.Dummy()
eqm.append(series(fieldEqn(L,A[2],M.x).subs(A[2],d*Axf).doit(),d).subs(d,1).doit().simplify())
oeqm=eqm=[sp.fraction(e.cancel())[0] for e in eqm]
fields[2]=fieldsF[3](M.x[0])
del A
Example #3
0
    #TODO assert that r[0] x r[1] x ... x r[n] == i
    #reduce(lambda a,b:[[(ai,bi) for bi in b]for ai in a],r)
    assert(len(i)==reduce(lambda a,b:a*b, [len(ri) for ri in r]))
    return r

def getExpansion(ind,p,z):
    return [sum(j[0]*z**j[1] for j in zip(p[i], ind[i])) for i in range(len(ind))]

def getExpansionFun(ind,der=0):
    dums=[[sp.Dummy() for i in range(len(ind[j]))] for j in range(len(ind))]
    z=sp.Dummy('z')
    return sp.lambdify(reduce(lambda a,b:a+b,dums)+[z], [e.diff(z,der) for e in getExpansion(ind,dums,z)])

if __name__=="__main__":
    from metric import AdSBHz as M
    #fields, assume only radial dependence
    A=[f(M.x[0]) for f in sp.symbols(['Az','phi','A1','A2'])]
    psi=sp.Symbol('psi')(M.x[0])

    #parameters
    m2,gamma,alpha1,alpha2=sp.symbols(['m2','gamma','alpha1','alpha2'],real=True)

    L=getLagrangian(M,m2,gamma,alpha1,alpha2,psi,*A)
    L=L.subs({m2:-sp.S('2'),M.L:1,M.zh:1,gamma:0,alpha1:0,alpha2:0,A[0]:0,A[2]:0,A[3]:0}).doit()
    eqm=psieqm, phieqm=[fieldEqn(L,f,M.x).expand().collect(f) for f in [psi,A[1]]]

    sp.pprint(frobenius(eqm,[A[1],psi],M.x[0],0,2))
    sp.pprint(frobenius(eqm,[A[1],psi],M.x[0],1,2))