From: Rainer M. <ra...@tb...> - 2006-05-11 14:30:17
|
Dear Tatsunori, I have also sent this email to the official email list with a more specific subject, so people can find it there if they have similar problems. > 1. default conditions > > I entered the following command. > > SBML_odeSolverAPP sample.xml --time 1500 --printstep 150 > sample.txt > > The odes were not solved and the error message as sample.txt was output. > But with the same condition, when I entered > > SMBL_odeSolverApp sample.xml --time 1500 --printstep 150 --error 1e-9 > --rerror 1e-3 --mxstep 1e4 > sample.txt Type SMBL_odeSolverApp --help to find out the actual default values! For my copy of version 1.6.0 I have 1e-4 as a default for rerror. This might the reason for the different behaviour. Sorry, if I gave you a wrong number in one of my previous emails. > 2. If I changed the error tolerance, is there a possibility that the > resolutions will change ? For example, with the same .xml file, at the time > error tolerance is 1e-6 and at the time error tolerance is 1e-12 ? The error tolerances and max. number of steps set via above options are constant throughout one integration. Note, that the tolerances are used for each timestep (the number given via the --printstep option) separately, i.e. errors can accumulate. If you use --printstep 1 and integration succeeds, then you get the results which are actually within this error tolerance. This is also the reason, why SOSlib/CVODES sometimes fails with high error tolerances but succeeds with more restrictive tolerances. The high error tolerances causes errors to accumulate and can lead to numerical instabilities! This should only happen with printsteps > 1 because of above reasons of error accumulation. In a future version, we might provide a simple option to use the error tolerances for the whole time series. This however requires to re-initialize CVODES for every printstep and will significantly slow down the performance! > > 3. How wide are the ranges of conditions, error tolerance, rerror tolerance > and mxstep ? The absolute error should fit to the values of your system. If the time-courses are in the range of, e.g. 1e-10 you should use a similar tolerance. In principle there are no restriction, I think. The relative error tolerances should be below 0 but not go too far below 0. They are relative to the values of the solution time curves. The actual error tolerance is calculated from both values. You will get a message like Integrating CVode-- At t = 0, too much accuracy requested. if you set the error tolerance too low for CVODES. I have to refer to the sundials documentation for the details on error tolerances used in the sundials algorithms. --mxstep must be positive and has no restriction. CVODES will try mxstep times with different internally chosen values (e.g. with increasingly small internal time step h) to reach the next requested output time. We had problems for which --mxstep 1e6 or higher was required to be solved successfully. > 4. Does the smaller error tolerance brings more accurate resolution ? For > example, when I set the error tolerance 1e-16, the resolution will be better > than I set the error tolerance at 1e-12 ? The solutions x(t) will be more accurate with smaller error tolerances: Yes, 1e-16 will give more accurate results than 1e-12, but might take longer to calculate. It might however also be faster, because of error accumulation and numerical instabilities as described above. Taken together, the decision for good settings depends on the system you want to solve. Compare timecourses and performance for different settings and choose accordingly. * If the timecourses looks the same for higher error tolerance, you can use those. * If you don't much about the system you send through SOSlib, e.g. a set of automatically generated models with different structures/parameters/initial conditions you might want to be careful and use higher tolerances. I hope that helped. Keep asking, if you experience further problems! Rainer On Thu, 11 May 2006, Tatsunori Nishimura wrote: > > Dear Dr. Rainer Machne > > > > > My name is Tastunori Nishimura, a student of University of Tsukuba in Japan > (I'm sorry but I'm not a doctor, a mater course student). > > > > I really appreciate your kind advices and help every time. Thank you very > much indeed. > > > > Last time, Im so sorry that I asked you questions when you were very busy. > Im not in hurry, so please reply me when you could make several times. > > > > In my last mail, I asked several questions. Please forgive me asking you > again. I wish to confirm the following points. > > > > 1. default conditions > > I entered the following command. > > > > SBML_odeSolverAPP sample.xml --time 1500 --printstep 150 > sample.txt > > > > The odes were not solved and the error message as sample.txt was output. But > with the same condition, when I entered > > > > SMBL_odeSolverApp sample.xml --time 1500 --printstep 150 --error 1e-9 > --rerror 1e-3 --mxstep 1e4 > sample.txt > > > > the odes were solved. What could be the reason ? I think the conditions are > same. Am I misunderstanding the default values ? > > > > 2. If I changed the error tolerance, is there a possibility that the > resolutions will change ? For example, with the same .xml file, at the time > error tolerance is 1e-6 and at the time error tolerance is 1e-12 ? > > > > 3. How wide are the ranges of conditions, error tolerance, rerror tolerance > and mxstep ? > > > > 4. Does the smaller error tolerance brings more accurate resolution ? For > example, when I set the error tolerance 1e-16, the resolution will be better > than I set the error tolerance at 1e-12 ? > > > > I'm so sorry for the fundamental questions, and asking you several times. > > > > Thank you very much indeed again, and thank you very much in advance for > giving me advices. > > Yours faithfully, > Tatsunori Nishimura > > Tatsunori Nishimura > e-mail: tni...@co... > Tateno Labo. > Computational Life Sciences Group, > Institute of Physics, Graduate School of Pure and Applied Sciences, > University of Tsukuba > |