I managed to fix it myself by providing an initial guess and placing a conditional expression on the eddy viscosity nu_t so that it doesn't blow up when e = 0.
This still is only the trivial solution (dirichlet bcd everywhere!). I would love it if someone showed me how to implement wall functions!!!!
CODE
from dolfin import *
import matplotlib.pyplot as plt
import numpy as np
parameters["form_compiler"]["cpp_optimize"] = True
parameters["allow_extrapolation"] = True
parameters["num_threads"] = 8
rho = Constant(1.0)
nu = Constant(1.0)
Cmu = Constant(1.0)
C1 = Constant(1.0)
C2 = Constant(1.0)
sigma = Constant(1.0)
cb = Constant(1.0)
l0 = Constant(1.0)
define mesh
mesh = UnitSquareMesh(100, 100)
define functions
V = FunctionSpace(mesh, 'CG', 1)
W = MixedFunctionSpace([V,V,V,V,V])
w = Function(W)
w=interpolate(Expression(("x[0]+x[1]","x[0]+x[1]","x[0]+x[1]","x[0]+x[1]","x[0]+x[1]")),W)
(u, v, p, k, e) = split(w)
(vu, vv, vp, vk, ve) = TestFunctions(W)
bcs=DirichletBC(W,Constant((0.0, 0.0, 0.0, 0.0, 0.0)),DomainBoundary())
define variational form
tol=Constant(0.01)
nu_t = conditional( lt(abs(e),tol), project(Constant(0.0),V), Cmu*(k**2)/e)
Fu = (uDx(u,0)vu + vDx(u,1)vu - pDx(vu,0)/rho + (nu + nu_t)inner(nabla_grad(u),nabla_grad(vu)) \
- 2Dx(nu_t,0)Dx(u,0)vu - Dx(nu_t,1)(Dx(v,0)+Dx(u,1))vu )dx
Fv = (uDx(v,0)vv + vDx(v,1)vv - pDx(vv,1)/rho + (nu + nu_t)inner(nabla_grad(v),nabla_grad(vv))\
- 2Dx(nu_t,1)Dx(v,1)vv - Dx(nu_t,0)(Dx(v,0)+Dx(u,1))vv )dx
Fm = (Dx(u,0)vp + Dx(v,1)vp)*dx
Fk = ((Dx(uk,0)vk + Dx(vk,1)vk + nu_tDx(k,0)Dx(vk,0) + nu_tDx(k,1)Dx(vk,1) \
- nu_t(2(Dx(u,0)2)+(Dx(v,0)+Dx(u,1))2+2*Dx(v,1)**2)*vk + e*vk))*dx
Fk = ((Dx(uk,0)vk + Dx(vk,1)vk + nu_tDx(k,0)Dx(vk,0)+ nu_tDx(k,1)Dx(vk,1) -nu_t*Dx(u,1)**2*vk + e*vk))*dx
Fe = ((Dx(ue,0)ve + Dx(ve,1)ve + nu_tDx(e,0)Dx(ve,0)/sigma + nu_tDx(e,1)Dx(ve,1)/sigma \
-nu_tC1(2Dx(u,0)2+(Dx(v,0)+Dx(u,1))2+2Dx(v,1)2)vee/k + 2C2(e2)ve/k))dx
F = Fu+Fv+Fm+Fk+Fe
find form of jacobian
J = derivative(F, w)
solve
problem = NonlinearVariationalProblem(F, w, bcs, J)
solver = NonlinearVariationalSolver(problem)
prm = solver.parameters['newton_solver']
prm['maximum_iterations'] = 100
prm['absolute_tolerance'] = 1E-3
prm['relative_tolerance'] = 1E-3
solver.solve()