Source code for magpylib_jax.current.circle
"""Differentiable circular current loop source object."""
from __future__ import annotations
from magpylib_jax._types import ArrayLike
from magpylib_jax.core.base import BaseSource, MagpylibMissingInput
[docs]
class Circle(BaseSource):
"""Circular current loop in the local xy-plane."""
_source_type = "circle"
def __init__(
self,
current: ArrayLike | None = None,
diameter: ArrayLike | None = None,
position: ArrayLike = (0.0, 0.0, 0.0),
orientation: ArrayLike | None = None,
style=None,
style_label: str | None = None,
**kwargs,
) -> None:
self.current = current
self.diameter = diameter
super().__init__(
position=position,
orientation=orientation,
style=style,
style_label=style_label,
**kwargs,
)
@property
def volume(self) -> float:
return 0.0
def _require_inputs(self) -> None:
if self.diameter is None:
raise MagpylibMissingInput("Input diameter of Circle must be set.")
if self.current is None:
raise MagpylibMissingInput("Input current of Circle must be set.")
def _field_kwargs(self) -> dict:
"""Geometry + excitation arguments for the field engine."""
return {"diameter": self.diameter, "current": self.current}