Skip to content

Commit 430b5e3

Browse files
⚡ Charge Solver API & MultiPhysicsMedium
Co-authored-by: Dario Quintero <[email protected]>
1 parent 4b1ac96 commit 430b5e3

File tree

100 files changed

+9897
-4347
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

100 files changed

+9897
-4347
lines changed

Diff for: CHANGELOG.md

+8
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1515
- New field `shadow` in `MeshOverrideStructure` that sets grid size in overlapping region according to structure list or minimal grid size.
1616
- Scientific notation for frequency range warnings.
1717

18+
- `MultiphysicsMedium` allows for the modularization definition of physical properties. So in addition to the usual optical properties, one can now add heat properties or electric properties.
19+
- Added :zap: Charge Solver API. It is now possible to solve the Drift-Diffusion (DD) equations for semiconductors. These simulations can be set up with the new class `HeatChargeSimulation` (which supersedes `HeatSimulation`) in a way similar to that of Heat simulations. The solver has currently limited capabilities (which will be expanded in future releases): steady only, isothermal, Boltzmann statistics (non-degenerate semiconductors only).
20+
- `SemiconductorMedium` has been added. This is used in combination with `MultiPhysicsMedium` to define the mediums used in the Charge solver. It allows to specify mobility, bandgap narrowing, and generation/recombination models as well as doping. Doping can be defined as constant or through "doping boxes" or, more generally, via `SpatialDataArray` objects for full flexibility.
21+
- Mobility models for `SemiconductorMedium`: `ConstantMobilityModel`, `CaugheyThomasMobility`
22+
- Bandgap narrowing models for `SemiconductorMedium`: `SlotboomBandGapNarrowing`
23+
- Generation-recombination models for `SemiconductorMedium`: `ShockleyReedHallRecombination`, `RadiativeRecombination`, `AugerRecombination`
1824

1925
### Changed
2026
- `ModeMonitor` and `ModeSolverMonitor` now use the default `td.ModeSpec()` with `num_modes=1` when `mode_spec` is not provided.
2127
- Update sidewall angle validator to clarify angle should be specified in radians.
2228
- Reduced the complex tolerance in the mode solver below which permittivity is considered lossless, in order to correctly compute very low-loss modes.
29+
-`HeatChargeSimulation` supersedes `HeatSimulation`. Though both of the can be used for Heat simulation interchangeably, the latter has been deprecated and will disappear in the future.
30+
- `FluidSpec` and `SolidSpec` are now deprecated in favor of `FluidMedium` and `SolidMedium`. Both can still be used interchangeably.
2331

2432
### Fixed
2533
- NumPy 2.1 compatibility issue where `numpy.float64` values passed to xarray interpolation would raise TypeError.

Diff for: docs/api/charge/boundary_conditions.rst

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
.. currentmodule:: tidy3d
2+
3+
Boundary Conditions
4+
-----------------------------
5+
6+
Specifications
7+
^^^^^^^^^^^^^^
8+
9+
.. autosummary::
10+
:toctree: ../_autosummary/
11+
:template: module.rst
12+
13+
tidy3d.HeatBoundarySpec
14+
tidy3d.HeatChargeBoundarySpec
15+
16+
17+
Types
18+
^^^^^^^^^^^^^^^^^
19+
20+
.. autosummary::
21+
:toctree: ../_autosummary/
22+
:template: module.rst
23+
24+
tidy3d.VoltageBC
25+
tidy3d.CurrentBC
26+
tidy3d.InsulatingBC
27+
28+
Placement
29+
^^^^^^^^^^^^^^^^^
30+
31+
.. autosummary::
32+
:toctree: ../_autosummary/
33+
:template: module.rst
34+
35+
tidy3d.StructureStructureInterface
36+
tidy3d.StructureBoundary
37+
tidy3d.MediumMediumInterface
38+
tidy3d.StructureSimulationBoundary
39+
tidy3d.SimulationBoundary
File renamed without changes.

Diff for: docs/api/charge/index.rst

+14-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,22 @@
1-
CHARGE |:zap:|
1+
Charge |:zap:|
22
==============
33

44
.. toctree::
55
:hidden:
66

7+
simulation
78
mediums
9+
boundary_conditions
10+
source
11+
discretization
12+
monitor
13+
output_data
814

915

