Materials

Material, Structure, and material sample types in WiTwin Core

Overview#

WiTwin Core defines the base material and structure types shared across all WiTwin solver packages. These are the same Material and Structure you use in witwin.channel and witwin.maxwell — they are re-exported from witwin.core.

from witwin.core import Box, Material, Structure
 
wall = Structure(
    name="wall",
    geometry=Box(position=(0.0, 0.0, 1.5), size=(0.25, 4.0, 3.0)),
    material=Material(eps_r=4.0, sigma_e=0.0),
)

Material#

Defines the electromagnetic properties of a surface.

Material(eps_r=4.0, mu_r=1.0, sigma_e=0.01, name="concrete")
ParameterTypeDefaultDescription
eps_rfloat1.0Relative permittivity
mu_rfloat1.0Relative permeability
sigma_efloat0.0Electrical conductivity. Must be >= 0
namestr | NoneNoneOptional material name

Methods#

material.evaluate_static() — Returns a StaticMaterialSample with eps_r, mu_r, sigma_e.

material.evaluate_at_frequency(frequency) — Returns a FrequencyMaterialSample with complex eps_r accounting for conductivity at the given frequency in Hz.

material.capabilities() — Returns a MaterialCapabilities describing which physical effects are active.


Structure#

Pairs a geometry with a material to create a physical object.

Structure(
    name="wall",
    geometry=Box(position=(0.0, 0.0, 1.5), size=(0.25, 4.0, 3.0)),
    material=Material(eps_r=4.0, sigma_e=0.0),
    priority=0,
    enabled=True,
)
ParameterTypeDefaultDescription
geometryGeometryBaserequiredAny geometry primitive
materialMaterialSpecrequiredMaterial defining EM properties
namestr | NoneNoneUnique name. Required by Scene
priorityint0Priority for overlapping structures
enabledboolTrueWhether this structure is included in simulation
tagstuple[str]()Optional tags for grouping
metadatadict | NoneNoneOptional metadata

MaterialCapabilities#

Describes which physical effects are active for a material.

caps = material.capabilities()
print(caps.conductive)   # True if sigma_e > 0
print(caps.magnetic)     # True if mu_r != 1.0
print(caps.anisotropic)  # True if tensor properties are set
print(caps.dispersive)   # True if dispersion poles are set
FieldTypeDescription
conductiveboolMaterial has non-zero conductivity
magneticboolMaterial has non-unity permeability
anisotropicboolMaterial uses tensor properties
dispersiveboolMaterial uses dispersion poles

StaticMaterialSample#

Returned by material.evaluate_static().

FieldDescription
eps_rRelative permittivity (real)
mu_rRelative permeability (real)
sigma_eElectrical conductivity

FrequencyMaterialSample#

Returned by material.evaluate_at_frequency(frequency).

FieldDescription
eps_rComplex relative permittivity including conductivity loss
mu_rRelative permeability
sigma_eElectrical conductivity

MaterialSpec Protocol#

MaterialSpec is the protocol that all material types must satisfy. It requires:

  • name: str | None
  • capabilities() -> MaterialCapabilities
  • evaluate_static() -> StaticMaterialSample
  • evaluate_at_frequency(frequency) -> FrequencyMaterialSample

Both witwin.core.Material and witwin.maxwell.Material implement this protocol.

Next Steps#

Materials | Witwin-core