From: Andrew S. <wac...@go...> - 2013-01-20 09:51:00
|
Hi Qucs team, I've finally had a bit of time to get started on a a basic analog-lead cosimulation interface, Browsing around to find the correct place to force rejection of an otherwise good step (converged etc etc) due to digital simulation events being signalled as occuring sometime in [current, current+delta) I noticed whar appears to be a logic Bug/oddity in the transient solver loop. trsolve.cpp:trsolver::solve() If reject is set (due to non-convergence or due to adjustDelta rejecting the step missing the next sweep time rasterpoint the next iteration of the loop will nonetheless update time to the NEXT raster point in the sweep. Surely time= swp->next(); should be executed only if !rejected ? Cleaner would probably be to seperate fetching the current sweep raster point and steping forward (doing the latter only if the current iteration was !rejected. Or am I missing something here? Best regards, Andrew |
From: Frans S. <fra...@gm...> - 2013-01-20 16:10:03
|
Hi Andrew, We are now building a new team to get Qucs back on the road, at least the activity has been boosted. A couple new people are working on it now (I am also new). I have to get a little more familiar with the way the simulator works, I have now concentrated on the Qt4 part. It seems like you know what you are talking about, why don't you join us? Frans On 01/20/2013 10:50 AM, Andrew Stevens wrote: > Hi Qucs team, > > I've finally had a bit of time to get started on a a basic analog-lead > cosimulation interface, > Browsing around to find the correct place to force rejection of an > otherwise good step (converged etc etc) > due to digital simulation events being signalled as occuring sometime in > [current, current+delta) I noticed whar appears to be a logic Bug/oddity > in the transient solver loop. > > trsolve.cpp:trsolver::solve() > > If reject is set (due to non-convergence or due to adjustDelta rejecting > the step missing the next sweep time rasterpoint the next iteration of > the loop will nonetheless update time to the NEXT raster point in the sweep. > > Surely > > time= swp->next(); > > should be executed only if !rejected ? Cleaner would probably be to > seperate fetching the current sweep raster point and steping forward > (doing the latter only if the current iteration was !rejected. > > Or am I missing something here? > > Best regards, > > Andrew > > > > ------------------------------------------------------------------------------ > Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, > MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current > with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft > MVPs and experts. ON SALE this month only -- learn more at: > http://p.sf.net/sfu/learnmore_123012 > _______________________________________________ > Qucs-devel mailing list > Quc...@li... > https://lists.sourceforge.net/lists/listinfo/qucs-devel |
From: Richard C. <s02...@sm...> - 2013-01-21 13:57:12
|
Hi Andrew, I'm relatively new to Qucs also, but poking around trsolver, I'm not sure what you're saying is correct. I believe the swp object determines the output time steps, and that is all. The real step control is handled by modifying the delta variable in a do loop inside the for loop (at the top of which swp->next() is called). If a time step is rejected, the delta variable is modified and the do loop run again (but without moving on to the next for loop iteration) and swp->next() is not called. If the circuit does not converge the analysis is aborted, both the inner and outer loops exit, and swp->next() is not called (not that it matters in this case anyway). I could be wrong about this though. Regards, Richard On 20/01/2013 09:50, Andrew Stevens wrote: > Hi Qucs team, > > I've finally had a bit of time to get started on a a basic analog-lead > cosimulation interface, > Browsing around to find the correct place to force rejection of an > otherwise good step (converged etc etc) > due to digital simulation events being signalled as occuring sometime in > [current, current+delta) I noticed whar appears to be a logic Bug/oddity > in the transient solver loop. > > trsolve.cpp:trsolver::solve() > > If reject is set (due to non-convergence or due to adjustDelta rejecting > the step missing the next sweep time rasterpoint the next iteration of > the loop will nonetheless update time to the NEXT raster point in the sweep. > > Surely > > time= swp->next(); > > should be executed only if !rejected ? Cleaner would probably be to > seperate fetching the current sweep raster point and steping forward > (doing the latter only if the current iteration was !rejected. > > Or am I missing something here? > > Best regards, > > Andrew > > > > ------------------------------------------------------------------------------ > Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, > MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current > with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft > MVPs and experts. ON SALE this month only -- learn more at: > http://p.sf.net/sfu/learnmore_123012 > _______________________________________________ > Qucs-devel mailing list > Quc...@li... > https://lists.sourceforge.net/lists/listinfo/qucs-devel > -- The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336. |