As Terry kindly provided a working sheet by adding an appropriate value for rho, here some additional remarks:
The calculation of the derivatives fails because of the end values (0s, 20s) as already explained

You may fix this by using try & catch

It may be worth to define a small utility function to do that job

!! !BUT ,,,
You can't assign these values to a variable for later use as its NOT a vector! So of course vectorization does not help at all

Despite of the misleading error message the true reason is (as written in my previous answer) that t is a range, not a vector!.
There is an undocumented trick to turn a range into a vector by following the assignment with an inline evaluation:

t_vec is now a legitimate vector, not a range (unfortunately ranges and vectors look the very same in Prime).
A more "legal" way to create that very same vector is seen here:

Now you can use this vector to create a table for later use - don't forget about vectorization (the arrow over the expression)

or create a more comprehensive table

But of course you still can't evaluate the functions and their derivatives symbolically as you tried to do because the functions derived by OdeSolve are numeric only.