10-
.. include:: /api/charge/mediums.rst
16+
.. include:: /api/charge/simulation.rst
17+
.. include:: /api/charge/mediums.rst
18+
.. include:: /api/charge/boundary_conditions.rst
19+
.. include:: /api/charge/source.rst
20+
.. include:: /api/charge/discretization.rst
21+
.. include:: /api/charge/monitor.rst
22+
.. include:: /api/charge/output_data.rst

Diff for: docs/api/charge/mediums.rst

+56-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,65 @@
11
.. currentmodule:: tidy3d
22

3-
Charge Perturbation Specification
3+
Charge Mediums
4+
-------------------------------
5+
6+
.. autosummary::
7+
:toctree: ../_autosummary/
8+
:template: module.rst
9+
10+
tidy3d.ChargeConductorMedium
11+
tidy3d.ChargeInsulatorMedium
12+
tidy3d.SemiconductorMedium
13+
14+
Mobility
15+
^^^^^^^^^^^^^^
16+
17+
.. autosummary::
18+
:toctree: ../_autosummary/
19+
:template: module.rst
20+
21+
tidy3d.CaugheyThomasMobility
22+
23+
24+
Generation Recombination
25+
^^^^^^^^^^^^^^^^^^^^^^^^
26+
27+
.. autosummary::
28+
:toctree: ../_autosummary/
29+
:template: module.rst
30+
31+
tidy3d.AugerRecombination
32+
tidy3d.RadiativeRecombination
33+
tidy3d.ShockleyReedHallRecombination
34+
35+
36+
Doping
37+
^^^^^^
38+
39+
.. autosummary::
40+
:toctree: ../_autosummary/
41+
:template: module.rst
42+
43+
tidy3d.ConstantDoping
44+
tidy3d.GaussianDoping
45+
46+
47+
Bandgap
48+
^^^^^^^^
49+
50+
.. autosummary::
51+
:toctree: ../_autosummary/
52+
:template: module.rst
53+
54+
tidy3d.SlotboomBandGapNarrowing
55+
56+
57+
Charge Carrier Properties
458
------------------------------------
559

660
.. autosummary::
761
:toctree: ../_autosummary/
862
:template: module.rst
963

1064
tidy3d.LinearChargePerturbation
11-
tidy3d.CustomChargePerturbation
65+
tidy3d.CustomChargePerturbation

Diff for: docs/api/charge/monitor.rst

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
.. currentmodule:: tidy3d
2+
3+
Monitors
4+
----------
5+
6+
.. autosummary::
7+
:toctree: ../_autosummary/
8+
:template: module.rst
9+
10+
tidy3d.SteadyVoltageMonitor
11+
tidy3d.SteadyPotentialMonitor
12+
tidy3d.SteadyFreeCarrierMonitor
13+
tidy3d.SteadyCapacitanceMonitor

Diff for: docs/api/charge/output_data.rst

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
.. currentmodule:: tidy3d
2+
3+
Output Data
4+
-------------
5+
6+
7+
Simulation Data
8+
^^^^^^^^^^^^^^^^^^^^
9+
10+
.. autosummary::
11+
:toctree: ../_autosummary/
12+
:template: module.rst
13+
14+
tidy3d.HeatChargeSimulationData
15+
16+
17+
Monitor Data
18+
^^^^^^^^^^^^
19+
20+
.. autosummary::
21+
:toctree: ../_autosummary/
22+
:template: module.rst
23+
24+
tidy3d.SteadyVoltageData
25+
tidy3d.SteadyPotentialData
26+
tidy3d.SteadyFreeCarrierData
27+
tidy3d.SteadyCapacitanceData
28+
29+
30+
Unstructured Data Classes
31+
^^^^^^^^^^^^^^^^^^^^^^^^^
32+
33+
.. autosummary::
34+
:toctree: ../_autosummary/
35+
:template: module.rst
36+
37+
tidy3d.TriangularGridDataset
38+
tidy3d.TetrahedralGridDataset
39+
40+
41+
Individual Datasets
42+
^^^^^^^^^^^^^^^^^^^
43+
44+
.. autosummary::
45+
:toctree: ../_autosummary/
46+
:template: module.rst
47+
48+
tidy3d.PointDataArray
49+
tidy3d.CellDataArray
50+
tidy3d.IndexedDataArray
File renamed without changes.

