Hello Intan,
I took a bit of a look at the notebook. Nothing seems explicitly wrong with its code after a relatively quick glance. But since the code takes a long time to run, I cannot run the example much to see the errors being generated on my computer (and I do have a copy of Mathematica version 8, but again, since the run time is long I cannot run it to compare). The error messages that are being returned (which are in your saved notebook) suggest that NDSolve stopped being able to solve at values around 30 (in the first error message case). Hence the possible reason for the subsequent errors involving InterpolationFunciton being evaluated for values larger than that. If there is a pared down version of the notebook that runs quicker but which still exhibits the problems then I could do comparison runs on both versions of Mathematica.
One thing you might do is to work with options to NDSolve to see if explicitly choosing solving methods adjusts the behavior. But, again, having a more quickly running example to play with in the processing of debugging will help you considerably.
Perhaps someone here with greater insight into NDSolve intricacies can chime in...