Substrate
- class pmrf.materials.Substrate(h: Any = 0.0016, dielectric: Any = <factory>, conductor: Any = <factory>, t: Any = None, *, name: str | None = None, metadata: Any = None)
Bases:
ModuleA dielectric sheet of a given height, with the conductor printed on it.
Substrates can be used as a shared base that is injected into other models. For example, when combined with
AbstractBuilder, one substrate can be shared between two lines within the same model.>>> import pmrf as prf >>> from pmrf.materials import Substrate >>> from pmrf.models import AbstractBuilder, MicrostripLine >>> class Board(AbstractBuilder): ... substrate: Substrate ... w1: prf.Param ... w2: prf.Param ... def build(self): ... return (MicrostripLine(w=self.w1, substrate=self.substrate, length=0.1) ... ** MicrostripLine(w=self.w2, substrate=self.substrate, length=0.2)) >>> board = Board(substrate=Substrate(h=1.6e-3, dielectric=4.3), w1=1e-3, w2=2e-3) >>> [name for name in board.named_params() if name.endswith("ep_r")] ['substrate.dielectric.ep_r']
- Parameters:
h (Param, default=1.6e-3) – Height of the dielectric sheet in meters.
dielectric (AbstractDielectric, default=ConstantDielectric(ep_r=4.3)) – The sheet material. A scalar permittivity or an
(ep_r, tand)tuple is coerced into aConstantDielectric.conductor (AbstractConductor, default=BulkConductor()) – The metallization. A scalar conductivity in S/m is coerced into a
BulkConductor.t (Param | None, default=None) – Thickness of the metallization in meters, or
Nonewhen it is unspecified. Unspecified is not the same input as zero: it asserts skin effect in operation at every frequency, so the conductor loss gets no dc resistance floor. A positive value gets the floor \(R_{dc}=1/(\sigma W t)\), and refines the geometry in those quasi-static formulations that are thickness-aware.
- conductor: AbstractConductor
The metallization
- dielectric: AbstractDielectric
The sheet material