Diff for: docs/api/charge/source.rst

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
.. currentmodule:: tidy3d
2+
3+
Thermal Sources
4+
-----------------
5+
6+
.. autosummary::
7+
:toctree: ../_autosummary/
8+
:template: module.rst
9+
10+
tidy3d.HeatFromElectricSource

Diff for: docs/api/heat_charge/boundary_conditions.rst renamed to docs/api/heat/boundary_conditions.rst

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
.. currentmodule:: tidy3d
22

3-
Thermal/Charge Boundary Conditions
3+
Boundary Conditions
44
-----------------------------
55

66
Specifications
@@ -24,9 +24,6 @@ Types
2424
tidy3d.TemperatureBC
2525
tidy3d.ConvectionBC
2626
tidy3d.HeatFluxBC
27-
tidy3d.VoltageBC
28-
tidy3d.CurrentBC,
29-
tidy3d.InsulatingBC
3027

3128

3229
Placement

Diff for: docs/api/heat/discretization.rst

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
.. currentmodule:: tidy3d
2+
3+
Grid Specification
4+
--------------------
5+
6+
.. autosummary::
7+
:toctree: ../_autosummary/
8+
:template: module.rst
9+
10+
tidy3d.UniformUnstructuredGrid
11+
tidy3d.DistanceUnstructuredGrid

Diff for: docs/api/heat/index.rst

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
Heat |:fire:|
2+
=============
3+
4+
.. toctree::
5+
:hidden:
6+
7+
simulation
8+
mediums
9+
boundary_conditions
10+
source
11+
discretization
12+
monitor
13+
output_data
14+
15+
16+
.. include:: /api/heat/simulation.rst
17+
.. include:: /api/heat/mediums.rst
18+
.. include:: /api/heat/boundary_conditions.rst
19+
.. include:: /api/heat/source.rst
20+
.. include:: /api/heat/discretization.rst
21+
.. include:: /api/heat/monitor.rst
22+
.. include:: /api/heat/output_data.rst

Diff for: docs/api/heat_charge/mediums.rst renamed to docs/api/heat/mediums.rst

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
.. currentmodule:: tidy3d
22

3-
Material Thermal/Charge Specification
3+
Material Thermal
44
-------------------------------
55

66
.. autosummary::
@@ -9,8 +9,6 @@ Material Thermal/Charge Specification
99

1010
tidy3d.FluidSpec
1111
tidy3d.SolidSpec
12-
tidy3d.ConductorSpec
13-
tidy3d.InsulatorSpec
1412

1513

1614
Thermal Perturbation Specification

Diff for: docs/api/heat_charge/monitor.rst renamed to docs/api/heat/monitor.rst

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,4 @@ Monitors
77
:toctree: ../_autosummary/
88
:template: module.rst
99

10-
tidy3d.TemperatureMonitor
11-
tidy3d.VoltageMonitor
10+
tidy3d.TemperatureMonitor

Diff for: docs/api/heat_charge/output_data.rst renamed to docs/api/heat/output_data.rst

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Output Data
44
-------------
55

66

7-
Heat/Charge Simulation Data
7+
Simulation Data
88
^^^^^^^^^^^^^^^^^^^^
99

1010
.. autosummary::
@@ -23,7 +23,6 @@ Monitor Data
2323
:template: module.rst
2424

2525
tidy3d.TemperatureData
26-
tidy3d.VoltageData
2726

2827

2928
Unstructured Data Classes

Diff for: docs/api/heat/simulation.rst

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
.. currentmodule:: tidy3d
2+
3+
Simulation
4+
-----------
5+
6+
.. autosummary::
7+
:toctree: ../_autosummary/
8+
:template: module.rst
9+
10+
tidy3d.HeatSimulation
11+
tidy3d.HeatChargeSimulation
File renamed without changes.

Diff for: docs/api/heat_charge/index.rst

-22
This file was deleted.

Diff for: docs/api/index.rst

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ API |:computer:|
2727
charge/index
2828
eme/index
2929
plugins/index
30+
spice
3031
constants
3132
abstract_base
3233
abstract_models
@@ -53,4 +54,4 @@ API |:computer:|
5354
.. include:: /api/plugins/index.rst
5455
.. include:: /api/constants.rst
5556
.. include:: /api/abstract_base.rst
56-
.. include:: /api/abstract_models.rst
57+
.. include:: /api/abstract_models.rst

0 commit comments

Comments
 (0)