Browse Source

More bugfixes

rparedis 3 years ago
parent
commit
d9687534f0
1 changed files with 4 additions and 20 deletions
  1. 4 20
      src/CBD/loopsolvers/linearsolver.py

+ 4 - 20
src/CBD/loopsolvers/linearsolver.py

@@ -122,12 +122,9 @@ class LinearSolver(Solver):
 		for i, block in enumerate(strongComponent):
 			indexdict[block] = i
 
-		# Get low-level dependency
-		resolveBlock = lambda possibleDep, output_port: possibleDep if not isinstance(possibleDep, CBD) else possibleDep.getBlockByName(output_port)
-
 		# Get list of low-level dependencies from n inputs
 		def getBlockDependencies2(block):
-			return (resolveBlock(port.block, port.name) for port in [block.getBlockConnectedToInput(x) for x in block.getInputPortNames()])
+			return (port.block for port in [x.getPreviousPortClosure() for x in block.getInputPorts()])
 
 		for i, block in enumerate(strongComponent):
 			if block.getBlockType() == "AdderBlock":
@@ -162,28 +159,15 @@ class LinearSolver(Solver):
 			elif block.getBlockType() == "NegatorBlock":
 				# M2 can stay 0
 				M1[i, i] = -1
-				possibleDep = block.getBlockConnectedToInput("IN1")
-				M1[i, indexdict[resolveBlock(possibleDep.block, possibleDep.name)]] = - 1
-			# elif block.getBlockType() == "InputPortBlock":
-			# 	# M2 can stay 0
-			# 	M1[i, i] = 1
-			# 	possibleDep, output_port = block.parent.getBlockConnectedToInput(block.getBlockName())
-			# 	M1[i, indexdict[resolveBlock(possibleDep, output_port)]] = - 1
-			# elif block.getBlockType() == "OutputPortBlock" or block.getBlockType() == "WireBlock":
-			# 	# M2 can stay 0
-			# 	M1[i, i] = 1
-			# 	dblock = block.getDependencies(0)[0]
-			# 	if isinstance(dblock, CBD):
-			# 		oport = block.getLinksIn()['IN1'].output_port
-			# 		dblock = dblock.getBlockByName(oport).getLinksIn()['IN1'].block
-			# 	M1[i, indexdict[dblock]] = - 1
+				possibleDep = block.getInputPortByName("IN1").getPreviousPortClosure()
+				M1[i, indexdict[possibleDep.block]] = - 1
 			elif block.getBlockType() == "DelayBlock":
 				# If a delay is in a strong component, this is the first iteration
 				# And so the dependency is the IC
 				# M2 can stay 0 because we have an equation of the type -x = -ic <=> -x + ic = 0
 				M1[i, i] = -1
 				possibleDep = block.getBlockConnectedToInput("IC")
-				dependency = resolveBlock(possibleDep.block, possibleDep.name)
+				dependency = possibleDep.block
 				assert dependency in strongComponent
 				M1[i, indexdict[dependency]] = 1
 			else: