Skip to content

Commit e9669a9

Browse files
committed
Fix splitting ports
1 parent f4bc098 commit e9669a9

File tree

1 file changed

+19
-13
lines changed

1 file changed

+19
-13
lines changed

cadet/cadet_dll.py

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -906,45 +906,51 @@ def _load_solution_io(self, sim, data, unitOpId, solution_str, sensIdx=None):
906906
split_ports_data = sim.root.input['return'].get('split_ports_data', 1)
907907
single_as_multi_port = sim.root.input['return'].get('single_as_multi_port', 0)
908908

909-
nComp = dims.index('nComp')
909+
nComp_idx = dims.index('nComp')
910+
nComp = out.shape[nComp_idx]
910911
try:
911-
nPorts = dims.index('nPorts')
912+
nPort_idx = dims.index('nPort')
913+
nPort = out.shape[nPort_idx]
912914
except ValueError:
913-
nPorts = None
915+
nPort_idx = None
916+
nPort = 1
914917

915918
if split_components_data:
916919
if split_ports_data:
917-
if nPorts is None:
920+
if nPort == 1:
918921
if single_as_multi_port:
919-
for comp in range(out.shape[nComp]):
922+
for comp in range(nComp):
920923
comp_out = numpy.squeeze(out[..., comp])
921924
solution[f'{solution_str}_port_000_comp_{comp:03d}'] = comp_out
922925
else:
923-
for comp in range(out.shape[nComp]):
926+
for comp in range(nComp):
924927
comp_out = numpy.squeeze(out[..., comp])
925928
solution[f'{solution_str}_comp_{comp:03d}'] = comp_out
926929
else:
927-
for port in range(out.shape[nPorts]):
928-
for comp in range(out.shape[nComp]):
930+
for port in range(nPort):
931+
for comp in range(nComp):
929932
comp_out = numpy.squeeze(out[..., port, comp])
930933
solution[f'{solution_str}_port_{port:03d}_comp_{comp:03d}'] = comp_out
931934
else:
932-
for comp in range(out.shape[nComp]):
935+
for comp in range(nComp):
933936
comp_out = numpy.squeeze(out[..., comp])
934937
solution[f'{solution_str}_comp_{comp:03d}'] = comp_out
935938
else:
936939
if split_ports_data:
937-
if nPorts is None:
940+
if nPort == 1:
938941
if single_as_multi_port:
939942
solution[f'{solution_str}_port_000'] = out
940943
else:
941-
solution[solution_str] = out
944+
solution[solution_str] = numpy.squeeze(out[..., 0, :])
942945
else:
943-
for port in range(out.shape[nPorts]):
946+
for port in range(nPort):
944947
port_out = numpy.squeeze(out[..., port, :])
945948
solution[f'{solution_str}_port_{port:03d}'] = port_out
946949
else:
947-
solution[solution_str] = out
950+
if nPort == 1 and nPort_idx is not None:
951+
solution[solution_str] = numpy.squeeze(out[..., 0, :])
952+
else:
953+
solution[solution_str] = out
948954

949955
return solution
950956

0 commit comments

Comments
 (0)