synthetic surface and spm specific features
This commit is contained in:
70
tests/node_tests/smm_analysis.py
Normal file
70
tests/node_tests/smm_analysis.py
Normal file
@@ -0,0 +1,70 @@
|
||||
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"
|
||||
Reference in New Issue
Block a user