def solveCircuit(componentList, GND): # flatten_list is necessary for lists that contain two-ports, # which will be introduced in exercises over the nex few weeks. # It has no effect on lists that contain just one-ports. # Do not remove the following line. componentList = flatten_list(componentList) equations = [] for oneport_instance in componentList: equations.append(oneport_instance.equation) nodes = [] for oneport_instance in componentList: nodes.append(oneport_instance.e1) nodes.append(oneport_instance.e2) nodes = list(set(nodes)) nodes.remove(GND) parts = [] for node in nodes: for oneport_instance in componentList: if node == oneport_instance.e1: parts.append((1,oneport_instance.i)) elif node == oneport_instance.e2: parts.append((-1,oneport_instance.i)) equations.append(parts) parts = [] ground = [(1,GND)] equations.append(ground) return solveEquations(equations,verbose=False)
def solveCircuit(componentList, GND): # flatten_list is necessary for lists that contain two-ports. # It has no effect on lists that contain just one-ports. # Do not remove the following line. componentList = flatten_list(componentList) componentList = [comp for comp in componentList if comp != None] equations = [] # one equation for each component for component in componentList: equations.append(component.equation) # one KCL equation for each node except ground equations.extend(create_kcls(componentList, GND)) # one equation for ground equations.append([(1, GND)]) return solveEquations(equations)