I'm replaying to myself about the status on grounds in the simulation.
After including the search for ground in the simulation, and applying some
tweaks, all the tests pass now, including the one for the current source.
So now very basic circuits should work reliably.
The ground identification works based on the priority of being ground of
different nodes. Currently only nodes belonging to sources can be ground.
The search is performed on each connected set of nodes (so if there are 2
independent circuits on the document, both will have their own ground).
There are several tweaks in the ground search code, including:
- for 1 node, do nothing (circuit consisting of 1 voltage source)
- if all the nodes of the circuit would become ground, then again don't do
nothing (this was needed to fix one of the test cases...)
For the simulator core, the next logical steps are:
- make the reactive components work
- work on the digital simulation
- figure out how to implement subcircuit simulation
In parallel to these tasks, it's really high time to think about
integrating the simulator with the user interface. If we want to keep the
full history in git, then this is a nontrivial task, because the minimal
simulator branch has only the first commit common with the GUI code. is
there a possibility to rebase the whole minimal simulator to the master,
and then merge it?
Thank you for reading all this,
On Sun, 20 Mar 2011 23:09:47 +0100, Zoltan Padrah
> Hello everybody,
> in this email I'd like to summarize the current situation in the
> In my previous email to the list, I've started discussing the circuit,
> component and connector deletion problems. Now there is progress, as a
> deleted circuit will free all the references towards itself, so in this
> regards there will be no more crashes.
> The way components and connectors are deleted still has to be defined.
> Now, if a connector is placed between 2 nodes belonging to different
> components, when one component is deleted, the connector will be also
> deleted. This can cause dangling pointers, so maybe the use of QPointer
> will be really needed. Another problem is related with the allocation of
> the objects: if the connector between two nodes is allocated on the
> stack (not in the heap), then deleting it will crash the program. This
> needs to be fixed.
> During this week, some bugs have been also fixed, related to building
> the project. Has anybody tried to build the minimal_simulator branch?
> Recently I've focused on the current source component. The almost
> trivial circuit, consisting of a resistor and current source currently
> is not simulated currently, because the ground is not assigned in the
> circuit, and due to this invalid/unsolvable equations appear in the
> By looking at the code, it seems that Circuit::identifyGround() method
> is never called. Anybody has some idea how should the ground
> identification work?
> Later I will focus on fixing the ground identification, and meanwhile
> I'm thinking of how to solve the component/connector deleting problem.
> Also it would be really useful to start to integrate the
> minimal_simulator branch into the used interface, as now simple circuits
> (consisting of resistors and voltage sources) work. Also this way the
> problem of deleting components or connectors from the circuit can be
> better handled, because we will know what exactly is needed.