a=10
sol = NDSolve[{x'[t] == -(1 - 1/x[t])Sqrt[1/x[t]], τ'[t] == 1 - 1/x[t], x[0] == a, τ[0] == 0}, {x, τ},  {t, 0, 40}]

Plot[{x[t]/.sol, τ[t]/.sol},{t, 0, 40.0}]

enhance[x_] := If[x≠ 0, 350+(x-350)/5, 0]
basecolor = 100;
τstart =0;
switch[t_] := Module[{τp},  τp = τ[t]/.sol[[1]];If[EvenQ[Floor[20(τp - τstart)]] || (enhance[color[t]] > 1000), False, True]];
switchalwayson[t_] := Module[{τp},  τp = τ[t]/.sol[[1]];If[(enhance[color[t]] > 1000), False, True]];
color[t_] :=  Module[{τp, rp,y}, τp = τ[t]/.sol[[1]];rp = x[t]/. sol[[1]];  basecolor*Sqrt[(1 - 1/a)/(1 -  1/rp)]]

Animate[Graphics[{Polygon[{{-1,-1}, {-1, 1}, {1, 1},  {1, -1}}],ColorData["VisibleSpectrum"][enhance[color[x]]],If[switchalwayson[x],Disk[{0,0}, 0.1],{}]}], {x, 23, 50}, AnimationRepetitions -> 1,  DefaultDuration -> 30]

Plot[Sqrt[1 - 1/r], {r, 10, 1.1}]