Electromagnetics Platform#
Tidy3D is a software package for solving extremely large electrodynamics problems using the finite-difference time-domain (FDTD) method. It can be controlled through either an open source python package or a web-based graphical user interface.
This python API allows you to:
Programmatically define FDTD simulations.
Submit and manage simulations running on Flexcomputeโs servers.
Download and postprocess the results from the simulations.
Get Started#
Install the latest stable python library tidy3d for creating, managing, and postprocessing simulations with
pip install --user tidy3d
Next, configure your tidy3d package with the API key from your account.
tidy3d configure --apikey=XXX
For more detailed installation instructions, see this page, and refer to Configuration Guide โ๏ธ if you would like to fine-tune your settings.
Install the latest stable python library tidy3d for creating, managing, and postprocessing simulations in your virtual environment with:
pip install --user tidy3d
Next, configure your tidy3d package with the API key from your account.
To automatically configure the API key, you will need to install the following extra packages:
pip install pipx
pipx run tidy3d configure --apikey=XXX
If youโre running into trouble, you may need to manually set the API key
directly in the configuration file where Tidy3D looks for it. The tidy3d
configure command stores the API key for you. If you prefer to manage the
file yourself, place config.toml in the directory described in
Configuration Guide โ๏ธ (for example ~/.config/tidy3d on macOS/Linux
or %APPDATA%\\tidy3d on Windows).
If youโd rather skip installation and run an example in one of our web-hosted notebooks, click here.
Quick Example#
Start running simulations with just a few lines of code. Run this sample code to simulate a 3D dielectric box in Tidy3D and plot the corresponding field pattern.
# !pip install tidy3d # if needed, install tidy3d in a notebook by uncommenting this line
# import the tidy3d package and configure it with your API key
import numpy as np
import tidy3d as td
import tidy3d.web as web
# web.configure("YOUR API KEY") # if authentication needed, uncomment this line and paste your API key here
# set up global parameters of simulation ( speed of light / wavelength in micron )
freq0 = td.C_0 / 0.75
# create structure - a box centered at 0, 0, 0 with a size of 1.5 micron and permittivity of 2
square = td.Structure(
geometry=td.Box(center=(0, 0, 0), size=(1.5, 1.5, 1.5)),
medium=td.Medium(permittivity=2.0)
)
# create source - A point dipole source with frequency freq0 on the left side of the domain
source = td.PointDipole(
center=(-1.5, 0, 0),
source_time=td.GaussianPulse(freq0=freq0, fwidth=freq0 / 10.0),
polarization="Ey",
)
# create monitor - Measures electromagnetic fields within the entire domain at z=0
monitor = td.FieldMonitor(
size=(td.inf, td.inf, 0),
freqs=[freq0],
name="fields",
colocate=True,
)
# Initialize simulation - Combine all objects together into a single specification to run
sim = td.Simulation(
size=(4, 3, 3),
grid_spec=td.GridSpec.auto(min_steps_per_wvl=25),
structures=[square],
sources=[source],
monitors=[monitor],
run_time=120/freq0,
)
print(f"simulation grid is shaped {sim.grid.num_cells} for {int(np.prod(sim.grid.num_cells)/1e6)} million cells.")
# run simulation through the cloud and plot the field data computed by the solver and stored in the monitor
data = td.web.run(sim, task_name="quickstart", path="data/data.hdf5", verbose=True)
ax = data.plot_field("fields", "Ey", z=0)
This will produce the following plot, which visualizes the electromagnetic fields on the central plane.
You can now postprocess simulation data using the same python session, or view the results of this simulation on our web-based graphical user interface (GUI).
Our Ecosystem#
tidy3d is part of an interoperable ecosystem of electromagnetic design tools. You can interface with the tools through the python APIs and the graphical user interfaces.
Online Learning Center
Photonic Integrated Circuits Design
Access the graphical user interface & account management.
Further Information#
Join Our Team#
Do you enjoy using tidy3d or photonforge? Do you want to help us create the best electromagnetic design tools? We are looking for talented developers to join our team.
A good way to get an interview with us is to fix an open issue within our open-source python client. Choose a task where you can feel you can demonstrate your skillset, and get us involved whilst you implement it for feedback and to see how it goes working together. If you donโt know where to start, we recommend the issues labelled โgood first issueโ.
We look forward to your contributions!
Github Repositories#
Name |
Repository |
|---|---|
Source Code |
|
Example Notebooks |
|
FAQ Source Code |
These repositories are a very good way to interact with the relevant tool developers. We encourage you to ask questions or request features through the โDiscussionsโ or โIssuesโ tabs of each repository accordingly.
Contents#
- Installation ๐
- Configuration Guide โ๏ธ
- Lectures ๐
- Example Library ๐
- FAQ ๐
- API ๐ป
- Simulation
- Submitting Simulations
- Geometry
- Structure and Scene
- EM Mediums
- Material Library
- Boundary Conditions
- Sources
- Monitors
- Output Data
- Analytic Beams
- Utilities
- Configuration API
- Unstructured mesh ๐ธ๏ธ
- Heat ๐ฅ
- Charge โก
- EME ๐
- Microwave & RF ๐ก
- Plugins
- SPICE ๐
- Constants
- Abstract Base Classes
- Base Classes
- Visualization and Plotting
- GUI
- Photonforge
- Extras Plugin ๐
- Development Guide ๐ ๏ธ
- Changelog โช
- About our Solver