Materials

Material models and dispersive media in WiTwin Maxwell

Overview#

WiTwin Maxwell extends the base witwin.core.Material with dispersive pole models, anisotropic tensors, and convenience constructors.

import witwin.maxwell as mw
 
# Simple dielectric
mat = mw.Material(eps_r=12.0)
 
# Conductive material
mat = mw.Material(eps_r=4.0, sigma_e=0.01)
 
# Dispersive Drude metal
mat = mw.Material.drude(eps_inf=1.0, plasma_frequency=2.0e15, gamma=1.0e13)

Material#

Constructor#

ParameterTypeDefaultDescription
eps_rfloat1.0Relative permittivity
mu_rfloat1.0Relative permeability
sigma_efloat0.0Electrical conductivity. Must be >= 0
namestr | NoneNoneOptional material name
debye_polestuple[DebyePole]()Electric Debye dispersion poles
drude_polestuple[DrudePole]()Electric Drude dispersion poles
lorentz_polestuple[LorentzPole]()Electric Lorentz dispersion poles
mu_debye_polestuple[DebyePole]()Magnetic Debye dispersion poles
mu_drude_polestuple[DrudePole]()Magnetic Drude dispersion poles
mu_lorentz_polestuple[LorentzPole]()Magnetic Lorentz dispersion poles
epsilon_tensorDiagonalTensor3 | NoneNoneAnisotropic permittivity tensor
mu_tensorDiagonalTensor3 | NoneNoneAnisotropic permeability tensor
sigma_e_tensorDiagonalTensor3 | NoneNoneAnisotropic conductivity tensor

Convenience Constructors#

# Debye dispersive medium
mw.Material.debye(eps_inf=2.0, delta_eps=1.5, tau=1.0e-12)
 
# Drude metal
mw.Material.drude(eps_inf=1.0, plasma_frequency=2.0e15, gamma=1.0e13)
 
# Lorentz resonant medium
mw.Material.lorentz(eps_inf=1.0, delta_eps=2.0, resonance_frequency=1.0e12, gamma=1.0e10)

Properties#

PropertyDescription
material.is_dispersiveTrue if any dispersion poles are set
material.is_electric_dispersiveTrue if electric poles are set
material.is_magnetic_dispersiveTrue if magnetic poles are set
material.is_anisotropicTrue if any tensor is set
material.is_nonlinearTrue if kerr_chi3 is set

Methods#

material.relative_permittivity(frequency) — Returns complex permittivity at the given frequency in Hz including all dispersion poles and conductivity.

material.relative_permeability(frequency) — Returns complex permeability at the given frequency in Hz.


Dispersive Pole Models#

DebyePole#

A first-order relaxation pole for modeling dielectric relaxation.

mw.DebyePole(delta_eps=1.5, tau=1.0e-12)
ParameterDescription
delta_epsPermittivity change. Must be >= 0
tauRelaxation time in seconds. Must be > 0

DrudePole#

A free-electron pole for modeling metals and plasmas.

mw.DrudePole(plasma_frequency=2.0e15, gamma=1.0e13)
ParameterDescription
plasma_frequencyPlasma frequency in Hz. Must be > 0
gammaCollision rate in Hz. Must be >= 0

LorentzPole#

A second-order resonant pole for modeling phonon resonances and bound electrons.

mw.LorentzPole(delta_eps=2.0, resonance_frequency=1.0e12, gamma=1.0e10)
ParameterDescription
delta_epsPermittivity change at resonance. Must be >= 0
resonance_frequencyResonance frequency in Hz. Must be > 0
gammaDamping rate in Hz. Must be >= 0

Anisotropic Tensors#

Use DiagonalTensor3 for axis-aligned anisotropic materials:

mat = mw.Material(
    epsilon_tensor=mw.DiagonalTensor3(xx=4.0, yy=4.0, zz=2.0),
)
ParameterDescription
xxTensor component along x
yyTensor component along y
zzTensor component along z

Note

Full Tensor3x3 off-diagonal support is not yet implemented. Use DiagonalTensor3 for anisotropic materials.


Next Steps#