Skip to content

Commit dec271e

Browse files
nearly finished
1 parent d4a2f75 commit dec271e

File tree

2 files changed

+26
-13
lines changed

2 files changed

+26
-13
lines changed

tidy3d/plugins/smatrix/component_modelers/terminal.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -291,15 +291,24 @@ def get_radiation_monitor_by_name(self, monitor_name: str) -> DirectivityMonitor
291291
def run(self, path_dir: str = DEFAULT_DATA_DIR):
292292
"""Solves for the scattering matrix of the system."""
293293
from tidy3d.plugins.smatrix.data.data import (
294+
MicrowavePortSimulationData,
294295
MicrowaveSMatrixData,
295296
TerminalComponentModelerData,
296297
)
297298

298299
_ = self.get_path_dir(path_dir)
299300
# _ = self._upload_terminal_modeler()
300-
batch_data = self._construct_smatrix()
301-
smatrix_data = MicrowaveSMatrixData(batch_data=batch_data)
302-
return TerminalComponentModelerData(simulation=self, data=smatrix_data)
301+
terminal_port_data = self._construct_smatrix()
302+
303+
port_to_sim_data_map = {
304+
port: self.simulation.batch_data[self.simulation._task_name(port=port)]
305+
for port in self.simulation.ports
306+
}
307+
port_simulation_data = MicrowavePortSimulationData(data=port_to_sim_data_map)
308+
smatrix_data = MicrowaveSMatrixData(data=terminal_port_data)
309+
return TerminalComponentModelerData(
310+
simulation=self, smatrix_data=smatrix_data, port_simulation_data=port_simulation_data
311+
)
303312

304313
##### Backwards compatibility methods #####
305314
@staticmethod
@@ -342,7 +351,7 @@ def _monitor_data_at_port_amplitude(
342351

343352
smatrix_data = MicrowaveSMatrixData(data=self._construct_smatrix())
344353
data = TerminalComponentModelerData(
345-
simulation=self, data=smatrix_data
354+
simulation=self, smatrix_data=smatrix_data
346355
)._monitor_data_at_port_amplitude(
347356
port=port, sim_data=sim_data, monitor_data=monitor_data, a_port=a_port
348357
)
@@ -356,7 +365,7 @@ def _port_reference_impedances(self, batch_data) -> PortDataArray:
356365

357366
smatrix_data = MicrowaveSMatrixData(data=self._construct_smatrix())
358367
data = TerminalComponentModelerData(
359-
simulation=self, data=smatrix_data
368+
simulation=self, smatrix_data=smatrix_data
360369
).port_reference_impedances
361370
return data
362371

@@ -498,7 +507,7 @@ def get_antenna_metrics_data(
498507

499508
smatrix_data = MicrowaveSMatrixData(data=self._construct_smatrix())
500509
data = TerminalComponentModelerData(
501-
simulation=self, data=smatrix_data
510+
simulation=self, smatrix_data=smatrix_data
502511
).get_antenna_metrics_data(port_amplitudes=port_amplitudes, monitor_name=monitor_name)
503512
return data
504513

@@ -514,7 +523,7 @@ def port_reference_impedances(self) -> PortDataArray:
514523

515524
smatrix_data = MicrowaveSMatrixData(data=self._construct_smatrix())
516525
data = TerminalComponentModelerData(
517-
simulation=self, data=smatrix_data
526+
simulation=self, smatrix_data=smatrix_data
518527
).port_reference_impedances
519528
return data
520529

tidy3d/plugins/smatrix/data/data.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,16 @@ class TerminalComponentModelerData(Tidy3dBaseModel):
6565
"and from which this data was generated.",
6666
)
6767

68-
data: Union[MicrowaveSMatrixData, MicrowavePortSimulationData] = pd.Field(
68+
smatrix_data: MicrowaveSMatrixData = pd.Field(
6969
...,
70-
title="Microwave Data",
71-
description="The primary data output of the simulation. This can either be the computed "
72-
":class:`MicrowaveSMatrixData` containing the final S-parameters, or the "
73-
"raw :class:`MicrowavePortSimulationData` if the S-matrix computation was not performed.",
70+
title="S-Matrix Data",
71+
description="Stores the computed S-matrix and reference impedances for the terminal ports",
72+
)
73+
74+
port_simulation_data: MicrowavePortSimulationData = pd.Field(
75+
...,
76+
title="Port-Simulation Data",
77+
description="Stores raw simulation data from each microwave port-specific simulation.",
7478
)
7579

7680
log: str = pd.Field(
@@ -162,7 +166,7 @@ def get_antenna_metrics_data(
162166
# Retrieve associated simulation data
163167
combined_directivity_data = None
164168
for port, amplitude in port_dict.items():
165-
sim_data_port = self.simulation.batch_data[self.simulation._task_name(port=port)]
169+
sim_data_port = self.port_simulation_data.data[port]
166170
radiation_data = sim_data_port[rad_mon.name]
167171

168172
a, b = compute_power_wave_amplitudes_at_each_port(

0 commit comments

Comments
 (0)