witwin-maxwell 0.3.0__py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- witwin/maxwell/__init__.py +164 -0
- witwin/maxwell/adapters/__init__.py +1 -0
- witwin/maxwell/adapters/gds.py +203 -0
- witwin/maxwell/adapters/tidy3d.py +1669 -0
- witwin/maxwell/adjoint_inputs.py +70 -0
- witwin/maxwell/compiler/__init__.py +11 -0
- witwin/maxwell/compiler/materials.py +1355 -0
- witwin/maxwell/compiler/monitors.py +164 -0
- witwin/maxwell/compiler/sources.py +222 -0
- witwin/maxwell/fdfd/__init__.py +3 -0
- witwin/maxwell/fdfd/adjoint/__init__.py +3 -0
- witwin/maxwell/fdfd/adjoint/bridge.py +180 -0
- witwin/maxwell/fdfd/ams.py +300 -0
- witwin/maxwell/fdfd/krylov.py +280 -0
- witwin/maxwell/fdfd/plotting.py +110 -0
- witwin/maxwell/fdfd/postprocess.py +33 -0
- witwin/maxwell/fdfd/solver.py +1057 -0
- witwin/maxwell/fdtd/__init__.py +4 -0
- witwin/maxwell/fdtd/adjoint/__init__.py +21 -0
- witwin/maxwell/fdtd/adjoint/bridge.py +746 -0
- witwin/maxwell/fdtd/adjoint/capabilities.py +29 -0
- witwin/maxwell/fdtd/adjoint/core.py +3614 -0
- witwin/maxwell/fdtd/adjoint/dispatch.py +684 -0
- witwin/maxwell/fdtd/adjoint/native.py +2561 -0
- witwin/maxwell/fdtd/adjoint/profiler.py +195 -0
- witwin/maxwell/fdtd/adjoint/reverse_common.py +207 -0
- witwin/maxwell/fdtd/adjoint/seeds.py +524 -0
- witwin/maxwell/fdtd/boundary/__init__.py +37 -0
- witwin/maxwell/fdtd/boundary/bloch.py +90 -0
- witwin/maxwell/fdtd/boundary/common.py +41 -0
- witwin/maxwell/fdtd/boundary/cpml.py +527 -0
- witwin/maxwell/fdtd/boundary/runtime.py +209 -0
- witwin/maxwell/fdtd/checkpoint.py +227 -0
- witwin/maxwell/fdtd/coords.py +32 -0
- witwin/maxwell/fdtd/cuda/__init__.py +11 -0
- witwin/maxwell/fdtd/cuda/backend.py +3532 -0
- witwin/maxwell/fdtd/cuda/build.py +292 -0
- witwin/maxwell/fdtd/cuda/extension.cpp +2053 -0
- witwin/maxwell/fdtd/cuda/kernels/adjoint.cu +5290 -0
- witwin/maxwell/fdtd/cuda/kernels/aniso.cu +1704 -0
- witwin/maxwell/fdtd/cuda/kernels/boundary.cu +424 -0
- witwin/maxwell/fdtd/cuda/kernels/common.cu +74 -0
- witwin/maxwell/fdtd/cuda/kernels/common.cuh +82 -0
- witwin/maxwell/fdtd/cuda/kernels/dispersive.cu +782 -0
- witwin/maxwell/fdtd/cuda/kernels/electric.cu +3613 -0
- witwin/maxwell/fdtd/cuda/kernels/magnetic.cu +781 -0
- witwin/maxwell/fdtd/cuda/kernels/observers.cu +347 -0
- witwin/maxwell/fdtd/cuda/kernels/projection.cu +211 -0
- witwin/maxwell/fdtd/cuda/kernels/sources.cu +1482 -0
- witwin/maxwell/fdtd/cuda/kernels/spectral.cu +297 -0
- witwin/maxwell/fdtd/cuda/launch.h +23 -0
- witwin/maxwell/fdtd/cuda/prebuilt/witwin_maxwell_fdtd_cuda.pyd +0 -0
- witwin/maxwell/fdtd/cuda/runtime/__init__.py +6 -0
- witwin/maxwell/fdtd/cuda/runtime/dispatcher.py +6 -0
- witwin/maxwell/fdtd/cuda/runtime/graph.py +33 -0
- witwin/maxwell/fdtd/cuda/tensors.h +35 -0
- witwin/maxwell/fdtd/dispersion.py +48 -0
- witwin/maxwell/fdtd/evaluation.py +290 -0
- witwin/maxwell/fdtd/excitation/__init__.py +27 -0
- witwin/maxwell/fdtd/excitation/injection.py +1102 -0
- witwin/maxwell/fdtd/excitation/modes.py +1675 -0
- witwin/maxwell/fdtd/excitation/spatial.py +469 -0
- witwin/maxwell/fdtd/excitation/temporal.py +510 -0
- witwin/maxwell/fdtd/excitation/tfsf_apply.py +264 -0
- witwin/maxwell/fdtd/excitation/tfsf_common.py +421 -0
- witwin/maxwell/fdtd/excitation/tfsf_specs.py +490 -0
- witwin/maxwell/fdtd/excitation/tfsf_state.py +778 -0
- witwin/maxwell/fdtd/io.py +31 -0
- witwin/maxwell/fdtd/material_pullback.py +371 -0
- witwin/maxwell/fdtd/meshing/__init__.py +3 -0
- witwin/maxwell/fdtd/meshing/autogrid.py +335 -0
- witwin/maxwell/fdtd/observers.py +1453 -0
- witwin/maxwell/fdtd/plotting.py +121 -0
- witwin/maxwell/fdtd/postprocess.py +205 -0
- witwin/maxwell/fdtd/runtime/__init__.py +119 -0
- witwin/maxwell/fdtd/runtime/initialization.py +236 -0
- witwin/maxwell/fdtd/runtime/materials.py +1563 -0
- witwin/maxwell/fdtd/runtime/module_cache.py +31 -0
- witwin/maxwell/fdtd/runtime/spectral.py +581 -0
- witwin/maxwell/fdtd/runtime/stepping.py +1987 -0
- witwin/maxwell/fdtd/solver.py +502 -0
- witwin/maxwell/geometry/__init__.py +5 -0
- witwin/maxwell/geometry/polyslab.py +299 -0
- witwin/maxwell/materials.py +3 -0
- witwin/maxwell/media.py +1467 -0
- witwin/maxwell/monitors.py +743 -0
- witwin/maxwell/ports.py +113 -0
- witwin/maxwell/postprocess/RCS.py +139 -0
- witwin/maxwell/postprocess/__init__.py +42 -0
- witwin/maxwell/postprocess/diffraction.py +219 -0
- witwin/maxwell/postprocess/directivity.py +152 -0
- witwin/maxwell/postprocess/emission.py +67 -0
- witwin/maxwell/postprocess/modal.py +324 -0
- witwin/maxwell/postprocess/nfft.py +266 -0
- witwin/maxwell/postprocess/scattering_parameters.py +358 -0
- witwin/maxwell/postprocess/stratton_chu.py +1193 -0
- witwin/maxwell/result.py +967 -0
- witwin/maxwell/scene.py +1338 -0
- witwin/maxwell/simulation.py +659 -0
- witwin/maxwell/sources.py +917 -0
- witwin/maxwell/visualization/__init__.py +28 -0
- witwin/maxwell/visualization/interactive.py +484 -0
- witwin/maxwell/visualization/plots.py +568 -0
- witwin_maxwell-0.3.0.dist-info/METADATA +184 -0
- witwin_maxwell-0.3.0.dist-info/RECORD +107 -0
- witwin_maxwell-0.3.0.dist-info/WHEEL +4 -0
- witwin_maxwell-0.3.0.dist-info/licenses/LICENSE +13 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: witwin-maxwell
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: Witwin Maxwell - Electromagnetic simulation (FDTD/FDFD)
|
|
5
|
+
Project-URL: License, https://witwin.ai/license
|
|
6
|
+
License-Expression: LicenseRef-Witwin-Research OR LicenseRef-Witwin-Commercial
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Python: <3.15,>=3.10
|
|
9
|
+
Requires-Dist: numpy>=1.24
|
|
10
|
+
Requires-Dist: scipy>=1.10
|
|
11
|
+
Requires-Dist: torch>=2.10
|
|
12
|
+
Requires-Dist: witwin<0.2,>=0.1
|
|
13
|
+
Provides-Extra: direct
|
|
14
|
+
Requires-Dist: nvidia-cudss-cu12; extra == 'direct'
|
|
15
|
+
Requires-Dist: nvmath-python[cu12]; extra == 'direct'
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
|
|
18
|
+
# WiTwin Maxwell — Differentiable Electromagnetic Solver
|
|
19
|
+
|
|
20
|
+
[](https://pypi.org/project/witwin-maxwell/) [](https://pypi.org/project/witwin-maxwell/)  [](https://witwin.ai/license)
|
|
21
|
+
|
|
22
|
+
WiTwin Maxwell is a differentiable full-wave electromagnetic solver with a **PyTorch-native interface** and a native CUDA FDTD runtime at its core. The FDTD field-update loops run as hand-written GPU kernels shipped in prebuilt platform wheels, while the entire workflow — scene definition, simulation dispatch, result access, and automatic differentiation — stays inside standard PyTorch through `SceneModule`, `MaterialRegion`, and adjoint backward support.
|
|
23
|
+
|
|
24
|
+
The public solver workflow is `Scene -> Simulation -> Result` for both runtimes:
|
|
25
|
+
|
|
26
|
+
- `FDTD`: native-CUDA Yee-grid time-domain solver with CPML, multi-frequency DFT sampling, material dispersion and nonlinearity, and differentiable adjoint support
|
|
27
|
+
- `FDFD` (limited/experimental): CUDA-only sparse single-frequency solver for linear isotropic or diagonal-electric media with `none`/PML boundaries. It does not yet match FDTD's material, boundary, nonuniform-grid, source, monitor, or adjoint coverage.
|
|
28
|
+
|
|
29
|
+
## Get Started
|
|
30
|
+
|
|
31
|
+
CPython 3.10-3.14, PyTorch 2.10 or newer, and an NVIDIA GPU are supported.
|
|
32
|
+
This package depends on the base `witwin` package.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
pip install witwin-maxwell
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Prebuilt CUDA Support
|
|
39
|
+
|
|
40
|
+
Release wheels are built for Linux x86_64 and Windows x86_64 with CUDA 12.8. Each wheel carries one Python-independent native FDTD library using the LibTorch Stable ABI introduced for this surface in PyTorch 2.10. The same wheel and native binary are CI load-tested with PyTorch 2.10/cu128, 2.11/cu128, and 2.12/cu126 across CPython 3.10-3.14; no Torch-minor-specific binary selection or JIT rebuild is required. The fat binaries contain native code for compute capabilities 7.0, 7.5, 8.0, 8.6, 8.9, 9.0, 10.0, 10.1, and 12.0, plus compute 12.0 PTX. This includes native coverage for RTX 2080-class Turing GPUs and current data-center and RTX/RTX PRO Blackwell families.
|
|
41
|
+
|
|
42
|
+
Linux wheels target `manylinux_2_35_x86_64`. The installed NVIDIA driver must support the CUDA 12.x runtime supplied by PyTorch; the CUDA toolkit is only needed for source/JIT builds.
|
|
43
|
+
|
|
44
|
+
For full CUDA 12.8 and Blackwell support, use at least driver 570.26 on Linux or 570.65 on Windows. Pre-Blackwell systems can use NVIDIA's CUDA 12.x minor-version compatibility floor (525.60.13 on Linux or 528.33 on Windows), subject to NVIDIA's compatibility-mode feature limits.
|
|
45
|
+
|
|
46
|
+
## Public API
|
|
47
|
+
|
|
48
|
+
The main user-facing API is intentionally small:
|
|
49
|
+
|
|
50
|
+
- `Scene`: domain, grid, boundaries, structures, sources, monitors, ports, and differentiable material regions
|
|
51
|
+
- `Simulation`: runtime configuration through `Simulation.fdtd(...)`
|
|
52
|
+
- `Result`: structured field access, material tensors, monitor payloads, plotting, stats, and save support
|
|
53
|
+
|
|
54
|
+
For module-style inverse-design workflows, define a `SceneModule`, implement `to_scene()`, and pass that module directly into `Simulation`.
|
|
55
|
+
|
|
56
|
+
`Scene` stays declarative. Solver-sized Yee-grid coordinates, material tensors, and related runtime state are compiled during `Simulation.prepare()` / `Simulation.run()` and live on the internal solver scene rather than the public `Scene` object.
|
|
57
|
+
|
|
58
|
+
## Support Matrix
|
|
59
|
+
|
|
60
|
+
| Area | Currently supported | Notes |
|
|
61
|
+
| --- | --- | --- |
|
|
62
|
+
| Solvers | `Simulation.fdtd(...)`; limited `Simulation.fdfd(...)` | FDTD is the primary, full-featured runtime. FDFD is a CUDA-only sparse single-frequency path with isotropic/diagonal-electric, dispersive/conductive, `none`/PML, iterative/direct-solver, and basic adjoint support; nonuniform grids, magnetic/nonlinear/full-tensor media, in-domain PEC, symmetry, and broader FDTD parity are not implemented. Both return `Result`. |
|
|
63
|
+
| Sources | `PointDipole`, `PlaneWave`, `GaussianBeam`, `AstigmaticGaussianBeam`, `ModeSource`, `TFSF`, uniform/custom current and custom field sources | Soft and TFSF launch paths are available. `TFSF.slab(...)` supports any normal axis, CW or broadband waveforms, and periodic/Bloch grating layouts. `ModeSource` remains experimental. |
|
|
64
|
+
| Source time | `CW`, `GaussianPulse`, `RickerWavelet`, `CustomSourceTime` | Shared waveform vocabulary across public source APIs, including sampled or callable custom temporal signals. |
|
|
65
|
+
| Boundaries | `none`, `pml`, `periodic`, `bloch`, `pec`, `pmc` | Per-axis and per-face mixed layouts are available through `BoundarySpec.faces(...)`, including x/y Bloch plus z PML for grating FDTD workflows. |
|
|
66
|
+
| Materials | Isotropic and tensor electric/magnetic media; conductive, Debye, Drude, Lorentz, Sellmeier, gain, nonlinear, modulated, perturbation, custom dispersive, `Medium2D`, `Graphene`, and `LossyMetalMedium` | Compatible material effects compose in the same compiled Yee model. `MaterialRegion` is the primary differentiable design primitive; specialized combinations and adjoint limits are listed in `FEATURE_LIST.md`. |
|
|
67
|
+
| Geometry and grids | `Box`, `Sphere`, `Cylinder`, `Ellipsoid`, `Cone`, `Pyramid`, `Prism`, `Torus`, `HollowBox`, `Mesh`, `PolySlab`, custom/automatic/nonuniform grids, mesh overrides, and subpixel averaging | Shared geometry and `Structure` primitives are re-exported through `witwin.maxwell`; `Scene` owns device placement and compilation. |
|
|
68
|
+
| Monitors | Point, plane, finite-plane, flux, time-domain, material/permittivity, mode, diffraction, dipole-emission, and closed-surface monitors | Frequency selection is available through `Result.at(...)`; closed surfaces feed equivalent-current and near-to-far postprocessing. |
|
|
69
|
+
| Ports | `ModePort` | First-class modal port with S-parameter/modal-overlap workflows, including broadband, lossy, anisotropic, and bent-waveguide forward modes; still experimental. |
|
|
70
|
+
| Results | `result.E`, `result.H`, `result.materials`, `Result.monitor(...)`, `Result.save(...)` | Structured field and material access stay torch-native. |
|
|
71
|
+
| Postprocess | Equivalent currents, background-aware/curved-surface Stratton-Chu propagation, near-to-far transform, directivity, bistatic RCS, S-parameters, and modal overlap | Use `witwin.maxwell.postprocess`. |
|
|
72
|
+
| Differentiable workflows | `SceneModule`, `MaterialRegion`, trainable material/geometry/source inputs, native-CUDA FDTD adjoint backward | Native reverse kernels cover standard/CPML/Bloch fields and supported conductive, dispersive, anisotropic, nonlinear, TFSF, and multi-source compositions. Explicit capability guards reject unsupported gradients. |
|
|
73
|
+
| Interoperability | Tidy3D scene export and GDS geometry import | Tidy3D export covers grids, boundaries, common geometry, broad material/source/monitor families, and validated SI/unit-convention conversions. |
|
|
74
|
+
|
|
75
|
+
For the exhaustive user-visible capability inventory, see [`FEATURE_LIST.md`](FEATURE_LIST.md). The numerical conventions and lessons from the Maxwell-vs-Tidy3D validation campaign are recorded in [`docs/validation/tidy3d-numerical-alignment-0.3.0.md`](docs/validation/tidy3d-numerical-alignment-0.3.0.md).
|
|
76
|
+
|
|
77
|
+
## Minimal Differentiable Example
|
|
78
|
+
|
|
79
|
+
The example below uses a point source and a dielectric cube, plots a vertical electric-field slice, and backpropagates to the cube position.
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
import torch
|
|
83
|
+
import witwin.maxwell as mw
|
|
84
|
+
|
|
85
|
+
# Train the cube position directly.
|
|
86
|
+
box_x = torch.tensor(0.10, device="cuda", requires_grad=True)
|
|
87
|
+
box_position = torch.stack((box_x, box_x.new_tensor(0.0), box_x.new_tensor(0.06)))
|
|
88
|
+
|
|
89
|
+
# Build a minimal scene: one dielectric cube and one point dipole.
|
|
90
|
+
scene = mw.Scene(
|
|
91
|
+
domain=mw.Domain(bounds=((-0.24, 0.24), (-0.24, 0.24), (-0.24, 0.24))),
|
|
92
|
+
grid=mw.GridSpec.uniform(0.12),
|
|
93
|
+
boundary=mw.BoundarySpec.pml(num_layers=2, strength=1.0),
|
|
94
|
+
device="cuda",
|
|
95
|
+
subpixel_samples=5,
|
|
96
|
+
)
|
|
97
|
+
scene.add_structure(
|
|
98
|
+
mw.Structure(
|
|
99
|
+
name="cube",
|
|
100
|
+
geometry=mw.Box(position=box_position, size=(0.18, 0.18, 0.18)),
|
|
101
|
+
material=mw.Material(eps_r=20.0),
|
|
102
|
+
)
|
|
103
|
+
)
|
|
104
|
+
scene.add_source(
|
|
105
|
+
mw.PointDipole(
|
|
106
|
+
position=(0.0, 0.0, -0.06),
|
|
107
|
+
polarization="Ez",
|
|
108
|
+
width=0.04,
|
|
109
|
+
source_time=mw.GaussianPulse(
|
|
110
|
+
frequency=1.0e9,
|
|
111
|
+
fwidth=0.25e9,
|
|
112
|
+
amplitude=50.0,
|
|
113
|
+
),
|
|
114
|
+
)
|
|
115
|
+
)
|
|
116
|
+
scene.add_monitor(mw.PointMonitor("probe", (0.0, 0.0, 0.06), fields=("Ez",)))
|
|
117
|
+
|
|
118
|
+
sim = mw.Simulation.fdtd(
|
|
119
|
+
scene,
|
|
120
|
+
frequencies=[1.0e9],
|
|
121
|
+
run_time=mw.TimeConfig(time_steps=32),
|
|
122
|
+
spectral_sampler=mw.SpectralSampler(window="none"),
|
|
123
|
+
full_field_dft=True,
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
# Run the simulation and backpropagate from a probe value.
|
|
127
|
+
result = sim.run()
|
|
128
|
+
probe = result.monitor("probe")["data"]
|
|
129
|
+
loss = torch.abs(probe) ** 2
|
|
130
|
+
loss.backward()
|
|
131
|
+
|
|
132
|
+
print("probe =", probe)
|
|
133
|
+
print("loss =", float(loss.detach().item()))
|
|
134
|
+
print("d(loss)/d(box_x) =", box_x.grad)
|
|
135
|
+
|
|
136
|
+
# Plot a vertical field slice at y = 0.
|
|
137
|
+
result.plot.field(axis="y", position=0.0, component="abs", field_log_scale=True)
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
This example is intentionally minimal and does not require wrapping the scene in a class.
|
|
141
|
+
|
|
142
|
+
The current public backward path is for trainable inputs that contribute to compiled material tensors, such as `MaterialRegion.density` and supported trainable geometry parameters. Parameters that only affect source placement or other non-material branches are not yet part of the public adjoint path.
|
|
143
|
+
|
|
144
|
+
## Development and Validation
|
|
145
|
+
|
|
146
|
+
Common local commands:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
python -m pytest tests
|
|
150
|
+
python -m pytest tests/api/public/test_public_api.py tests/api/public/test_simulation_smoke.py
|
|
151
|
+
python -m pytest tests/boundaries/cpml/test_fdtd_cpml.py tests/monitors/observers/test_fdtd_observers.py
|
|
152
|
+
python -m pytest tests/gradients/test_fdtd_adjoint_bridge.py
|
|
153
|
+
python -m benchmark
|
|
154
|
+
python -m benchmark dipole_vacuum
|
|
155
|
+
python -m benchmark planewave_vacuum
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Benchmark assets live under `benchmark/scenes/`, `benchmark/cache/`, `benchmark/plots/`, and `benchmark/RESULTS.md`.
|
|
159
|
+
|
|
160
|
+
The release validation suite combines unit/API tests, native CUDA parity and adjoint tests, and Maxwell-vs-Tidy3D numerical comparisons. Cross-solver comparisons use common physical-domain coordinates, external PML on both sides, coordinate-aligned complex field slices, and solver-independent scalar observables. See the [0.3.0 numerical-alignment notes](docs/validation/tidy3d-numerical-alignment-0.3.0.md) for the conventions, visual diagnosis workflow, and known residuals.
|
|
161
|
+
|
|
162
|
+
## Current Notes
|
|
163
|
+
|
|
164
|
+
- Core Maxwell workflows are GPU/CUDA-first.
|
|
165
|
+
- FDFD is available but remains limited/experimental. It is suitable for supported linear single-frequency scenes; use FDTD for nonuniform grids, magnetic or nonlinear media, full off-diagonal anisotropy, in-domain PEC, symmetry, and the broader source/monitor/adjoint feature set.
|
|
166
|
+
- `bloch_wavevector="auto"` is supported for fixed-angle CW TFSF grating slabs; broadband automatic Bloch phase requests are rejected.
|
|
167
|
+
- Full off-diagonal `Tensor3x3` electric anisotropy is supported by FDTD, including supported CPML, dispersion, conduction, and adjoint compositions; use `DiagonalTensor3` when the material is naturally diagonal because it is cheaper.
|
|
168
|
+
- `LossyMetalMedium` is a narrowband, normal-incidence planar SIBC model. Curved, oblique, laterally finite, and adjoint SIBC workflows require a volumetric material model or a future generalized surface operator.
|
|
169
|
+
- The public differentiable path covers supported trainable material, geometry, and source inputs. Runtime capability checks reject combinations without a physically implemented reverse channel.
|
|
170
|
+
- `ModeSource`, `ModeMonitor`, and `ModePort` are available, but they are still marked experimental.
|
|
171
|
+
|
|
172
|
+
## License
|
|
173
|
+
|
|
174
|
+
Witwin Maxwell is available under a dual-license model for academic and
|
|
175
|
+
non-commercial research use or commercial and enterprise use. See the
|
|
176
|
+
[Witwin licensing page](https://witwin.ai/license) for the applicable terms.
|
|
177
|
+
|
|
178
|
+
## Developer
|
|
179
|
+
|
|
180
|
+
<a href="http://xingyuchen.me/">
|
|
181
|
+
<img src="https://github.com/Asixa.png" alt="Xingyu Chen" width="48" height="48" style="border-radius:50%;">
|
|
182
|
+
</a>
|
|
183
|
+
|
|
184
|
+
[Xingyu Chen](http://xingyuchen.me/)
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
witwin/maxwell/__init__.py,sha256=pVOKs0hiweu0v1-hcka2sI8vaaJVKkOpi9EB_73vIR4,3420
|
|
2
|
+
witwin/maxwell/adjoint_inputs.py,sha256=6pvexf8h5gQPoXjNIVOUhhT1UEdEGQAs5-mgVz1iWC8,2546
|
|
3
|
+
witwin/maxwell/materials.py,sha256=WmPrCPLei9N-NL0b4ER5q6kd3-FXWsFE1cWFLDveh8g,100
|
|
4
|
+
witwin/maxwell/media.py,sha256=HTgCDXwJNA2T4SMp5fN-uGI7lR-UKAVNtvJDwUFa6cw,67484
|
|
5
|
+
witwin/maxwell/monitors.py,sha256=loFN7BfPplSA2HKk16u5GU-Rv00p5-x3FLrSXtW9vDs,29671
|
|
6
|
+
witwin/maxwell/ports.py,sha256=4bpPn7lC3IJpvVArk5mSX6mW8GZ5pBf_Cx1oEHkrWQc,4390
|
|
7
|
+
witwin/maxwell/result.py,sha256=Nn6DonZeuSo4T2VzA5R3YeNJgsGLpzIlQ2WOkphZkAk,37476
|
|
8
|
+
witwin/maxwell/scene.py,sha256=z8nxcxHfLqn1IbFyZL7RjH_9jKZZRlWRSSslMl2hFMQ,51892
|
|
9
|
+
witwin/maxwell/simulation.py,sha256=kUeoHAoCNIILf995ayna-XqcMcmnBJcpB3Us69zuQJs,25690
|
|
10
|
+
witwin/maxwell/sources.py,sha256=7T8b_1Sq0uccnuarm1ZdW4M-9pWAe2B3nSwI0sucCtw,37088
|
|
11
|
+
witwin/maxwell/adapters/__init__.py,sha256=aiE9g0ZMypTviXMkmyAPLvHJG-p_X3K_OQm8NRbQYmA,35
|
|
12
|
+
witwin/maxwell/adapters/gds.py,sha256=1Pq_biZtaHLeg2aa0oMsqAGoCbafYRsVPklJ0izqRFw,8075
|
|
13
|
+
witwin/maxwell/adapters/tidy3d.py,sha256=Jiybu6TiVBHR9YXYQD-YVgPl-O7QRjPPCzl8kmyqFrI,74751
|
|
14
|
+
witwin/maxwell/compiler/__init__.py,sha256=DkQlKi3dDS92mTKvsUott8vnkcXvInEROjnHAvK_SKw,365
|
|
15
|
+
witwin/maxwell/compiler/materials.py,sha256=6Pxfv0C-_Un11vKyHgURpnEOgwb51tp14rcpaTWz5V0,58915
|
|
16
|
+
witwin/maxwell/compiler/monitors.py,sha256=LdhDgBYMVcfIsDvEqPojAAgNBxNlOJfJRhV8q3qdZ-U,7346
|
|
17
|
+
witwin/maxwell/compiler/sources.py,sha256=FJngdimStEuiV3kMD65BvQkvbPP0APm05H-b56BnByU,8954
|
|
18
|
+
witwin/maxwell/fdfd/__init__.py,sha256=wDqKysXWVsjkWqdF2EQx66WvD3T-D2PyAUbmDHGLyOs,48
|
|
19
|
+
witwin/maxwell/fdfd/ams.py,sha256=NbR_TVPX88vpXZ5v_RD-u514MF3HY07mOrKV7K1QX1M,12704
|
|
20
|
+
witwin/maxwell/fdfd/krylov.py,sha256=DEBiXiTZSvmi6wg-C9M7GdM2c-BchSTKmfIearxQeCU,9689
|
|
21
|
+
witwin/maxwell/fdfd/plotting.py,sha256=VEBxp7ubfiOiHvRIEXRD5PfyE1s5W7o0i8s9Yg1h4ZY,3392
|
|
22
|
+
witwin/maxwell/fdfd/postprocess.py,sha256=8N6_0t4fmRORmYHWvE1an5LDCZfJ_tEwhSST0W9G3zk,1226
|
|
23
|
+
witwin/maxwell/fdfd/solver.py,sha256=IaJKFOoaDdIk7QldeT2MeF-kYWg6cDgj3QBnOg58RKQ,54267
|
|
24
|
+
witwin/maxwell/fdfd/adjoint/__init__.py,sha256=54NM_BczCebhW4ZeaXDSyLxjkavvFVQOfmkmAx7iv3Y,98
|
|
25
|
+
witwin/maxwell/fdfd/adjoint/bridge.py,sha256=ojhQ_WGgnjBYx0WDaOzz5oJtpq7fcH8GYIvMznRaJiM,7157
|
|
26
|
+
witwin/maxwell/fdtd/__init__.py,sha256=ssVXmXtTAMN00sc-Q8KJFTGCPayf4xScdSZnox8SZf4,168
|
|
27
|
+
witwin/maxwell/fdtd/checkpoint.py,sha256=JckRsJcjv5uyGasd5SrPMHzcD9TLE12BtX5gw3j4DCk,9717
|
|
28
|
+
witwin/maxwell/fdtd/coords.py,sha256=uOUpClLs6mV65UOoCf88dSUsv9nrV8rF5__6e3ejU-g,1190
|
|
29
|
+
witwin/maxwell/fdtd/dispersion.py,sha256=OH9STLScGSJiu9jf1tk_CQVHSPjHwJA-_BP0ZJuAmZY,1604
|
|
30
|
+
witwin/maxwell/fdtd/evaluation.py,sha256=TlKsrFh_mOWqjQLDbWo8pdIoIafwkHdeDfW6yQLqcj0,9257
|
|
31
|
+
witwin/maxwell/fdtd/io.py,sha256=SW1zx71QnJ5eCvzoKvBFYLAgc0lOY3qCMVqFRIlgJxs,1063
|
|
32
|
+
witwin/maxwell/fdtd/material_pullback.py,sha256=SSKLmw_2zgL5vjUd8OGEL9AjD8x7TM7-TIdsx5DfKbo,13825
|
|
33
|
+
witwin/maxwell/fdtd/observers.py,sha256=SIvDoyKnJoGTgT80usAqpzWXnyoNqlk_OTEpdvhVg94,65155
|
|
34
|
+
witwin/maxwell/fdtd/plotting.py,sha256=nzbMlXLwSdo-fo_Hcp55tg9UYDOWBKFor_QXLbJWe4E,4023
|
|
35
|
+
witwin/maxwell/fdtd/postprocess.py,sha256=hnxU-CoxvtRrT_ooefOy8thkPmwLO6ciNMSPLihl7SA,7926
|
|
36
|
+
witwin/maxwell/fdtd/solver.py,sha256=sQHy-QX-DgnZweMeFcZK32FDmMYvNQsJMWZ6ahadt54,21908
|
|
37
|
+
witwin/maxwell/fdtd/adjoint/__init__.py,sha256=O_2t3I7VXPcswMsxs5_aaW2buENrlmSmFrEubrFnIPc,590
|
|
38
|
+
witwin/maxwell/fdtd/adjoint/bridge.py,sha256=0WzoyhCGPWvSqfzwSKXS52zRikoac6LAmlfV_EZO-LQ,39894
|
|
39
|
+
witwin/maxwell/fdtd/adjoint/capabilities.py,sha256=ZHIb4RH9SvRQePI-PFpBTSCfFXgUGOjG2LAlrszrgTs,1275
|
|
40
|
+
witwin/maxwell/fdtd/adjoint/core.py,sha256=_RTvjwtesQ7oQNheTFhHThDzX2ZGEwJ1wufgtiSPfYw,156238
|
|
41
|
+
witwin/maxwell/fdtd/adjoint/dispatch.py,sha256=36dDNC2cDYv9ntz6AYthon-AoJCh89OnmU22H_oLxAc,27389
|
|
42
|
+
witwin/maxwell/fdtd/adjoint/native.py,sha256=abuH0uyedCKvdg5J5sUUJ9zfYaIL1QvgSlHqUHRAy4k,110579
|
|
43
|
+
witwin/maxwell/fdtd/adjoint/profiler.py,sha256=DhsaAa6ZwmyzhBI7aOjulk-2dJqcJTNhY_ODBSnoyvc,7523
|
|
44
|
+
witwin/maxwell/fdtd/adjoint/reverse_common.py,sha256=kw_0alqEuhL0x_js0HAAeQi8aTqs56jFNwp4Nq6IaY4,6922
|
|
45
|
+
witwin/maxwell/fdtd/adjoint/seeds.py,sha256=-uQ3HSIFPUJyH35NESdnwvOzMMncB6CCiPSUdeMVP8w,20396
|
|
46
|
+
witwin/maxwell/fdtd/boundary/__init__.py,sha256=I2rl6ih8rnuPZ1RrXu3wzldDbsPbJaarsv0BoRkjsJI,932
|
|
47
|
+
witwin/maxwell/fdtd/boundary/bloch.py,sha256=JZQbVH1_t8hAvuZ-G6oRXKqPdV_0jRRak7WH5gC99ug,3440
|
|
48
|
+
witwin/maxwell/fdtd/boundary/common.py,sha256=Fxvr4EIRofDjyGcIfUJBA_DSr_AmsZ3SQtJ4joUa03Q,1345
|
|
49
|
+
witwin/maxwell/fdtd/boundary/cpml.py,sha256=59GFy3zPUh5SyaHbYoidBY-_Ah1YaKYoIRO2Cf1ZmXE,21110
|
|
50
|
+
witwin/maxwell/fdtd/boundary/runtime.py,sha256=ZyvbFI9KALz0_MbEa11n1koYgKOysJ01LTk1bW7xMMA,8511
|
|
51
|
+
witwin/maxwell/fdtd/cuda/__init__.py,sha256=qvgEspeUclEjtXbGdwf2756H1Cc07nRYlrUdeys9qNY,304
|
|
52
|
+
witwin/maxwell/fdtd/cuda/backend.py,sha256=7PrhaH_oAXa3DNJtZJ93Op7tk1fAVH1gqsXLtDobMQM,96377
|
|
53
|
+
witwin/maxwell/fdtd/cuda/build.py,sha256=iu37XLQwPokkp8lYiiBEzN8kQnTI5i4r6E13p6ilE9Y,10474
|
|
54
|
+
witwin/maxwell/fdtd/cuda/extension.cpp,sha256=ymyZwYhD7Jx8wbXKNfxH3_8Bf1vj1xlGijoXzi86HaE,118199
|
|
55
|
+
witwin/maxwell/fdtd/cuda/launch.h,sha256=6ou5itweVsmJu3g88dSD4v24ertQ__xI99rvxJVUSNI,701
|
|
56
|
+
witwin/maxwell/fdtd/cuda/tensors.h,sha256=9uDZhfk8Xi7BSKtNKWUayvjONH7n3Ju6Mh0FSAOPO0k,1114
|
|
57
|
+
witwin/maxwell/fdtd/cuda/kernels/adjoint.cu,sha256=Zixf3qo7qWa9nqN6bmLdzG52JesShHW-PGqg_xriIYk,240191
|
|
58
|
+
witwin/maxwell/fdtd/cuda/kernels/aniso.cu,sha256=YgbXo7Xjo_DP-nROcQw_pXNuFaFIBl6gMPEYkF5mBSw,63648
|
|
59
|
+
witwin/maxwell/fdtd/cuda/kernels/boundary.cu,sha256=kaQEbTzuGGBCXlCVBtWrqrseK32p_IicCpubh79Rm7M,15421
|
|
60
|
+
witwin/maxwell/fdtd/cuda/kernels/common.cu,sha256=kv13ah3ZSoldBbu3yhAJXefmm7iCTtlVBkXy7YQWAHw,2507
|
|
61
|
+
witwin/maxwell/fdtd/cuda/kernels/common.cuh,sha256=WDbpBJDO5bPvTxO6Pu0lYsi4hjL6Hr7BhNK54pxBUGc,2816
|
|
62
|
+
witwin/maxwell/fdtd/cuda/kernels/dispersive.cu,sha256=TxtAajd7YGAXRV_3rmrswZm-mbXD0XqSZZq37e_5zc8,30301
|
|
63
|
+
witwin/maxwell/fdtd/cuda/kernels/electric.cu,sha256=5uKVU37GeufhzGdqB7QkLkajkIysvUx7ehQDfzcaoEg,156161
|
|
64
|
+
witwin/maxwell/fdtd/cuda/kernels/magnetic.cu,sha256=isff7FpFWkUhgbVz5UBu8BxfD5WpwHmie5_HpgAhzlg,34708
|
|
65
|
+
witwin/maxwell/fdtd/cuda/kernels/observers.cu,sha256=UlyixGZ1I-ydYX4ZCjftKZcdXlczRG9hs6HpJ5tWJuI,13303
|
|
66
|
+
witwin/maxwell/fdtd/cuda/kernels/projection.cu,sha256=9QTbWzPVf80HsRR0tVC3eb2MElZO5RjEkwrOgWNSWxg,7611
|
|
67
|
+
witwin/maxwell/fdtd/cuda/kernels/sources.cu,sha256=_0LyWfvHrFHhklOl6AfgIYCVy1I0wXZn4Fw1mXp0_uc,55138
|
|
68
|
+
witwin/maxwell/fdtd/cuda/kernels/spectral.cu,sha256=ZgpNiNHI0vp0zwp6khws8B8fD_y_3-rk5LYcEWd1izw,11862
|
|
69
|
+
witwin/maxwell/fdtd/cuda/prebuilt/witwin_maxwell_fdtd_cuda.pyd,sha256=BedDvoo7S0Tev30he3x5ZjDeqDBjCzEdboWCpS_RxQI,16769024
|
|
70
|
+
witwin/maxwell/fdtd/cuda/runtime/__init__.py,sha256=3M8e7QFFAmCPxQdQa6D9TGQpNB1rviqkqU3fadT5RgQ,166
|
|
71
|
+
witwin/maxwell/fdtd/cuda/runtime/dispatcher.py,sha256=J6wIQY8MaJApLnJ7g1_MjwufPWn_l-xx0BrZGCdvZek,164
|
|
72
|
+
witwin/maxwell/fdtd/cuda/runtime/graph.py,sha256=elPTy3dZEuOGL7hkBtf0i-4-hTR250D5KwP0-6KciPc,924
|
|
73
|
+
witwin/maxwell/fdtd/excitation/__init__.py,sha256=2gtrzs2UnNmvsSkqL1tIasFs3KPoSIetT253vYmVEPs,796
|
|
74
|
+
witwin/maxwell/fdtd/excitation/injection.py,sha256=oxKATamQfe0-YGrSt4nkfjJsLtipLkRAx-btHxut7ss,46739
|
|
75
|
+
witwin/maxwell/fdtd/excitation/modes.py,sha256=h4FPyIuaxhG1HpVf2tYIPWAEK2XvLiGLsPNwNjrsP6A,74761
|
|
76
|
+
witwin/maxwell/fdtd/excitation/spatial.py,sha256=3GqHYyKFS4hioge-3txdGwfmiKDZRHOfl-OSfT24NRo,17918
|
|
77
|
+
witwin/maxwell/fdtd/excitation/temporal.py,sha256=D6RQmNEsTrCCBx92JfFknHuPExyZ2OjIAgVWtzJjfVM,18706
|
|
78
|
+
witwin/maxwell/fdtd/excitation/tfsf_apply.py,sha256=w1K-vfc_XoSwCrXJJoalixB11hv-sF_CMY95F4OEfZo,11206
|
|
79
|
+
witwin/maxwell/fdtd/excitation/tfsf_common.py,sha256=vK0Vf3Qri3453B6b0Ti_eq6n1ILXCSH-zjG1WoSHFOg,17033
|
|
80
|
+
witwin/maxwell/fdtd/excitation/tfsf_specs.py,sha256=VHDFKHnTF2NFMHbh8TvTcswiyQ-XM89Vz11rxIfqCmM,16624
|
|
81
|
+
witwin/maxwell/fdtd/excitation/tfsf_state.py,sha256=HbfDEUcgPM1CXHsZyZuj5L22SslyNPhtAd4xtuZsP-E,29488
|
|
82
|
+
witwin/maxwell/fdtd/meshing/__init__.py,sha256=CDDFF1vqLVPUTPpG-NNkTxH5_-TAXtGVEyXyW8Zmtn0,100
|
|
83
|
+
witwin/maxwell/fdtd/meshing/autogrid.py,sha256=ZGeL6ktiGv0e6p7RwhxU7Ef57llCeNOtk1895phCXvU,14917
|
|
84
|
+
witwin/maxwell/fdtd/runtime/__init__.py,sha256=mo0jrwhzF-lwCmpLYDARkoVI9pqhgZ9HTPsfQ4hlo3Y,3880
|
|
85
|
+
witwin/maxwell/fdtd/runtime/initialization.py,sha256=7M6Ici0u_QuvpM-Gfc8vkdgNUx45KBD4a3VlA55sNpc,9643
|
|
86
|
+
witwin/maxwell/fdtd/runtime/materials.py,sha256=o96SzGwdJ7dw_r1YeM6KwYaOJE6ucBzivfiMi6GUpvM,73815
|
|
87
|
+
witwin/maxwell/fdtd/runtime/module_cache.py,sha256=ioJbdYPp22B7cxDIZZq9Bs88sIm2O2PdJK_2H3QX1_8,983
|
|
88
|
+
witwin/maxwell/fdtd/runtime/spectral.py,sha256=HexwCV7DAXnGloMaB2gFUC7dh9RTm_do14hZ-DygtCU,26740
|
|
89
|
+
witwin/maxwell/fdtd/runtime/stepping.py,sha256=TuRh-6_i9IzFKWqFUssqokKJVimWMhYyvsWeh6q649M,83127
|
|
90
|
+
witwin/maxwell/geometry/__init__.py,sha256=uyGk6_z0BKGVR5KqCSSKMJ6jmh7qas65cy7FSEWWJtQ,146
|
|
91
|
+
witwin/maxwell/geometry/polyslab.py,sha256=HphEv3uAtHO6I4d5JLeZyOI6nlWpO_QlMZEyjO1FYn0,12162
|
|
92
|
+
witwin/maxwell/postprocess/RCS.py,sha256=aSwz2ZN8m27HQ5LWCzV9eoaWj-JCZ_HnfjrMtuzi01U,5641
|
|
93
|
+
witwin/maxwell/postprocess/__init__.py,sha256=f7_OTNZPyZQzNdE2goaoUsK-opg-gYmpChzhPwUlZeU,1549
|
|
94
|
+
witwin/maxwell/postprocess/diffraction.py,sha256=gQG74L0PUhkN27lprAFNtBqAeHMAkugHRlG9J68GmpY,8254
|
|
95
|
+
witwin/maxwell/postprocess/directivity.py,sha256=_UuG6AiNFrhkhtgv0h61y55-gNK7wkBOmAgpyUPbEn4,6375
|
|
96
|
+
witwin/maxwell/postprocess/emission.py,sha256=tPrQBT538gryl9YbikdzZ31FZAi3D8D3kIbHijdMOd4,2882
|
|
97
|
+
witwin/maxwell/postprocess/modal.py,sha256=f9c0ylH8_-VHCoJ99qlH63T4TllaGeLTtm-kgpwjvrw,14141
|
|
98
|
+
witwin/maxwell/postprocess/nfft.py,sha256=oeoo_0paFMp3niCaajrBGOjw0lf6dMvkrgHr1RRVBSM,10200
|
|
99
|
+
witwin/maxwell/postprocess/scattering_parameters.py,sha256=vYetfhsV_Hiyyg-cPb8RibcjUolHFINxxpknmqzmmdk,15546
|
|
100
|
+
witwin/maxwell/postprocess/stratton_chu.py,sha256=oyYT0bNm4I5OrmmVn9IRrWOWcbAcqBzcRqoS2mD4yYQ,49709
|
|
101
|
+
witwin/maxwell/visualization/__init__.py,sha256=r3SOyzV7faXHRNGIhFsNd6KAz4pLoi0KN4s3hxMptls,878
|
|
102
|
+
witwin/maxwell/visualization/interactive.py,sha256=uBWOYoFOi7XPFWvdN5FXUFMvoN4WYt5OInV1-ZjFZzU,13933
|
|
103
|
+
witwin/maxwell/visualization/plots.py,sha256=ZrgeMMDNmrOUKTTSv5S6ErwYAC0pJjRENSygZHXwZKY,25160
|
|
104
|
+
witwin_maxwell-0.3.0.dist-info/METADATA,sha256=1XB1UQ0Oe2UWsQMkZ4oLYbmPsVtZ3hCE2LAEir0lrGo,12748
|
|
105
|
+
witwin_maxwell-0.3.0.dist-info/WHEEL,sha256=THPaOYRwJrp5fq_kO4FXfug4mAwzOMPTtR1n4yCKCdg,94
|
|
106
|
+
witwin_maxwell-0.3.0.dist-info/licenses/LICENSE,sha256=ypmZ6cVCDm176-yJ16P-2snC2-PWVgF1gorpvbgrlQ0,419
|
|
107
|
+
witwin_maxwell-0.3.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Witwin Dual License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Xingyu Chen. All rights reserved.
|
|
4
|
+
|
|
5
|
+
This software is available under a dual-license model:
|
|
6
|
+
|
|
7
|
+
1. A research license for academic and non-commercial research use.
|
|
8
|
+
2. A commercial license for commercial and enterprise use.
|
|
9
|
+
|
|
10
|
+
The complete and current license terms, including information about obtaining
|
|
11
|
+
the applicable license, are available at:
|
|
12
|
+
|
|
13
|
+
https://witwin.ai/license
|