Esclarecimentos
Closed this issue · 2 comments
#IMPORTANT ASSUMPTIONS ON THIS VERSION:
#-each branch only has one component
issue: why couldn't have 2 or more?
#-the nodes are consecutive starting on 0
question: 0 is always ground?
#-current dependencies are made on branches containing a resistor or a
#independent current source
issue: it's a great limitation, if I understand this assumption. Please clarify it.
1 - Each branch (as in the datastructure) can only have one component, but there can be more than one branch with the same pair of nodes.
2 - Yes, the node 0 is assumed to be the ground node. But as far as i am concerned, that is not a restriction of the algorithm, but a convention. The algorithm calculates tensions between nodes, needless if they are the ground or not. The statement "the nodes are consecutive starting on 0" means that the data-structure fed to the algorithm does not contain a "hole" on the node counting. This is needed to generate the intermediate matrices. This assumption is met by the parser algorithm that after removing superfluous branches and nodes, it renames the nodes in a sequential order.
1 - (Adding to @hlourit 's response ) It can't have 2 or more because it is a base limitation of the MNA algorithm as it is imposed. It treats each "branch" as a component. Practically, there can be more than one component in the same branch, for instance, there can be a voltage source and a resistor in series (making up one branch), but the algorithm would consider this to be two "branches" in series, one "branch" per component, and would still get the correct solution.
This is, in fact, one of the major limitations of the MNA algorithm when its purpose is to make learning node analysis intuitive, because a student would be able to recognise two "branches" in series as only one branch. MNA algorithm can't solve this problem without major modifications. The algorithm is good to obtain results easily and quickly, not so good to make learning intuitive. To make learning intuitive it would be necessary to make an MNA based algorithm, with series branch grouping capabilities.
2 - (Adding to @hlourit 's response ) The node 0 is in fact assumed to be the GND node, and to the algorithm that can be seen as a limitation, because on the MNA Matrix of the circuit, all columns are referenced to node 0, and the nodes need to be in sequential order because each non-zero node number represents the index of the corresponding column on the MNA Matrix. (Gaps in the nodes indices (i. e. non-sequential nodes) wouldn't exactly be a problem, but it would insert empty columns on the Matrix unnecessarily).
3 - Whenever there is a power source with a current dependency based on the current of a certain branch, the algorithm must be able to evaluate the value of the current in the dependency branch. Given this, the algorithm as it is, is only able to evaluate the current values in resistances (Ohm's Law) or independent current sources(Its nominal value).
Nevertheless, the layer before this algorithm, the preprocessor, can make this assumption a little less limiting, because if there is a current dependency on a branch that is not a resistor or a independent current supply, the preprocessor will seek through the adjacent branches (while the current hasn't been split between two branches) to find a resistor or a independent current source.
In conclusion, even though the algorithm only supports current dependencies that are made on branches containing a resistor or a independent current source, the preprocessor makes the circuit solver as a whole resistant to all current dependencies that, while the current isn't split , there is a resistor or a independent current source branch.
In practical terms, the only limitations of the algorithm are when the dependency is based on some other dependency.