paramrf 0.37.1__tar.gz → 0.37.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {paramrf-0.37.1/paramrf.egg-info → paramrf-0.37.2}/PKG-INFO +1 -1
- {paramrf-0.37.1 → paramrf-0.37.2/paramrf.egg-info}/PKG-INFO +1 -1
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/__init__.py +1 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/nodal.py +46 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pyproject.toml +1 -1
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_nodal.py +41 -1
- {paramrf-0.37.1 → paramrf-0.37.2}/.github/workflows/docs.yml +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/.github/workflows/draft-pdf.yml +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/.github/workflows/publish.yml +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/.github/workflows/tests.yml +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/.gitignore +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/AGENTS.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/CHANGELOG.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/CITATION.cff +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/CLAUDE.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/CONTEXT.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/CONTRIBUTING.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/LICENSE +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/NOTICE +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/README.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/assets/logo.png +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/Makefile +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/_static/custom.css +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/_templates/autosummary/class.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/_templates/autosummary/function.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/_templates/autosummary/module.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/adr/0001-line-modelling-architecture.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/adr/0002-parameter-api.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/adr/0003-derived-models.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/adr/0004-profiled-lines.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/adr/0005-priors-by-name.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/adr/0006-reference-impedance.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/adr/0007-edge-values.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/agents/domain.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/agents/issue-tracker.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/agents/triage-labels.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/api/index.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/conf.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/core_concepts/core_primitives.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/core_concepts/index.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/core_concepts/jax_overview.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/core_concepts/optimization_and_inference.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/core_concepts/parameter_names.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/cascading_and_terminating.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/circuit_clc.png +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/circuit_models.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/custom_models.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/derivatives_and_sweeps.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/discrepancy_prediction.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/index.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/model_optimization.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/multiple_models_one_parameter_set.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/parameter_naming_and_model_manipulation.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/shared_modules.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/index.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/license.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/make.bat +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/research/conductor-loss-alternatives.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/research/holloway1994.pdf +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/research/microstrip-loss-conventions.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/research/precision-coax-microstrip-10-500mhz.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/skrf_comparison/index.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/skrf_comparison/overview.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/skrf_comparison/performance.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/tutorials/1_cable_fitting.ipynb +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/tutorials/2_chip_inductor_fitting.ipynb +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/tutorials/3_discrepancy_transfer.ipynb +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/tutorials/data/CBN-1.5FT-SMSM.s2p +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/tutorials/data/on-chip-inductor.s2p +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/tutorials/index.rst +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/tutorials/line_internal_discrepancy.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/docs/tutorials/port_discrepancy.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/paper/paper.bib +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/paper/paper.md +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/paper/rlc.png +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/paramrf.egg-info/SOURCES.txt +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/paramrf.egg-info/dependency_links.txt +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/paramrf.egg-info/requires.txt +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/paramrf.egg-info/top_level.txt +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/_solver_view.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/fitting/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/fitting/minimize.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/fitting/result.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/fitting/routers.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/fitting/sample.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/fitting/targets.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/frequency.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/infer/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/infer/base.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/infer/result.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/infer/sample.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/infer/solvers/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/infer/solvers/blackjax.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/infer/solvers/polychord.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/materials/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/materials/conductor.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/materials/dielectric.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/materials/properties.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/materials/roughness.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/materials/substrate.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/materials/surface_impedance.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/math/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/math/aggregations.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/math/bessel.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/math/conversions.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/math/losses.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/math/misc.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/adapters/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/adapters/base.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/adapters/bridge.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/adapters/callable.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/adapters/delegated.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/adapters/derived.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/adapters/static.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/adapters/wrapped.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/base.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/ideal.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/base.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/coaxial.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/empirical.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/ideal.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/microstrip.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/nodal.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/nonuniform.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/planar.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/profiles.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/stripline.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lumped.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/sections.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/cascade.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/circuit/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/circuit/base.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/circuit/circuit.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/circuit/solvers/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/circuit/solvers/nodal.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/circuit/solvers/scattering.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/terminated.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/topological.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/transformed.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/line_discrepancy.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/port_discrepancy.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/surrogates/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/surrogates/expansion.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/surrogates/rational.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/modules/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/modules/base.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/modules/wrapped.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/network_collection.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/objectives/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/objectives/evaluators.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/objectives/losses.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/objectives/problems.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/objectives/terms.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/optimize/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/optimize/base.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/optimize/minimize.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/optimize/result.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/optimize/solvers/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/optimize/solvers/jaxopt.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/optimize/solvers/optimistix.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/optimize/solvers/scipy.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/parameters/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/parameters/constraints.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/rf/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/rf/cascade.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/rf/conversions.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/rf/mna.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/serialization.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/stats/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/stats/bijectors.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/stats/covariance_kernels.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/stats/discrepancy_models.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/stats/distributions.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/stats/likelihoods.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/stats/linearization.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/stats/noise_models.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/types.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/array.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/debug.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/network.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/random.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/rf.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/transforms.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/tree.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/type.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/viz/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/viz/plots.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/scripts/benchmark_gp_marginal_likelihood.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/scripts/install-test-deps.sh +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/setup.cfg +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/__init__.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/_jit.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/conftest.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/data/10m_cable.s2p +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_autodiff.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_box_space_solving.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_conversions.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_covariance_kernels.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_dc_limits.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_discrepancy_models.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_evaluators.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_fitting_minimize.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_fitting_routers.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_fitting_sample.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_fitting_targets.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_frequency.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_grouped_exports.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_infer_base.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_infer_sample.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_line_internal_discrepancy_example.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_linearization.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_map_priors.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_materials/test_conductor.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_materials/test_dielectric.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_materials/test_serialization.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_materials/test_substrate.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_materials/test_surface_impedance.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_math/test_bessel.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_model.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_adapters.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_cascade.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_circuit_native_z0.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_circuit_nodal.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_circuit_port_order.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_circuit_scattering.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_circuit_shorted_ports.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_circuit_skrf_port_names.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_circuit_z0.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_current_distribution.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_derived.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_edge_values.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_interconnected.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_line_discrepancy.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_lines.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_lines_skrf_matrix.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_lumped.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_port_discrepancy.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_profiles.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_rational.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_repeated_cascade.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_sections.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_transformed.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_transformers.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_module.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_naming.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_optimize_base.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_optimize_minimize.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_parameters.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_parameters_by_name.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_parameters_joint_prior.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_parameters_prior.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_parameters_validity.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_port_discrepancy_example.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_raw_space_solving.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_serialization.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_structural_updates.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_terms.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_transforms.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_utils/test_compress.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_utils/test_debug.py +0 -0
- {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_utils/test_tree.py +0 -0
|
@@ -207,6 +207,7 @@ from pmrf.models.composite.transformed import (
|
|
|
207
207
|
from pmrf.models.composite.nodal import (
|
|
208
208
|
FloatingTwoPort as FloatingTwoPort,
|
|
209
209
|
Shunt as Shunt,
|
|
210
|
+
Series as Series,
|
|
210
211
|
GroundLifted as GroundLifted,
|
|
211
212
|
GroundExposed as GroundExposed,
|
|
212
213
|
CoupledOnePorts as CoupledOnePorts,
|
|
@@ -203,6 +203,52 @@ class Shunt(Model):
|
|
|
203
203
|
return renormalize_s(S_shunt, z0_eval, z0, 'power', 'power')
|
|
204
204
|
|
|
205
205
|
|
|
206
|
+
class Series(Model):
|
|
207
|
+
r"""Connect a 1-port impedance in series along a 2-port line.
|
|
208
|
+
|
|
209
|
+
**Mathematical Formulation**
|
|
210
|
+
|
|
211
|
+
At a common reference impedance of 50 ohms, the wrapped 1-port's
|
|
212
|
+
reflection coefficient $\Gamma$ gives
|
|
213
|
+
|
|
214
|
+
$$S_{11} = S_{22} = \frac{1 + \Gamma}{3 - \Gamma}, \qquad
|
|
215
|
+
S_{21} = S_{12} = \frac{2(1 - \Gamma)}{3 - \Gamma}.$$
|
|
216
|
+
|
|
217
|
+
The resulting two-port is then renormalized to the requested reference
|
|
218
|
+
impedance. This form also covers ideal shorts and opens without converting
|
|
219
|
+
the wrapped reflection coefficient to an impedance.
|
|
220
|
+
|
|
221
|
+
Parameters
|
|
222
|
+
----------
|
|
223
|
+
series : Model
|
|
224
|
+
The 1-port model to insert in series.
|
|
225
|
+
|
|
226
|
+
References
|
|
227
|
+
----------
|
|
228
|
+
D. M. Pozar, *Microwave Engineering*, 4th ed., Wiley, 2012, sec. 4.4.
|
|
229
|
+
"""
|
|
230
|
+
#: The 1-port model to insert in series.
|
|
231
|
+
series: Model
|
|
232
|
+
|
|
233
|
+
def __post_init__(self):
|
|
234
|
+
if self.series.nports != 1:
|
|
235
|
+
raise ValueError(
|
|
236
|
+
f"Series requires a 1-port model. Received a {self.series.nports}-port model."
|
|
237
|
+
)
|
|
238
|
+
|
|
239
|
+
def s(self, freq: Frequency, z0: ArrayLike = 50.0) -> jnp.ndarray:
|
|
240
|
+
z0_eval = 50.0
|
|
241
|
+
gamma = self.series.s(freq, z0=z0_eval)[:, 0, 0]
|
|
242
|
+
denom = 3.0 - gamma
|
|
243
|
+
s11 = (1.0 + gamma) / denom
|
|
244
|
+
s21 = 2.0 * (1.0 - gamma) / denom
|
|
245
|
+
s_series = jnp.array([
|
|
246
|
+
[s11, s21],
|
|
247
|
+
[s21, s11],
|
|
248
|
+
]).transpose(2, 0, 1)
|
|
249
|
+
return renormalize_s(s_series, z0_eval, z0, 'power', 'power')
|
|
250
|
+
|
|
251
|
+
|
|
206
252
|
class CoupledOnePorts(Model):
|
|
207
253
|
r"""
|
|
208
254
|
(experimental) Wraps N 1-port models (e.g. inductors) and couples them via a given K-matrix.
|
|
@@ -3,6 +3,7 @@ import pytest
|
|
|
3
3
|
import numpy as np
|
|
4
4
|
import jax.numpy as jnp
|
|
5
5
|
import equinox as eqx
|
|
6
|
+
from skrf.media import DefinedGammaZ0
|
|
6
7
|
|
|
7
8
|
from pmrf.frequency import Frequency
|
|
8
9
|
from pmrf.parameters import Unconstrained
|
|
@@ -10,7 +11,8 @@ from pmrf.rf import s2y
|
|
|
10
11
|
|
|
11
12
|
from pmrf.models import (
|
|
12
13
|
Model, Cascade, Circuit, FloatingLine, FloatingTwoPort, GroundLifted,
|
|
13
|
-
GroundExposed, Shunt, PhaseLine, Port, RLGCLine, Resistor, Short, Open,
|
|
14
|
+
GroundExposed, Shunt, Series, PhaseLine, Port, RLGCLine, Resistor, Short, Open,
|
|
15
|
+
Load,
|
|
14
16
|
Inductor
|
|
15
17
|
)
|
|
16
18
|
from pmrf.models.composite.nodal import CoupledOnePorts, CoupledTwoPorts
|
|
@@ -282,6 +284,44 @@ def test_shunt_invalid_port_count():
|
|
|
282
284
|
with pytest.raises(ValueError, match="Shunt requires a 1-port model"):
|
|
283
285
|
Shunt(shunt=res_model)
|
|
284
286
|
|
|
287
|
+
# ---------------------------------------------------------
|
|
288
|
+
# Series Tests
|
|
289
|
+
# ---------------------------------------------------------
|
|
290
|
+
|
|
291
|
+
@pytest.mark.parametrize("inner, reflection, transmission", [
|
|
292
|
+
(Short(), 0.0, 1.0),
|
|
293
|
+
(Open(), 1.0, 0.0),
|
|
294
|
+
])
|
|
295
|
+
def test_series_ideal_limits(inner, reflection, transmission, basic_freq):
|
|
296
|
+
s = Series(series=inner).s(basic_freq)
|
|
297
|
+
|
|
298
|
+
assert s.shape == (basic_freq.npoints, 2, 2)
|
|
299
|
+
assert jnp.all(jnp.isfinite(s))
|
|
300
|
+
np.testing.assert_allclose(s[:, 0, 0], reflection, atol=1e-12)
|
|
301
|
+
np.testing.assert_allclose(s[:, 1, 1], reflection, atol=1e-12)
|
|
302
|
+
np.testing.assert_allclose(s[:, 0, 1], transmission, atol=1e-12)
|
|
303
|
+
np.testing.assert_allclose(s[:, 1, 0], transmission, atol=1e-12)
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
@pytest.mark.parametrize("resistance", [25.0, 50.0, 200.0])
|
|
307
|
+
@pytest.mark.parametrize("z0", [50.0, 75.0, np.array([45.0, 75.0])])
|
|
308
|
+
def test_series_resistance_matches_skrf(resistance, z0, basic_freq):
|
|
309
|
+
gamma = (resistance - 50.0) / (resistance + 50.0)
|
|
310
|
+
actual = Series(series=Load(gamma=gamma, z0=50.0)).s(basic_freq, z0=z0)
|
|
311
|
+
|
|
312
|
+
# A series element has a singular two-port Z matrix. Construct directly at
|
|
313
|
+
# the target z0: scikit-rf's S -> Z -> S renormalization perturbs that
|
|
314
|
+
# singularity and introduces errors of order 1e-8.
|
|
315
|
+
media = DefinedGammaZ0(basic_freq.to_skrf(), z0=50.0)
|
|
316
|
+
reference = media.resistor(resistance, z0=z0)
|
|
317
|
+
|
|
318
|
+
np.testing.assert_allclose(actual, reference.s, rtol=1e-12, atol=1e-12)
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
def test_series_invalid_port_count():
|
|
322
|
+
with pytest.raises(ValueError, match="Series requires a 1-port model"):
|
|
323
|
+
Series(series=Resistor(R=50.0))
|
|
324
|
+
|
|
285
325
|
# ---------------------------------------------------------
|
|
286
326
|
# CoupledOnePorts Tests
|
|
287
327
|
# ---------------------------------------------------------
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/circuit/solvers/__init__.py
RENAMED
|
File without changes
|
{paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/circuit/solvers/nodal.py
RENAMED
|
File without changes
|
{paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/circuit/solvers/scattering.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|