🚧 Project Status: Under Active Development
The current core numerical architecture and solver formulations in this repository are based on Understanding the Finite-Difference Time-Domain Method by John B. Schneider.
A high-performance computational electromagnetics framework developed in C.
This module solves Maxwell's curl equations for Transverse Magnetic (
In
-
Electric Field:
$\vec{E} = (0,, 0,, E_z)$ (Oriented perpendicular to the grid plane) -
Magnetic Field:
$\vec{H} = (H_x,, H_y,, 0)$ (Oriented within the grid plane)
In the TFSF module, the 1D auxiliary grid injects a uniform plane wave traveling from Left to Right along the positive X-axis (
-
Propagation Vector (
$\vec{k}$ ):$+\hat{x}$ -
Electric Field (
$E_z$ ):$+\hat{z}$ (Rendered in Red for$+E_z$ and Blue for$-E_z$ ) -
Magnetic Field (
$H_y$ ):$+\hat{y}$ (Points vertically UP along$+Y$ ) -
Poynting Vector (
$\vec{S}$ ): Dictates directional energy flux:$$\vec{S} = \vec{E} \times \vec{H} = (E_z \hat{z}) \times (H_y \hat{y}) = -E_z H_y \hat{x}$$
- C Simulation Engine: Solves Maxwell's update equations using staggered leapfrog time stepping.
- TFSF Virtual Boundary: Separates the solution domain into a Total Field region (incident + scattered fields) and a Scattered Field region (scattered fields only).
-
PEC Boundary Conditions: Enforces conductive interface constraints by clamping tangential electric fields (
$E_z = 0$ ). -
Direct Binary Serialization: Streams raw grid snapshots directly to disk (
sim.0,sim.1, ...) for lightweight computational overhead. -
Automated Python Pipeline: Reads row-major binary streams, aligns spatial axes, applies visual boundary overlays, and auto-exports animated graphics inside
images/directories.
├── 2d_fdtd/ # Point source pulse inside PEC boundary cavity
│ ├── images/
│ │ └── fdtd_simulation.gif
│ ├── include/
│ ├── src/
│ └── plot_data.py
├── 2d_fdtd_with_tfsf/ # TFSF plane wave scattering off PEC plate target
│ ├── images/
│ │ └── fdtd_simulation.gif
│ ├── include/
│ ├── src/
│ └── plot_data.py
├── 3d_fdtd/ # 3D grid simulation
│ ├── include/
│ ├── src/
│ └── plot_cross_section_data.py
├── .gitignore
└── README.md
Understanding the Finite-Difference Time-Domain Method, John B. Schneider, www.eecs.wsu.edu/~schneidj/ufdtd, 2010

