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.
Files changed (267) hide show
  1. {paramrf-0.37.1/paramrf.egg-info → paramrf-0.37.2}/PKG-INFO +1 -1
  2. {paramrf-0.37.1 → paramrf-0.37.2/paramrf.egg-info}/PKG-INFO +1 -1
  3. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/__init__.py +1 -0
  4. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/nodal.py +46 -0
  5. {paramrf-0.37.1 → paramrf-0.37.2}/pyproject.toml +1 -1
  6. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_nodal.py +41 -1
  7. {paramrf-0.37.1 → paramrf-0.37.2}/.github/workflows/docs.yml +0 -0
  8. {paramrf-0.37.1 → paramrf-0.37.2}/.github/workflows/draft-pdf.yml +0 -0
  9. {paramrf-0.37.1 → paramrf-0.37.2}/.github/workflows/publish.yml +0 -0
  10. {paramrf-0.37.1 → paramrf-0.37.2}/.github/workflows/tests.yml +0 -0
  11. {paramrf-0.37.1 → paramrf-0.37.2}/.gitignore +0 -0
  12. {paramrf-0.37.1 → paramrf-0.37.2}/AGENTS.md +0 -0
  13. {paramrf-0.37.1 → paramrf-0.37.2}/CHANGELOG.md +0 -0
  14. {paramrf-0.37.1 → paramrf-0.37.2}/CITATION.cff +0 -0
  15. {paramrf-0.37.1 → paramrf-0.37.2}/CLAUDE.md +0 -0
  16. {paramrf-0.37.1 → paramrf-0.37.2}/CONTEXT.md +0 -0
  17. {paramrf-0.37.1 → paramrf-0.37.2}/CONTRIBUTING.md +0 -0
  18. {paramrf-0.37.1 → paramrf-0.37.2}/LICENSE +0 -0
  19. {paramrf-0.37.1 → paramrf-0.37.2}/NOTICE +0 -0
  20. {paramrf-0.37.1 → paramrf-0.37.2}/README.rst +0 -0
  21. {paramrf-0.37.1 → paramrf-0.37.2}/assets/logo.png +0 -0
  22. {paramrf-0.37.1 → paramrf-0.37.2}/docs/Makefile +0 -0
  23. {paramrf-0.37.1 → paramrf-0.37.2}/docs/_static/custom.css +0 -0
  24. {paramrf-0.37.1 → paramrf-0.37.2}/docs/_templates/autosummary/class.rst +0 -0
  25. {paramrf-0.37.1 → paramrf-0.37.2}/docs/_templates/autosummary/function.rst +0 -0
  26. {paramrf-0.37.1 → paramrf-0.37.2}/docs/_templates/autosummary/module.rst +0 -0
  27. {paramrf-0.37.1 → paramrf-0.37.2}/docs/adr/0001-line-modelling-architecture.md +0 -0
  28. {paramrf-0.37.1 → paramrf-0.37.2}/docs/adr/0002-parameter-api.md +0 -0
  29. {paramrf-0.37.1 → paramrf-0.37.2}/docs/adr/0003-derived-models.md +0 -0
  30. {paramrf-0.37.1 → paramrf-0.37.2}/docs/adr/0004-profiled-lines.md +0 -0
  31. {paramrf-0.37.1 → paramrf-0.37.2}/docs/adr/0005-priors-by-name.md +0 -0
  32. {paramrf-0.37.1 → paramrf-0.37.2}/docs/adr/0006-reference-impedance.md +0 -0
  33. {paramrf-0.37.1 → paramrf-0.37.2}/docs/adr/0007-edge-values.md +0 -0
  34. {paramrf-0.37.1 → paramrf-0.37.2}/docs/agents/domain.md +0 -0
  35. {paramrf-0.37.1 → paramrf-0.37.2}/docs/agents/issue-tracker.md +0 -0
  36. {paramrf-0.37.1 → paramrf-0.37.2}/docs/agents/triage-labels.md +0 -0
  37. {paramrf-0.37.1 → paramrf-0.37.2}/docs/api/index.rst +0 -0
  38. {paramrf-0.37.1 → paramrf-0.37.2}/docs/conf.py +0 -0
  39. {paramrf-0.37.1 → paramrf-0.37.2}/docs/core_concepts/core_primitives.rst +0 -0
  40. {paramrf-0.37.1 → paramrf-0.37.2}/docs/core_concepts/index.rst +0 -0
  41. {paramrf-0.37.1 → paramrf-0.37.2}/docs/core_concepts/jax_overview.rst +0 -0
  42. {paramrf-0.37.1 → paramrf-0.37.2}/docs/core_concepts/optimization_and_inference.rst +0 -0
  43. {paramrf-0.37.1 → paramrf-0.37.2}/docs/core_concepts/parameter_names.rst +0 -0
  44. {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/cascading_and_terminating.rst +0 -0
  45. {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/circuit_clc.png +0 -0
  46. {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/circuit_models.rst +0 -0
  47. {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/custom_models.rst +0 -0
  48. {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/derivatives_and_sweeps.rst +0 -0
  49. {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/discrepancy_prediction.rst +0 -0
  50. {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/index.rst +0 -0
  51. {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/model_optimization.rst +0 -0
  52. {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/multiple_models_one_parameter_set.rst +0 -0
  53. {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/parameter_naming_and_model_manipulation.rst +0 -0
  54. {paramrf-0.37.1 → paramrf-0.37.2}/docs/examples/shared_modules.rst +0 -0
  55. {paramrf-0.37.1 → paramrf-0.37.2}/docs/index.rst +0 -0
  56. {paramrf-0.37.1 → paramrf-0.37.2}/docs/license.rst +0 -0
  57. {paramrf-0.37.1 → paramrf-0.37.2}/docs/make.bat +0 -0
  58. {paramrf-0.37.1 → paramrf-0.37.2}/docs/research/conductor-loss-alternatives.md +0 -0
  59. {paramrf-0.37.1 → paramrf-0.37.2}/docs/research/holloway1994.pdf +0 -0
  60. {paramrf-0.37.1 → paramrf-0.37.2}/docs/research/microstrip-loss-conventions.md +0 -0
  61. {paramrf-0.37.1 → paramrf-0.37.2}/docs/research/precision-coax-microstrip-10-500mhz.md +0 -0
  62. {paramrf-0.37.1 → paramrf-0.37.2}/docs/skrf_comparison/index.rst +0 -0
  63. {paramrf-0.37.1 → paramrf-0.37.2}/docs/skrf_comparison/overview.rst +0 -0
  64. {paramrf-0.37.1 → paramrf-0.37.2}/docs/skrf_comparison/performance.rst +0 -0
  65. {paramrf-0.37.1 → paramrf-0.37.2}/docs/tutorials/1_cable_fitting.ipynb +0 -0
  66. {paramrf-0.37.1 → paramrf-0.37.2}/docs/tutorials/2_chip_inductor_fitting.ipynb +0 -0
  67. {paramrf-0.37.1 → paramrf-0.37.2}/docs/tutorials/3_discrepancy_transfer.ipynb +0 -0
  68. {paramrf-0.37.1 → paramrf-0.37.2}/docs/tutorials/data/CBN-1.5FT-SMSM.s2p +0 -0
  69. {paramrf-0.37.1 → paramrf-0.37.2}/docs/tutorials/data/on-chip-inductor.s2p +0 -0
  70. {paramrf-0.37.1 → paramrf-0.37.2}/docs/tutorials/index.rst +0 -0
  71. {paramrf-0.37.1 → paramrf-0.37.2}/docs/tutorials/line_internal_discrepancy.py +0 -0
  72. {paramrf-0.37.1 → paramrf-0.37.2}/docs/tutorials/port_discrepancy.py +0 -0
  73. {paramrf-0.37.1 → paramrf-0.37.2}/paper/paper.bib +0 -0
  74. {paramrf-0.37.1 → paramrf-0.37.2}/paper/paper.md +0 -0
  75. {paramrf-0.37.1 → paramrf-0.37.2}/paper/rlc.png +0 -0
  76. {paramrf-0.37.1 → paramrf-0.37.2}/paramrf.egg-info/SOURCES.txt +0 -0
  77. {paramrf-0.37.1 → paramrf-0.37.2}/paramrf.egg-info/dependency_links.txt +0 -0
  78. {paramrf-0.37.1 → paramrf-0.37.2}/paramrf.egg-info/requires.txt +0 -0
  79. {paramrf-0.37.1 → paramrf-0.37.2}/paramrf.egg-info/top_level.txt +0 -0
  80. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/__init__.py +0 -0
  81. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/_solver_view.py +0 -0
  82. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/fitting/__init__.py +0 -0
  83. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/fitting/minimize.py +0 -0
  84. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/fitting/result.py +0 -0
  85. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/fitting/routers.py +0 -0
  86. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/fitting/sample.py +0 -0
  87. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/fitting/targets.py +0 -0
  88. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/frequency.py +0 -0
  89. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/infer/__init__.py +0 -0
  90. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/infer/base.py +0 -0
  91. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/infer/result.py +0 -0
  92. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/infer/sample.py +0 -0
  93. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/infer/solvers/__init__.py +0 -0
  94. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/infer/solvers/blackjax.py +0 -0
  95. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/infer/solvers/polychord.py +0 -0
  96. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/materials/__init__.py +0 -0
  97. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/materials/conductor.py +0 -0
  98. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/materials/dielectric.py +0 -0
  99. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/materials/properties.py +0 -0
  100. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/materials/roughness.py +0 -0
  101. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/materials/substrate.py +0 -0
  102. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/materials/surface_impedance.py +0 -0
  103. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/math/__init__.py +0 -0
  104. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/math/aggregations.py +0 -0
  105. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/math/bessel.py +0 -0
  106. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/math/conversions.py +0 -0
  107. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/math/losses.py +0 -0
  108. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/math/misc.py +0 -0
  109. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/adapters/__init__.py +0 -0
  110. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/adapters/base.py +0 -0
  111. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/adapters/bridge.py +0 -0
  112. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/adapters/callable.py +0 -0
  113. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/adapters/delegated.py +0 -0
  114. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/adapters/derived.py +0 -0
  115. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/adapters/static.py +0 -0
  116. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/adapters/wrapped.py +0 -0
  117. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/base.py +0 -0
  118. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/__init__.py +0 -0
  119. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/ideal.py +0 -0
  120. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/__init__.py +0 -0
  121. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/base.py +0 -0
  122. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/coaxial.py +0 -0
  123. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/empirical.py +0 -0
  124. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/ideal.py +0 -0
  125. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/microstrip.py +0 -0
  126. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/nodal.py +0 -0
  127. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/nonuniform.py +0 -0
  128. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/planar.py +0 -0
  129. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/profiles.py +0 -0
  130. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lines/stripline.py +0 -0
  131. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/lumped.py +0 -0
  132. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/components/sections.py +0 -0
  133. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/__init__.py +0 -0
  134. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/__init__.py +0 -0
  135. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/cascade.py +0 -0
  136. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/circuit/__init__.py +0 -0
  137. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/circuit/base.py +0 -0
  138. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/circuit/circuit.py +0 -0
  139. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/circuit/solvers/__init__.py +0 -0
  140. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/circuit/solvers/nodal.py +0 -0
  141. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/circuit/solvers/scattering.py +0 -0
  142. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/interconnected/terminated.py +0 -0
  143. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/topological.py +0 -0
  144. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/composite/transformed.py +0 -0
  145. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/line_discrepancy.py +0 -0
  146. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/port_discrepancy.py +0 -0
  147. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/surrogates/__init__.py +0 -0
  148. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/surrogates/expansion.py +0 -0
  149. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/models/surrogates/rational.py +0 -0
  150. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/modules/__init__.py +0 -0
  151. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/modules/base.py +0 -0
  152. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/modules/wrapped.py +0 -0
  153. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/network_collection.py +0 -0
  154. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/objectives/__init__.py +0 -0
  155. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/objectives/evaluators.py +0 -0
  156. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/objectives/losses.py +0 -0
  157. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/objectives/problems.py +0 -0
  158. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/objectives/terms.py +0 -0
  159. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/optimize/__init__.py +0 -0
  160. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/optimize/base.py +0 -0
  161. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/optimize/minimize.py +0 -0
  162. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/optimize/result.py +0 -0
  163. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/optimize/solvers/__init__.py +0 -0
  164. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/optimize/solvers/jaxopt.py +0 -0
  165. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/optimize/solvers/optimistix.py +0 -0
  166. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/optimize/solvers/scipy.py +0 -0
  167. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/parameters/__init__.py +0 -0
  168. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/parameters/constraints.py +0 -0
  169. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/rf/__init__.py +0 -0
  170. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/rf/cascade.py +0 -0
  171. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/rf/conversions.py +0 -0
  172. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/rf/mna.py +0 -0
  173. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/serialization.py +0 -0
  174. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/stats/__init__.py +0 -0
  175. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/stats/bijectors.py +0 -0
  176. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/stats/covariance_kernels.py +0 -0
  177. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/stats/discrepancy_models.py +0 -0
  178. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/stats/distributions.py +0 -0
  179. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/stats/likelihoods.py +0 -0
  180. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/stats/linearization.py +0 -0
  181. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/stats/noise_models.py +0 -0
  182. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/types.py +0 -0
  183. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/__init__.py +0 -0
  184. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/array.py +0 -0
  185. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/debug.py +0 -0
  186. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/network.py +0 -0
  187. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/random.py +0 -0
  188. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/rf.py +0 -0
  189. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/transforms.py +0 -0
  190. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/tree.py +0 -0
  191. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/utils/type.py +0 -0
  192. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/viz/__init__.py +0 -0
  193. {paramrf-0.37.1 → paramrf-0.37.2}/pmrf/viz/plots.py +0 -0
  194. {paramrf-0.37.1 → paramrf-0.37.2}/scripts/benchmark_gp_marginal_likelihood.py +0 -0
  195. {paramrf-0.37.1 → paramrf-0.37.2}/scripts/install-test-deps.sh +0 -0
  196. {paramrf-0.37.1 → paramrf-0.37.2}/setup.cfg +0 -0
  197. {paramrf-0.37.1 → paramrf-0.37.2}/tests/__init__.py +0 -0
  198. {paramrf-0.37.1 → paramrf-0.37.2}/tests/_jit.py +0 -0
  199. {paramrf-0.37.1 → paramrf-0.37.2}/tests/conftest.py +0 -0
  200. {paramrf-0.37.1 → paramrf-0.37.2}/tests/data/10m_cable.s2p +0 -0
  201. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_autodiff.py +0 -0
  202. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_box_space_solving.py +0 -0
  203. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_conversions.py +0 -0
  204. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_covariance_kernels.py +0 -0
  205. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_dc_limits.py +0 -0
  206. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_discrepancy_models.py +0 -0
  207. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_evaluators.py +0 -0
  208. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_fitting_minimize.py +0 -0
  209. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_fitting_routers.py +0 -0
  210. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_fitting_sample.py +0 -0
  211. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_fitting_targets.py +0 -0
  212. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_frequency.py +0 -0
  213. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_grouped_exports.py +0 -0
  214. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_infer_base.py +0 -0
  215. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_infer_sample.py +0 -0
  216. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_line_internal_discrepancy_example.py +0 -0
  217. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_linearization.py +0 -0
  218. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_map_priors.py +0 -0
  219. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_materials/test_conductor.py +0 -0
  220. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_materials/test_dielectric.py +0 -0
  221. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_materials/test_serialization.py +0 -0
  222. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_materials/test_substrate.py +0 -0
  223. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_materials/test_surface_impedance.py +0 -0
  224. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_math/test_bessel.py +0 -0
  225. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_model.py +0 -0
  226. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_adapters.py +0 -0
  227. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_cascade.py +0 -0
  228. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_circuit_native_z0.py +0 -0
  229. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_circuit_nodal.py +0 -0
  230. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_circuit_port_order.py +0 -0
  231. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_circuit_scattering.py +0 -0
  232. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_circuit_shorted_ports.py +0 -0
  233. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_circuit_skrf_port_names.py +0 -0
  234. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_circuit_z0.py +0 -0
  235. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_current_distribution.py +0 -0
  236. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_derived.py +0 -0
  237. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_edge_values.py +0 -0
  238. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_interconnected.py +0 -0
  239. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_line_discrepancy.py +0 -0
  240. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_lines.py +0 -0
  241. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_lines_skrf_matrix.py +0 -0
  242. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_lumped.py +0 -0
  243. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_port_discrepancy.py +0 -0
  244. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_profiles.py +0 -0
  245. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_rational.py +0 -0
  246. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_repeated_cascade.py +0 -0
  247. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_sections.py +0 -0
  248. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_transformed.py +0 -0
  249. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_models/test_transformers.py +0 -0
  250. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_module.py +0 -0
  251. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_naming.py +0 -0
  252. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_optimize_base.py +0 -0
  253. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_optimize_minimize.py +0 -0
  254. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_parameters.py +0 -0
  255. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_parameters_by_name.py +0 -0
  256. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_parameters_joint_prior.py +0 -0
  257. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_parameters_prior.py +0 -0
  258. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_parameters_validity.py +0 -0
  259. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_port_discrepancy_example.py +0 -0
  260. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_raw_space_solving.py +0 -0
  261. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_serialization.py +0 -0
  262. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_structural_updates.py +0 -0
  263. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_terms.py +0 -0
  264. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_transforms.py +0 -0
  265. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_utils/test_compress.py +0 -0
  266. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_utils/test_debug.py +0 -0
  267. {paramrf-0.37.1 → paramrf-0.37.2}/tests/test_utils/test_tree.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: paramrf
3
- Version: 0.37.1
3
+ Version: 0.37.2
4
4
  Summary: Parametric radio frequency modeling
5
5
  Author-email: Gary Allen <gvcallen@gmail.com>
6
6
  Project-URL: homepage, https://github.com/gvcallen/paramrf
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: paramrf
3
- Version: 0.37.1
3
+ Version: 0.37.2
4
4
  Summary: Parametric radio frequency modeling
5
5
  Author-email: Gary Allen <gvcallen@gmail.com>
6
6
  Project-URL: homepage, https://github.com/gvcallen/paramrf
@@ -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.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "paramrf"
3
- version = "0.37.1"
3
+ version = "0.37.2"
4
4
  description = "Parametric radio frequency modeling"
5
5
  readme = "README.rst"
6
6
  authors = [
@@ -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