Metadata-Version: 2.4
Name: pylobe
Version: 0.2.0
Summary: Antenna design and electromagnetic simulation library
Author-email: "Md. Abid Hasan Rafi" <ahr16.abidhasanrafi@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://pypi.org/project/pylobe/
Keywords: antenna,electromagnetics,microwave,FDTD,MoM,patch antenna,dipole,array,optimization,phased-array
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy<3,>=1.24
Requires-Dist: scipy>=1.11
Requires-Dist: matplotlib>=3.7
Requires-Dist: tqdm>=4.65
Provides-Extra: vis
Requires-Dist: plotly>=5.18; extra == "vis"
Requires-Dist: Pillow>=10.0; extra == "vis"
Requires-Dist: kaleido>=0.2; extra == "vis"
Provides-Extra: cad
Requires-Dist: ezdxf>=1.1; extra == "cad"
Requires-Dist: gdspy>=1.6; extra == "cad"
Provides-Extra: report
Requires-Dist: reportlab>=4.0; extra == "report"
Provides-Extra: ai
Requires-Dist: torch>=2.1; extra == "ai"
Requires-Dist: scikit-learn>=1.3; extra == "ai"
Provides-Extra: full
Requires-Dist: pylobe[vis]; extra == "full"
Requires-Dist: pylobe[cad]; extra == "full"
Requires-Dist: pylobe[report]; extra == "full"
Requires-Dist: pylobe[ai]; extra == "full"
Provides-Extra: dev
Requires-Dist: pytest>=7.4; extra == "dev"
Requires-Dist: pytest-cov>=4.1; extra == "dev"
Requires-Dist: black>=23.9; extra == "dev"
Requires-Dist: isort>=5.12; extra == "dev"
Requires-Dist: mypy>=1.6; extra == "dev"
Requires-Dist: ruff>=0.1; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=7.2; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=1.3; extra == "docs"
Requires-Dist: nbsphinx>=0.9; extra == "docs"
Requires-Dist: myst-parser>=2.0; extra == "docs"
Dynamic: license-file

# PyLobe

**Antenna design and electromagnetic simulation library for Python.**

Full design workflow: geometry → solver → pattern → optimization → export. Analytical closed-form models, Method of Moments (MoM), and 3-D FDTD solvers, with publication-quality visualization and neural inverse design.

## Installation

```bash
pip install pylobe
```

## Quick Start

```python
from pylobe import RectangularPatch, ROGERS4003
from pylobe.design import AntennaDesign

patch  = RectangularPatch(freq=2.4e9, substrate_material=ROGERS4003)
design = AntennaDesign(patch).solve()
print(design.summary())
fig_pat, fig_freq = design.plot_dashboard()
design.export_all("results/my_patch")
```

## Antenna Types

| Type | Class | Solver |
|---|---|---|
| Half-wave dipole | `HalfWaveDipole` | `DipoleSolver` |
| Folded dipole | `FoldedDipole` | `FoldedDipoleSolver` |
| Bow-tie dipole | `BowTieDipole` | `FoldedDipoleSolver` |
| Quarter-wave monopole | `QuarterWaveMonopole` | `MonopoleSolver` |
| Axial-mode helical | `HelicalMonopole` | `MonopoleSolver` |
| Rectangular patch | `RectangularPatch` | `PatchAnalyticalSolver` |
| Circular patch | `CircularPatch` | `CircularPatchAnalyticalSolver` |
| Annular ring patch | `AnnularRingPatch` | `PatchAnalyticalSolver` |
| E-slot patch | `ESlotPatch` | `PatchAnalyticalSolver` |
| Slot antenna | `SlotAntenna` | `SlotSolver` |
| Vivaldi (tapered-slot) | `VivaldiAntenna` | `VivaldiSolver` |
| Yagi-Uda | `YagiUda` | `YagiAnalyticalSolver` |
| Pyramidal horn | `PyramidalHorn` | `HornSolver` |
| Small loop | `SmallLoopAntenna` | `LoopSolver` |
| Large (resonant) loop | `LargeLoopAntenna` | `LoopSolver` |
| Log-periodic (LPDA) | `LogPeriodicArray` | `LPDASolver` |
| PIFA | `PIFA` | `PIFASolver` |
| Koch fractal dipole | `KochDipole` | `DipoleSolver` |
| Sierpinski gasket | `SierpinskiGasket` | `DipoleSolver` |
| Minkowski patch | `MinkowskiPatch` | `PatchAnalyticalSolver` |
| Custom planar | `CustomPlanarAntenna` | `SurfaceEFIESolver` |
| Linear array (ULA) | `LinearArray` | element solver + array factor |
| Planar array | `PlanarArray` | element solver + array factor |
| Circular array | `CircularArray` | element solver + array factor |

## Substrate Library

21 pre-defined materials, all importable directly from `pylobe`:

**Substrates** — `FR4`, `RT5880`, `ROGERS4003`, `ROGERS3010`, `ARLON250`, `ISOLA370HR`, `TEFLON`, `ALUMINA`, `SILICON`, `GaAs`, `InP`, `CERAMIC`, `FOAM`

**Conductors** — `COPPER`, `GOLD`, `SILVER`, `ALUMINUM`, `BRASS`, `NICHROME`, `PEC`

**Other** — `AIR`

Custom materials:

```python
from pylobe import Material, register_material
my_sub = Material(name="MyLaminate", eps_r=3.0, loss_tangent=0.001)
register_material(my_sub)
```

## License

MIT License
