Metadata-Version: 2.4
Name: pylobe
Version: 0.1.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
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=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

**Comprehensive antenna design, electromagnetic simulation, and AI optimization in Python.**

PyLobe covers the full antenna engineering workflow, from a frequency + substrate specification to a verified, export-ready design, with analytical closed-form models, Method of Moments (MoM), and 3-D FDTD solvers, publication-quality visualization, multi-algorithm optimization, and neural inverse design.

## Supported 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` | `FDTDSimulation` |
| Yagi-Uda | `YagiUda` | `YagiAnalyticalSolver` |
| Pyramidal horn | `PyramidalHorn` | `HornSolver` |
| Small loop | `SmallLoopAntenna` | `LoopSolver` |
| Large (resonant) loop | `LargeLoopAntenna` | `LoopSolver` |
| Log-periodic (LPDA) | `LogPeriodicArray` | analytical |
| PIFA | `PIFA` | analytical |
| Koch fractal dipole | `KochDipole` | `DipoleSolver` |
| Sierpinski gasket | `SierpinskiGasket` | `FDTDSimulation` |
| Minkowski patch | `MinkowskiPatch` | `PatchAnalyticalSolver` |
| Linear array (ULA) | `LinearArray` | `DipoleSolver` |
| Planar array | `PlanarArray` | `DipoleSolver` |
| Circular array | `CircularArray` | `DipoleSolver` |

## Substrate Library

17 pre-defined materials available from `pylobe`:

`FR4`, `RT5880`, `ROGERS4003`, `ROGERS3010`, `ARLON250`, `TEFLON`, `ALUMINA`, `SILICON`, `GaAs`, `FOAM`, `COPPER`, `GOLD`, `SILVER`, `ALUMINUM`, `BRASS`, `PEC`

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
