Files
tono/tests/node_tests/smm_analysis.py

71 lines
2.0 KiB
Python

import numpy as np
import pytest
from tests.node_tests._shared import make_field
def _make_inputs():
"""Return amplitude and phase fields suitable for SMM analysis."""
raw = np.abs(make_field().data)
amplitude_data = raw / raw.max() * 0.8 + 0.1
amplitude = make_field(data=amplitude_data)
phase = make_field()
return amplitude, phase
def test_output_shapes():
from backend.nodes.smm_analysis import SMMAnalysis
node = SMMAnalysis()
amplitude, phase = _make_inputs()
cap, imp = node.process(
amplitude, phase,
frequency=1e9, ref_impedance=50.0,
cal_c1=1e-15, cal_c2=10e-15, cal_c3=100e-15,
cal_s11_1=0.9, cal_s11_2=0.5, cal_s11_3=0.1,
)
assert cap.data.shape == amplitude.data.shape
assert imp.data.shape == amplitude.data.shape
def test_finite_outputs():
from backend.nodes.smm_analysis import SMMAnalysis
node = SMMAnalysis()
amplitude, phase = _make_inputs()
cap, imp = node.process(
amplitude, phase,
frequency=1e9, ref_impedance=50.0,
cal_c1=1e-15, cal_c2=10e-15, cal_c3=100e-15,
cal_s11_1=0.9, cal_s11_2=0.5, cal_s11_3=0.1,
)
assert np.isfinite(cap.data).all()
assert np.isfinite(imp.data).all()
def test_capacitance_units():
from backend.nodes.smm_analysis import SMMAnalysis
node = SMMAnalysis()
amplitude, phase = _make_inputs()
cap, _imp = node.process(
amplitude, phase,
frequency=1e9, ref_impedance=50.0,
cal_c1=1e-15, cal_c2=10e-15, cal_c3=100e-15,
cal_s11_1=0.9, cal_s11_2=0.5, cal_s11_3=0.1,
)
assert cap.si_unit_z == "F"
def test_impedance_units():
from backend.nodes.smm_analysis import SMMAnalysis
node = SMMAnalysis()
amplitude, phase = _make_inputs()
_cap, imp = node.process(
amplitude, phase,
frequency=1e9, ref_impedance=50.0,
cal_c1=1e-15, cal_c2=10e-15, cal_c3=100e-15,
cal_s11_1=0.9, cal_s11_2=0.5, cal_s11_3=0.1,
)
assert imp.si_unit_z == "Ohm"