From: Soeren D. S. <soe...@gm...> - 2013-09-06 09:37:12
|
Hi everyone, as described before, I'm currently refactoring Qucs' transient solver into an update-based scheme in order to overcome difficulties with small step sizes and (therefore) badly-conditioned Jacobians (see the branch "numerical_improvements"). I'm almost done; only the "transientCapacitance*" functions still need to be ported. >From reading the source code, this is how _I understand_ them. * "transientCapacitance" computes a non-linear capacitance Q=f(V), where V is the voltage across the capacitor plates. * "transientCapacitanceC" computes a linear capacitance Q=C*V, where V may be a voltage somewhere else in the circuit. * "transientCapacitanceQ" computes Q=f(t), i.e., a charge that doesn't depend on any voltage. * In Verilog-generated code, the latter two are used together in order to model a general non-linear capacitance Q=f(V), where V may, again, be anywhere in the circuit. Is this correct? "transientCapacitance" and "transientCapacitanceQ" currently use a "qstate" to save the charge; in order to port them, I'm going to turn this into a state variable in the x vector (if we eventually use a sparse-matrix representation, this won't be a speed issue at all). Does anyone have an insight in the Verilog-generated components? I'm not sure how to test my changes. Sören |
From: roucaries b. <rou...@gm...> - 2013-09-06 16:55:48
|
On Fri, Sep 6, 2013 at 11:37 AM, Soeren D. Schulze <soe...@gm...> wrote: > Hi everyone, > > as described before, I'm currently refactoring Qucs' transient solver > into an update-based scheme in order to overcome difficulties with small > step sizes and (therefore) badly-conditioned Jacobians (see the branch > "numerical_improvements"). I'm almost done; only the > "transientCapacitance*" functions still need to be ported. > > From reading the source code, this is how _I understand_ them. > > * "transientCapacitance" computes a non-linear capacitance Q=f(V), where > V is the voltage across the capacitor plates. > > * "transientCapacitanceC" computes a linear capacitance Q=C*V, where V > may be a voltage somewhere else in the circuit. > > * "transientCapacitanceQ" computes Q=f(t), i.e., a charge that doesn't > depend on any voltage. > > * In Verilog-generated code, the latter two are used together in order > to model a general non-linear capacitance Q=f(V), where V may, again, be > anywhere in the circuit. > > Is this correct? > > "transientCapacitance" and "transientCapacitanceQ" currently use a > "qstate" to save the charge; in order to port them, I'm going to turn > this into a state variable in the x vector (if we eventually use a > sparse-matrix representation, this won't be a speed issue at all). > > Does anyone have an insight in the Verilog-generated components? I'm > not sure how to test my changes. i second here. i want to port to recent inverter admsxml and I wish if it is possible to get some use case with abort/assert in order to test regression during porting > > > Sören > > ------------------------------------------------------------------------------ > Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more! > Discover the easy way to master current and previous Microsoft technologies > and advance your career. Get an incredible 1,500+ hours of step-by-step > tutorial videos with LearnDevNow. Subscribe today and save! > http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.clktrk > _______________________________________________ > Qucs-devel mailing list > Quc...@li... > https://lists.sourceforge.net/lists/listinfo/qucs-devel |
From: Soeren D. S. <soe...@gm...> - 2013-09-07 11:36:14
|
OK, I'm porting the hand-coded semiconductor devices right now. It works well, but the use of "transientCapacitanceC" in bjt.cpp seems a bit dubious to me. If I understand it right, it effectively does Backward Euler now, independent of the chosen integrator method. Shouldn't there be an additional call to "transientCapacitanceQ" in order to enable higher-order methods? Is the trans-capacitance supposed to be linear, or was the model simplified for technical reasons? Thanks Sören |