About the code structure: ok About the algorithm, yes, that's right. About schreiner: I don't get it. It's just something like <10 operations more per iteration and we can calculate it not every second but every sample... For me it sounds like it should be faster. But for now I won't touch it, it's something that can be checked / changed easily later.
2015-05-27 21:38 GMT+02:00 Robert C. Helling <[email protected]>: > > On 27 May 2015, at 19:22, Jan Darowski <[email protected]> wrote: > > Hi Jan, > >> The most important thing is if we want both algorithms to be >> calculated for the current dive and just one of them displayed or >> should we recalculate the plan depending on the chosen algorithm? > > Let’s go with one algorithm at a time (selected by a preference and combo > box). At least for a start. > >> >> Should I put the new algorithm into current deco. files or should I >> look for some way to split them? Right now, there is a lot of things >> in deco which I need in vpmb implementation. > > Again, to get started (we might split files later) add stuff to deco.c and/or > planner.c >> >> Right now, planner has an ugly plan() function which among others >> implements the main logic of the current deco algorithm. Can I add >> plan_buehlmann and plan_vpmb() which will be called from the current >> plan() function? > > That function has grown over quite some history. Part of the reason why it is > so long is that it has to set up a lot of state. > > The other thing that takes up a lot of space is handling gas changes. > > But I believe, most of that function would be shared between Buehlmann and > VPM. In fact almost everything, as the only differences are in > tissue_tolerance_calc in deco.c. For VPM tolerated = > tissue_inertgas_saturation[ci] - constant. > > The only thing is how to fix the constant: You start with a trial constant, > calculate a deco schedule (as for Buehlmann with the above noted difference) > and for that calculate volume = constant * total_deco_time (plus some surface > correction). This volume has to be below a certain value. If it is too big, > you decrease the constant and calculate a new deco schedule and thus a new > total_deco_time and repeat until you are below the wanted volume. > > So part of the planning has to be called in this trial and error loop before > the eventual constant is found. > > At least this is my understanding of basic VPM (there is also some “Boyle > correction” but that is really only a correction to this basic algorithm). > Correct me if I am wrong. > > Speaking of wrong: What I said in an earlier mail about the reason why > transitions in the manually entered part of the dive are interpolated in > second intervals was just wrong (I was on the phone and did not have the code > for reference). Indeed that part could be replaced by the Schreiner equation. > But honestly, I don’t think this would make too much of a difference: This > function is not called too often and thanks to Linus’ caching of factors, it > does only multiplications while the Schreiner equation needs exponentials so > I doubt that that an implementation of Schreiner here would shave off too > much execution time. > > Best > Robert > > -- > .oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oO > Robert C. Helling Elite Master Course Theoretical and Mathematical Physics > Scientific Coordinator > Ludwig Maximilians Universitaet Muenchen, Dept. Physik > print "Just another Phone: +49 89 2180-4523 Theresienstr. 39, rm. B339 > stupid .sig\n"; http://www.atdotde.de > _______________________________________________ subsurface mailing list [email protected] http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface
