|Nasser M. Abbasi|
few more things which should help you solve your problem:
When you use NDSolve, everything in there (other than the equations dependent and independent variables) need to have a numerical value.
But look at your sol[r_] function. NDSolve there uses a symbol 'u' which has no numerical value attached to it.
So you need to take care of that. Also for adj[r].
You could have found this problem very easily by calling that function on its own like I did. I simply typed sol and saw the problem.