# gds_fdtd






**gds_fdtd** is a minimal Python module to assist in setting up FDTD simulations for planar nanophotonic devices using FDTD solvers such as Tidy3D.
## Features
- **Automated FDTD Setup:** Easily set up Lumerical and Tidy3D simulations for devices designed in GDS.
- **Integration with SiEPIC:** Generate FDTD simulations directly from components defined in [SiEPIC](https://github.com/SiEPIC/SiEPIC-Tools) EDA and it's associated PDKs (e.g., [SiEPIC-EBeam-PDK](https://github.com/SiEPIC/SiEPIC_EBeam_PDK)).
- **Integration with gdsfactory:** Generate Tidy3D simulations directly from [gdsfactory](https://github.com/gdsfactory/gdsfactory) designs by identifying ports and simulation regions from an input technology stack.
- **S-Parameter Extraction:** Automatically generate and export S-parameters of your photonic devices in standard formats.
- **Multimode/Dual Polarization Simulations:** Set up simulations that support multimode or dual polarization configurations for device analysis.
## Installation
You can install `gds_fdtd` using the following options:
### Quick install (PyPI)
```bash
pip install gds-fdtd
```
### Option: Basic Installation from source
To install the core functionality of `gds_fdtd`, clone the repository and install using `pip`:
```bash
git clone git@github.com:mustafacc/gds_fdtd.git
cd gds_fdtd
pip install -e .
```
### Option: Development Installation
For contributing to the development or if you need testing utilities, install with the dev dependencies:
```bash
git clone git@github.com:mustafacc/gds_fdtd.git
cd gds_fdtd
pip install -e .[dev]
```
This will install additional tools like `pytest` and `coverage` for testing.
### Editable + dev tools
```bash
pip install -e .[dev]
```
### Optional extras
| extra | purpose | install command |
|------------|--------------------------------|---------------------------------------------|
| siepic | [SiEPIC](https://github.com/SiEPIC/SiEPIC-Tools) EDA support | `pip install -e .[siepic]` |
| tidy3d | [Tidy3D](https://github.com/flexcompute/tidy3d) simulation support | `pip install -e .[tidy3d]` |
| gdsfactory | [GDSFactory](https://github.com/gdsfactory/gdsfactory) EDA support | `pip install -e .[gdsfactory]` |
| prefab | [PreFab](https://github.com/PreFab-Photonics/PreFab) lithography prediction support | `pip install -e .[prefab]` |
| everything | dev tools + all plugins | `pip install -e .[dev,tidy3d,gdsfactory,prefab,siepic]` |
### Requirements
- Python ≥ 3.10 (note: gdsfactory requires Python ≥ 3.11)
- Runtime deps: numpy, matplotlib, shapely, PyYAML, klayout
### Running tests
If you've installed the `dev` dependencies, you can run the test suite with:
```bash
pytest --cov=gds_fdtd tests
## Development
### Version Management
This project uses `bump2version` to keep version numbers in sync across all files.
**Check current version:**
```bash
make check-version
```
**Bump version:**
```bash
# For bug fixes (0.4.0 -> 0.4.1)
make bump-patch
# For new features (0.4.0 -> 0.5.0)
make bump-minor
# For breaking changes (0.4.0 -> 1.0.0)
make bump-major
```
**Quick release:**
```bash
# Does everything in one go
./scripts/release.sh [patch|minor|major]
```
This script will:
- Run tests and build docs
- Update version numbers everywhere
- Create a git tag
- Push everything to GitHub
- Trigger GitHub release and PyPI upload
### Available Make Commands
```bash
make help # Show all available commands
make install # Install package in development mode
make test # Run tests with coverage
make docs # Build documentation
make docs-serve # Build and serve docs locally on port 8000
make clean # Clean build artifacts
make release # Build package for release
```
### Development Setup
For new contributors:
```bash
# Clone the repository
git clone https://github.com/SiEPIC/gds_fdtd.git
cd gds_fdtd
# Install development dependencies
pip install -e .[dev]
# Run tests
make test
# Build documentation
make docs
```
### Making a Release
1. Make sure you're on the main branch with all changes committed
2. Run the release script: `./scripts/release.sh [patch|minor|major]`
3. The script will automatically:
- Run tests to make sure everything works
- Build documentation
- Bump version numbers in all files
- Create and push a git tag
- Trigger GitHub Actions to create a release and upload to PyPI
The GitHub Actions workflow will:
- Run tests again
- Build the package
- Create a GitHub release with changelog
- Upload to PyPI automatically
```
Raw data
{
"_id": null,
"home_page": null,
"name": "gds-fdtd",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.14,>=3.10",
"maintainer_email": null,
"keywords": "python, photonics, fdtd, simulation, optics, eda, electromagnetics, gds, silicon-photonics",
"author": null,
"author_email": "Mustafa Hammood <mustafa@siepic.com>",
"download_url": "https://files.pythonhosted.org/packages/d4/23/92e1ac08bb664e0d2e6b35bcabacba963b55e044d97f75e96a29e85661fe/gds_fdtd-0.4.0.tar.gz",
"platform": null,
"description": "# gds_fdtd\n\n\n\n\n\n\n\n\n\n**gds_fdtd** is a minimal Python module to assist in setting up FDTD simulations for planar nanophotonic devices using FDTD solvers such as Tidy3D.\n\n## Features\n\n- **Automated FDTD Setup:** Easily set up Lumerical and Tidy3D simulations for devices designed in GDS.\n- **Integration with SiEPIC:** Generate FDTD simulations directly from components defined in [SiEPIC](https://github.com/SiEPIC/SiEPIC-Tools) EDA and it's associated PDKs (e.g., [SiEPIC-EBeam-PDK](https://github.com/SiEPIC/SiEPIC_EBeam_PDK)).\n- **Integration with gdsfactory:** Generate Tidy3D simulations directly from [gdsfactory](https://github.com/gdsfactory/gdsfactory) designs by identifying ports and simulation regions from an input technology stack.\n- **S-Parameter Extraction:** Automatically generate and export S-parameters of your photonic devices in standard formats.\n- **Multimode/Dual Polarization Simulations:** Set up simulations that support multimode or dual polarization configurations for device analysis.\n\n## Installation\n\nYou can install `gds_fdtd` using the following options:\n\n### Quick install (PyPI)\n\n```bash\npip install gds-fdtd\n```\n\n### Option: Basic Installation from source\n\nTo install the core functionality of `gds_fdtd`, clone the repository and install using `pip`:\n\n```bash\ngit clone git@github.com:mustafacc/gds_fdtd.git\ncd gds_fdtd\npip install -e .\n```\n\n### Option: Development Installation\n\nFor contributing to the development or if you need testing utilities, install with the dev dependencies:\n\n```bash\ngit clone git@github.com:mustafacc/gds_fdtd.git\ncd gds_fdtd\npip install -e .[dev]\n```\n\nThis will install additional tools like `pytest` and `coverage` for testing.\n\n### Editable + dev tools\n\n```bash\npip install -e .[dev]\n```\n\n### Optional extras\n\n| extra | purpose | install command |\n|------------|--------------------------------|---------------------------------------------|\n| siepic | [SiEPIC](https://github.com/SiEPIC/SiEPIC-Tools) EDA support | `pip install -e .[siepic]` |\n| tidy3d | [Tidy3D](https://github.com/flexcompute/tidy3d) simulation support | `pip install -e .[tidy3d]` |\n| gdsfactory | [GDSFactory](https://github.com/gdsfactory/gdsfactory) EDA support | `pip install -e .[gdsfactory]` |\n| prefab | [PreFab](https://github.com/PreFab-Photonics/PreFab) lithography prediction support | `pip install -e .[prefab]` |\n| everything | dev tools + all plugins | `pip install -e .[dev,tidy3d,gdsfactory,prefab,siepic]` |\n\n### Requirements\n\n- Python \u2265 3.10 (note: gdsfactory requires Python \u2265 3.11) \n- Runtime deps: numpy, matplotlib, shapely, PyYAML, klayout\n\n\n### Running tests\n\nIf you've installed the `dev` dependencies, you can run the test suite with:\n\n```bash\npytest --cov=gds_fdtd tests\n\n## Development\n\n### Version Management\n\nThis project uses `bump2version` to keep version numbers in sync across all files.\n\n**Check current version:**\n```bash\nmake check-version\n```\n\n**Bump version:**\n```bash\n# For bug fixes (0.4.0 -> 0.4.1)\nmake bump-patch\n\n# For new features (0.4.0 -> 0.5.0) \nmake bump-minor\n\n# For breaking changes (0.4.0 -> 1.0.0)\nmake bump-major\n```\n\n**Quick release:**\n```bash\n# Does everything in one go\n./scripts/release.sh [patch|minor|major]\n```\n\nThis script will:\n- Run tests and build docs\n- Update version numbers everywhere\n- Create a git tag\n- Push everything to GitHub\n- Trigger GitHub release and PyPI upload\n\n### Available Make Commands\n\n```bash\nmake help # Show all available commands\nmake install # Install package in development mode\nmake test # Run tests with coverage\nmake docs # Build documentation\nmake docs-serve # Build and serve docs locally on port 8000\nmake clean # Clean build artifacts\nmake release # Build package for release\n```\n\n### Development Setup\n\nFor new contributors:\n\n```bash\n# Clone the repository\ngit clone https://github.com/SiEPIC/gds_fdtd.git\ncd gds_fdtd\n\n# Install development dependencies\npip install -e .[dev]\n\n# Run tests\nmake test\n\n# Build documentation\nmake docs\n```\n\n### Making a Release\n\n1. Make sure you're on the main branch with all changes committed\n2. Run the release script: `./scripts/release.sh [patch|minor|major]`\n3. The script will automatically:\n - Run tests to make sure everything works\n - Build documentation\n - Bump version numbers in all files\n - Create and push a git tag\n - Trigger GitHub Actions to create a release and upload to PyPI\n\nThe GitHub Actions workflow will:\n- Run tests again\n- Build the package\n- Create a GitHub release with changelog\n- Upload to PyPI automatically\n```\n",
"bugtrack_url": null,
"license": null,
"summary": "Minimalist utilities for photonic FDTD workflows.",
"version": "0.4.0",
"project_urls": {
"Bug Tracker": "https://github.com/SiEPIC/gds_fdtd/issues",
"Homepage": "https://github.com/SiEPIC/gds_fdtd",
"Repository": "https://github.com/SiEPIC/gds_fdtd"
},
"split_keywords": [
"python",
" photonics",
" fdtd",
" simulation",
" optics",
" eda",
" electromagnetics",
" gds",
" silicon-photonics"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "79a0dd4055a8cfd7e7caed223d4fed291246491f036d0b9894fdd497b964aa8c",
"md5": "743a980e5f443b652c7e3ebb41d2e7d7",
"sha256": "0f5f2b52a8393cbc89fa25df3d67f723f92826c890136290236ed99363261a4c"
},
"downloads": -1,
"filename": "gds_fdtd-0.4.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "743a980e5f443b652c7e3ebb41d2e7d7",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.14,>=3.10",
"size": 41157,
"upload_time": "2025-08-05T07:43:54",
"upload_time_iso_8601": "2025-08-05T07:43:54.997022Z",
"url": "https://files.pythonhosted.org/packages/79/a0/dd4055a8cfd7e7caed223d4fed291246491f036d0b9894fdd497b964aa8c/gds_fdtd-0.4.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d42392e1ac08bb664e0d2e6b35bcabacba963b55e044d97f75e96a29e85661fe",
"md5": "fd87aeee00f8614d9dfe2e6e47f2c680",
"sha256": "cee75617270f5d453f022ceeb9d91eb3860783aaf20d726022ad8708d69841ef"
},
"downloads": -1,
"filename": "gds_fdtd-0.4.0.tar.gz",
"has_sig": false,
"md5_digest": "fd87aeee00f8614d9dfe2e6e47f2c680",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.14,>=3.10",
"size": 38100,
"upload_time": "2025-08-05T07:43:56",
"upload_time_iso_8601": "2025-08-05T07:43:56.258878Z",
"url": "https://files.pythonhosted.org/packages/d4/23/92e1ac08bb664e0d2e6b35bcabacba963b55e044d97f75e96a29e85661fe/gds_fdtd-0.4.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-05 07:43:56",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "SiEPIC",
"github_project": "gds_fdtd",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "gds-fdtd"
}