"""
Ideal models, such as ports, grounds and transformers.
"""
import jax.numpy as jnp
from pmrf.frequency import Frequency
from pmrf.models.model import Model
from pmrf.models.components.lumped import MATCH, SHORT
[docs]
class Port(Model):
"""
Represents a circuit port.
This class serves as a placeholder or marker for external connections in a circuit definition.
Calling an instance returns a matched load model.
"""
def __call__(self) -> Model:
"""
Return the equivalent model for a terminated port.
Returns
-------
Model
A matched load (`MATCH`).
"""
return MATCH
[docs]
class Ground(Model):
"""
Represents a ground connection.
This class serves as a placeholder for a ground node in a circuit definition.
Calling an instance returns a short circuit model.
"""
def __call__(self) -> Model:
return SHORT
[docs]
class SourceConverter(Model):
"""
An ideal 3-port source converter.
This model represents a specific ideal component with a fixed, frequency-independent
3x3 scattering matrix.
"""
[docs]
def s(self, freq: Frequency) -> jnp.ndarray:
s_one = jnp.array([
[ 1, 2, -2],
[ 2, 1, 2],
[-2, 2, 1]
], dtype='complex')
s_one /= 3.0
s = jnp.tile(s_one, (freq.npoints, 1, 1))
return s